two=a0/10; //取出十位 one=a;//取出个位 printf(\} 选择题
[3.1] 若a、b、c、d、都是int类型变量且初值为0,以下选项中不正确的赋值语句是( C ) A)a=b=c=d=100; B)d++; C)c+b; D)d=(c=22)-(b++); 【解析】C是表达式,无法完成赋值
[3.2] 以下选项中不是C语句的是( C )
A){int i; i++; printf(“%d\\n”,i);} B); C)a=5,c=10 D){ ; }
【解析】C是表达式,没有 ; 结尾,只有;的语句是空语句
[3.3] 以下合法的C语言赋值语句是( D )
A)a=b=58 B)k=int(a+b); C)a=58,b=58 D)--i;
【解析】语句必须以;结尾,B中强制类型转换的正确写法为k=(int)(a+b);
[3.4] 以下程序的输出结果是( C ) A)0 B)1 C)3 D)不确定的值 main( )
{ int x=10, y=3;
printf(“%d\\n”,y=x/y); }
【解析】除法并且两边都为整型,最后也是整型
[3.7] 若变量已正确定义,要将a和b中的数进行交换,下面不正确的语句组是( D ) 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.8] 若变量已正确定义,以下程序段的输出结果是( D ) A) 输出格式说明与输出项不区配,输出无定值 B)5.17 C)5.168 D)5.169 X=5.16894;
Printf(“ %f\\n”,(int)(x*1000+0.5)/(float)1000);
【解析】其上市四舍五入发,保留3位有效数字
[3.9] 若有以下程序段,c3中的值是( A ) A)0 B)1/2 C)0.5 D)1 int c1=1,c2=2,c3; c3=c1/c2;
【解析】不够除,商0
[3.10] 若有以下程序段,其输出结果是( B )
A)3,0,-10 B)0,0,5 C)-10,3,-10 D)3,0,3
int a=0,b=0,c=0;
c=(a-=a-5),(a=b,b+3);
printf(“ %d,%d,%d\\n”,a,b,c);
【解析】a-=a-5得a=5,赋值给c=5,后面将b赋值给a,a=0,b+3执行了,但是并没有改变b的值
辨析:
int a=0,b=0,c=0;
c=((a-=a-5),(a=b,b+3));
printf(\
【解析】a-=a-5得a=5,没有赋值给c,后面将b赋值给a,a=0,b+3执行后赋值给了c;因为逗号表达式永远是最后一个逗号后的值赋值给c,只是相差一个(),结果就不同了。
填空题
[3.21] 若有以下定义,请写出以下程序段中输出语句执行后的输出结果。 (1)-200,2500(2)i=-200,j=500 (3)i=-200 回车 j=2500
int i=-200,j=2500;
printf(“ (1) %d %d”,i,j);
printf(“ (2) i=%d,j=%d\\n” ,i,j); printf(“ (3) i=%d\\n j=%d\\n”,i,j);
[3.22] 变量i、j、k已定义为int类型并有初值0,用以下语句进行输入时 scanf(“ %d”,&i); scanf(“ %d”,&j); scanf(“ %d” ,&k);
当执行第一个输入语句,从键盘输入: 12.3
则变量i、j、k的值分别是____12____、____0___、__0____。
【解析】因为只输入一个数,而且定义i为整型,所以会自动将12.3进行截断,变成12
[3.23] 复合语句在语法上被认为是 一条语名。空语句的形式是 ;
[3.24] C语句的最后用 ;结束。
[3.25] 以下程序段,要求通过scanf语句给变量赋值,然后输出变量的值。写出运行时给k输入100,给a输入25.81,给x输入1.89234 时的三种可能的输入形式_____、_____、_____。
int k; float a; double x;
scanf(“ %d%f%lf”,&k,&a,&x); pirntf(“ k=%d,a=%f,x=%f\\n”,k,a,x);
以空格隔开输入
以回车隔开输入
回车和空格连用输入
编程题和改错题
[3.29] 以下程序多处有错。要按下面指定的形式输入数据和输出数据时,请对该程序做相应的修改。 main
{double a,b,c,s,v;
printf(input a,b,c:\\n);
scanf(“%d%d%d”,a,b,c);
s=a*b; /*计算长方形面积*/
v=a*b*c; /*计算长方体体积*/
printf(“%d %d %d”,a,b,c);
printf(“s=%f\\n”,s,”v=%d\\n”,v); }
当程序执行时,屏幕的显示和要求输入形式如下:
input a,b,c:2.0 2.0 3.0 此处的2.0 2.0 3.0是用户输入的数据
a=2.000000,b=2.000000,c=3.000000 此处是要求的输出形式
s=4.000000,v=12.000000
代码改成如下: #include
{floata,b,c,s,v;
printf(\
scanf(\
s=a*b; /*计算长方形面积*/
v=a*b*c; /*计算长方体体积*/
printf(\ %f %f\\n\
printf(\ }
[3.30] 编写程序,把560分钟换算成用小时和分钟表示,然后进行输出。
#include
[3.31] 编写程序,输入两个整数:1500和350,求出它们的商数和余数并进行输出。 #include
printf(\商为:%d, 余数为:%d\\n\}
[3.32] 编写程序,读入三个双精度数,求它们的平均值并保留此平均值小数后一位数,对小数点后第二位数进行四舍五入,最后输出结果。 #include
double a,b,c,avg;
printf(\请输入三个双精度的小数:\\n\
scanf(\ avg=(a+b+c)/3;
printf(\四舍五入之前三个数的平均数为:%lf\\n\ avg *=10; avg +=0.5; avg =(int)avg; avg /=10;
printf(\四舍五入之后三个数的平均数为:%.1lf\\n\}
[3.33] 编写程序,读入三个整数给a、b、c,然后交换它们中的数,把a中原来的值给b,把b中原来的值给c, 把c中原来的值给 a。 #include
printf(\交换位之后,a=%d, b=%d, c=%d\\n\}