1、选择题
1.1、以下程序的输出结果是____A____。
main()
{
int k1=1,k2=2,k3=3,x=15;
if(!k1) x--;
else if(k2)
if(k3) x=4;
else x=3;
printf(“x=%d\n”,x);
}
A x=4 B x=15 C x=14 D x=3
1.2、有以下程序,while循环执行____A____次。
int main()
{
int k=2;
while(k=1)
printf(“%d”,k);
k--;
printf(“\n”);
}
A) 无限次 B) 2 C) 1 D) 0
1.3、有以下程序
int main()
{
int a=1,b;
for(b=1;b<=10;b++)
{
if(a>=8) break;
if(a%2==1) { a+=5; continue;}
a-=3;
}
printf("%d\n",b);
}
程序运行后的输出结果是 B
A)3 B)4 C)5 D)6
1.4、有以下程序
#include
int main()
{
int s=0,n;
for (n=0;n<3;n++) 0 1 2
{
switch(s)
{ case 0:
case 1:s+=1;
case 2:s+=2;break;
case 3:s+3;
case 4:s+=4;
}
printf((“%d\n”,s);
}
}
程序运行后的结果是 D
A)1,2,4 B) 3,10,10 C) 3,6,10 D) 3, 7, 7
1.5、有以下程序
#include
int main()
{int a=1,b=0;
if(-a) b++;
else if(a=0)b+=2; else b+=3;
printf("%d\n",b);
)
程序运行后的输出结果是(B )。
A)0 B)1 C)2 D)3
1.6有以下程序
#include
int main()
{
int a=7;
while(a--);
printf("%d\n",a);
}
程序运行后的输出结果是( A)。
A)-1 B)0 C)1 D)7
1.7、
2、填空题
2.1、以下程序运行结果是( )。
#include
int main()
{
int x=2,y=-1,z=2;
if(x if(y<0) z=0; else z+=1; printf("%d\n",z); } 3 2.2以下程序的执行结果是( d=20 )。 #include int main() { int a,b,c,d,x; a=c=0; b=1; d=19; if(a) d=d-10; if(!c) x=15; else x=25; d++ ; printf("d=%d\n",d); } 2.3以下程序的执行结果是( first )。 #include int main() { int x=1,y=0; switch(x) { case 1: switch(y) { case 0:printf("first\n");break; case 1:printf("second\n");break; } case 2:printf("third\n"); } } 2.4 以下程序在输入5,2之后的执行结果是( )。 #include int main() { int s,t,a,b; scanf("%d,%d",&a,&b); s=1; t=1; if(a>0) s=s+1; 2 if(a>b) t=s+t; 3 else if(a==b) t=5; else t=2*s; printf("s=%d,t=%d\n",s,t); } s=2,t=3 2.5 以下程序的执行结果是( # )。 #include int main() { int a=2,b=7,c=5; switch(a>0) { case 1: switch(b<0) { case 1:printf("@");break; case 2:printf("!");break; } case 0: switch(c==5) { case 0:printf("*");break; case 1:printf("#");break; case 2:printf("$");break; } default:printf("&"); } printf("\n"); } 2.6 以下程序运行结果是( 5 5 5 )。 #include int main() { int x,y=1; if(y!=0) x=5; printf("\t%d\n" ,x); 5 if(y==0) x=4; else x=5; printf("\t%d\n" ,x); 5 x=1; if(y<0) if(y>0) x=4; else x=5; printf("\t%d\n" ,x); 5 } 2.7 以下程序的运行结果是( ) #include int main() { int x , y=-2, z=0; if ((z=y)<0) x=4; else if (y==0) x=5; else x=6; printf("\t%d\t%d\n" ,x, z); 4 -2 if(z=(y==0)) x=5; x=4; printf("\t%d\t%d\n" ,x,z); 4 0 if(x=z=y) x=4; printf("\t%d\t%d\n" ,x,z); 4 -2 } 3编程题、 3.1 编写程序实现:服装店经营套服,也单件出售,若买的不少于50套,每套80元;不足50套的每套90元;只买上衣每件60元;只买裤子每条45元。输入所买上衣c和裤子t的件数,计算应付款m。 #include int main() { int c, t; // 上衣件数和裤子件数 int m; // 应付款 printf("请输入上衣件数:"); scanf("%d", &c); printf("请输入裤子件数:"); scanf("%d", &t); if (c >= 50) { m = 80 * c; // 买了不少于50套,每套80元 } else { m = 90 * c; // 不足50套,每套90元 } m += 60 * c + 45 * t; // 加上单买上衣和裤子的费用 printf("应付款为:%d元\n", m); return 0; } 4.思考题 4.1 下面是C语言中两种if语句判断方式。请问哪种写法更好?为什么? int n; if (n == 10) // 第一种判断方式 if (10 == n) // 第二种判断方式、 第二种更好,当少输入等号时会报错,这种写法可以帮助开发人员发现并纠正这种常见错误。第一种可读性好比较常见。 4.2 思考一下,计算1+2+3+……+100的和,最优化的算法是? 编程实现 使用数学等差数列计算 #include int main() { int n = 100; int sum = (n * (n + 1)) / 2; printf("1+2+3+...+100的和为:%d\n", sum); return 0; } 4.3 嵌入式系统中经常要用到无限循环,你怎么样用C编写死循环呢? while(1)