C语言试题第一学期及答案.docx
《C语言试题第一学期及答案.docx》由会员分享,可在线阅读,更多相关《C语言试题第一学期及答案.docx(17页珍藏版)》请在冰豆网上搜索。
C语言试题第一学期及答案
重庆理工大学考试试卷
考试科目:
高级语言程序设计(C语言)(第一学期)A卷共页
班次姓名学号成绩
注:
答题做在后面答题试卷上。
一.选择填空(选择一个正确答案,将其对应字母填在横线上)(25分)
1.C程序中,unsignedintx;定义的变量取值范围为B;
A:
0~255B:
0~65535C:
0~32767D:
0~2147483647
2.C语言中,正确的字符与字符串表示方式为B;
A:
chara=‘a’,b=“abc”;B:
chara=‘a’,b[]=“abc”;
A:
chara=“a”,b[]=“abc”;B:
chara=‘a’,b[2]=“abc”;
3.若a是float型变量,b是int型变量,以下输入语句合法的是B;
A:
scanf(“%6.2f%f”,&a,&b)B:
scanf(“%8.1f%d”,&a,&b)
C:
scanf(“%6.2d%d”,&a,&d)D:
scanf(“%6.2f%c”,&a,&d)
4.如果i=1,执行j=++i;k=i++;其j、i和k的值是D;
A:
2,2,2;B:
1,2,3;C:
1,1,1;D:
2,3,2
5.在if(条件)语句执行时,当条件为D时C语言认为是“真”;
A:
TRUE;B:
.T.C:
0D:
非零值
6.如果inta[4]={1,2,3,4},*p=&a[2];执行p++;其*p+a[0]的值为D;
A:
2B:
3C:
4D:
5
7.设inta,b,c;且a=10;b=4;a/=b;则表达式(a/b?
b+a:
b-a)之值是C;
A:
0.5B:
6;C:
2;D:
-2
8.对于inta[10];正确的赋值语句是__A;
A:
*(a+2)=4;B:
a=6;C:
a+2=4;D:
*(a+15)=4;
9.设intx,a,b,c;计算表达式x=(a=4,b=16,c=32)后,x的值是C;
A:
4B:
16C:
32D:
52
10.对于inta[][3]={1,2,3,4,5,6,7,8,9,10}说明语句,
且有:
数据元素a[1][2]+a[3][1]的值为____D_____;
A:
15B:
16C:
8D:
6
11.intn=97;
switch(n/10-4)
{case2:
n=n+1;
case3:
n=n*2;
case5:
n=n-2;
case7:
n=n+3;break;
default:
n=n/2;
}
n的正确结果值是____D____
A:
95B:
96C:
97D:
98
12.已知inti=j=2;char*a="abcdefg",c;
执行c=*(a=a+3);c的值是____C______。
A.‘b’B:
‘c’C:
‘d’D:
‘e’
?
13.阅读下列程序,结果是C
main()
{inta=5,b=0,c=0;
if(a=b+c)printf("***\n");
elseprintf("###\n");
A:
语法有错误,不能编译B:
输出***C:
通过编译,但不能连接D:
输出###
14.for(;3;);代表的意义是A;
A:
死循环B:
不循环C:
循环3次D:
语法错误
15.对于表达式53/2&&!
0和!
(15>3||5<6-8)的逻辑值,分别是B;
A:
0,1B:
1,0C:
0,0;D:
1,1
16.有时需要使几种不同类型的变量存放到在一起,形成一个变量,这种变量,称为A;
A:
结构体变量B:
字符变量C:
整型变量D:
实数变量
17.设charw;intx;floaty;doublez;表达式w*x+z-y的值的数据类型为D
A:
charB:
intC:
floatD:
double
18.有以下程序段C
FILE*fp;
fp=fopen(“a1”,“r”);
其表示为
A:
定义了一个普通指针,函数值给指针赋值。
B:
定义了一个文件a1
C:
打开一个文件,该文件可读可写D:
打开一个文件,该文件只能读不能写
?
19.下面对数组的定义正确的是A
A:
intn=10;intarray[n];B:
intarray(10);
C:
intn;scanf(“%d”,&n);intarray[n];
D:
intn;intarray[n];scanf(“%s”,array);
20.下面各语句行中,能正确进行赋字符串操作的语句行是C
A:
chars[4][5]="abcd","123";B:
chars[5]={‘a’,‘b’,‘c’,‘e’,‘f’};
C:
char*s;s="abcd";D:
chars[5];s="abcd";
21.在一个C语言程序构成中,较完整的描述是D
A:
由主程序与子程序构成B:
由多个主函数与多个子函数构成
C:
由主函数与子函数构成D:
由一个主函数与多个子函数构成
22.C语言在程序开始执行时,其正确的描述是B
A:
由编写程序语句的顺序格式执行B:
在主函数main()开始处执行
C:
在第一个子函数处执行D:
由人随机选择执行
*23.下列有关函数错误的描述是A
A:
C语言中允许函数嵌套定义B:
C语言中允许函数递归调用
C:
调用函数时,实参与形参的个数、类型需完全一致
D:
C语言函数的缺省数据类型是int类型
*24.在C语言中,函数的返回值的类型是由D
A:
在程序编译时决定B:
由调用该函数的主调函数所决定
C:
由return的表达式的类型所决定D:
由定义该函数时指定的函数类型所决定
25.当调用函数时,如果实参是一个数组名,则向函数传送的是B
A:
数组的首元素B:
数组的首地址
C:
数组每个元素的地址D:
数组每个元素中的值
二.读下列程序,给出程序的运行结果(30分)
1.main()
{inti,j,m,n;
i=5;j=6;n=10;
m=++i;n/=j++;
printf(“m1=%dn1=%d”,m,n);
m=i++;n=++j;
printf(“m2=%dn2=%d”,m,n);
}
结果:
m1=6n1=1m2=6n2=8
2.main()
{inta[20],b=1;
for(a[0]=b;b<=10;b+=2)
{a[b]=b;
if(b>7)break;
b++;}
printf(“a=%d”,a[b]);
}
结果:
a=10
3.
#include“stdio.h”
main()
{charch;
scanf("%c",&ch);
if(ch>=’B’&&ch<=’M’)putchar(ch+32);
elseputchar(ch);
}
输入M,运行结果为:
_m____;输入b,运行结果为:
__b___
4.
main()
{inta[3][3]={1,2,3,4,5,6,7,8,9};
int*p1=&a[1][2],*p2=a+2;
printf("%d,%d\n",*p1,*p2);
printf("%d,%d\n",*(++p2),a[2][2]);
}
输出为:
5.
main()
{inti;
char*p,b[10];
p=“abcde”;
for(i=0;i<3;i++)
{b[i]=*p;p++;}
b[i]='\0';
printf(“%s”,b);
}
输出为:
b=abc
6.
#include"stdio.h"
intfun(intx)
{inty=0;
staticz=3;
y++;
z++;
return(x+y+z);
}
main()
{inta=2,i;
for(i=0;i<3;i++);
printf("\t%d",fun(a);
}
*结果为:
7,8,9。
三.填空题(25分)
1.如果p是一个指针,那么*&p表示的含义是指针P所指向的内容,而&*p表示的含义是指针P所指向的内容的地址。
2.已知数组s为一有8个单元的整型数组,下面的语句的语句试图求出这8个单元的平均值,并用ave保存这个值;请补充完整下面的语句。
intj,s[]={1,2,3,4,5,6,7,8},sum=0;
for(j=0;j<8;j++)sum=s[i]+sum;
ave=sum/8;
3.变量在程序使用中,其作用域可分为全局变量和局部变量。
4.打印如下图案,选择合适的句子填入该程序空格中。
0
000
00000
0000000
00000
000
0
#include
voida(inti)
{intj,k;
for(j=0;j<7-i;j++)printf(“”);
for(k=0;__k<2i+1______;k++)printf(“0”);
printf(“\n”);
}
main()
{inti;
for(i=0;i<3;i++)__a(i)_______;
for(i=3;i>=0;i--)__a(i)_______;
}
5.用选择法对数组为n个整数进行由大到小排序,选择合适的句子填入该空格中。
#definN100
main()
{inti,a[N],n;
scanf("%d",&n);
voidsort(intarray[],intn);
for(i=0;isort(a,n);
printf("thesortedarray:
\n);
for(i=0;i<15;i++)printf("%d",a[i]);
}
voidsort(intarray[],intn)
{inti,j,k,t;
for(i=0;i{k=i;
for(j=i+1;jif(array[j]>array[k]k=j;
t=array[k];array[k]=array[i];array[i]=t;
}
}
6.下面程序的功能是输入5个整数,找出最大数和最小数所在的位置,并把二者对调,然后输出调整后的5个数,选择合适的句子填入该程序空格中。
main()
{inta[5],max,min,i,j,k;
for(i=0;i<5;i++)
scanf(“%d”,&a[i]);
min=a[0];
for(i=1;i<5;i++)
if(a[i]max=a[0];
for(i=1;i<5;i++)
if(a[i]>max){max=a[i];___i=j_____;}
_a[k]=max,a[j]=min;__________
printf(“\nThepositionofminis:
%3d\n”,k);
printf(“Thepositionofmaxis:
%3d\n”,j);
for(i=1;i<5;i++)printf(“%5d\n”,a[i]);
}
四.编写程序(20分)
1.通过键盘输入10整数在一维数组中,并且把该数组中所有为偶数的数,放在另一个数组中。
#include
voidmain()
{
inta[10],b[10],i,j=0,k=0;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
if(a[i]%2==0)
{
b[j]=a[i];
j++;
k++;
}
for(j=0;jprintf("%d",b[j]);
printf("\n");
}
2.在两题中,可选择其中一题。
(1)编写一个累加求和的子函数,在主函数中调用其子函数,实现1~100中的偶数求和;
#include
voidmain()
{
ints(intx,inty);
inti,p=0;
for(i=1;i<=10;i++)
if(i%2==0)
p=s(p,i);
printf("%d",p);
}
ints(intx,inty)
{
inta;
a=x+y;
return(a);
}
(2)编程求一个n*n矩阵的主对角线元素求和的子函数,在主函数中输入n以及矩阵各元素的值(设该矩阵元素均为整型数据)。
#include
voidmain()
{
intsum(inta[][100],intn);
inta[100][100];
inti,j,f,n;
scanf("%d",&n);
printf("pleaseinput%d*%dintegers:
",n,n);
for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);
f=sum(a,n);
printf("%d",f);
printf("\n");
}
intsum(inta[][100],intn)
{
inti,sum=0,s1=0,s2=0;
for(i=0;i{s1=s1+a[i][i];
s2=s2+a[i][n-i-1];}
sum=sum+s1+s2;
return(sum);
}
高级语言程序设计(C语言)答题卷
班次姓名学号成绩
题号
一
二
三
四
总分
得分
评阅人
得分
一.选择填空(25分,每空1分)
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
评阅人
得分
二.读下列程序,给出程序的运行结果(30分)
1:
2:
3:
4:
5:
6:
评阅人
得分
三.程序填空(25分)
1.
2.
3.4.
5.6.
评阅人
得分
四.编写程序(20分)
C语言试题(2003~2004第一学期)A卷
答案:
一.选择填空(25分,每空1分)
1:
B2:
B3:
B4:
D5:
D
6:
D7:
C8:
A9:
C10:
D
11:
D12:
C13:
C14:
A15:
B
16:
A17:
D18:
D19:
A20:
C
21:
D22:
B23:
A24:
D25:
B
二.读下列程序,给出程序的运行结果(30分,每题5分)
1:
m1=6n1=1m2=6n2=8
2:
a=10
3:
M结果m
b结果b
4:
6,7
8,9
5:
abc
6:
789
三.填空题(25分)
1.指针p所指向的内容p指针所指向的内容的地址(3分)
2.0j=0j<8sum=s[i]+sum;sum(5分)
3.全局变量局部变量(2分)
4.k<2*i+1
a[i]
a[i]
5.nintarray[]j
6.j=i
k=i
a[j]=maxa[k]=min
五.编写程序(20分)
四.编写程序(20分)
1.通过键盘输入10整数在一维数组中,并且把该数组中所有为偶数的数,放在另一个数组中。
#include
voidmain()
{
inta[10],b[10],i,j=0,k=0;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
if(a[i]%2==0)
{
b[j]=a[i];
j++;
k++;
}
for(j=0;jprintf("%d",b[j]);
printf("\n");
}
2.在两题中,可选择其中一题。
(1)编写一个累加求和的子函数,在主函数中调用其子函数,实现1~100中的偶数求和;
#include
voidmain()
{
ints(intx,inty);
inti,p=0;
for(i=1;i<=10;i++)
if(i%2==0)
p=s(p,i);
printf("%d",p);
}
ints(intx,inty)
{
inta;
a=x+y;
return(a);
}
(2)编程求一个n*n矩阵的主对角线元素求和的子函数,在主函数中输入n以及矩阵各元素的值(设该矩阵元素均为整型数据)。
#include
voidmain()
{
intsum(inta[][100],intn);
inta[100][100];
inti,j,f,n;
scanf("%d",&n);
printf("pleaseinput%d*%dintegers:
",n,n);
for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);
f=sum(a,n);
printf("%d",f);
printf("\n");
}
intsum(inta[][100],intn)
{
inti,sum=0,s1=0,s2=0;
for(i=0;i{s1=s1+a[i][i];
s2=s2+a[i][n-i-1];}
sum=sum+s1+s2;
return(sum);