其中有不少小的错误,作为程序它是不能运行的。
#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.下面程序的运行结果是( )、下面程序运行结果是( )、下面程序的运行结果是 。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)