c语言知识学习模拟考卷.docx
《c语言知识学习模拟考卷.docx》由会员分享,可在线阅读,更多相关《c语言知识学习模拟考卷.docx(14页珍藏版)》请在冰豆网上搜索。
c语言知识学习模拟考卷
扬州大学试题纸
名
姓
(0-0学年第二学期)
信息工程学院班(年)级课程C语言程序设计模拟试卷
题目
-一一
-二二
-三
四
五
总分
得分
阅卷人
得分
阅卷人
审核人
单项选择题(20分,每题1分)
1.下列表达式中,不能正确表达代数式
学含义的C语言表达式是(
A.x/a/b*y*2B.2*x*y/a/b
C.2*x*y/a*bD.x*y/b/a*2
2.若s是int型变量,则表达式s%2+(s-1)%2的值为()
3.若调用一个函数,且此函数中没有return语句,则表示该函数()°
A.没有返回值B.返回若干个系统默认值
C.返回一个用户所希望的函数值D.返回一个不确定的值
4•执行下列程序段后的输出结果是(
charstr[]={\t\bc\\Language\n\Og};
printf("%d\n",strlen(str));
A.12B.13C.14
5•以下程序的输出结果是()。
main()
{intx=1,y=2,z=3;
x=y--<=x||x+y!
=z;
printf(“%d,%d”,x,y);
D.16
}
A.0,1B.0,2
6•以下不是死循环的语句是(
A.inti=100;
while
(1){i=i%100+1;
B.for(;;);
C.intk=0;
do{++k;}while(k>=0);
D.ints=6;
C.1,1
)
if(i>100)break;}
D.1,2
while(s);--s;
A.inti=O,j=O;
(i=3,(j++)+i);
B.inti=1,j=0;
j=i=((i=3)*2);
C.inti=0,j=1;
(j==1)?
(i=1):
(i=3);
D.inti=1,j=1;i+=j+=2;
8.若有以下宏定义:
#defineN2
#defineY(n)((N+1)*n)
则执行语句“z=2*(N+Y(5));”后的结果为()。
A.语句有错误B.z=34C.z=70D.z无定值
9
1个所完
.下列程序是求1到100的累加和,其中有3个程序段能完成规定功能,有成的功能与其它程序不同,它是()。
A.s=O,i=O;while(i<=100)s+=i++;
B.s=0,i=1;while(i++<100)s+=i;
C.s=0,i=0;while(i<100)s+=++i;
D.s=O,i=O;while(++i<=100)s+=i;
10.凡在函数中未指定存储类别的变量,其隐含的存储类别是()。
A.自动(auto)E.静态(static)
C.外部(extern)D.寄存器(register)
11.已有定义intk=2;int*p1,*p2;且p1和p2均已指向变量k,下面不能
正确执行的赋值语句是()。
A.
B.p2=k;
C.p仁p2;
k=*p1+*p2
D.
k=*p1**p2;
inta[5],*p=a;
13.若有以下定义和赋值语句,则对b数组的第i行第j列(假设i,j已正
确说明并赋值)元素值的非法引用是()°
B.*(p[i]+j)
intb[2][3]={0},(*p)[3];p=b;
A.*(*(p+i)+j)
D.
C.*(p+i)+j
(*(p+i))[j]
14.设有说明“inta[4][4],(*p)[4]=a;”,以下与数组元素a[3][3]不等价表
示的是(
C.*(*(p+3)+3)
D.(*(*(a+3))+3)
15.若有以下定义,则数值不为3的表达式是()。
intx[10]={0,1,2,3,4,5,6,7,8,9},*p1;
B.
A.x[3]
p仁x+3,*p1++
C.p仁x+2,*(p1++)
D.p1=x+2,*++p1
16•以下程序的输出结果是(
#inelude
#inelude
main()
s1+=2,s2+=2;
printf(“%d\n”,stremp(s1,s2));
17.已有定义int(*p)();指针p可以(
#inelude
main(){structdate
{intyear,month,day;
}today;
printf(“%d\n”,sizeof(structdate));
}
A.6B.8C.10D.12
19•设有说明:
struct{
charname[15],sex;
intage;floatscore;
}stu,*p=&stu;
)o
B.scanf(“%s”,stu.name)
D.scanf(“%f”,p->score)
以下不能正确输入结构体成员值的是(
A.scanf(“%c”,&p->sex);
C.scanf(“%d”,&stu.age);
20.若有以下声明和语句:
intt[3][3],*pt[3],k;
for(k=0;k<3;k++)pt[k]=&t[k][O];
则表达式*(*(pt+1)+2)所引用的是(
C.t[1][2]
D.&t[1][2]
得分
阅卷人
审核人
、基本概念题(10分,每题1分)
1•C语言提供了四种基本的数据类型,它们是整型、实型、字符型
和。
2.若定义了intx;则将x强制转换成双精度类型应该写成。
3.表达式8.0*(1/2)的值为。
4.C语言规定,在一个源程序中,main函数的位置。
5.C语言中的标识符只能由字母、数字和下划线字符组成,且第一个字符
必须是。
6.若所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是。
7.若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式是
(假设s[0][0]位于数组的第一个位置上)。
8.在C语言中,&运算符作为单目运算符时表示的是运算。
9.若要是下列程序段中指针变量p指向一个存储整型数据的存储单元,则
应填入。
int*p;
p=malloc(sizeof(int));
10.函数调用strcat(strcpy(str1,str2),str3)的功能是:
得分
阅卷人
审核人
三、写出程序运行结果(
分)
20分,每题4
1.【程序】
main()
{intx[]={0,1,2,3,4,5,6,7,8,9};
ints=0,i,*p;
p=&x[0];
for(i=0;i<=9;i+=2)s+=*(p+i);
printf(“%d\n”,s);
}
2.【程序】
#include
#inelude
voidfun(char*w,intm)
{chars,*p1,*p2;
p1=w;
p2=w+m-1;
while(p1{s=*p1++;*p1=*p2--;*p2=s;}
}
main()
{staticchara[]=”GFEDCBA”;
fun(a,strlen(a));
puts(a);
}
3•假设运行以下程序时,从键盘输入的是:
Howareyou
Goodmorning
Helloworld
【程序】
#include"stdio.h"
#include"string.h"
voidmain()
{inti;
chars[80],str[3][80];
for(i=0;i<3;i++)
gets(str[i]);
strcpy(s,str[O]);
for(i=1;i<3;i++)
if(strlen(s)printf("%s%d",s,strlen(s));
}
4•【程序】
#include
voidnum()
{externintx,y;
inta=15,b=10;
x=a-b;
y=a+b;
}
intx,y;
main()
{inta=7,b=5;
x=a+b;
y=a-b;
num();
printf(“%4d%4d\n”,x,y);
}
5.【程序】运行下面的程序,假设从键盘上输入值为3。
#include"stdio.h"
main()
{intj,k,n,temp;
inta[6][6];
scanf("%d",&n);
for(k=0;kfor(j=0;ja[k][j]=k*n+j;
for(k=0;kfor(j=O;j{temp=a[n-j-1][k];a[n-j-1][k]=a[k][j];a[k][j]=temp;
}
for(k=0;k{for(j=0;j
得分
阅卷人
审核人
四、完善程序(12
分,每空1分)
是某一个数的平方数,
1•以下程序打印所有符合下列条件的3位正整数:
其中有两位数字相同。
如100、121等。
main()
{inta,b,c,n,k;
for(k=10;;k++)
{n=⑴;
if(n>999)⑵;
a=n/100;
b=⑶;
c=n%10;
if(!
((a-b)*(b-c)*(c-a)))printf(“\n%d,%d”,n,k);
}
}
2•下列程序的功能是输入一个整数,判断是否是素数,若为素数输出1,
否则输出0。
main()
{inti,x,y=1;
scanf(“%d”,(_4));
for(i=2;i<=x-1;i++)
if㈤
y=0;
printf(“%d\n”,y);
}
3.以下程序可把输入的十进制数以十六进制数的形式输出。
main()
{charb[17]={“0123456789ABCDEF”};
intc[64],d,i=0,base=16;
longn;
printf(“Enteranumber:
\n”);
scanf(“%ld”,&n);
do
{c[i]=(7);i++;n=(8);}
while(n!
=0);
printf(“Transmitenewbase:
\n”);
for(--i;i>=0;--i)
{d=c[i];printf(“%c”,b[(9)]);}
printf(“\n”);
4•以下程序可分别求出方阵a中两个对角线上元素之和。
#defineN6
main()
{inta[N][N],i,j,k,pr1,pr2;
for(i=0;ifor(j=0;jpr1=pr2=0;
for(i=0;i{pr1=(10)+(*(*(a+i)+i);
k=(11);
pr2=(12)+*(*(a+i)+k);}
printf(“pr1=%d,pr2=%d\n”,pr1,pr2);
}
得分阅卷人审核人
四、编程(共38分)要求输入n的值,输出序列之值。
2•定义一个含有30个整型元素的数组,按顺序分别赋予从2开始的偶数。
然后按顺序每5个数求出一个平均值,放在b数组中并输出。
3.某班30名同学1~30,考了5门课程1~5,要求编程输入该班所有考试成绩保存a[31][6]数组中,然后求出每门课程的平均成绩。
4.编程sum=1!
+2!
+3!
+…+10!
之值。
要求:
(1)使用函数调用技术,将求n!
之值编写为fac(n)函数。
(2)通过主函数调用fac函数实现题意。