圆轴伸缩滑轨:那位达人给我讲讲这几道题啊??!!(C语言)

来源:百度文库 编辑:高校问答 时间:2024/04/27 13:54:33
1.执行以下程序后,输出#号的个数是几个?

main ()
{ int i,j;
for (i=1;i<5;i++)
for (j=2;j<=i;j++) putchar('#');}

2.函数sstrcmp的功能是对两个字符串进行比较,当s所指字符串和t所指字符串相等时,返回值为0;当s所指字符串大于t所指字符串时,返回值大于0,当s所指字符串小于t所指字符串时,返回值小于0(功能等同于库函数strcmp()),请填空

int sstrcmp(char*s,char*t)
{while(*s&&*t&&*s==______){s++,t++}
return______;}

3.以下程序运行结果是______

main()
{ int a=1,b=2,c=3;
a++;c+=b;
{ int b=4,c;
c=2*b; a+=c; printf("%d,%d,%d," a,b,c); } printf("%d,%d,%d\n", a,b,c);}

请好心的哥哥姐姐给讲讲这几道题啊,是怎么做出来的,c语言怎么这么难啊,真想放弃,你们是怎么学好c语言的啊??谢谢了
请一定帮我讲解一下啊,答案并不重要,我希望知道是怎么做出来的!!谢谢!!!!

1、i=1时j=2>1,不会执行第2个循环。i=2时,j=2<=2,执行一次循环后j为3,大于2了,退出循环。同理,i=3时,第2个循环执行2次;i=4时,第2个循环执行3次。i=5时,第一个循环结束。所以共输出1+2+3=6个#

2、所谓比较字符串,其实是从两个字符串的首字符开始逐个比较,当两个字符相等时,分别再取第2个字符比较,再是第3个,第4个.......,直到两个字符不等时,看谁的字符大就是哪个字符串大。
所以第一个空要填*t,即当两个字符串都还没到尾部并且用来比较的两个字符相等时,继续准备比较各自的下一个字符。
这个循环停止条件只有以下两种情况:
(a)、至少有一个字符串到达了结尾处。
(b) 、用来比较的字符不相等。
因为字符串结尾是'\0'结束符,值为0,也可以用于和字符比较,所以(a)情况可以并入情况(b),即当用来比较的字符不相等时,循环结束。此时比较两个字符的大小就是比较两个字符串的大小。
所以第2个空要填*s==*t?0:(*s>*t?1:-1)

3、此题的关键是:局部变量会屏蔽与其同名的外部变量。
因此,在复合语句段中起作用的b,c是int b=4,c;这个地方声明的b,c。
而复合语句段中没有声明a变量,所以a+=c处的a仍是外部的a。
所有程序执行过程如下:
a=1;b=2;c=3;
a++后a=2
c+=b后c=5
c=2*b;此处的b,c是局部变量,b=4,所以c=8;
a+=c;此处的c是局部变量,c=8,a为2所以a+=c后a=10;
printf;此时输出的a为10,b,c为局部变量,所以分别是4,8。
最后一个printf;此时已退出复合语句段,输出的是b,c是main中声明的b,c,所以输出10,2,5。
总的输出为10,4,8,10,2,5