手抄报 安全手抄报 手抄报内容 手抄报图片 英语手抄报 清明节手抄报 节约用水手抄报

如何备考C语言二级考试之程序运行结果分析篇

时间:2024-10-15 10:40:17

1、程序:#include <stdio.h>int main(int argc,char **argv){ int x=10,y=20,t=0; if(x==y)t=x;x=y;y=t; printf(“%d %d\n”,x,y); return 0;}分析程序运行结果为?电仔的解题步骤:把 if(x==y)t=x;x=y;y=t; 语句这样书写 if(x==y) t=x; x=y; y=t;或者干脆这样书写 if(x==y) { t=x; } x=y; y=t;可以看出 x==y 为假, t=x; 语句不执行x=y,也就是x=20,t不变,也就是t=0那么 printf(“%d %d\n”,x,y ); 语句打印输出20 0图为在Linux系统下编程验证,图中黑色部分为程序输出结果

如何备考C语言二级考试之程序运行结果分析篇

2、程序:#include <stdio.h>main(){ int i,n[猱蝰逾鸾5]={0}; f泠贾高框or(i=1;i<=4;i++); { n[i]=n[i-1]*2+1; printf("%d",n[i]) } printf("\n");}则程序输出结果是?电仔的解题步骤: for(;1<4;i++); { n[1]=n[1-1]*2+1; printf("%d",n[1]); }上面是第一次循环,n[1]=0*2+1=1,则 printf("%d",n[i]); 输出1 for(;2<4;i++); { n[2]=n[2-1]*2+1; printf("%d",n[2]); }上面是第二次循环,n[2]=n[1]*2+1=3,则 printf("%d",n[i]); 输出3 for(;3<4;i++); { n[3]=n[3-1]*2+1; printf("%d",n[3]); }上面是第三次循环,n[3]=n[2]*2+1=3,则 printf("%d",n[i]); 输出7for(;4==4;i++); { n[4]==n[4-1]*2+1; printf("%d",n[4]); }上面是第四次循环,n[4]=n[3]*2+1=3,则 printf("%d",n[i]); 输出15结束循环后执行 printf("\n"); 输出换行最后我们可以看到的输出为13715图为在Linux系统下编程验证,图中黑色部分为程序输出结果

如何备考C语言二级考试之程序运行结果分析篇

3、程序:#include<stdio.h>main(){ char c1,c2; scanf(“%d”,(int *)&c1); c2=c1+9; printf(“%c%c\n”,c1,c2);}字符0的ASCII码值为48,若程序运行时从键盘输入48后回车,则输出结果为?电仔的解题步骤:执行完 scanf(“%d”,(int *)&c1); 后,c1的值为48,对应的ASCII码为字符0执行完 c2=c1+9; 后,c2的值为57,对应的ASCII码为字符9(0+9)那么执行 printf(“%c%c\n”,c1,c2); 输出09图为在Linux系统下编程验证,图中黑色部分为程序输出结果

如何备考C语言二级考试之程序运行结果分析篇

4、程序:#include <stdio.h>main( ){ int a=1, b=0; if( !a ) b++; else if( 0==a) if(a) b+=2; else b+=3; printf( "%d\n",b );}程序运行的输出结果是?电仔的解题步骤:为了方便理解,我把主函数整理为等效的布局和表达形式main( ){ int a=1, b=0; if( !a ) { b++; } else if( a==0) { if(a) { b=b+2; } else { b=b+3; } } printf( "%d\n",b );}这样就容易看出, !a 为假, a==0 也为假,所有条件语句括号内的语句都得不到执行,变量b的值不变所有 printf( "%d\n",b ); 输出0对这题还不能理解的读者欢迎在评论中提出,图为在Linux系统下编程验证,图中黑色部分为程序输出结果

如何备考C语言二级考试之程序运行结果分析篇

5、程序:#include <stdio.h>main( ){ int a=1, b=2稆糨孝汶; while( a<6 ) { b+=a; a+=2; b%=10; } printf( "%d, %d\n",a, b );}则程序的运行结果是?电仔的解题步骤:同理,我也把main函数整理一下main( ){ int a=1, b=2; while( a<6 ) { b=b+a; a=a+2; b=b%10; } printf( "%d, %d\n",a, b );}接着推导while循环何时结束 while( 1<6 ) { b=2+1; a=1+2; b=3%10; }上面是第一循环,最后 b=3 ,a=3 while( 3<6 ) { b=3+3; a=3+2; b=6%10; }上面是第一循环,最后 b=6 ,a=5 while( 5<6 ) { b=6+5; a=5+2; b=11%10; }上面是第一循环,最后 b=1,a=7 while( 1<6 )条件不成立,循环结束执行 printf( "%d, %d\n",a, b ); 输出7, 1图为在Linux系统下编程验证,图中黑色部分为程序输出结果

如何备考C语言二级考试之程序运行结果分析篇

6、程序:#include <include>main( ){ char s[ ]="rstuv"; printf( "%c\n",*s+2 );}电仔的解题步骤:这题牵涉到指针数组,有时间我再写个指针数组的专题*s+2 等效为 (*s)+2也就是 'r'+2 ,换句话说取出字符ASCII的码值加2,刚好是 t 的码值输出和"rstuv"的‘t’没有一点关系, *s+2 要是理解为 *(s+2) 输出也是 t但是这样理解是错的,比如把对应该语句改为 char s[ ]="rsuuv";那么输出结果是 t 而不是u图为在Linux系统下编程验证,图中黑色部分为程序输出结果

如何备考C语言二级考试之程序运行结果分析篇
© 手抄报圈