c语言知识学习模拟考卷096已选考.docx
《c语言知识学习模拟考卷096已选考.docx》由会员分享,可在线阅读,更多相关《c语言知识学习模拟考卷096已选考.docx(10页珍藏版)》请在冰豆网上搜索。
c语言知识学习模拟考卷096已选考
学院________________系_______________班级___________________学号__________________姓名____________
………………………………………………….装…………………………….订…………………………..线…………………………………
扬州大学试题纸
(0-0学年第二学期)
信息工程学院 班(年)级课程C语言程序设计模拟试卷
题目
一
二
三
四
五
总分
得分
阅卷人
得分
阅卷人
审核人
一、单项选择题(20分,每题1分)
1.下列表达式中,不能正确表达代数式
含义的C语言表达式是()。
A.x/a/b*y*2 B.2*x*y/a/b C.2*x*y/a*b D.x*y/b/a*2
2.若s是int型变量,则表达式s%2+(s-1)%2的值为()
A.0 B.1 C.–1 D.2
3.若调用一个函数,且此函数中没有return语句,则表示该函数()。
A.没有返回值B.返回若干个系统默认值
C.返回一个用户所希望的函数值D.返回一个不确定的值
4.执行下列程序段后的输出结果是()。
charstr[]={“\t\bc\\Language\n\0g”};
printf("%d\n",strlen(str));
A.12B.13C.14D.16
5.以下程序的输出结果是()。
main()
{intx=1,y=2,z=3;
x=y--<=x||x+y !
=z ;
printf(“ %d,%d”,x,y) ;
}
A.0,1B.0,2C.1,1D.1,2
6.以下不是死循环的语句是()
A.inti=100;
while
(1){i=i%100+1;if(i>100)break;}
B.for(;;);
C.intk=0;
do{++k;}while(k>=0);
D.ints=6;
while(s);--s;
7.下面能使i的运行结果为4的表达式语句是()。
A.inti=0,j=0;
(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=34 C.z=70D.z无定值
9.下列程序是求1到100的累加和,其中有3个程序段能完成规定功能,有1个所完成的功能与其它程序不同,它是()。
A.s=0,i=0;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=0,i=0;while(++i<=100)s+=i;
10.凡在函数中未指定存储类别的变量,其隐含的存储类别是()。
A.自动(auto) B.静态(static)
C.外部(extern)D.寄存器(register)
11.已有定义intk=2;int*p1,*p2;且p1和p2均已指向变量k,下面不能正确执行的赋值语句是()。
A.k=*p1+*p2B.p2=k;
C.p1=p2;D.k=*p1**p2;
12.若有以下定义,则对a数组元素地址的正确引用是()。
inta[5],*p=a;
A.p+5B.*a+1 C.&a+1D.&a[0]
13.若有以下定义和赋值语句,则对b数组的第i行第j列(假设i,j已正确说明并赋值)元素值的非法引用是()。
intb[2][3]={0},(*p)[3];p=b;
A.*(*(p+i)+j)B.*(p[i]+j)
C.*(p+i)+jD.(*(p+i))[j]
14.设有说明“inta[4][4],(*p)[4]=a;”,以下与数组元素a[3][3]不等价表示的是()。
A.*(a[3]+3)B.*(*(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;
A.x[3]B.p1=x+3,*p1++
C.p1=x+2,*(p1++)D.p1=x+2,*++p1
16.以下程序的输出结果是( )。
#include
#include
main()
{char*s1=”AbDeG”,*s2=”AbdEg”;
s1+=2,s2+=2;
printf(“%d\n”,strcmp(s1,s2));
}
A.正数B.负数 C.零D.不确定值
17.已有定义int(*p)();指针p可以()。
A.代表函数的返回值B.指向函数的入口地址
C.表示函数的类型D.表示函数返回值的类型
18.以下程序的运行结果是()。
#include
main()
{structdate
{intyear,month,day;
}today;
printf(“%d\n”,sizeof(structdate));
}
A.6 B.8 C.10 D.12
19.设有说明:
struct{
charname[15],sex;
intage;floatscore;
}stu,*p=&stu;
以下不能正确输入结构体成员值的是()。
A.scanf(“%c”,&p->sex);B.scanf(“%s”,stu.name);
C.scanf(“%d”,&stu.age); D.scanf(“%f”,p->score);
20.若有以下声明和语句:
intt[3][3],*pt[3],k;
for(k=0;k<3;k++)pt[k]=&t[k][0];
则表达式*(*(pt+1)+2)所引用的是()。
A.t[2][0]B.&t[2][0]
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
#include
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[0]);
for(i=1;i<3;i++)
if(strlen(s)strcpy(s,str[i]);
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=0;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;jprintf("%d",a[k][j]);
printf("\n");}
}
得分
阅卷人
审核人
四、完善程序(12分,每空1分)
1.以下程序打印所有符合下列条件的3位正整数:
是某一个数的平方数,其中有两位数字相同。
如100、121等。
main()
{inta,b,c,n,k;
for(k=10;;k++)
{n=
(1);
if(n>999)
(2);
a=n/100;
b=(3);
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(5)
{
y=0;
(6)}
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分)
1.求下列序列之值1+1/(1*2)+1/(2*3)+1/(3*4)+…+1/(n*(n+1))的值。
要求输入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函数实现题意。