习题

一、选择题

3.1 若a、b、c、d都是int型变量且初值为0,以下选项中不正确的赋值语句是(  )。

A)a=b=c=100;

B)d++; 

C)c+b; 

D)d=(c=22)-(b++);

3.2 下列选项中不是C语句的是(  )。

A){int i;i++;printf("%d\n",i);}   

B);

C)a=5,c=10  

D){;}

3.3 合法的C语言赋值语句是(  )。

A)A=B=58 

B)K=int(a+b)

C)a=58,b=58 

D)--i;

3.4 使用getchar()函数时应在程序的开头嵌入的头文件是(  )。

A)"math.h" 

B)"stdio.h" 

C)"alloc.h"  

D)"dos.h"

3.5 有如下程序段:

char ch1,ch2;

ch1=getchar();

ch2=getchar();

putchar(ch1);

putchar(ch2);

若运行时输入:A B↙

则输出结果是(  )。

A)AB 

B)A B 

C)A

D)AA

3.6 有以下程序

#include"stdio.h"

void main()

{ int x=10,y=3;

   printf("%d\n",y=x/y);

}

执行后的输出结果是(  )。

A)0  

B)1  

C)3  

D)不确定的值

3.7 若变量已正确定义为int型,要给a、b、c输入数据,正确的输入语句是(  )。

A) read(a,b,c);                    

B) scanf("%d%d%d",a,b,c);

C) scanf("%D%D%D",&a,&b,&c);           

D) scanf("%d%d%d",&a,&b,&c);

3.8 若变量已正确定义为float型,要通过输入语句:scanf("&f &f &f",&a,&b,&c);给a、b、c分别赋值为11.0、22.0、33.0,不正确的输入形式是(  )。

A)11  

22

33

B)11.0,22.0,33.0_           

C)11.0             

22.0 33.0

D)11 22

33

3.9 若变量a、b、t已正确定义,要将a和b中的数进行交换,以下选项中不正确的是(  )。

A)a=a+b,b=a-b,a=a-b;  

B)t=a;a=b;b=t;

C)a=t;t=b;b=a;     

D)t=b;b=a;a=t;

3.10 若有正确定义语句double x=5.16894;

则语句printf("%f\n",(int)(x*1000+0.5)/(double)1000);的输出结果是(  )。

A)输出格式不对

B)5.170000

C)5.168000 

D)5.169000

3.11 若有以下程序段:

int c1=1,c2=2,c3;

c3=c1/c2;

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

执行后的输出结果是(  )。

A)0 

B)1/2 

C)0.5          

D)1

3.12 若有以下程序段:

 int a=0,b=0,c=0;

 c=(a-=a-5),(a=b,b+3);

 printf("%d,%d,%d\n",a,b,c);

执行后的输出结果是(  )。

A)3,0,-10         

B)0,0,5

C)-10,3,-10 

D)3,0,3

3.13 有以下程序段:

 char ch; int k;

 ch='a';k=12;

 printf("%c,%d,",ch,ch,k);

 printf("k=%d\n",k)

已知字符'a'的ASCII码值为97,则执行上述程序段后输出结果是(  )。

A) 因变量类型与格式符的类型不匹配输出无定值

B) 输出项与格式描述符个数不符,输出为0值或不定值

C) a,97,12k=12

D) a,97,k=12

3.14 有以下程序段:

 int a=1,b=1;

 scanf("%d%d",&a,&b);

 printf("a=%d,b=%d\n",a,b);

运行时输入:12.36↙,则输出结果是(  )。

A)a=12,b=36 

B)a=12.36,b=1 

C)a=12,b=1   

D)a=12,b=0

3.15 有以下程序段:

int a;

float b;

scanf("%2d%1f",&a,&b);

printf("%d,%f\n",a,b);

运行时输入:876543.0,则输出结果是(  )。

A)87,6.000000 

B)876,543.000000 

C)76,543.00000    

D)87,6543.000000

3.16 若有说明语句:double*p,a;则能通过scanf语句正确给输入项读入数据的程序段是(  )。

A)*p=&a;scanf("%lf",p);

B)*p=&a;scanf("%f",p);

C) p=&a;scanf("%lf",*p);   

D) p=&a;scanf("%lf",p);

二、填空题

3.17 若有以下定义,请写出输出结果。

int i=-200,j=2500;

printf("(1)%d,%d".i.j);

printf("(2)i=%d,j=%d\n",i,j);

printf("(3)i=%d\nj=%d\n",i,j,);

3.18 变量i、j、k已定义为int型且初值为0,用以下语句进行输入:

scanf("%d",&i);scanf("%d",&j);scanf("%d",&k);

从键盘输入:12.3↙,则i、j、k的值分别是      。 

3.19 复合语句在语法上被认为是    ,空语句的形式为  。 

3.20 C语句的最后用  结束。 

3.21 以下程序段是要求scanf语句给变量赋值,写出运行时给k、a、x分别输入100、15.81、1.89234时的三种输入形式。

int k;float a;double x;

scanf("%d%f%lf",&k,&a,&x);

printf("k=%d,a=%f,x=%f\n",k,a,x);

三、编程题

3.22 从键盘输入一个小写字母,用大写形式输出该字母。

3.23 输入任意一个三位数,将其各位数字反序输出。

3.24 编写程序,读入三个整数给a、b、c,然后交换它们中的数,交换原则:a给b、b给c、c给a,然后输出a、b、c。