C语言:以下程序的运行结果是()

void main()
{
int i,j;

for(i=10, j=10; i<=1000; i++)

{
if(j>=100) break;
if(j%2==0)

{
j*=20; continue;
}

}

printf("%d\n", i);

}
参考答案是1001,这个怎么算呢?求大神解答,谢谢了
上面写错了,参考答案是等于11

输出
#&
下面开始我的解释
int
a=2,b=7,c=5;
switch(a>0)
这里a
=
2,a>0结果是1,所以执行switch的case
1
{
case1:switch(b<0)执行这里,由于b=7所以b<0结果是0,执行case
0,这个switch没有case
0所以直接退出
{
case1:printf("@");break;
case2:printf("!");break;
}
case0:switch(c==5)
因为c=5,所以c==5的结果是1,执行case
1
{
case0:printf("*");break;
case1:printf("#");break;
执行这句输出
#
case2:printf("$");break;
}
注意这里!!这里没有break所以直落到下面的default里了,输出&
default:printf("&");
}
printf("\n");
结果就是
#&
温馨提示:内容为网友见解,仅供参考
第1个回答  2019-01-29
#define
sw(x,y)
{x^=y;y^=x;x^=y;}
这个宏的作用就是在不借助第三变量的情况下,交换x和y的值,^是位异或运算符,x^=y相当于x=x^y,具体什么是位异或运算,可以在网上轻意找到相关教材。
b=01代表8进制数的1,1在任何进制计数系统中都相等。
第2个回答  2013-03-20
答案错误。应该11。
或者代码有误。

void main()
{
int i,j;

for(i=10, j=10; i<=1000; i++)
{
if(j>=100) // 第一次循环j=10,所以不会退出;第二次j=200,满足大于100的条件,退出循环,此时i=11。

{
break;
}
if(j%2==0)// j=10,所以满足条件,执行j*=20后,j=200。继续循环。

{
j*=20;
continue;
}

}

printf("%d\n", i);

}本回答被提问者和网友采纳
第3个回答  2013-03-20
最终结束循环的条件是i>1000,故i输出为1001,与j无关
第4个回答  2013-03-20
i=10,j=10→j=200,i=11 程序结束

以下程序的运行结果是( )。 main() { int x = 4; do { printf("%2d...
4,C正确,选C——因为输出4后!x就是!4==0,就结束循环了。

C语言,以下程序的运行结果是?
b=01代表8进制数的1,1在任何进制计数系统中都相等。

下面程序段的运行结果是( )。 char *p="abcdefgh"; p+=3; printf("%d...
这个函数返回的值是目标串的地址,也就是p啦,那么p是个指针怎么算地址的长度呢,其实就是strlen("ABCD")啦,为什么,计算机知道的啦,因为p指向了“ABCD”首地址了,而c语言中默认在ABCD后加个结束符的,所以答案就是4了。

C语言问题:下面程序的运行结果是
看看程序逐步运行跟踪结果:i=1;[i=1] i<5成立,开始循环: i%2为真, printf输出[*], printf累计输出[*#]i++;[i=2] i<5成立,继续循环: i%2为假, continue;i++;[i=3] i<5成立,继续循环: i%2为真, 累计输出[*#*], 累计输出[*#*#]i++;[i=4] i<5成立,继续循环: i%2为...

C语言的一道题:下面程序段的运行结果是:__ for (a=1,i=-1;-1<=i<1...
C语言中 -1<=i<1 这样的语句是无法达到你要的效果的,对于这个句子,C语言是这样处理的:(-1<=i)<1 (1)这样的话,-1<=i为真,所以这个表达式的值为1,也就是说(1)这个表达式等价于(1<1)然后这个式子为假,所以不会进入该循环,所以i没有发生变化,也不会输出i,所以答案为-1 如...

C语言的一道题:下面程序段的运行结果是:__ for (a=1,i=-1;-1<=i<1...
i初值为-1,-1<=i成立,为1;1<1不成立,因而循环条件不满足,循环不会进行。执行printf("%2d", i),输出-1。

以下程序运行后,输出结果是( ) main() { char *s="abcde"; s+=2...
选择答案C,输出的为字符c的地址。因为%d是打印整形变量的值,因为前一句执行了s+=2,s指针偏移了两个位置,偏移了两个位置之后s指向的是字符c,所以输出语句输出的是指针s,而s存放的是地址,所以输出的就是字符c所在的地址。

c语言,以下程序运行后的输出结果是
c=(a+=a-=5)是一个表达式,(a=b,b+3)是另一个表达式。a=0,a=a-5=-5,a=a+a=(-5)+(-5)=-10,将值赋给c,c=-10,此时,a=-5 a=b,将b的值赋给a,a=0,执行b+3=0+3=3,这个3不对任何变量赋值。因此最终结果a=0,b=0,c=-10 输出a、b、c的值,输出0,0,-10...

C语言,以下程序运行后的输出结果为__
开始时,len为0,offset=3,offset不为0,先输出p+offset-1上的元素,即*(p+2),为g,并len++,再调用print(str)。之后,每次递归,len静态变量保存了上一次的值。实际上,len每加一,offset就随之向左偏移一位,指向前面的一个字符,也就是倒过来输出字符串中的每个字符。直到len=strlen(str)...

以下程序的运行结果是#include<stdio.h> void main( ) { int a=3,b...
void main(){ float a,b,c,d;for(d=1;;d++)\/\/*这里的d就不做要求,它属于整个自然数集合里面,另外a,b,c,d都是分母,所以定义的初始值都为1*\/\/ for(c=1;c<=d;c++)for(b=1;b<=c;b++)for(a=1;a<=b;a++)if(1\/a+1\/b+1\/c+1\/d==1)printf("a=%g,b=%g,c=%g,d...

相似回答