⑴ c语言的函数调用这么难怎么办
// 函数声明
void df(void)
{
int i,f,min=100,max=0,sum=0;
for(i=1;i<=10;i++){
printf("请第%d个评委打分:",i);
scanf("%d",&f);
if(f<min){
min=f;
}
else if(f>max){
max=f;
}
}
printf("最低分为:%d\n",min);
printf("最高分为:%d\n",max);
}
⑵ 那么多的C语言函数,怎么学啊,给个建议。
学习任何知识,循序渐进总是最好的方式。不幸的是,很多人明知这个道理,却总是想走所谓的捷径。如果你是一个刚刚开始学习编程的中学生,或者你是一个刚刚进入计算机学院的本科生,又或者你是一个决心在计算机领域有所建树的初学者,你一定迫切地想知道,学习计算机技术,究竟应该从哪里下手。
我的建议是:数学、英语、C语言。
数学和英语的重要性已经不需要我来强调,大家也许从幼儿园就开始学习它们了,请时刻把它们放在最重要的位置,无论你是否学习计算机。
为什么C语言如此重要?我们从学习方法开始说起。书本上描述的东西,倘若不经过我们的亲自实践,是难以被彻底消化吸收的。计算机组成原理讲解了浮点数的格式,如果我们能看到并分析内存或寄存器中某个浮点数的表示,那比单纯的纸上谈兵要强一千倍;数据结构与算法似乎很难,如果你能把书上的例子实现出来,然后把习题做完,只需啃完一本好书,你也可以是算法高手;操作系统原理其实不仅仅是原理,只有做一些内核方面的实验才能真正有深刻理解;还有许多新潮的技术,比如JavaEE、PHP、Ajax、.NET等等等等,很多高手学习这些技术只需要很短的时间,不必说,他们肯定是C语言的高手。C语言几乎是一切计算机技术的通用工具,包括计算机的各种基本理论。没有精通C语言的决心,就不要涉足计算机领域。
为什么是C语言而不是C++不是Java不是其它?因为C语言最简单。你需要掌握一个语言工具,但也许并不需要“面向对象”、“模板”、“函数重载”等等一大堆概念。C语言足够低级,非常非常地贴近计算机的底层结构,不会让你迷失在概念的汪洋大海。除了“指针”,C语言没有真正意义上的难点,而“指针”,恰恰是理解计算机底层结构精髓的关键所在。
不必思考应该学什么,等把C语言精通了,你自己便会知道下一步如何去走。如果你对操作系统内部感兴趣,你便可以试着研究一下Unix的内核,除了C语言,你还需要一些汇编语言和保护模式的知识;如果你对算法感兴趣,那么恭喜你,C语言足够使用了;如果你对Windows编程感兴趣,去看看《Windows程序设计》吧,作者清楚的告诉你“只需要C语言的基础”;如果你对任何其它语言感兴趣,尽管去学吧,不过还是建议先学C++,因为你需要一些“面向对象”的知识。
学习C语言不是一朝一夕的事情,但也不需要花费十年时间才能精通。如何以最小的代价学习并精通C语言是本文的主题。请注意,即使是“最小的代价”,也绝不是什么捷径,而是以最短的时间取得最多的收获,同时也意味着你需要经历艰苦的过程。
一、要读就读好书,否则不如不读
所有初学者面临的第一个问题便是:如何选择教材。好的开始是成功的一半,选择一本优秀的教材是事半功倍的关键因素。不幸的是,学校通常会帮你指定一本很差劲的C语言课本;而幸运的是,你还可以再次选择。
大名鼎鼎的谭浩强教授出了一本《C语言程序设计》,据说发行量有超过400万,据我所知,很多学校都会推荐这本书作为C语言课本。虽然本人的名字(谭浩宇)跟教授仅仅一字之差,但我是无比坚定地黑他这本书的。这本书不是写给计算机专业的学生的,而是给那些需要考计算机等级考试的其它专业学生看的。这本书的主要缺点是:例子程序非常不专业,不能教给你程序设计应该掌握的思考方式;程序风格相当地不好,会让你养成乱写代码的恶习;错误太多,曾经有人指出过这本书的上百个错误,其中不乏关键的概念性错误。好了,这本书我也不想说太多了,有兴趣大家可以网络一下:)
Kernighan和Ritchie的《The C Programming Language》(中译名《C程序设计语言》)堪称经典中的经典,不过旧版的很多内容都已过时,和现在的标准C语言相去甚远,大家一定要看最新的版本,否则不如不看。另外,即使是最经典最权威的书,也没有办法面面俱到,所以手边常备一本《C语言参考手册》是十分必要的。《C语言参考手册》就是《C Reference Manual》,是C语言标准的详细描述,包括绝大多数C标准库函数的细节,算得上是最好的标准C语言的工具书。顺便提一句,最新的《C程序设计语言》是根据C89标准修订的,而《C语言参考手册》描述的是C99标准,二者可能会有些出入,建议按照C99标准学习。还有一本《C和指针》,写得也是相当地不错,英文名是《Pointers on C》,特别地强调指针的重要性,算是本书的一个特点吧。不过这本书并不十分适合初学者,如果你曾经学过C语言,有那么一些C语言的基础但又不是很扎实,那么你可以尝试一下这本书。我相信,只要你理解了指针,C语言便不再神秘。
如果你已经啃完了一本C语言教材,想要更进一步,那么有两本书你一定要看。首先是《C Traps and Pitfalls》(中译名《C陷井与缺陷》),很薄的一本小册子,内容非常非常地有趣。要注意一点,这本书是二十多年前写成的,里面提到的很多C语言的缺陷都已被改进,不过能够了解一些历史也不是什么坏事。然后你可以挑战一下《Expert C Programming》(中译名《C专家编程》),书如其名,这本书颇具难度,一旦你仔细读完并能透彻理解,你便可以放心大胆地在简历上写“精通C语言”了。
切记一个原则,不要读自己目前还看不懂的书,那是浪费生命。如果你看不懂,那你一定是缺失了某些必需基础知识。此时,你要仔细分析自己需要补充哪些内容,然后再去书店寻找讲述的这些内容的书籍。把基础知识补充完毕再回头来学习,才会真正的事半功倍。
⑶ c语言为什么这么难学,我为什么老是学不会
对初学者来说,C语言确实有一定的难点,但是C语言是基础的语言,并不是最难的所以学不好的主要还是自身的问题。依据本人这么多年的经验,这尝试分析下为何这么多人学不好C语言?
C语言本身存在一定难度
C语言主要应用于操作系统、嵌入式底层开发等,在这些领域C语言一直都咱局主导位置,但是在入门上现在比较热门的php、python、java等语言比C语言稍微容易一些。所以很多人学习到C语言的时候,理解起来很抽象,使用时变化莫测,觉得很难,自己就失去了兴趣,慢慢地放弃了。特别是在指针的学习上,是一个槛,很多人就是倒在指针上的。
当然除了指针,C语言里面还有一些回调、递归、函数指针、指针函数也有一定的难点,所以总的来讲C语言还是有一定的难度 的,学习C语言一定要多练,不能光看书,多做一些项目慢慢地就好了。
意志力不够没有耐心,倒在黎明前夕
学习编程主要挺过去前两年的积累经验阶段,后面就好多了,有些人就是迷迷糊糊的进入技术岗位了不知道到底做的是什么,会有一天发现自己突然明白过来很多的事情,以前有些不明白的事情,突然觉得啥都明白了,看似是一件很神奇的事情,本质上来讲都是日积月累构造成的。
很多人觉得自己学了这么长时间还是很多不明白,就会产生厌倦心里,自己都想要放弃,没有了激情,慢慢地自己就放弃了,其实有时候默默地再坚持一会自己就会慢慢地掌握C语言的精髓,对C语言产生兴趣。
C语言没有别的语言好就业
这涉及一个很现实的问题,学习了编程语言就得找工作,如果学了不好找工作,肯定学习起来的动力就不足,毕竟C语言的工作岗位绝对数量并不少,但是相比java,php,python等语言还是没法比,而且对入门者的要求相对更高点,薪资上也不一定有多大的优势,所以对于初学者没有多大的吸引力。目前这也是当前的市场实际情况。
C语言是不是就不值得学习了?其实这种说法是不对的,其实php,python等底层语言还不是一样用C语言来实现,所以C语言的重要性不言而喻。不要听信C语言已经过时之类的谣言,C语言一直都在默默无闻、踏踏实实地做着底层很重要的事情,经久不衰。想要在软件行业立足发展,C语言还是很值得学习的。
⑷ C语言函数困难!
8
这是一个函数递归。
自己不断的调用自己,一层又一层,直到
if(s2<10)
return s2;
满足了就一级一级往上返。
但要注意的是,无论怎么调用,最终都要返回第一次调用的状态,
就是最初递归开始的入口,,,
int fun(int s1,int s2)
{
......
fun(s1,j); <--------- 这里
return(s1);
}
有一点需要注意,这里 没有获得fun返回值,也就是说,初次进入fun时的
s1的值根本没受递归影响。 函数传值,不受影响。
一切的递归都是虎人的。
所以,只需计算第一次进入fun时的s1值既可。
⑸ C语言的函数调用这么难
这个……有什么难的?
我把整个程序写出来把……
//df.c
//以下为代码部分
#include<stdio.h>
//打分函数
void df()
{
int i,f,min=100,max=0,sum=0;
for(i=1;i<=10;i++){
printf("请第%d个评委打分:",i);
scanf("%d",&f);
if(f<min){
min=f;
}
else if(f>max){
max=f;
}
}
printf("最低分为:%d\n",min);
printf("最高分为:%d\n",max);
}
//主函数
int main()
{
df(); //调用df()函数
return 0;
}
⑹ 这个实在看不懂啊,C语言确实太难了,各位大大谁给解释解释呗
首先,没有main函数,这是一个功能函数的定义(如果这句话都看不懂,就别浪费时间往下看了,直接去通读谭浩强编的清华大学出版社出的c语言就行了)
int connect_tcp()
{
int sock;//定义一个int(整型)型的变量
struct sockaddr_in sin;//定义一个sockaddr_in类型的对象(结构体sockaddr_in是在头文件sys/socket里面定义的)
char hsm_addr[20], hsm_port[6];//定义两个字符串变量
signal( SIGCLD, SIG_IGN );//这句是调用了一个函数,函数的具体功能不知道(因为函数的具体定义应该在其他地方,其中SIGCLD和SIG_IGN是两个参数,其定义也应该在主函数里或其他地方)
if ( (sock = socket(AF_INET, SOCK_STREAM, 0 ))< 0) {//这是创建一个socket(套接字),socket是用于网络通信的,关于该部分的内容属于c语言的网络通信,第一个参数AF_INT是说明用IPV4网络协议,第二个参数SOKET—STREAM说明用tcp协议,第三个参数是协议编号,0是让系统自己分配协议编号。如果这句sock=socket(AF_INET, SOCK_STREAM, 0 )执行成功则返回新建的socket的标示符给sock.如果不成功则sock就等于0了,前面的if就是判断有没有创建成功。这部分知识与网络有关,建议看看谢希仁编的那本网络教材)
ErrorLog(ERROR, "socket error! " );//如果上面创建socket不成功就把socket error!输出到错误日志里.
return FAIL;//这个函数就返回FALL(失败)。
}
memset( hsm_addr, 0, 20 );//此句之后,是上面创建socket成功后执行的代码。意思是把hsm_addr指向的地址后面的20个字节设置为空(0在asscii码里代表空).
memset( hsm_port, 0, 6 );//这句自己看,和上一句一样的。(这两句就是把上面的两个字符串清空)
if ( get_param( "HSM_ADDR1", hsm_addr ) < 0 ) {//这个函数应该是获取参数的函数,具体定义不清楚不敢断定。如果不成功则返回FALL
ErrorLog ( ERROR , " get param error " );
return FAIL;
}
if ( get_param( "HSM_PORT1", hsm_port ) < 0 ) {//如果哥没看错,这三句应该和前面的重复了
ErrorLog ( ERROR , " get param error " );
return FAIL;
}
bzero( &sin, sizeof(sin) );//把sin清零
sin.sin_family = AF_INET;//这句以及后面两句是初始化结构体对象的(这句是说用IPV4网络协议)
sin.sin_port = htons( atol(hsm_port) );//这句是把主机地址顺序转换成网络地址顺序
sin.sin_addr.s_addr = inet_addr( hsm_addr );
setjmp(com_jmp);//程序控制流有效转移
if( timeout_flag == -1 ) {
ErrorLog(TRACE, "connect timeout!" );
return FAIL;
}
signal ( SIGALRM, signal_alarm );//调用函数
alarm ( time_out );
if ( (connect( sock, (struct sockaddr *)&sin, sizeof(sin) )) < 0 )//这句应该是去连接结构体对象sin里sin.sin_addr.s_addr指定的主机,如果错误执行下面{}里面的东西(这里和网络的服务器和客户端用TCP连接通信有关,建议看看,TCP通信建立过程的c实现)
{
ErrorLog(ERROR, " connect error, errno[%d]\n", errno );//把错误输出到错误日志
close( sock );//关闭socket
alarm(0);//蜂鸣器报警
signal( SIGALRM, SIG_DFL );调用外部函数
return FAIL;//返回FALL
}
return sock;//如果上面一切顺利,就返回上面创建好并设置好的socket的标示符sock。这句就是整个函数的最终目的。
}
本人菜鸟一名,解释之处难免有疏漏错误。如果有大侠,多多批评指正。希望对你有一点帮助。C语言不仅仅是一门语言,还要许多有关的计算机的基础,一起努力。
⑺ C语言函数题我实在不行了 求帮助~
#include "stdio.h"
char *join(char *a,const char *b,int n){
int i;
char *t;
if(a==NULL || b==NULL)
return NULL;
for(t=a;*t;t++);
for(i=0;i++<n && *b;*t++=*b++);
*t='