c语言 试卷3_有答案由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“c语言试卷3有答案”。
试卷
3一、选择题(共20题,每题2分,共40分)
1、有以下定义:
int a[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)*((*ptr+1)[2])B)*(*(p+5))
C)(*ptr+1)+
22、# include
{
}D)*(*(a+1)+2)void main()int a[3][3]={1,2,3,4,5,6,7,8,9}; int s=0,i;for(i=0;i
A)9B)12C)14D)153、设有说明语句:char a= '123abc';则变量a(A)包含7个字符)D)包含4个字符 B)包含6个字符C)包含5个字符
4、有以下程序段
int k=0
while(k=1)k++;
while 循环执行的次数是()
A)无限次B)有语法错,不能执行C)一次也不执行D)执行1次
5、在C语言中,()。
A)函数定义可以嵌套,但函数调用不能嵌套
B)函数定义不可以嵌套,但函数调用可以嵌套
C)函数定义和调用均不能嵌套
D)函数定义和调用均可以嵌套
6、以下叙述正确的是()
A)do-while语句构成的循环不能用其它语句构成的循环代替。
B)do-while语句构成的循环只能用break语句退出。
C)用do-while语句构成的循环,在while后的表达式为非零时结束循环。
D)用do-while语句构成的循环,在while后的表达式为零时结束循环。
7、若有声明语句char ch=’a’,*pc=&ch;以下语句中,有语法错误的是。
A.(*pc)++B.ch+=-‘a’+’A’;C.toupper(ch)=ch; D.ch++;
8、以下关于函数叙述中,正确的是。
A.在函数体中可以直接引用另一个函数中声明为static类别的局部变量的值
B.在函数体中至少必须有一个return 语句
C.在函数体中可以定义另一个函数
D.在函数体中可以调用函数自身
9、以下数组声明语句中正确的是。
A.int a,a[n];B.int a[ ];
C.int a[2][3]={{1},{2},{3}};D.int a[ ][3]={{1},{2},{3}};
10、以下程序执行后的结果是()
A)9B)程序出错C)死机D)1
5#include
#defineAREA(x,y)x*y;
main()
{int i;
i=AREA(3+2,3)
printf(“%d”,i);}
11、以下程序的输出结果是(main())
{int b[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1;
for(i=0;i
for(j=i;j
t=t+b[j][j]];
printf(“%dn”,t);
}
A)3B)4C)1D)912、以下不能正确进行字符串赋初值的语句是()
A)char str[5]= “good!”;B)char str[ ]= “good!”;
C)char *str=“good!”;D)char str[5]={ 'g','o','o','d'};
13、以下关于switch语句和break语句的描述中,只有()是正确的。
A)在switch语句中必须使用break语句
B)在switch语句中,可以根据需要使用或不使用break语句
C)break语句只能用于switch语句中
D)break语句是switch语句的一部分
14、判断变量ch中的字符是否为数字字符,最简单的正确表达式是()。
A)ch>=0&&ch
C)ch>=’0’||ch=’0’&&ch
)
D)815、若执行以下程序时从键盘上输入9,则输出结果是(A)11B)10C)9
main()
{ int n;
scanf(“%d”,&n);
if(n++
else printf(“%dn”,n--);
}
16、若w=1,x=2,y=3,z=4;则条件表达式w>x?w:y:z的结果是()
A)4B)3C)2D)
117、设x、y、t均为int型变量,则执行语句:x=y=3;t=++x||++y;后y的值为()
A)不定值B)4C)3D)
118、以下程序的输出结果是(main()
{int x=023;
printf(“%dn”,--x);
}
A)1819、下列4个函数中,()B)22C)23)能实现交换变量值的功能。
D)19 A)void fun_a(int x,int y){ int *p;
} {}*p=x;x=y;y=*p;B)void fun_b(int *x,int *y){ int *p;}{D)void fun_d(int x,int y)int p;p=x;x=y;y=p;}*x=*y;*y=*x;C)void fun_c(int *x,int *y)*x=*x+*y;*y=*x-*y;*x=*x-*y;
20、以下所列的各函数首部中,正确的是()
A)void play(var :integer,var b:integer)
B)void play(int a,b)
C)void play(int a,int b)
D)Sub play(a as integer,b as integer)
二、填空题(每空2分,共26分)
1、判断n是否是素数,若是,则返加1,否则返回0
int prim(int n)
{ int m;
for(m=2;m
return 0;
;
}
2、下述程序段是要实现在数组中查找最大元素和最小元素的下标,# include
void find(int *a,int n,int *max,int *min){ int i;*max=*min=0;for(i=1;ia[*max]);elseif(a[i]
}
void main()
{ int a [ ]={5,8,7,6,2,7,3};
int max,min;
find();
} printf(“nmax=%d,min=%d”,max,min);
3、下面的程序当输入为字符串”qwert?”时的输出结果是Main()
{ char c;
while((c=getchar())!=’?’)putchar(++c);
}
4、假设有如下语句:
int a;float b,c;
scanf(“%2d%3d%4f”,&a,&b,&c);
printf(“na=%d,b=%f,c=%fn”,a,b,c);
若从键盘输入:9876543210
则输出应为:
5、下面的函数用于实现将一个字符串按逆序存放。
Void convert(char s[])
{ char m;int i,j;for(i=0,j=strlen(s);i
{
m=s[i];s[i]=;
s[j-1]=m;
}
printf(“%sn”,s);
}
6、以下函数fun的功能是用选择排序法对数组的数据按从小到大的顺序排列。void fun(int a[ ],int n)
{int i,j,k,temp;
for(i=0;i;i++)
{ k=i;
for(j=i+1;;j++)
if(a[j]
{temp=a[k];
a[k]=a[i];
a[i]=temp;}
}
}
7、函数fun,其功能是求两个整数的最大公约数
fun(int x,int y)
{int a,b,t,r;
a=x;
b=y;while()
{a=b;
}
return(b);
}
8、以下程序中,主函数调用了LineMax函数,实现在N行M列的二维数组中,找出每一行上的最大值。请填空。
#define N
3#define M
4void LineMax(int x[N][M])
{ int i,j,p;
for(i=0;i;i++)
{ p=0;
for(j=1;j;j++)
if(x[i][p];
printf(“The max value in line %d is %dn”,i,x[i][p]);
}}
main()
{ int x[N][M]={1,5,7,4,2,6,4,3,8,2,3,1};;
}
三、判断题(每题2,共20分)
()1、C语言允许在复合语句内定义自动变量。
()2、全局变量可以和局部变量重名,且全局变量优先。
()3、若一个函数的返回类型为void,则表示其没有返回值。
()4、在程序运行过程中,系统分配给实参和形参的内存单元是相同的。
()5、对于Continue 和break这两条语句,只有break可用来实现循环体的中止。
()6、已知:char c='A';int i=1,j;执行语句j=!c&&i++;则i和j的值分别是0,1
()7、所有定义在主函数之前的函数无需进行声明。
()8、&既可以用作单目运算符也可以用作双目运算符
()9、宏定义和文件包含都是C语言中的编译预处理命令,对它们的处理是在编译前完成的。
()10、一个函数利用return不可能同时返回多个值。
四、编程题:(14分)
编程打印如下的杨辉三角形,具体要求如下:
(1)从主函数中输入欲打印的杨辉三角形行数;
(2)用子函数实现杨辉三角形的显示;
211331
14641
1 5101051
1615201561
„„
************************************************************************** 答案:
一、选择题
1、D2、D3.D4,A5.B
6.D7.C8.D9.C10.A
11.B12.A13.B14.D15.B
16.B17.C18.A19.A20.C
二、填空题
1.n%m==0;return 1;
2、*max=i
*min=i
a,7,&max,&min
3.rxfsu
4.a=98,b=765.000000,c=4321.000000
6.j
7.(r=a%b)!=0b=r
8.x[i][p]=x[i][j];LineMax(x)
三、判断题
对,错,对,错,对,对,对,错,对,对
四、略