当前位置:首页 » 编程语言 » c语言函数太难了
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言函数太难了

发布时间: 2022-04-19 20:25:12

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='';

return a;

}

int main(int argc,char *argv[]){

char a[66] = "i love";

char b[] = " study very much cai guai";

//join(a,b,6); // 执行后a中字符串为"i love study"

//join(a,b,666); // 执行后a中字符串为"i love study study very much cai guai"

printf("6: %s ",join(a,b,6));

printf("666: %s ",join(a,b,666));

return 0;

}

代码图片及运行样例:

⑻ 为什么C语言很难

我举一个例子:
我们现在生火直接打开煤气,天然气或者打火机就可以了。可是远古人需要钻木取火。C语言是一样道理。实现一个功能,如果你用java来做,可能100行代码,如果你用C++估计得用300行以上,那如果你用C这种非面向对象语言,可能要1000+行。因为c比c++和java更加底层。而语言越底层难度是越大的。
java也好,php也好,这些高级语言是没有指针这个概念的(虽然java中到处都是指针),而C++和C之所以难,就是有指针这个概念。指针是什么?可以说有了指针,你就有了直接与内存对话的机会。更底层的还有汇编,直接跟内存打交道。
但是对于新手而言其实大可不必担心。C语言是个适合新手的非常好的入门语言,现在主流的流行语言很多都是类C的。

⑼ c语言函数太难了,怎么学

莫非这点小问题就打击到你了, 你漫漫长征第一步都还没开始, 以后的数据库 数据结构 操作系统 计算机网络 每一门课程都是很难的

C语言的函数其实很简单 你就把他当成一个功能模块就行了, 这个东西理解清楚了其实很简单的, 比如说你想请客吃饭, 这是你的最后功能,中间你可能叫别人通知另外的人, 那么你叫别人通知的这个过程就可以当成一个函数了, 因为你叫他帮你做一件事, 但可能不知道他是怎么做的, 你只关注入口和出口, 即你叫他通知和他是否通知到.

既然是叫别人帮忙做事的话, 你可能需要传一些东西给别人这就是参数, 别人做完后, 可能要返回给你一个东西, 这就是返回值, 但这不是必须的.

C语言程序全都是函数, 他就是一个函数的集合, 在main函数中调用其他的函数, 所以说C语言里全是函数, 锄此之外再没别的东西了

⑽ 为什么我觉得C语言的数组和函数那么难啊 有什么办法可以让我觉得学这部分会容易点

数组:想放一大堆数字的时候就会有用了。 想放一长串字母的时候同理。 想放多少,定义得比它大就行了。 函数:在C语言中函数是非常重要的环节。 当然你可以把所有代码全部都写在一起,那样除了你自己没人能看懂了,但是假如我写了一个程序,主函数里面只有几个小函数,而且从名字就知道它是做什么的,那样就一目了然了。函数的目的就是把要做的事情分成一个一个的小组。 对于自己写代码嘛。。。 适量的课后练习题足够了,选对自己不太简单也不太难的,边做边回忆课文中所讲到的编程思想,能起到加深记忆的作用。当然如果你记忆超群能记住所有用法,那么你的重点就是自己思考应该怎么把你所掌握的知识点运用到实际中去,在做题的时候多想一想,我用哪个方法比较巧妙?多想想,自己的技巧就在不知不觉中提高了。 个人看法,希望能对你有所帮助。