20学年第二学期c语言期末考题及解答 4.docx
《20学年第二学期c语言期末考题及解答 4.docx》由会员分享,可在线阅读,更多相关《20学年第二学期c语言期末考题及解答 4.docx(15页珍藏版)》请在冰点文库上搜索。
20学年第二学期c语言期末考题及解答4
xxxx大学
xxxx学年第二学期期末
《C语言程序设计》
考试A卷
班级______________学号_________
姓名______________成绩_________
班号学号姓名成绩
《C语言程序设计》期末考试卷
注意事项:
1、请将所有的答案和程序写在答题纸上,写在试卷纸上不得分!
2、考试时间120分钟
一、选择题(每题2分,共40分)
1、以下叙述正确的是______。
A)在C程序中,main函数必须位于程序的最前面
B)C程序的每行中只能写一条语句
C)C语言本身没有输入输出语句
D)在对一个C程序进行编译的过程中,可发现注释中的拼写错误
2、以下正确的描述是______。
A)continue语句的作用是结束整个循环的执行
B)只能在循环体内和switch语句体内使用break语句
C)在循环体内使用break语句或continue语句的作用相同
D)从多层循环嵌套中退出时,只能使用goto语句
3有以下程序
voidmain()
{doubled=3.2;
intx,y;
x=1.2;
y=(x+3.8)/5.0;
printf("%d\n",d*y);
}
程序的输出结果是____
A)3B)3.2C)0D)3.07
4、若变量已正确说明为float类型,要通过语句
scanf("%f%f%f",&a,&b,&c);
给a赋值10.0,给b赋值22.0,给c赋值33.0,不正确的输入形式是______。
A)102233
B)10.0,22.0,33.0
C)10.022.033.0
D)102233
5、main()
{inta=0,b=0,c=0,d=0;
if(a=1)b=1;c=2;
elsed=3;
printf("%d,%d,%d,%d\n",a,b,c,d);
}
程序输出是____
A)0,1,2,0B)0,0,0,3C)1,1,2,0D)编译有错
6、能正确表示“当x的取值在[1,10]和[200,210]范围内为真,否则为假的表达式是______。
A)x>=1&&x<=10&&x>=200&&x<=210
B)x>=1||x<=10||x>=200||x<=210
C)x>=1&&x<=10||x>=200&&x<=210
D)x>=1||x<=10&&x>=200||x<=210
7、若w=1,x=2,y=3,z=4,则条件表达式ww:
yy:
z的值是______。
A)4B)3C)2D)1
8、对字符数组s赋值,不合法的是______。
A)chars[]="Beijing";
B)chars[20]={"beijing"};
C)chars[20];s="Beijing";
D)chars[20]={'B','e','i','j','i','n','g'};
9、若有语句int*point,a=4;和point=&a;下面均代表地址的一组选项是______。
A)a,point,*&aB)&*a,&a,*point
C)*&point,*point,&aD)&a,&*point,point
10、以下程序的运行结果是______。
voidmain()
{
intm=5;
if(m++>5)
printf(“%d\n”,m);
else;
printf(“%d\n”,m--);
}
A)4B)5C)6D)7
11、下面程序的运行结果是______。
#include
voidmain()
{inty=10;
do{
y--;
}while(--y);
printf("%d\n",y--);
}
A)-1B)1C)8D)0
12、已有以下数组定义和func函数调用语句,则func函数原形的正确声明为_______。
voidmain()
{inta[3][4];
……
func(a);
……
}
A)func(intarray[][6]);B)func(intarray[3][]);
C)func(intarray[][4]);D)func(intarray[2][5]);
13、已知:
inta[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};
int(*ptr)[3]=a,*p=a[0];
则以下能够正确表示数组元素a[1][2]的表达式是______。
A)*(*(a+1)+2)B)*(*(p+5))C)(*ptr+1)+2D)*((ptr+1)[2])
14、下面程序的输出结果是______。
main()
{inti,j,x=0;
for(i=0;i<2;i++)
{x++;
for(j=0;j<-3;j++)
{
if(j%2)continue;
x++;
}
x++;
}
printf("x=%d\n",x);
}
A)x=4B)x=8C)x=6D)x=12
15、下面程序的输出是____。
voidmain()
{intx=1,y=0,a=0,b=0;
switch(x)
{
case1:
switch(y)
{case0:
a++;break;
case1:
b++;break;}
case2:
a++;b++;break;
}
printf("a=%d,b=%d\n",a,b);
}
A)a=2,b=1B)a=1,b=1C)a=1,b=0D)a=2,b=2
16、已知:
inta[]={1,2,3,4},y,*p=a;则执行语句
y=(*++p)--;
之后,数组a各元素的值变为_____。
A)0,1,3,4B)1,1,3,4C)1,2,2,4D)1,2,3,3
17、给出以下定义:
charx[]="abcdefg";
chary[]={'a','b','c','d','e','f','g'};
则正确的叙述为_____。
A)数组X和数组Y等价B)数组x和数组Y的长度相同
C)数组X的长度大于数组Y的长度D)数组X的长度小于数组Y的长度
18已知函数的调用形式:
fread(buffer,size,count,fp);其中buffer代表的是____
A)一个整型变量,代表要读入的数据项总数
B)一个文件指针,指向要读的文件
C)一个指针,指向要读入数据的存放地址
D)一个存储区,存放要读的数据项
19以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是____
main()
{int*p,*q,a,b;
p=&a;
printf("inputa:
");
scanf("%d",*p);
}
A)*p表示的是变量p的地址
B)*p表示的是变量a的值,不是变量a的地址
C)*p表示的是指针变量p的值
D)*p只能用来说明p是一个指针变量
20若有说明:
char*language[]={"FORTRAN","BASIC","PASCAL","JAVA","C"};
则表达式*language[1]>*language[3]比较的是____
A)字符F和字符PB)字符串BAS1C和字符串JAVA
C)字符B和字符JD)字符串FORTRAN和字符串PASCAL
二、填空题(每空2分,共30分)
1、若有定义:
inte=1,f=4,g=2;floatm=10.5n=4.0k;则执行赋值表达式
k=(e+f)/g+sqrt((double)n)*1.2/g+m后k的值是_____。
2、下面程序的输出是_______。
main()
{intx=3,y=2,z=0;
if(x=y+z)printf("**");
elseprintf("##");
}
3、假设已有定义doubles,d;intk,n;。
有以下程序段:
s=1.0;
for(k=1;k<=n;k++)
s=s+1.0/(k*(k+1));
printf("%f\n",s);
填空完成下述程序,使之与上述程序的功能完全相同。
s=0.0;
①______;
k=0;
do{s=s+d;
②______;
d=1.0/(k*(k+1));
}while(③______);
printf("%f\n",s);
4、下面程序段的运行结果是______。
inti=1;s=3;
do{s+=i++;
if(s%7==0)continue;
else++i;
}while(s<15);
printf("%d",i);
5、设定义语句“staticinta[3][4]={{1},{2},{3}};”则a[1][1]值为①____,a[2][1]的值为②____。
6、下面的函数是一个求阶乘的递归调用函数。
facto(intn)
{if(n==1)①______________;
elsereturn(②_____________);
}
7、以下程序的功能是将字符串s中的数字字符放入d数组中,最后输出d中的字符串。
例如,输入字符串:
abc123edf456gh,执行程序后输出:
123456。
请填空。
#include
voidmain()
{chars[80],d[80];
inti,j;
gets(s);
for(i=j=0;s[i]!
=‘\0’;i++)
if()
{d[j]=s[i];
j++;}
d[j]=‘\0’;
puts(d);
}
8、下面函数用递归调用的方法,将str中存放的长度为n的字符串反转过来,例如原来是"ABCDE",反序为"EDCBA"。
voidinvent(char*str,intn)
{chart;
t=*str;
*str=*(str+n-1);
*(str+n-1)=t;
if(n>2)invent(____________,n-2);
}
9下面程序的功能是显示具有n个元素的数组s中的最大元素。
#defineN20
main()
{inti,a[N];
for(i=0;iscanf("%d",&a[i]);
printf("%d\n",①______________);
}
intfmax(ints[],intn)
{intk,p;
for(p=0,k=p;pif(s[p]>s[k])②_____________;
return(k);
}
10下面程序通过指向整型的指针将数组a[3][4]的内容按3行×4列的格式输出,请给printf()填入适当的参数,使之通过指针p将数组元素按要求输出。
#include
voidmain()
{inti,j;
inta[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}},*p=a;
for(i=0;i<3;i++)
{for(j=0;j<4;j++)
printf("%4d",____________);
}
}
三、程序编写题(30分,见答题纸)
答题纸
一、选择题(40分)
题号
1
2
3
4
5
6
7
8
9
10
答案
题号
11
12
13
14
15
16
17
18
19
20
答案
二、填空题(30分)
1.
2.
3.①②③
4.
5.①②
6.①②
7.
8.
9.①②
10.
三、程序编写题(共30分)
1、求这样一个三位数,该三位数等于其每位数字的阶乘之和,即:
abc=a!
+b!
+c!
。
编写函数intfac(intn),它的功能是求出n的阶乘,在主函数中调用该函数完成题目。
(15分)
2、编写函数voidfun(intx,int*pp,int*n)。
它的功能是:
求出整数x的偶数因子,并按照从小到大的顺序放在pp所指的整数数组aa[1000]中,这些因子的个数通过形参n返回。
在主函数中输入x,调用子函数fun,输出x的偶数因子和偶数因子个数。
(假如x为30,则有因子:
1,2,3,5,6,10,15,30,其中有4个数为偶数因子,它们是2,6,10,30)(15分)
输入范例:
pleaseenteranintegernumber:
输出范例:
Thefactorsareasfollowing:
Thenumberoffactorsis:
2010-2011学年第二学期期末
《C语言程序设计》(A卷)标准答案和评分标准
一、选择题(每题2分,共40分)
CBCBCCDCDCDCAAABCCBC
二、填空题(每空2分,共30分)
1.13.7
2.**
3.①d=1.0②k++③k<=n
4.7
5.①0②0
6.①return1②n*facto(n-1)
7.s[i]>=’0’&&s[i]<=’9’
8.str+1
9.①a[fmax(a,N)]②k=p
10.*(p+4*i+j)
四、编程序题(共30分)(格式举例)
1、
#include
voidmain()
{
inta[5],i,j,k;
intf(intm);
for(i=100;i<1000;i++)
{
for(j=0,k=1000;k>=10;j++)
{
a[j]=(i%k)/(k/10);
k/=10;
}
if(f(a[0])+f(a[1])+f(a[2])==i)
printf("Thenumberis:
%d",i);
}
}
intf(intm)
{
inti=0,t=1;
while(++i<=m)t*=i;
return(t);
}
或者
#include
intfac(int);
voidmain()
{
inti,j,k,n=0,x[50];
for(i=1;i<10;i++)
{for(j=0;j<10;j++)
for(k=1;k<10;k++)
{x[n]=i*100+j*10+k;
if(fac(i)+fac(j)+fac(k)==x[n])n++;
elsex[n]=0;}
}
if(n>0)for(i=0;i%d\n",x[i]);
elseprintf("Thereisnosuchanumber!
\n");
}
intfac(intn)
{if(n<1)return1;
elsereturnn*fac(n-1);
}
2、
#include
voidfun(intx,intpp[],int*n)
{
inti,j=0;
for(i=2;i<=x;i=i+2)
{if(x%i==0)pp[j++]=i;
*n=j;
}
}
voidmain()
{
intx,aa[1000],n,i;
printf("\npleaseenteranintegernumber:
\n:
");
scanf("%d",&x);
fun(x,aa,&n);
for(i=0;iprintf("Thefactoris:
%d\n",aa[i]);
printf("\n");
printf("Thenumberoffactoris:
%d",n);
}