C语言例题求解

C语言例题求解,第1张

这是函数的递归调用问题,执行顺序是这样的,主函数传递给fun函数的参数是6,在if语句中进行判断,由于6/2=3>0,所以继续调用fun函数,这次传递的参数是3,注意这时候是在调用fun函数,下面的printf语句并没有执行。3这次调用fun传递进来的参数是3,由于3/2=1>0(注意整型数据除法保存为不大于结果的整数),所以继续调用fun函数,里面的printf还是没有执行,第三次调用fun函数时的参数就是1了,1/2=0,所以不再调用fun,而是执行后面的printf语句,由于这时x=1,所以输出的是1,然后函数返回到第二次调用那里,执行后面的printf语句,由于第二次调用时x=3,所以输出3,再返回到第一次调用时,这里x=6,所以输出6,然后再返回到主函数,后面没有语句了,程序结束

9下面程序段中循环体的执行次数是__3_____。

a=10;

b=0;

do{b+=2;a-=2+b;}while(a>=0);

10下面程序段的运行结果是______。

x=2;

do{{printf(‘’);x--;}while(!x==0);

11下面程序段胡运行结果是__a=-5_____。

i=1; a=0; s=1;

do{a=a+sI; s=-s; i++;}while(i<=10);

printf(“a=%d\n”,a);

scanf()函数读入数据后,会将最后的空白符(<space>、<Tab>和<CR>)留在输入缓冲区,如

int a;

char str[100];

scanf("%d%s",&a,str);

用  23 asd<CR>响应时,3前面的空格和3与a之间的空格被当作分隔符读入后丢弃,而最后的<CR>仍保留在输入缓冲区中。

gets()函数对空白符的处理方法与scanf()不同,会将所有的空白符看作是串的一部分,以<CR>作为结束读入的字符,这个<CR>不会保存在串中,遇到<CR>后,会在串为添加串结束符'\0',也就是说,gets()函数会将输入缓冲区中每个字符都读出来。

为了防止读入的字符串长度超过数组长度,目前流行的做法是用fgets(char str[],const size_t size,stdin)函数读取字符串,读到size - 1个字符后,立刻结束读入过程,并将str[size]置为'\0'。如果输入的字符数不到size - 1个,则会将'\n'作为字符串的最后一个有效字符保存在str中(这些美国人是怎么想的?)。

编程中要注意的问题是:

一、如果scanf()后还是scanf(),第一个scanf()留下的空白符不会影响到下一个scanf()得到有效数据。

二、如果scanf()后是gets(),那么scanf()留下的<CR>会使gets()立即结束读入过程,根据gets()的转换规则,从而使gets()读取的字符串的第一个字符为'\0'(空串)。

三、如果scanf()后是fgets(),情况与二相同。

四、如果gets()或fgets()后是scanf(),gets()不会留下任何残留,即使留,也不会影响scanf()的正常读入。

通过以上的介绍,我们知道,在读入数据过程中,偶尔会添加语句getchar()的目的何在,事实上,只有在scanf()后是gets()或fgets()时是必要的,其他情况下是不必要的。

   以上说的都是个人不全面的理解,偏颇之处难以避免,欢迎各位吐槽    

以上就是关于C语言例题求解全部的内容,包括:C语言例题求解、C语言练习题、C语言:一个指针的程序例题,等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9365417.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存