C语言题目 1.下面程序的运行结果是( )

C语言题目 1.下面程序的运行结果是( ),第1张

其中有不少小的错误,作为程序它是不能运行的。

#include<stdioh>

int main( )

{ int y=2,a=1;

while(y--!=-1)

{ do{a =y; a++;} while(y--); }

printf("%d,%d",a,y);

return 0;

}

运行后的输出是:

1,-2

分析运行过程:

y=2,a=1;

判断,为真,y变为1

进入do循环:

a=11=1; a++变为2

内循环判断y--为真,y变为0;

再次内循环:

a=20=0; a++变为1

内循环判断y--为假,y变为-1;

外循环判断为假,y变为-2;

所以,最后的输出是1,-2

char ch[7]={"12ab56"}; 意思是把12ab56七个字符分别赋值到数组ch[0],ch[1]ch[6]中。

for(i=0;ch[i]>='0'&&ch[i]<'9';i+=2) 意思是从i=0开始,如果ch[i]大于等于字符‘0’且小于字符‘9’(可以由ASCII码将字符转换为十进制数来计算)那么i=i+2,否者终止循环。字符‘0’ASCII码为48,字符‘9’ASCII码为57;

ch[0]=字符'1'ASCII码为49,所以ch[0]满足大于等于字符‘0’且小于字符‘9’,执行s=10s+ch[0]-'0'=100+49-48=1(全部转化为十进制运算);

i=i+2=2;

ch[2]=字符‘a’ASCII码为97不满足条件,循环结束执行printf("%d\n",s); ,%d表示输出的为十进制整形数字,s=1,所以运行结果为1

你应该就这一句不好理解吧?

for (i =0; ch[i]>=’0’ &&ch[i]<=’9’;i+=2 )

s =10s +ch [ i ]- ‘0’;

printf (“ %d\n” , s);

分下格式,容易看。

for循环,循环进行的条件是 ch[i]是'0'字符到'9'字符之间。首先i=0,ch[0]就是 char ch[7] = {“12ab56”}; 这个字符串的第一个字符,就是'1'符合条件,进入循环的下一条语句s =10s +ch [ i ]- ‘0’; s = 0,所以10s是0,ch[0]-'0'='1'-'0' =1,2个字符串进行算术运算,取他们的asc 编码进行运算,你查下编码表就知道了,‘1’比‘0’大1然后相加 s = 0+1 =1。

然后进入循环更新式,也就是i+=2 这一条了,这个简单吧,i = i+2,开始i = 0, 现在 i=2了,然后i=2代入测试式ch[i]>=’0’ &&ch[i]<=’9’,ch [2]这次是字符数组的的第3个元素,也就是'a'了,不满足循环条件,所以不执行循环的下一条语句s =10s +ch [ i ]- ‘0’,循环结束。

然后输出s的值,s = 1,输出1

1、continue表示跳出本次循环,break表示跳出循环,sum+=i相当于sum=sum+i

所以结果为0+1,1+2,3+3,6+4

2、case 后面的数字如果与switch括号里的对应就执行冒号后面的表达式,直到遇到brak即会跳出,default为默认执行(当匹配不到)

所以结果为4,4,4,5

结果时 28 70,所以D)正确,选D)。把缩进写好这代码是这样的:

main(){

int x,i; 

for(i=1;i<=100;i++){

x=i;

if(++x%2==0)

if(++x%3==0)

if(++x%7==0)

printf("%3d",x);

}

return 0; 

}

可见意思是:从2到100间,从某个数开始连续的3个数符合最小能被2整除、中间的能被3整除、最大的能被7整除。输出最大的数。找出的第一个数是28,28能被7整除,27能被3整除,26能被2整除。找出的第2个数是70,70能被7整除,69能被3整除,68能被2整除。那3个if的条件实质是“与”的关系,所以写成一句if(++x%2==0 && ++x%3==0 && ++x%7==0)也是可以的。

这里最主要的问题在于对while (a[i++]!='\0') b[i]=a[i];这句话没有理解清楚。strcat(a,b)所以:a="ABLMNP"; b=“LMNP”

while (a[i++]!='\0') i=0表达式i++=0判断a[0]!='\0'后,i自增1,即i=1;所以进入循环体执行b[i]=a[i]时,i=1的,b[1]=a[1]='B';b[0]的值并未改变,b[0]=L;

因此将a[i]后面的值赋给b[i],所以结束的时候b="LBLMNP"。//

while (a[i]!='\0')

{

b[i]=a[i];

i++;

}

改成这样就是"ABLMNP"

你好

1程序的运行结果是:1,-2

2解释每一步的运行过程:

#include <stdioh>

void main()

{

int y, a ;

y=2, a=1;

while (y--!=-1)

{

do{

a=y ;

a++ ;

} while(y--);

}

printf("%d,%d\n",a,y);

}

从y=2,a=1开始哈

(首先我们要知道后自减y--型的返回值是y自减前的值 例如y=2 y--就返回2)

进入while循环

y--返回2 不等于-1 (此时y=1)

于是循环继续进入do while循环

执行a=y;a++后

a=2 y=1

y--返回1 是非零 于是do while循环继续进行 (此时y=0)

执行a=y;a++后

a=1 y=0

y--返回0 于是do while循环终止 (此时y=-1)

再判断while的循环条件: y--返回-1 于是while循环终止 此时y=-2

(讲的比较多 希望楼主能理解了)

以上就是关于C语言题目 1.下面程序的运行结果是( )全部的内容,包括:C语言题目 1.下面程序的运行结果是( )、下面程序运行结果是( )、下面程序的运行结果是 。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/zz/9275927.html

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

发表评论

登录后才能评论

评论列表(0条)

保存