篇一:C语言第三、四章作业题答案
东华理工大学:C语言第三章作业题
闭/开卷 课程类别:考试/考查
第三章 顺序结构程序设计
一、选择题
1.C语言中调用printf进行输出时需要注意,在格式控制串中,格式说明与输出项的个数必须相同。如果格式说明的个数小于输出项的个数,多余的输出项将 A;如果格式说明的个数多于输出项的个数,则对于多余的格式将输出不定值(或0)。 A)不予输出 B)输出空格
C)照样输出 D)输出不定值或0
2.在 scanf函数的格式控制中,格式说明的类型与输入的类型应该一一对应匹配。如果类型不匹配,系统 B 。 A)不予接收
B)并不给出出错信息,但不可能得出正确信息数据 C)能接受正确输入
D)给出出错信息,不予接收输入
3.下列说法正确的是。
A)输入项可以是一个实型常量,如scanf("%f",4.8);
B)只有格式控制,没有输入项也能进行正确输入,如scanf("a=%d,b=%d"); C)当输入一个实型数据时,格式控制部分应规定小数点后的位数,如
scanf("%5.3f",&f);
D)当输入数据时,必须指明变量的地址,如scanf("%f",&f);
4.根据题目中已给出的数据的输入和输出形式,程序中输入/输出语句的正确是 main()
{int a;float x;
printf("input a,x:"); 输入语句 输出语句 }
输入形式 input a,x:3 2.1 输出形式a+x=5.10
A)scanf("%d,%f",&a,&x);
printf("\na+x=%4.2f",a+x);
B)scanf("%d %f",&a.&x);
printf("\na+x=%4.2f",a+x);
C)scanf("%d %f",&a,&x);
printf("\na+x=%6.1f",a+x);
D)scanf("%d %3.1f",&a,&x); printf("\na+x=%4.2f",a+x);
5.以下程序的输出结果是。 main() {
int i=010,j=10,k=0x10; printf("%d,%d,%d\n",i,j,k);
A)8,10,16 B)8,10,10 C)10,10,10 D)10,10,16 6.以下程序的输出结果是。 main() {
int i=011,j=11,k=0x11; printf("%d,%d,%d\n",i,j,k); }
A)9,11,17 B)9,11,11 C)11,11,11 D)11,11,16 7.以下程序的输出结果是。 #include<stdio.h> main()
{printf("%d\n",NULL);}
A)不确定的值(因变量无定义) B)0 C)-1 D)1 8.以下程序的输出结果是。 main() {
char c1='6',c2='0';
专用考试纸 请勿浪费 C语言第一章作业题第1页 共12页
printf("%c,%c,%d,%d\n",c1,c2,c1-c2,c1+c2); }
A)因输出格式不合法,输出出错信息B)6,0,6,102 C)6,0,7,6 D)6,0,5,7 9.设有如下定义 int x=10,y=3,z; 则语句
printf("%d\n",z=(x%y,x/y)); 的输出结果是A。
A)3B)0 C)4 D)1 10.设有如下定义 int x=10,y=5,z; 则语句
printf("%d\n",z=(x+=y,x/y)); 的输出结果是 D 。
A)1B)0 C)4 D)3 11.以下程序的输出结果是 main()
{int x=10,y=10;
printf("%d %d\n",x--,--y); }
A)10 10 B)9 9 C)9 10 D)10 9 12.写出下面程序的输出结果。 main() {int x;
x=-3+4*5-6;printf("%d",x); x=3+4%5-6;printf("%d",x); x=-3*4%6/5;printf("%d",x); x=(7+6)%5/2;printf("%d",x); }
A)11 1 0 1B)11 -3 2 1C)12 -3 2 1 D)11 1 2 1 13.写出下面程序的输出结果。 main() {
int x,y,z; x=y=1;
z=x++-1;printf("%d,%d\t",x,z);
z+=-x++ +(++y);printf("%d,%d",x,z); }
A)2,0 3,0 B)2,1 3,0C)2,0 2,1D)2,1 0,1 14.写出下面程序的输出结果 main() { int i,j;
i=20;j=(++i)+i;printf("%d",j); i=13;printf("%d %d),i++,i); }
A)42 14,13 B)41 14,14 C)42 13 13 D)42 13 14
15.若有定义:int x,y;char a,b,c;并有以下输入数据(此处,<cr>代表换行符) 1 2<cr> A B C<cr>
则能给x赋整数1,给y赋整数2,给a赋字符A,给b赋字符B,给c赋字符C的正确程序段是 C 。
A)scanf("x=%dy=%d",&x,&y);a=getchar();b=getchar();c=getchar(); B)scanf("%dy%d",&x,&y);a=getchar();b=getchar();c=getchar(); C)scanf("%d%d%c%c%c%c%c%c",&x,&y,&a,&a,&b,&b,&c,&c); D)scanf("%d%d%c%c%c",&x,&y,&a,&b,&c); 16.若已知a=10,b=20,则表达式!a<b的值为
A)10 B)20C)1 D)0
17.printf函数中用到格式符"%4s",其中数字4表示输出的字符串站用4列。如果字符串长度大于4,则按原字符长从左向右全部输出;如果字符串长度小于4,则输出方式为 C。
A)从左起输出该字符串,右补空格 B)按原字符长从左向右全部输出 C)右对齐输出该字符,左补空格D)输出错误信息 18.以下C程序,正确的运行结果是。 main() {
long y=-34567;
printf("y=%-8ld\n",y); printf("y=%-08ld\n",y); printf("y=%08ld\n",y); printf("y=%+8ld\n",y); }
A)y= -34567 B)y=-34567
专用考试纸 请勿浪费 C语言第一章作业题第2页 共12页
y=- 34567 y=-34567 y=-0034567 y=-0034567 y=-34567y=+ -34567
C)y=-34567 D)y= -34567
y=-34567y=-0034567y=-0034567 y=00034567
y=-34567y=+34567
19. C程序的基本编译单位是。(01~02第二学期试题)
A)函数 B)文件 C)源文件D)子程序 20. 设有如下定义和执行语句,其输出结果为:(03试题) int a=3,b=3;
a = - -b + 1; printf(“%d %d”,a,b);
A)3 2 B)4 2C)2 2D)2 3
21. 根据定义和数据的输入方式,输入语句的正确形式为:。(往届试题) 已有定义:float a1, a2; 数据的输入方式: 4.523 3.52
A)scanf(“%f %f ”, &a1,&a2); B)scanf(“%f ,%f ”, a1, a2);
C)scanf(“%4.3f ,%3.2f ”, &a1,&a2); D)scanf(“%4.3f %3.2f ”, a1,a2);
22. 以下程序的输出结果是:。(往届试题) main( )
{ int I=012, j=12, k=0x12; printf(“%d,%d,%d\n”,I, j, k );
A)10, 12, 18 B)12, 12, 12 C)10, 12, 12 D)12, 12, 18
23. 以下程序的输出结果是:(注:▂表示空格)(往届试题) main( )
{ printf(“\n*s1=%8s*”, “china”);
printf(“\n*s2=%-5s*”, “chi”) ; }
A)*s1=china▂ ▂ ▂* B)*s1=china▂ ▂ ▂*
*s2=chi**s2=chi▂ ▂*
C)*s1=▂ ▂ ▂china* D)*s1=▂ ▂ ▂china*
*s2=▂ ▂chi **s2=chi▂ ▂*
表达式语句。
2. 3.putchar
4.printf是C语言提供的标准输出函数,它的作用是在终端设备上(或系统隐含的输出设备上)按照指定的格式进行输出。
5.printf 6.对不同类型的语句有不同的格式字符。格式字符是用来输出十进制整数, 格式字符是用来输出一个字符,
7.%-ms表示如果串长,则在m列范围内,字符串向 空格。
8.如果要输出字符“&”,则应该在“格式控制”字符串中用表示。 9.getchar函数的作用是
10.符号“&”是运算符,&a是指。
11.scanf函数中的“格式控制”后面应当是 12.C
13.复合语句是由一对括起来的若干语句组成。 14.分析下面程序: #include<stdio.h> main() {
int x=2,y,z;
x*=3+2;printf("%d\n",x);
x*=y=z=4;printf("%d\n",x);
x=y=z;printf("%d\n",x);
x=(y=z);printf("%d\n",x);}
程序的输出结果为。
15.编制程序对实数a与b进行加,减,乘,除计算,要求显示如下结果。 jia=70.000000 jian=30.000000 cheng=1000.000000 chu=2.5000000 程序:
#include<stdio.h> void main(void)
);
二.填空题
1.C语言中的语句可分为5
专用考试纸 请勿浪费 C语言第一章作业题第3页 共12页
); }
将缺少的部分填在空白处。
16.下列程序的输出结果是。 #include<stdio.h> main() {char a; a='A';
printf("%d%c",a,a); }
17.分析下面程序 main {
int x=2,y,z;
x*=3+2;printf("%d\n",x);
x*=y=z=4;printf("%d\n",x);
x=y=1;
z=x++-1;printf("%d,%d\n",x,z);
z+=-x++ +(++y);printf("%d,%d",x,z); }
程序的输出结果是。
18.分析下面程序 main() {
int x,y;
x=16,y=(x++)+x;printf("%d\n",y); x=15;printf("%d,%d\n",++x,x); x=20,y=x-- +x;printf("%d\n",y); x=13;printf("%d,%d",x++,x); }
程序的输出结果是。
19.以下程序的输出结果为:__3.140000,3.142__________。(03试题)main( )
{float a=3.14, b=3.14159;
printf(“%f, %5.3f\n”,a,b);}
20.以下程序的输出结果为:___a回车_________。(04~05第二学期试题)
#include<stdio.h> main( ) { char c1,c2;
c1=?a?; c2=?\n?;
printf(“%c%c”,c1,c2); }
专用考试纸 请勿浪费 C语言第一章作业题第4页 共12页
东华理工大学:C语言第四章作业题
闭/开卷 课程类别:考试/考查
y=1; c=0;
c=x++||y++;
printf(“\n%d%d%d\n”,x,y,c); }
A)110B)211 C)011 D)001 6.以下程序的运行结果是() main( ) {
int c,x,y; x=0; y=0; c=0;
c=x++&&y++;
printf(“\n%d%d%d\n”,x,y,c); }
A)100B)211 C)011 D)001 7.判断字符型变量ch为大写字母的表达式是()
A)?A?<=ch<=?Z?B)(ch>=?A?)&(ch<=?Z?) C)(ch>=?A?)&&(ch<=?Z?)D)(ch>=?A?)AND(ch<=?Z?) 8.判断字符型变量ch为小写字母的表达式是()
A)?a?<=ch<=?z? B)(ch>=a)&&(ch<=z) C)(ch>=?a?)||(ch<=?z?)D)(ch>=?a?)&&(ch<=?z?) 9.以下if语句书写正确的是。()
A)if(x=0;) B)if(x>0)
printf(”%f”,x);{x=x+1; printf(”%f”,x);} else printf(”%f”,-x); else printf(”%f”,-x);
C)if(x>0); D)if(x>0)
{x=x+1; printf(”%f”,x);} {x=x+1; printf(”%f”,x) } else printf(”%f”,-x); else printf(”%f”,-x); 10.分析以下程序: main( )
{ int x=5,a=0,b=0;
if(x=a+b) printf(“** **\n”); elseprintf(“## ##\n”); 以上程序D 。()
A)有语法错,不能通过编译 B)通过编译,但不能连接
第四章 选择结构程序设计
一、选择题
1.下列运算符中优先级最高的是。()
A)> B) + C) && D)!=
2.以下关于运算符优先级的描述中,正确的是。()
A)!(逻辑非)>算术运算>关系运算>&&(逻辑与)>||(逻辑或)>赋值运算 B)&&(逻辑与)>算术运算>关系运算>赋值运算
C)关系运算>算术运算>&&(逻辑与)>||(逻辑或)>赋值运算 D)赋值运算>算术运算>关系运算>&&(逻辑与)>||(逻辑或) 3.逻辑运算符的运算对象的数据类型()
A)只能是0或1 B)只能是.T.或.F. C)只能是整型或字符型 D)任何类型的数据
4.能正确表示x的取值范围在[0,100]和[-10,-5]内的表达式是。()
A)(x<=-10)||(x>=-5)&&(x<=0)||(x>=100) B)(x>=-10)&&(x<=-5)||(x>=0)&&(x<=100) C)(x>=-10)&&(x<=-5)&&(x>=0)&&(x<=100) D)(x<=-10)||(x>=-5)&&(x<=0)||(x>=100) 5.以下程序的运行结果是。() main( ) {
int c,x,y; x=1;
专用考试纸 请勿浪费 C语言第一章作业题第5页 共12页
篇二:C程序设计第三版答案
C程序设计第三版答案
1.5请参照本章例题,编写一个C程序,输出以下信息: ************
Very Goodj!
************
解:
main()
{
printf(" ************\n");
printf("\n");
printf(" Very Good! \n");
printf("\n");
printf(" ************\n");
}
1.6编写一个程序,输入a b c三个值,输出其中最大者。 解:main()
{int a,b,c,max;
printf("请输入三个数a,b,c:\n");
scanf("%d,%d,%d",&a,&b,&c);
max=a;
if(max<b)
max=b;
if(max<c)
max=c;
printf("最大数为:%d",max);
}
第三章
3.3 请将下面各数用八进制数和十六进制数表示:
(1)10 (2)32 (3)75 (4)-617
(5)-111 (6)2483 (7)-28654 (8)21003
解:十 八 十六
(10)=(12)=(a)
(32)=(40)=20
(75)=(113)=4b
(-617)=(176627)=fd97
-111=177621=ff91
2483=4663=963
-28654=110022=9012
21003=51013=520b
3.5字符常量与字符串常量有什么区别?
解:字符常量是一个字符,用单引号括起来。字符串常量是由0个或若干个字符
而成,用双引号把它们括起来,存储时自动在字符串最后加一个结束符号'\0'.
3.6写出以下程序的运行结果:
#include<stdio.h>
void main()
{
char c1='a',c2='b',c3='c',c4='\101',c5='\116';
printf("a%c b%c\tc%c\tabc\n",c1,c2,c3);
printf("\t\b%c %c\n",c4,c5);
解:程序的运行结果为:
aabb cc abc
A N
3.7将"China"译成密码.密码规律:用原来的字母后面第4个字母代替原来的字母,
例如,字母"A"后面第4个字母是"E",用"E"代替"A".因
此,"China"应译为"Glmre".
请编一程序,用赋初值的议程使c1,c2,c3,c4,c5分别变成
'G','1','m','r','e',并
输出.
main()
{char c1="C",c2="h",c3="i",c4='n',c5='a';
c1+=4;
c2+=4;
c3+=4;
c4+=4;
c5+=4;
printf("密码是%c%c%c%c%c\n",c1,c2,c3,c4,c5);
}
3.8例3.6能否改成如下:
#include<stdio.h>
void main()
{
int c1,c2;(原为 char c1,c2)
c1=97;
c2=98;
printf("%c%c\n",c1,c2);
printf("%d%d\n",c1,c2);
}
解:可以.因为在可输出的字符范围内,用整型和字符型作用相同.
3.9求下面算术表达式的值.
(1)x+a%3*(int)(x+y)%2/4=2.5(x=2.5,a=7,y=4.7)
(2)(float)(a+b)/2+(int)x%(int)y=3.5(设
a=2,b=3,x=3.5,y=2.5)
3.10写出下面程序的运行结果:
#include<stdio.h>
void main()
{
int i,j,m,n;
i=8;
j=10;
m=++i;
n=j++;
printf("%d,%d,%d,%d\n",i,j,m,n);
}
解:结果:9,11,9,10
第4章
4.4.a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,c1='a',c2='b'.想得
到以下的输出格式和结果,请写出程序要求输出的结果如下: a= 3 b= 4 c= 5
x=1.200000,y=2.400000,z=-3.600000
x+y= 3.60 y+z=-1.20 z+x=-2.40
u= 51274 n=128765
c1='a' or 97(ASCII)
c2='B' or 98(ASCII)
解:
main()
{
篇三:C程 第3单元作业2 数据IO
第3单元作业2 数据IO
注:本次作业100分。请将答案写到后面的模板中。
1.说明下列每对scanf格式串是否等价?如果不等价请指出它们的差异。可举例说明。(8分)
(1)“%d”与“ %d”
(2)“%d-%d-%d”与“%d -%d -%d”
(3)“%f”与“%f ”
(4)“%f,%f”与“%f, %f ”
2.假设scanf函数调用的格式如下:(6分)
scanf(“%d%f%d”,&i,&x,&j);
如果用户录入如下信息:
10.3 5 6
调用执行后变量i、x、j的值分别是多少?(假设i j都是int型,x是float型)。
3.假设scanf函数调用的格式如下:(6分)
scanf(“%f%d%f”,&x,&i,&y);
如果用户录入如下信息:
12.3 45.6 789
调用执行后变量x、i、y的值分别是多少?(假设x y都是float型,i是int型)。
4.假设按照下列形式调用scanf函数:(8分)
n=scanf(“%d%f%d”,&i,&x,&j);
(其中i j n都是int型变量,x是float型变量)假设输入流中含有下面所示的字符,请指出这个调用后i、j、n、x的值。此外,请说明一下调用会消耗掉哪些字符。
(1)10?20?30¤
(2)1.0?2.0?3.0¤
(3)0.1?0.2?0.3¤
(4).1?.2?.3¤
5.下面的printf函数产生的输出分别是什么?(8分)
(1)printf(“%6d,%4d”,86,1040 );
(2)printf(“%12.5e”,20.253 );
(3)printf(“.4f”,83.162 );
(4)printf(“%-6.2g”, .0000009979 );
6.编写printf函数调用以下格式来显示float型变量x:(8分)
(1)指数表示形式:最小为8的字段宽度内左对齐;小数点后保留1位数字
(2)指数表示形式:最小为10的字段宽度内右对齐;小数点后保留6为数字
(3)十进制表示形式:最小为8的字段宽度内左对齐;小数点后保留3位数字
(4)十进制表示形式:最小为6的字段宽度内右对齐;小数点后无数字
7.指出如果printf函数用%#012.5g作为转换说明来执行显示操作,下列数据显示的形式:(8分)
(1)83.7361
(2)29748.6607
(3)1054932234.0
(4)0.0000235218
8.按要求补充下面程序代码,并运行通过。(8分)
include <stdio.h>
int main()
{ int a;
unsigned b;
long c;
unsigned long d;
printf("enter a b:\n");
/*参照后面的人机交互形式1,编写一条scanf语句输入变量a b 的值。*/
/*参照后面的人机交互形式2,编写一条printf语句输出a、b的值*/
getchar();
printf("enter c d:\n");
/*参照后面的人机交互形式3,编写一条scanf语句输入变量c d 的值。*/
/*参照后面的人机交互形式4,编写一条printf语句输出c、d的值*/
return 0;
}
要求:补充程序中的printf和scanf,使得程序运行后人机交互形式和程序输出形式如下所示:
enter a b:
a=3?b=4?/* 形式1:编写scanf.注:?表示空格 */
a=??3;b=??4/* 形式2: 编写printf. 说明:要求在3个域宽内右对齐 */
enter c d:
c=51274;d=128765? /* 形式3:编写scanf. */
c=51274?????;d=128765???? /* 形式4:编写printf. 说明:要求在10个域宽内左对齐 */ 思考:删除程序中的getchar() ; 后运行程序会出现什么情况?getchar()在这里什么作用?
9.按要求补充程序代码,并运行通过。(6分)
#include <stdio.h>
int main()
{ char c1,c2;
printf("enter c1,c2:\n");
/*参照人机交互形式1,编写一条scanf语句输入变量c1 c2的值。*/
/*参照人机交互形式2,编写一条printf语句输出c1的两种显示形式:字符和ASCII值*/
/*参照人机交互形式3,编写一条printf语句输出c2的两种显示形式:字符和ASCII值*/
return 0;
}
要求:补充程序中的printf和scanf,使得程序运行后人机交互形式和程序输出形式如下所示:
enter c1 ;c2:
c1=a;c2=b? /* 形式1:编写scanf. */
c1=‘a’?or?97(ASCII) /* 形式2:编写pirntf.说明: 输出字符与其Ascii码值*/
c2=‘b’?or?98(ASCII) /* 形式3:编写pirntf.说明: 输出字符与其Ascii码值*/
10.读程序写结果。下面程序运行后若输入123.45678,输出结果是什么?(4分)
#include <stdio.h>
int main()
{ float x;
printf("enter x:");
scanf("%f",&x);
printf("x=|%-15.4f|\nx=|%15.4f|\nx=|%15.2e|\nx=|%15.4g|\n",x,x,x,x);
}
11.编写一个程序,接收用户录入的日期信息并且将其显示出来。其中,输入日期的形式为月/日/年(即mm/dd/yy),输出日期的形式为年月日(即yymmdd)。格式如下所示:(10分) Enter a date(mm/dd/yy): 2/17/96
You entered the date 960217
提示:输出年月日时都是两位输出,若不满两位则前面补0
12.编写一个程序,对用户录入的产品信息进行格式化。程序运行后需有如下会话:(10分) Enter item number: 583 Enter unit price:13.5 Enter purchase date(mm/dd/yy): 10/24/95
item Unit Purchase
Price Date
583 $ 13.50 10/24/95
其中,数字项和日期项采用左对齐方式;单位价格采用右对齐方式,美元单价的最大取值为9999.99。
提示:使用\t控制列对齐
13.图书用国际标准图书编号(ISBN)进行标识,如0-393-30375-6。编号中的第一个数字说明编写书籍所用的语言(例如,0表示英语,3表示德语)。接下来的一组3个数字表示出版社(例如,393是清华出版社的编号),而随后的一组5个数字则是出版社设定的,用来识别图书(例如,30375是作者莫言的一本书《红高粱》的编号)。最后,结尾一个数字是“校验数字”,它用来验证前面数字的准确性。(10分)
编写一个程序来分解用户录入的ISBN信息,格式如下: Enter ISBN: 0-393-30373-6
Language:0
Publisher:393
Book Number:30375
Check digit:6
第3单元作业2:数据IO
序号:____ 姓名:__ _______实验课时间:_____ _______ 分数:_________