甘肃农业大学C语言程序设计测试卷
本试卷为甘肃农业大学C语言程序设计测试卷,题目包括:理论基础,控制结构,循环结构,数组/指针数组,字符串/字符串指针,函数/函数指针,指针,结构体,程序题。
覆盖的内容包括:理论题,基础知识,控制结构,循环结构,数组/指针数组,字符串/字符串指针,函数/函数指针,指针,结构体,程序题。
C语言程序设计测试卷
一、理论基础 (共20题,每题1分,共计10分)
( C )
1、c语言用________表示逻辑"真"值。
( C )
2、设有int x=11;则表达式(x+1/3)的值是________。
( D )
3、表达式5!=3的值是________。
( C )
4、设x,y,z,s均为int型变量,且初值均为1,则执行语句s=++x||++y&&++z后,则s的值为:
( D )
5、设有定义:int n=0,*p=&n,**q=&p; 则以下选项中,正确的赋值语句是________。
( A )
6、下列表示引用的方法中,( )是正确的。 已知:int m=10:
( D )
7、设int b=2; 表达式(b<<2)/(b>>1)的值是________。
( C )
8、以下选项中合法的实型常数是________。
( B )
9、下列关于c语言用户标识符的叙述中正确的是________。
( D )
10、按照运算符功能的划分,运算符==属于________。
( C )
11、以下4个选项中,不能看作一条语句的是________。
( B )
12、若题中各变量已正确定义并赋值,下面符合c语法的表达式是________。
( D )
13、与二进制数100101等值的十进制数是________。
( B )
14、下列语句合法的是________。
( C )
15、以下数值中,不正确的八进制数或十六进制数是________。
( C )
16、若ch为char型变量,k为int型变量(已知字符a的ascii十进制代码为97), 则以下程序段的执行结果是________。 ch='a';
k=12;
printf("%x,%o,",ch,ch,k);
printf("k=%%d\n",k);
( C )
17、以下常量中, 能够代表逻辑" 真" 值的常量是________。
( D )
18、以下不正确的说法是____
( C )
19、下面叙述中正确的是
( A )
20、以下叙述中错误的是
二、控制结构 (共10题,每题1分,共计10分)
( C )
1、设a、b、e、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、m=2、n=2,则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值是________。
( A )
2、下列程序的输出结果是________。
main()
{
int a=0,i;
for(i=1;i<5;i++)
{
switch(i)
{
case 0: case 3:a+=1;
case 1;
case 2:a+=2;
default:a+=3;
}
}
printf("%d",a);
}
( B )
3、下列表达式为关系表达式的为_________。(其中a为一整型变量)
( A )
4、下列程序的运行结果是________。
main()
{
int a=-5,b=1,c=1;
int x=0,y=2,z=0;
if(c>0)x=x+ y;
if(a<=0)
{
if(b>0) if(c<=0)y=x-y;
}
else if(c>0)y=x-y;
else z=y;
printf("%d,%d,%d\n",x,y,z);
}
( A )
5、有以下程序
main()
{
int i;
for(i=0;i<3;i++)
switch(i)
{
case 1: printf("%d",i);
case 2: printf("%d",i);
default: printf("%d",i);
}
}
执行后输出的结果是________。
( C )
6、下列程序的输出结果是______。
#include<stdio.h>
main()
{
int a=0,b=1,c=2;
if(++a>0 || ++b>0) ++c;
printf("%d,%d,%d",a,b,c);
}
( A )
7、分析下列程序:
#include<stdio.h>
main()
{
int*p1,*p2,*p;
int a=6,b=9;
p1=&a;
p2=&b;
if(a<b)
{
p=p1;
p1=p2;
p2=p;
}
printf("%d,%d",*p1,*p2);
printf("%d,%d",a,b);
}
程序的输出结果为________。
( A )
8、有如下程序
main()
{
int x=1,a=5,b=5;
switch(x)
{
case 0: b--;
case 1: a--;
case 2: a--;
b--;
}
printf("a=%d,b=%d\n",a,b);
}
该程序的输出结果是______。
( B )
9、能正确表示a≥10或a≤0的关系表达式是________。
( A )
10、c语言的if语句中,用作判断的表达式为____
三、循环结构 (共10题,每题1分,共计10分)
( D )
1、以下叙述中正确的是________。
( B )
2、以下正确的描述是________.
( B )
3、若变量已正确定义,有以下程序段
i=0;
do printf("%d,"i);
while(i++);
printf("%d\n",i);
其输出结果是________。
( D )
4、程序段如下:则以下说法中不正确的是: 。
#include <stdio.h>
main()
{
int k=2,;
while(k<7)
{
if(k%2)
{
k=k+3;
printf( " k=%d\n " ,k);
continue;
}
k=k+1;
printf( " k=%d\n " ,k);
}
}
( B )
5、执行下列语句后,r的值是
char ch='a';
int r=6;
switch(ch+5) {
case'a':r=r+3;
case'b':r=r+5;
case'c':r=r+5;
break;
default:r/=2;
}
( B )
6、已知 #int t=0; while(t=1) {...} 则以下叙述正确的是________。
( A )
7、有以下程序:
#include<stdio.h>
main() {
int c;
while((c=getchar())!=’\n’)
switch(c-’3’) {
case 0: case 1:putchar(c+4);
case 2:putchar(c+4);
break;
case 3:putchar(c+3);
case 4:putchar(c+3);
break;
}
printf("\n");
}
从第一列开始输入数据(<cr>代表一个回车符):3845<cr>,则程序输出结果为________。
( B )
8、若变量已正确定义:for(x=0,y=0;(y!=99&&x<4);x++) 则以上 for 循环()
( A )
9、以下关于continue语句的描述中正确的是________。
( D )
10、以下程序段的输出结果为()。
char c[]="abc";
int i=0;
do ;while(c[i++]!='\0');printf("%d",i-1);
四、数组/指针数组 (共10题,每题1分,共计10分)
( D )
1、若已定义: int a[4][3]=(1,2,3,4,5,6,7,8,9,10,1i,12),(*prt) [3]=a,*p=a[0];则能够正确表示数组元素a[1][2]的表达式是________。
( B )
2、若有定义"int b[8],*p=b;",则p+6表示( )。
( D )
3、若有定义:int a[10],则对数组a元素的正确引用是________。
( C )
4、若有说明语句"int a[5],*p=a; ",则对数组元素的正确引用是________。
( D )
5、设有以下语句,对a数组元素的引用中(其中0<=i<10)不正确的是 int a[10]= {0,1,2,3,4,5,6,7,8,9 },*p=a;
( B )
6、在一个应用程序中有如下定义:int a[]= {1,2,3,4,5,6,7,8,9,10 },为了打印输出数组a的最后一个元素,下面正确的代码是________。
( C )
7、若已定义: int a[]= { 0,1,2,3,4,5,6,7,8,9 },*p=a,i; 其中0≤i≤9,则对a数组元素不正确的引用是________。
( D )
8、要定义整型数组x,使之包括初值为0的三个元素,下列语句中错误的是________。
( C )
9、设有如下定义:char*aa[2]="abcd","abcd",则以下说法中正确的是________。
( C )
10、以下函数的功能是:通过键盘输入数据,为数组中的所有元素赋值。#define N 10
void arrin(int x[N])
{
int i=0;
while(i<N)scanf("%d",______);
}
在下划线处应填入的是______。
五、字符串/字符串指针 (共10题,每题1分,共计10分)
( C )
1、以下不能将s所指字符串正确复制到t所指存储空间的是________。
( B )
2、若输入字符串:abcde<回车>,则以下while循环体将执行多少次。 while((ch=getchar())!='e') printf("*");
( A )
3、下列四组字符串中都可以用作c语言程序中的标识符的是________。
( A )
4、下列字符串是标识符的是: 。
( C )
5、下面程序段的运行结果是 char *s="abcde"; s+=2; printf("%d",s);
( C )
6、以下能将字符串,you are luck!正确读入的语句组是________。
( A )
7、以下正确的字符串常量是________。
( D )
8、判断字符串a 和b 是否相等,应当使用。
( C )
9、判断两个字符串是否相等,正确的表达方式是
( A )
10、char a[]="This is a program.";输出前 5 个字符的语句是()。
六、函数/函数指针 (共10题,每题1分,共计10分)
( C )
1、以下正确的叙述是______。
( C )
2、以下正确的说法是________。
( D )
3、在c 语言程序中,在函数内部定义的变量称为________。
( A )
4、有以下程序:
void fun(int*a,int i,int j) {
int t;
if(i<j) t=a[i];
a[i]=a[j];
a[j]=t;
fun(a,++i,--j);
}
main() {
int a[]=1,2,3,4,5,6,i;
fun(a,0,5);
for(i=0;i<6;i++) printf("%d",a[i]);
}
执行后的输出结果是 ______。
( C )
5、函数调用时,基本的参数传递方式有传值与传地址两种, (23) 。
( A )
6、以下关于字符串的叙述中正确的是________。
( A )
7、对于函数声明 void fun(int a[1],int*b); 以下叙述中正确的是________。
( B )
8、以下叙述中正确的是________。
( D )
9、以下叙述中正确的是________。
( B )
10、c语言源程序的基本单位是________。
七、指针 (共10题,每题1分,共计10分)
( C )
1、以下叙述中不正确的是________。
( B )
2、若有以下数组说明,则i=10; a[a[i]]元素数值是________。 int a[12]= { 1,4,7,10,2,5,8,11,3,6,9,12 } ;
( A )
3、若 x 是 int 型变量 ,y 是 float 型变量 , 所用的 scanf 调用语句格式为 : scanf("x=%d,y=%f",&x,&y); 则为了将数据 10 和 66.6 分别赋给 x 和 y, 正确的输入应是 : 。
( C )
4、定义如下变量和数组 : int i;
int x[4][4]= { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 };
则下面语句的输出结果是 __________.
for(i=0;i<4;i++)
printf("%3d",x[i][3-i]);
( A )
5、对于 c 语言的函数,下列叙述中正确的是 ______ __.
( A )
6、如果用数组名作为实参,则传递给形参的是________。
( C )
7、以下叙述中错误的是________。
( C )
8、若有定义语句:int m[ ]= {5,4,3,2,1},i=4; 则下面对m数组元素的引用中错误的是______。
( B )
9、c语言中数组下标的下限是________。
( A )
10、以下叙述中错误的是________。
八、结构体 (共10题,每题1分,共计10分)
( D )
1、有以下程序
struct stu
{
int num;
float totalscore;
};
void f(struct stu p)
{
struct stu s[2]= {{20044,550}, {20045,537}};
p.num = s[1].num;
p.totalscore = s[1].totalscore;
}
main()
{
struct stu s[2]= {{20041,703} ,{20042,580}};
f(s[0]);
printf("%d %3.0f\n", s[0].num, s[0].totalscore);
}
程序运行后的输出结果是________。
( A )
2、程序中有下面的说明和定义
struct abc
{
int x ;
char y ;
}
struct abc s1 , s2 ;
则会发生的情况是______。
( D )
3、在16位pc机上使用c语言,若有如下定义
struct data {
int i;
char ch;
double f;
} b;
则结构变量b占用内存的字节数是________。
( B )
4、下面关于主程序的说法,错误的是________。
( A )
5、有以下程序
struct s
{
int n;
int a[20];
}
;
void f(int *a, int n)
{
int i;
for(i=0;i<n-1;i++) a[i]+=i;
}
main()
{
int i;
struct s s={10,
{
2,3,1,6,8,7,5,4,10,9}};
f(s.a,s.n);
for(i=0;i<s.n;i++) printf("%d,",s.a[i]);
}
程序运行后的输出结果是______。
( D )
6、有以下程序
#include <stdio.h>
main()
{
struct stu
{
char name[9];
char sex;
double score[2];
}
;
struct stu a={"zhao",'m',85.0,90.0},b={"qian",'f',95.0,92.0};
b=a;
printf("%s,%c,%2.0f,%2.0f\n",b.name,b.sex,b.score[0],b.score[1]);
}
程序的运行结果是______。
( A )
7、设有结构体的定义如下:
struct data
{
char c1;
char c2;
}
;
则sizeof(struct data)的值是________。
( B )
8、定义file *fp; 则文件指针fp 指向的是________。
( A )
9、设有如下定义:
struct sk
{
int a;
float b;
}
data,*p;
若要使p指向data中的a域,正确的赋值语句是________。
( B )
10、有以下程序
struct stu
{
char num[10];
float score[3];
};
main( )
{
struct stu s[3]={{"20021",90,95,85},{"20022",95,80,75},{"20023",100,95,90}},*p;
int i;
float sum=0;
p=s;
for(i=0;i<3;i++)sum=sum+p->score[i];
printf("%.2f\n",sum);
}
程序运行后的输出结果是________。
九、程序题 (共10题,每题1分,共计10分)
( D )
1、有以下程序:
main()
{
char ch[3][5]={"aaaa","bbb","cc"};
printf("%s\n",ch[l]);
}
程序运行后的输出结果是________。
( D )
2、阅读下面的程序
main()
{
int i,j;
scanf("%3d%2d",&i,&j);
printf("i=%d,j=%d\n",i,j);
}
如果从键盘上输入1234567<回车>,则程序的运行结果是________。
( B )
3、有以下程序
main()
{
int a[10]={1,2,3,4,5,6,7,8,9,10}, *p=&a[3], *q=p+2;
printf("%d\n", *p + *q);
}
程序运行后的输出结果是________。
( A )
4、有以下程序 float f1(float n)
{
return n*n;
}
float f2(float n)
{
return 2*n;
}
main()
{
float (*p1)(float),(*p2)(float),(*t)(float), y1, y2;
p1=f1;
p2=f2;
y1=p2( p1(2.0) );
t = p1;
p1=p2;
p2 = t;
y2=p2( p1(2.0) );
printf("%3.0f, %3.0f\n",y1,y2);
}
程序运行后的输出结果是________。
( C )
5、有以下程序
#include<stdio.h>
main()
{
int a[5]={1,2,3,4,5}, b[5]={0,2,1,3,0}, i, s=0;
for(i=0;i<5;i++) s=s+a[b[i]];
printf("%d\n",s);
}
程序运行后的输出结果是________。
( A )
6、有以下程序
main( )
{
char *p[10]={"abc","aabdfg","dcdbe","abbd","cd"} ;
printf("%d\n",strlen(p[4]));
}
执行后输出结果是________。
( C )
7、分析以下程序 , 下列说法正确的是______。
main()
{
int x=5,a=0,b=3;
if(x=a+b) printf("* * * *\n");
else printf("# # # #\n");
}
( D )
8、下列语句的结果是________。
main()
{
int j;
j=3;
printf("%d,",++j);
printf("%d",j++);
}
( C )
9、下列程序段的运行结果是________ int x=10,y=20,z=30;
if(x>y) z=x;
x=y;
y=z;
printf("%d,%d,%d\n",x,y,z);
( B )
10、下面程序段的运行结果是________。char c[5]={'a','b','\0','c','\0'}; printf("%s",c);
相关标签:
- C语言
- 甘肃农业大学
- 测试卷