如何使用Visual Studio 2010编写一个C语言程序,本经验将手把手教大家如何通过VS2010编写一个简单的C语言小程序......
2023-03-16 404 C语言
在C语言二级考试中,给出C语言小程序,让考生分析运行结果的题目比较多,相对来说这方面的题目比较简单,只要细心推导,得出结果不难。下面就由电仔谈谈这方面的解题经验,主要是把我解题的过程写出来,而不是讲解理论。
程序:
#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系统下编程验证,图中黑色部分为程序输出结果
程序:
#include stdio.h>
main()
{
int i,n[5]={0};
for(i=1;i=4;i );
{
n[i]=n[i-1]*2 1; printf("%d",n[i])
}
printf("\n");
}
则程序输出结果是?
电仔的解题步骤:
for(;14;i );
{
n[1]=n[1-1]*2 1; printf("%d",n[1]);
}
上面是第一次循环,n[1]=0*2 1=1,则 printf("%d",n[i]); 输出1
for(;24;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(;34;i );
{
n[3]=n[3-1]*2 1; printf("%d",n[3]);
}
上面是第三次循环,n[3]=n[2]*2 1=3,则 printf("%d",n[i]); 输出7
for(;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系统下编程验证,图中黑色部分为程序输出结果
程序:
#includestdio.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系统下编程验证,图中黑色部分为程序输出结果
程序:
#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系统下编程验证,图中黑色部分为程序输出结果
程序:
#include stdio.h>
main( )
{
int a=1, b=2;
while( a6 ) { b =a; a =2; b%=10; }
printf( "%d, %d\n",a, b );
}
则程序的运行结果是?
电仔的解题步骤:
同理,我也把main函数整理一下
main( )
{
int a=1, b=2;
while( a6 ) { b=b a; a=a 2; b=b; }
printf( "%d, %d\n",a, b );
}
接着推导while循环何时结束
while( 16 ) { b=2 1; a=1 2; b=3; }
上面是第一循环,最后 b=3 ,a=3
while( 36 ) { b=3 3; a=3 2; b=6; }
上面是第一循环,最后 b=6 ,a=5
while( 56 ) { b=6 5; a=5 2; b=11; }
上面是第一循环,最后 b=1,a=7
while( 16 )
条件不成立,循环结束执行 printf( "%d, %d\n",a, b ); 输出
7, 1
图为在Linux系统下编程验证,图中黑色部分为程序输出结果
程序:
#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系统下编程验证,图中黑色部分为程序输出结果
以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!
相关文章
如何使用Visual Studio 2010编写一个C语言程序,本经验将手把手教大家如何通过VS2010编写一个简单的C语言小程序......
2023-03-16 404 C语言
怎样使用VC软件编译并运行C语言程序,ViualC 6.0是一款非常好的软件,它不仅可以运行C代码程序,还可以创建位图和PPT等工程文件,现在的全国计算机等级考试(二级C)指定的编译软件就是VC6.......
2023-03-16 163 C语言