C语言习题~~~请教高手,急!!!

来源:百度知道 编辑:UC知道 时间:2024/07/01 04:27:05
都有答案,但是不知道原因,帮忙分析一下哈
1.运行下面程序后,输出是( )。 main( )
{ int k=-3;
if (k<=0) printf("****\n")
else printf("####\n");
}
A) #### B) ****
C) ####**** D) 有语法错误不能通过编译
D
2.下面程序的输出结果是
#include <stdio.h>
main( )
{ int a=2,b=7,c=5;
switch(a>0)
{ case 1:switch(b<0)
{ case 1: printf("@"); break;
case 0: printf("!"); break;
}
case 0:switch(c==5)
{ case 0: printf("*"); break;
case 1: printf("#"); break;
default: printf("%%");break;
}
default: printf("&");
} printf("\n");
}
A) & B) !#&
C) %% D) @*&
B
3.运行下面程序时,若从键盘输入数据为"123",
则输出结果是( )。
main( )
{ int num,i,j,k,place;
scanf("

第一题:D
if后面的输出语句后面没有分号。
第二题:B
帮你分析:
#include <stdio.h>
main( )
{ int a=2,b=7,c=5;
switch(a>0)
\*你先看这个,a>0为真,其值是1,可以看成switch(1)*\
{ case 1:switch(b<0)
\*执行这条语句,b<0为假,其值为0,同上,可看成switch(0)*\
{ case 1: printf("@"); break;
case 0: printf("!"); break;
\*执行这条语句,输出!*\
}
case 0:switch(c==5)
\*由于“case 1:switch(b<0)”语句没有break作结束,所以
继续执行这条语句,它的值为真,即1,看成switch(1)*\
{ case 0: printf("*"); break;
case 1: printf("#"); break;
\*执行这条语句,输出#*\
default: printf("%%");break;
}
default: printf("&");
\*语句“case 0:switch(c==5)”依然没有break作结束,所以
执行这条语句,输出&*\
} printf("\n");
}
第三题:C
帮你分析:
main( )
{ int num,i,j,k,pl