一道很简单的C语言入门练习题,望高手指点

Python025

一道很简单的C语言入门练习题,望高手指点,第1张

三道题是考优先级和结合方向的问题:

(1)先做加法,(a+a)=24,但是a=12不变;然后a/=24,a=0.5,因为a是整型变量,故答案为0

(2)先做括号里的(n%=2)=1;然后a%=1,答案是0

(3)一般编译系统(像TuborC)的复合赋值运算符的结合性是从右至左:先a*=a,得a=144;然后a-=a得a=0;最后a+=a,得a=0

看来我真是闲的蛋疼了。。。

1.c 2d 3a 4b 没什么问题

5.应该是4+4+8=16,没有答案。

判断没问题。

函数

1.d

2要是说的是函数的声明的话就是c,定义的话明显都不对

3d 4a 5c 6a 7d 8c

最后一个不会

1、C语言的跳转语句中,对于break和continue说法正确的是_______。

A、continue语句只应用于循环体

B、break语句只应用于循环体中 (switch也用)

C、break是无条件跳转语句,continue不是 (均无条件跳转)

D、break和continue的跳转范围不够明确,容易产生问题 (goto跳转范围不够明确)

2、对于do...while语句,下列说法中正确的是______。

A、用do...while语句可实现分支程序设计(循环)

B、当循环条件不成立时,至少也要执行一次循环体

C、当循环条件不成立时,一次也不执行循环体 (至少执行一次)

D、do...while与while结构完全相同 (不同)

3、下列程序段执行时,若从键盘输入23,则输出为______。

int c,num

scanf("%d",&num)

do

{

c=num%10

printf("%d",c)

num=num/10

}while(num>0)

printf("\n")

解释:

第一次循环 23%10 = 3 输出3,23/10(整除)值为2 继续循环

第二次循环 2 %10 = 2 输出2 2/10值为0 退出循环

结果 32

4、若I,j已定义为int型,则以下for循环是( )。

for(I=0,j=0;(j!=123)&&(I<4);I++);

A、无限循环

B、循环次数不定

C、执行4次

D、执行3次

解释:

j != 123 永远为真

上面一句等价为 for(I=0;I <4;I++); 所以4次

5、对于for(表达式1;;表达式3)可以理解为________。

A、for(表达式1;0; 表达式3)

B、for(表达式1;1; 表达式3)

C、for(表达式1;表达式1;表达式3)

D、for(表达式1;表达式3;表达式3)

解释:for(表达式1;;表达式3) 说明循环不判断循环条件永远为真所以

for(表达式1;1; 表达式3)

6、执行下列程序段后,I值是( )。

int I,x;

for(I=1,x=1;I<=20;I++)

{

if(x>=10) 语句1

break;

if(x%2==1) 语句2

{

x+=5;

continue;

}

x-=3;

}

第一次循环:语句1为假,语句2为真执行 x+ = 5 x值变成6 重新循环

第二次循环:语句1为假,语句2为假执行 x- = 3 x值变成3 重新循环

第三次循环:语句1为假,语句2为真执行 x+ = 5 x值变成8 重新循环

第四次循环:语句1为假,语句2为假执行 x- = 3 x值变成5 重新循环

第五次循环:语句1为假,语句2为真执行 x+ = 5 x值变成10 重新循环

第六次循环:语句1为真,退出循环 x值为10

7、下列程序的执行结果是( )。

#include<stdio.h>

main( )

{

int s=0, k;

for(k=7k>=0k--)

{

switch(k)

{

case 1:

case 4:

case 7:

s++;

break;

case 2:

case 3:

case 6:

break;

case 0:

case 5:

s+=2;

break;

}

}

printf("s=%d\n",s);

}

switch语句一旦匹配到case就不在匹配case了,直接按顺序执行下一个case中的代码。不难得出答案。

8、下列程序段执行结果是输出( )。

x=3;

do

{

printf("%2d",x--)

} while(!x);

x++ 和++x 前缀和后缀的问题数上讲了很多。

第一次循环输出3 x的值变成2 !2 为假退出循环

9、以下程序的执行结果是( )。

#include

#define N 2

#define M N+1

#define NUM (M+1)*M/2

main( )

{

int I=1,n=0

while(I<=NUM)

{

n++

printf("%d",n)

I++

}

printf("\n")

}

宏展开:

等价于 while(I <= (M+1)*M/2 )

等价于 while(I <= (N+1+1)*N+1/2 )

等价于 while(I <= (2+1+1)*2+1/2 )

等价于 while(I <= 8 )

10、若I,j已定义为int型,则以下程序段中内循环体"printf("sd\n")"的执行次数是__________。

#include

main( )

{

int j,I

for(I=5I>=1I--) 执行5次

for(j=0j<4j++) 执行4次

printf("sd\n")执行5×4 = 20次

}

循环中条件变量x++ 和++x 等效

结果我没验证 C语言学习推荐看 point on c