大学计算机部分习题答案.docx
《大学计算机部分习题答案.docx》由会员分享,可在线阅读,更多相关《大学计算机部分习题答案.docx(32页珍藏版)》请在冰豆网上搜索。
![大学计算机部分习题答案.docx](https://file1.bdocx.com/fileroot1/2023-1/25/0f9a05bc-7913-4b9a-a8d4-87f16124d573/0f9a05bc-7913-4b9a-a8d4-87f16124d5731.gif)
大学计算机部分习题答案
第7章
习题
一、选择题
1.C语言属于_____。
D
A.机器语言B.低级语言C.中级语言D.高级语言
2.C语言程序能够在不同的操作系统下运行,这说明C语言具有很好的______。
B
A.适应性B.移植性C.兼容性D.操作性
3.一个C语言程序是由_____。
B
A.一个主程序和若干子程序组成B.函数组成C.若干过程组成D.若干子程序组成
4.C语言规定,在一个源程序中,main函数的位置______。
C
A.必须在最开始B.必须在系统调用的库函数的后面C.可以任意D.必须在最后
5.C语言程序的执行,总是起始于______。
C
A.程序中的第一条可执行语句B.程序中的第一个函数
C.main函数D.包含文件中的第一个函数
6.以下叙述不正确的是______。
D
A.一个C源程序可由一个或多个函数组成
B.一个C源程序必须包含一个main函数
C.C语言程序的基本组成单位是函数
D.在C语言程序中,注释说明只能位于一条语句的后面
7.下面对C语言特点,不正确描述的是_____。
C
A.C语言兼有高级语言和低级语言的双重特点
B.C语言既可以用来编写应用程序,又可以来编写系统软件
C.C语言的可移植性较差
D.C语言是一种结构式模块化程序设计语言
8.C语言程序的注释是______。
B
A.由“/*”开头,“*/”结尾
B.由“/*”开头,“/*”结尾
C.由“//”开头
D.由“/*”或“//”开头
9.C语言程序的语句都是以_____结尾。
B
A.“.”B.“;”C.“,”D.都不是
10.用C语言编写的代码程序______。
B
A.可立即执行 B.是一个源程序
C.经过编译即可执行 D.经过编译解释才能执行
二、填空题
1.一个C源程序中至少应包括一个_______。
主函数
2.在一个C语言源程序中,注释部分两侧的分界符分别是________和_______。
/*和*/
3.一个C程序的执行是从_________函数开始,到__________函数结束。
main()main()
4.将A.C(源程序文件)经___________产生A.obj文件,再经过连接可产生_________文件。
在TC系统中,从A.c到A.exe可由按键___________完成。
编译A.exeAlt-F9
第8章
二、选择题
1.下面四个选项中,均是合法整型常量的选项是A。
2.类型修饰符unsigned修饰D类型是错误的。
3.下列不正确的字符常量是C。
4.下列不正确的字符串常量是D。
5.下列正确的变量名是A。
6.下列不正确的转义字符是C。
7.下面四个选项中,均是C语言关键字的选项是B。
8.下列程序执行后的输出结果是______。
C
9.设x、y、z和k都是int型变量,则执行表达式:
x=(y=4,z=16,k=32)后,x的值为___C
10.若有以下定义:
chara;intb;
floatc;doubled;
则表达式a*b+d-c值的类型为。
D
11.设有如下的变量定义:
inti=8,k,a,b;
unsingedlongw=5;
doublex=1.42,y=5.2;
则满足C语言语法的表达式是。
A
12.假定有以下变量定义:
intk=7,x=12;
则能使值为3的表达式是_____。
D
13.表示关系x≤y≤z的C语言表达式为。
A
14.已知:
inta=5;floatb=5.5;,在下列表达式中,有语法错误的是。
C
15.选出能使变量i的值变为4的选项。
D
16.以下程序的输出结果是。
D
17.设变量n为float类型,m为int型,则以下能实现将n中数据保留小数点后两位,第三位进行四舍五入运算的表达式是_____。
B
18.若有如下程序
main()
{inty=3,x=3,z=1;
printf("%d%d\n",(++x,y++),z+2);
}
运行该程序的输出结果是____。
D
19.语句printf("a\bre\'hi\'y\\\bou\n");的输出结果是_______。
C
20.下列程序执行后的输出结果是_________。
C
main()
{charx=0xFFFF;
printf("%d\n",x--);
}
21.下列程序执行后的输出结果是_________。
A
main()
{intx='f';
printf("%c\n",'A'+(x-'a'+1));
}
三、计算下列表达式的值
1.3.5*3+2*7-'a'-72.5
2.26/3+34%3+2.511.5
3.45/2+(int)3.14159/223
4.已知inta,b;
a=3*5,a=b=3*215
5.已知inta=3,b,c;
A)a=b=(c=a+=6)9B)(int)(a+6.5)%2+(a=b=5)6
6.已知inta=7;floatx=2.5,y=4.7;
x+a%3*(int)(x+y)%2/42.5
7.已知inta=2,b=3;floatx=3.5,y=2.5;
(float)(a+b)/2+(int)x%(int)y3.5
8.已知inti=10,j=5;
A)++i-j--(6)B)i=i*=j(50)C)i=3/2*(j=3-2)
(1)
9.已知inta=5,b=3;
A)!
a&&b++(0)B)a||b+4&&a*b
(1)C)a=1,b=2,a>b?
++a:
++b(3)
D)++b,a=10,a+5(15)E)a+=b%=a+b(8)F)a!
=b>2<=a+1
(1)
10.已知inti=3,j=4,k=5,x,y;
A)'i'&&'j'
(1)B)i<=j
(1)
C)i||j+k&&j-k
(1)D)!
((ik||1)(0)
E)i+j>k&&j==k(0)F)i||j+k&&j-k
(1)
G)!
(i>j)&&!
k||1
(1)H)!
(x=i)&&(y=j)&&0(0)
I)!
(i+j)+k-1&&j+k/2
(1)
四、在所给已知条件下,分别写出下列个表达式运算后a的值
已知inta=12,n=5;
1.a+=a24
2.a-=321
3.a*=2+3105
4.a/=a+a0
5.a%=(n%=2)0
6.a+=a-=a*=a0
五、程序设计
1.从键盘上输入两个整型数,比较其大小,并输出显示其中小的。
#include
main()
{inta,b;
printf("请输入两个整数(a,b):
");
scanf("%d,%d",&a,&b);
printf("小的一个为%d\n",a
a:
b);
}
2.编程实现输入公里数,输出其英里数。
已知1英里=1.60934公里(用符号常量)。
#include
#defineYL1.60934
main()
{floatyl,gl;
printf("请输入公里数:
");
scanf("%f",&gl);
yl=gl/YL;
printf("英里为:
%f\n",yl);
}
3.从键盘上输入任意一个小写字母,然后将该字符转换为对应的大写字母输出。
并同时输出该字母的ASCII编码。
#include
main()
{charc;
printf("请输入一个小写字母:
");
scanf("%c",&c);
c=c-32;
printf("字母%c对应的ASCII编码为%d\n",c,c);
}
第9章
上机练习
修改下列程序中的错误并调试。
1.下面的程序用来计算:
正确的如下:
main()
{intx,y;
scanf(“%d”,&x);
y=0;
if(x!
=0)
if(x>0)
y=1;
else
y=-1;
printf(“x=%d,y=%d\n”,x,y);
}
2.下面的程序按百分制记分,若100分显示满分,99~90显示优秀,89~80显示优良,79~70显示良好,69~60显示及格,59分以下显示不及格。
#include
main()
{intx;
printf("请输入成绩:
");
scanf("%d",&x);
x=x/10;
switch(x)
{case10:
printf("满分");break;
case9:
printf("优秀");break;
case8:
printf("优良");break;
case7:
printf("良好");break;
case6:
printf("及格");break;
case5:
case4:
case3:
case2:
case1:
case0:
printf("不及格");
}
}
3.打印出以下图案:
*
***
*****
********
*****
***
*
#include
main()
{inti,j,k;
for(i=1;i<=4;i++)
{for(j=0;j<=3-i;j++)
printf("");
for(k=1;k<=2*i-1;k++)
printf("*");
printf("\n");
}
for(i=0;i<=2;i++)
{for(j=0;j<=i;j++)
printf("");
for(k=0;k<=4-2*i;k++)
printf("*");
printf("\n");
}
}
4.下面的三个程序都用来计算n!
1
#include
main()
{intn,i=1;longintp=1;
printf("请输入一个整数:
");
scanf("%d",&n);
while(i<=n)
{p=p*i;
i++;}
printf("%d!
=%ld\n",n,p);
}
2
#include
main()
{inti,n;longintp;
printf("请输入一个整数:
");
scanf("%d",&n);
for(i=1,p=1;i<=n;i+=1)
p=p*i;
printf("%d!
=%ld\n",n,p);
}
3
#include
main()
{inti=0,n;longintp=1;
printf("请输入一个整数:
");
scanf("%d",&n);
do
{i++;
p=p*i;
}while(iprintf("%d!
=%ld\n",n,p);
}
习题
一、选择题
1.下列程序执行后的输出结果是______。
(︺表示空格)C
main()
{inta=6699;
printf("|%-8d|",a);}
2.下列程序执行后的输出结果是______。
B
main()
{printf("s1=|%15s|s2=|%-12s|","NorthWest","University");}
3.若int类型数据占两个字节,则下列语句的输出为______。
D
main()
{intk=-1;printf("%d,%u\n",k,k);}
4.阅读以下程序
main()
{inta;floatb,c;
scanf("%2d%3f%4f",&a,&b,&c);
printf("\na=%d,b=%f,c=%f\n",a,b,c);}
执行时从键盘上输入9876543210'(符号'表示回车),则上面程序的输出结果是___。
C
5.若有说明语句:
inta;floatb;,以下输入函数正确的是_______。
C
6.在“if(表达式)语句”语句中,用作判断的“表达式”是____。
D
7.下列程序执行后的输出结果是______。
C
main()
{inta=2,b=3;
printf(a>b?
"***a=%d":
"###b=%d",a>b?
a:
b);}
8.下列程序执行后的输出结果是______。
D
main()
{inta=1,b=2,c=2,t=0;
while(a
printf("%d,%d,%d",a,b,c);}
9.已知intx=10,y=20,z=30;以下程序段执行后x,y,z的值是_____。
B
if(x>y)z=x;x=y;y=z;
10.下列程序执行后的输出结果是______。
C
main()
{intm=5;
if(m++>5)printf("%d\n",m);
elseprintf("%d\n",m--);}
11.以下语法不正确的语句是____。
B
12.若w、x、y、z、m均为int型变量,则执行下面语句后的m值是____。
A
w=1;x=2;y=3;z=4;
m=(ww:
x;
m=(mm:
y;
m=(mm:
z;
13.下面有关for循环的正确描述是____。
D
14.若i为整型变量,则以下循环体执行的次数是____。
B
for(i=2;i==0;)printf("%d",i--);
15.执行语句for(i=1;i++<4;);后变量i的值是____。
C
16.以下正确的说法是____。
B
17.分析下列程序执行后的输出结果是______。
得出要完成两个整型变量值交换可以不借助其他变量。
D
main()
{inta=20,b=30;
a=a+b;b=a-b;a=a-b;
printf("a=%d,b=%d\n",a,b);}
18.下列程序执行后的输出结果是______。
A
main()
{
intx=1,y=9,m=1,n=2;
while(x<=y)
switch((m+n+x+y)%4)
{case0:
x*=2,m++;
case1:
switch(n%3)
{case0:
x++;break;
case1:
y*=2;break;
case2:
x+=3;
}
case2:
n++;y--;break;
case3:
x/=2;y+=2;
}
printf("x=%d,y=%d\n",x,y);}
19.执行下面的程序段后,变量x和i的值分别为____。
A
inti,x;
for(i=0,x=5;i<10;i++)
{if(x>=10)break;
if(x%2==1){x+=5;continue;}
x-=3 ;
}
20.有以下程序段
main()
{inti=1,sum=0,n;
scanf("%d",&n);
do
{i+=2;
sum+=i;
}while(i!
=n);
printf("%d",sum);}
若使程序的输出值为8,则应该从键盘输入的n的值是______。
C
二、编程题
1.编一个程序统计几个同学的平均年龄。
要求通过键盘输入每位同学的年龄,若输入年龄为-1,则表示所有同学年龄已输入完毕。
main()
{intage,n=1;
floatave;
printf("请输入第%d个同学的年龄",n);
scanf("%d",&age);
do{ave+=age;
n++;
printf("请输入第%d个同学的年龄",n);
scanf("%d",&age);
}while(age!
=-1);
ave=ave/(n-1);
printf("平均年龄为%.2f\n",ave);
}
2.从键盘输入三条边长a,b,c。
若它们能组成三角形,就用下列公式计算由它所组成的三角形的面积。
公式为:
p=(a+b+c)/2
(s为三角形面积)
按题意编制程序。
#include"math.h"
main()
{floata,b,c,s,area;
scanf("%f,%f,%f",&a,&b,&c);
s=(a+b+c)/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));
if(a+b>c&&a+c>b&&b+c>a)
printf("area=%f",area);
else
printf("no");
}
3.雨淋湿了算术书的一道题,9个数字只能看清楚4个,第一个数字虽然模糊不清,但可看出不是1:
[口*(口3+口)]2=8口口9
其中口表示淋湿的数字,请编程序将这些数字找出来。
main()
{intx,y,z,i,j;
for(x=2;x<10;x++)
for(y=0;y<10;y++)
for(z=0;z<10;z++)
for(i=0;i<10;i++)
for(j=0;j<10;j++)
if((x*(y*10+3+z))*(x*(y*10+3+z))==(8009+i*100+j*10))
printf("x=%d,y=%d,z=%d,i=%d,j=%d\n",x,y,z,i,j);
}
4.有一个数,被3除余2,被5除余3,被7除余2,问该数至少应多大?
main()
{intx=1;
while
(1)
{if(x%3==2&&x%5==3&&x%7==2){printf("x=%d\n",x);break;}
x++;
}
}
5.程序如下:
main()
{inti=0,j=10,k=2,s=0;
for(;;)
{i+=k;
if(i>j)
{printf("%d\n",s);
break;
s=s+i;
}}}
试问程序中判断i>j共被执行了多少次?
6.求:
1!
+3!
+5!
+……+11!
。
1.程序分析:
此程序只是把累加变成了累乘。
2.程序源代码:
#include"stdio.h"
#include"conio.h"
main()
{
floatn,s=0,t=1;
for(n=1;n<=20;n++)
{
t*=n;
s+=t;
}
printf("1+2!
+3!
...+20!
=%e\n",s);
getch();
}
7.有一序列:
2/1,3/2,5/3,8/5,13/8,21/13,…… 求这个序列前20项之和。
提示:
后一项的分母为前一项的分子,后一项的分子为前一项分子与分母之和。
1.程序分析:
请抓住分子与分母的变化规律。
2.程序源代码:
#include"stdio.h"
#include"conio.h"
main()
{
intn,t,number=20;
floata=2,b=1,s=0;
for(n=1;n<=number;n++)
{
s=s+a/b;
t=a;a=a+b;b=t;/*这部分是程序的关键,请读者猜猜t的作用*/
}
printf("sumis%9.6f\n",s);
getch();
}
8.指出下列程序的运行结果:
①main()
{intx=1,i=1;
for(;x<50;i++)
{if(x>=10)
break;
if(x%2!
=0)
{x+=3;
continue;
}
x-=1;
}
printf("%d\n",x);
printf("%d\n",i);
}
②main()
{intm=7,n=50,i=1;
do
{if(i%m==0)
if(i%n==0)
{printf("%d\n",i);
break;
}
i++;}
while(i!
=0);
}
9.编写一程序,要求用户在键盘上输入一个4位整数,并把每位数字转换为英文。
例如:
输入1024时,输出OneZeroTwoFour。
main()
{intx,y=0,i=0;
printf("请输入一个不超过4位整数:
");
scanf("%d",&x);
do
{y=y*10+x%10;
i++;}
while(x=x/10);
printf("%d\n",y);
do
{i--;
switch(y%10)
{case0:
printf("Zero");break;
case1:
printf("One");break;
case2:
printf("Two");break;
case3:
printf("Three");break;
case4:
printf("Four");break;
case5:
printf("Five");break;
case6:
printf("Six");break;
case7:
printf("Seven");break;
case8:
printf("Eight");break;
case9:
printf("Nine");break;
}}
while(y=y/10,i);
getch();
}
10.输入10对整数,请计算每对数中较大者之和,并输出结果。
#include
main()
{intx,y,sum=0,i;
for(i=1;i<=10;i++)
{printf("请输入第%d对整数(x,y):
",i);
scanf("%d,%d",&x,&y);
sum+=x>y?
x:
y;
}
printf("sum=%d\n",sum);
}
11.输入一个年份和月份,打印出该月份有多少天(考虑闰年),用switch语句编程。
每年中1、3、5、7、8、10、12月份有31天,4、6、9、11月份有30天,对于2月份来说,闰年有29天,平年有28天,所以应该判断年份是否闰年。
main()
{intyear,month;
printf("请输入年,月:
");
scanf("%d,%d",&year,&month);
switch(month)
{
case1:
case3:
case5:
case7:
case8:
case10:
case12:
printf("该月份为31天\n");break;
case4:
case6:
case9:
case11:
printf("该月份为30天\n");break;
case2:
if((year%4==0&&year%100!
=0)||(year%400==0))
printf("该月份