二级 C语言程序设计 复习及答案Word文件下载.docx
《二级 C语言程序设计 复习及答案Word文件下载.docx》由会员分享,可在线阅读,更多相关《二级 C语言程序设计 复习及答案Word文件下载.docx(14页珍藏版)》请在冰豆网上搜索。
=0"
的C语言表达式是()。
A.a>
=10ora<
=0
B.a<
=0|a>
=10
C.a<
=0||a>
D.a>
=10&
a<
6.设有intn=60;
写出下列语句的运行结果
switch(n/10)
{
case6:
printf("
@"
);
break;
case5:
#"
default:
$"
}
A.@#$
B.#$
C.$
D.@
7.设有inti;
以下语句中,循环次数为100次的语句是:
A.for(i=0;
i<
=100;
i++)
B.for(i=0;
99;
C.for(i=1;
D.for(i=0;
100;
8.C程序中,用于提前结束本次循环、进行下一次循环的语句是()。
A.break(结束全部循环)
B.continue
C.return
D.exit
9.若有数组定义语句:
intt[3][2];
则t数组最后一个元素是:
A.t[3][2]
B.t[2][3]
C.t[2]
D.t[2][1]
10.设有定义inta[]={1,3,5,7,9},*p=a;
while(*p!
=3)p++;
结果为7的表达式是:
A.*(p+2)
B.*(p+3)
C.*p+2
D.*p+3
11.chara[10];
不能将字符串"
abc"
存储在数组a中的是()。
A.strcpy(a,"
strcpy复制
B.a[0]=0;
strcat(a,"
strcat连接
C.a="
D.inti;
for(i=0;
i<
3;
i++)a[i]=i+97;
a[i]=0;
12.设有下列函数原型和变量定义语句,则合法的函数调用语句是:
intfunc(inta[],intn);
inta[10],n,x;
A.func(a,n)=x;
B.x=func(a,n);
C.x=func(a[],n);
D.x=func(a[10],n);
13.若有以下定义,输出字母M的语句是:
structperson
charname[9];
intage;
};
structpersonst[10]=
{{"
john"
17},{"
paul"
19},{"
Mary"
18}};
st[2].name);
st[3].name[1]);
C.printf("
st[2].name[1]);
D.printf("
st[2].name[0]);
14.需要以写模式打开当前目录下一个名为myfile.txt的文本文件,下列打开文件正确的选项是:
A.fopen("
myfile.txt"
"
r"
B.fopen("
w"
C.fopen("
rb"
D.fopen("
wb"
15.假定建立了以下链表结构:
structnode{
charid;
structnode*next;
}*head,*p;
如下图所示:
指针p指向一个新结点,将新结点插入到链表成为头结点的两条C语言语句是【】
A.head=p->
next;
p=head;
B.p->
data=head;
head=p;
C.head=p->
data;
D.p->
next=head;
二、程序填空题(本大题3道小题,每空2.5分,共30分)。
1.程序运行时输出如图所示的数字倒三角形
1234567
12345
123
1
源程序:
#include<
voidmain()
{inti,j;
____intk___;
for(i=1;
=4;
i++)
{k=1;
for(j=1;
j<
i;
j++)
putchar('
/*输出空格*/
for(j=9-2*i;
j>
0;
j--)
printf("
%d"
k);
____k++____;
putchar(____’\n’____);
}
2.输入一行字符串,分别统计字符串中各元音字母(AEIOU)的个数(不分大小写)。
{chara[80];
intn[5]={0,0,0,0,0};
/*数组n存放各元音字母个数*/
inti;
gets(a);
a[i]!
='
\0'
i++)
switch(a[i])
{
case'
A'
:
a'
n[0]++;
break;
E'
e'
n[1]++;
I'
i'
n[2]++;
O'
o'
n[3]++;
U'
u'
n[4]++;
5;
i++)
printf("
%d\n"
n[i]);
/*输出各元音字母个数*/
3.程序功能:
函数f的功能是从字符串中删除所有的数字字符,并返回删除的个数;
主程序调用函数f删除字符串str中的数字字符,并输出删除的字符数。
string.h>
intf(chars[])
{inti=0;
___intcount=0__;
while(s[i]!
)
if(s[i]>
0'
s[i]<
9'
strcpy(s+i,s+i+1);
count=count+1;
/*count表示删除的数字字符数*/
else
i++;
return___count_;
{charstr[80];
intm;
输入字符串:
gets(str);
m=____f(str)___;
删除数字后的字符串:
puts(str);
删除的数字字符个数:
____m___);
三、操作题
二、程序调试题(3小题,共20分)
1.程序调试题1(X_2_1.C)
调试要求:
下列程序不能得到正确的结果,它包含2个错误,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*modified*/字样的注释),使其运行能得到正确的结果。
将结果(包括X_2_1.C文件和X_2_1.EXE文件)保存到目录C:
\KS\中。
功能说明:
计算半径为1~n的圆的面积,仅打印超过50的圆面积。
如输入:
6
则输出:
r=4,square=50.265488
r=5,square=78.539825
r=6,square=113.097351
带错误原程序(见C:
\KS\X_2_1.C):
main()
{
intr,n;
floatarea;
scanf("
n);
for(r=1,r<
=n;
r++)
area=3.141593*r*r;
if(area<
50.0)continue;
r=%d,square=%d\n"
r,area);
getch();
for(r=1;
r<
r++)/*modified*/
r=%d,square=%f\n"
/*modified*/
2.程序调试题2(X_2_2.C)
下列程序不能得到正确的结果,它包含3个错误,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*modified*/字样的注释),使其运行能得到正确的结果。
将结果(包括X_2_2.C文件和X_2_2.EXE文件)保存到目录C:
将输入的十进制整数n通过函数DtoH转换为十六进制数,并将转换结果以字符串形式输出。
79则输出:
4F
又输入:
1234则输出:
4D2
\KS\X_2_2.C):
/*modified*/#include<
intDtoH(intn,char*str)
inti,d;
for(i=0;
n!
=0,i++)
d=n%16;
if(d>
=10)
str[i]='
+d;
+d-10;
n/=16;
returni;
inti,k,n;
charstr[80];
k=DtoH(n,str);
for(i=k-1;
i>
=0;
i--)
str(i));
i++)/*modified*/
if(d<
10)/*modified*/
str[i]);
_
3.程序调试题3(X_2_3.C)
将结果(包括X_2_3.C文件和X_2_3.EXE文件)保存到目录C:
函数fun分别统计字符串中大写字母和小写字母的个数,main()函数完成字符串的输入和统计数的输出。
AAaaBBb123CCccccd
upper=6,lower=8
\KS\X_2_3.C):
voidfun(char*s,int*a,int*b)
while(*s=='
if(*s>
&
*s<
Z'
(*a)++;
if(*s>
||*s<
z'
(*b)++;
s++;
chars[100];
intupper=0,lower=0;
gets(s);
fun(s,&
upper,&
lower);
\nupper=%d,lower=%d\n"
upper,&
while(*s!
)/*modified*/
upper,lower);
四、编程题(2小题,共35分)
1.编程题1(X_4_1.C)
编程要求:
请按题中的功能要求,编写程序并能得到正确的结果。
将结果(包括X_4_1.C文件和X_4_1.EXE文件)保存到目录C:
编写程序,通过以下步骤验证一个正整数对是否符合特定的编码规则:
(1)输入正整数a与b;
(2)计算a的所有不同的质因子(包括1)之积,记为s;
(3)如果s等于b,则通过验证,输出“OK”,否则输出“Err”。
输出格式参见以下示例。
运行示例1:
输入:
58842
输出:
588:
1*2*3*7=42,OK
说明:
输入数为588(对应a)和42(对应b),588的质因子为1、2、3和7,其累乘结果为42(对应s),由s等于b(均为42),输出OK。
运行示例2:
1755
17:
1*17=17,Err(17!
=55)
质因子为1和17,乘积仍为17,不等于b(55),输出Err,及不通过原因“(17!
=55)”。
intprime(intn);
intmain(void)
inta,b,s=1,k[20],i,j=0;
20;
i++)k[i]=0;
Entera="
a);
Enterb="
b);
for(i=2;
=a;
if(a%i==0&
prime(i)){k[j]=i;
s=s*k[j];
j++;
%d:
1"
a);
j;
*%d"
k[i]);
=%d,"
s);
if(s==b)
OK"
Err(%d!
=%d)"
s,b);
intprime(intn)
inti;
n;
if(n%i==0)return0;
if(i>
=n)return1;
}
2.编程题2(X_4_2.C)
将结果(包括X_4_2.C文件和X_4_2.EXE文件)保存到目录C:
编写程序,实现以下成绩处理功能(输出格式参见示例):
(1)输入n和n个成绩(成绩为浮点数类型,数组名记为a,假设1≤n≤50);
(2)计算并输出成绩的累加和(记为sum)与平均成绩(记为ave),将≥ave的成绩归为A档,将<ave的成绩归为B档;
(3)分别统计A、B两档的人数,计算在总人数中的比率;
(4)求出A档学生的最低分和B档学生的最高分,它们与平均成绩的差值;
(5)将上述结果输出到文本文件“X42.TXT”中。
运行示例:
955.599.550.090.08859.5486078.0
Sum=628.5,Ave=69.8
A:
4,44.4%B:
5,55.6%
MinA:
78.0,+8.2MaxB:
60.0,-9.8
运行后文件内容:
输入的第1个数表示学生人数(n=9),接着输入的9个成绩中,累加和为628.5(所有小数均保留一位小数输出),平均分为69.8分;
平均分以上(A档)有4人,占44.4%,平均分以下(B档)有5人,占55.6%;
A档的最低分为78分,超出平均分8.2分,B档的最高分为60分,距离平均分还有9.8分的差距。