新疆农业大学C语言测试卷

本试卷为新疆农业大学C语言测试卷,题目包括:单项选择题。

覆盖的内容包括:理论题,基础知识,控制结构,循环结构,指针,数组/指针数组,字符串/字符串指针,函数/函数指针,程序题,结构体,文件。

本卷包括如下题型:

一、单项选择题

C语言测试卷

一、单项选择题 (共50题,每题2分,共计100分)

(  D  )
1、若已定义:int a[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;其中0≤i≤9,则对a数组元素的引用不正确的是________。
A、a[p-a]
B、*(&a[i])
C、p[i]
D、*(*(a十i))
(  B  )
2、与"y=(x>0?1:x<0?-1:0)"; 的功能相同的if 语句是________。
A、if(x>0)y=1;
else if(x<0)y=1;
else y=0;
B、if(x)
if(x>0)y=1;
else if(x<0)y=-l;
else y=0;
C、y=-l
if(x)
if(x>O)y=1;
else if(x=-0)y=0;
else y=-l;
D、y=0;
if(x>=0)
if(x>=0)y=1;
else y=-l;
(  C  )
3、已知i,j,k为int型变量,若从键盘输入:1,2,3<回车>,使i的值为1,j的值为2,k的值为3,以下选项中正确的输入语句是________。
A、scanf(“%2d%2d%2d”,&i,&j,&k);
B、scanf(“%d_%d_%d”,&i,&j,&k);
C、scanf(“%d,%d,%d”,&i,&j,&k);
D、scanf(“i=%d,j=%d,k=%d”,&i,&j,&k);
(  D  )
4、以下函数,一般情况下,功能相同的是________。
A、fputc和putchar
B、fwrite和fputc
C、fread和fgetc
D、putc和fputc
(  C  )
5、下面程序的输出的是
main()
{
int x=10,y=3;
printf("%d\n",y=x/y);
}
A、0
B、1
C、3
D、不确定的值
(  A  )
6、以下不能正确进行字符串赋初值的语句是________。
A、char str[5]="good!";
B、char str[]="good!";
C、char *str="good!";
D、char str[5]={‘g',‘o',‘o',‘d'};
(  C  )
7、设有定义:char s[81]; int i=0; 以下不能将一行(不超过80个字符)带有空格的字符串正确读入的语句或语句组是________。
A、gets(s);
B、while((s[i++]=getchar())!=‘\n’);s[i]=‘\0’;
C、scanf(“%s”,s);
D、do{ scanf(“%c”,&s[i]); } while(s[i++]!=‘\n’); s[i]=‘\0;
(  D  )
8、有以下程序
#include <stdio.h>
main()
{
int x=1,y=0,a=0,b=0;
switch(x)
{
case 1: switch(y)
{
case 0: a++;
break;
case 1: b++;
break;
}
case 2: a++;
b++;
break;
case 3: a++;
b++;
}
printf("a=%d,b=%d\n",a,b);
}
程序的运行结果是________。
A、a=1,b=0
B、a=2,b=2
C、a=1,b=1
D、a=2,b=1
(  D  )
9、有如下定义
struct person
{
char name[9] ;
int age ;
};
struct person class[10]={" johu" , 17 , "paul" , 19 , "mary" , 18 , "adam" , 16};
根据上述定义,能输出字母 m 的语句是______。
A、prinft ( " %c\n" , class[3].name );
B、printf ( " %c\n" , class[3].name[1] );
C、prinft ( " %c\n" , class[2].name[1] );
D、printf ( " %c\n" , class[2].name[0] );
(  C  )
10、以下程序输出的结果是 __________.
#include <stdio.h>
void main( )
{
int a[ ]={5,4,3,2,1},i,j;
long s=0;
for(i=0;i<5;i++) s=s*10+a[i];
printf("s=%ld\n",s);
}
A、s=12345
B、s=5 4 3 2 1
C、s=54321
D、以上都不对
(  D  )
11、若要说明一个类型名stp,使得定义语句stp s; 等价于char *s; , 以下选项中正确的是________。
A、typedef STP char *s;
B、typedef *char STP;
C、typedef STP *char;
D、typedef char* STP;
(  A  )
12、在c语言中,main函数默认返回一个( )类型的值。
A、int
B、float
C、char
D、void
(  D  )
13、执行下面的语句后,表达式*(p[0]+1)+**(q+2)的值为______。 int a[]= { 5,4,3,2,1 },*p[]= { a+3,a+2,a+1,a },**q=p;
A、8
B、7
C、6
D、5
(  D  )
14、设有下面的定义:
struct st
{
int a;
float b;
} d;
int*p;
要使p指向结构变量d中的a成员,正确的赋值语句是________。
A、*p=d.a;
B、p=&a;
C、p=d.a;
D、p=&d.a;
(  B  )
15、在下列叙述中,错误的一条是________。
A、scanf()函数可以用来输入任何类型的多个数据
B、数组名作函数参数时,也采用“值传递”方式
C、如果形参发生改变,不会改变主调函数的实参值
D、函数的实参与形参的类型应一致
(  B  )
16、下列运算符中,属于关系运算符的是________。
A、<<
B、>=
C、=
D、!
(  A  )
17、下列( )是合法标识符。
A、_book
B、5files
C、+static
D、-3.14159
(  D  )
18、已有定义:int i,a[10],*p; 则合法的赋值语句是________。
A、p=100;
B、p=a[5]
C、p=a[2]+2
D、p=a+2;
(  A  )
19、下列运算符中,不属于关系运算符的是______。
A、+=
B、!=
C、<=
D、==
(  A  )
20、在c程序中,判逻辑值时,用"非0"表示逻辑值"真",又用"0"表示逻辑值"假"。在求逻辑值时,逻辑真和逻辑假可分别表示为
A、1 0
B、0 1
C、非0非0
D、1 1
(  C  )
21、设变量x和y均已正确定义并赋值。以下if语句中,在编译时将产生错误信息的是________。
A、if(x++);
B、if(x>y&&y!=0);
C、if(x>0)x- else y++;
D、if(y<0){;} else x++;
(  C  )
22、下面单位换算中,正确的是________。
A、1KB=1024×1024B
B、1KB=1024MB
C、1MB=1024×1024B
D、1GB=1024B
(  C  )
23、在标准ascii码表中,已知英文字母a的十进制码值是65,英文字母a的十进制码值是________。
A、95
B、96
C、97
D、91
(  B  )
24、下列各项中不属于算法基本特征的是________。
A、可行性
B、递归性
C、确定性
D、有穷性
(  D  )
25、在下面的字符数组定义中,哪一个有语法错误 。
A、char a[20]=“abcdefg”;
B、char a[]=“x+y=55.”;
C、chara[15];
D、char a[10]=‘5’;
(  D  )
26、已知:int a,b; 下列switch语句中,( )是正确的。
A、switch (a)
case a: a++;break;
case b: b++;break;
B、switch(a+b)
case 1:a+b;break;
case 1:a-b
C、switch(a*a)
case 1,2:++a;
case 3, 4:++b:
D、switch(a/10+b)
case 5:a/5:break:
default:a+b;
(  D  )
27、在64位高档微机中,一个字长所占的二进制位数为________。
A、8
B、16
C、32
D、64
(  B  )
28、下面程序的输出结果是______。
main()
{
int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a+4;
printf("%d\n",p[3]);
}
A、6
B、7
C、3
D、5
(  C  )
29、以下程序的输出结果是
typedef union {
long x[2];
int y[4];
char z[8];
} mytype;
mytype them;
main() {
printf("%d\n",sizeof(them));
}
A、32
B、16
C、8
D、24
(  C  )
30、有以下程序
#include <stdio.h>
int main()
{
int m[][3]= { 1,4,7,2,5,8,3,6,9 };
int i,j,k=2;
for(i=0;i<3;i++) printf("%2d",m[k][i]);
}
执行后输出结果是________。
A、4 5 6
B、2 5 8
C、3 6 9
D、7 8 9
(  D  )
31、已知三个字符为a、z和8,按它们的ascii码值升序排序,结果是________。
A、8,a,Z
B、a,8,Z
C、a,Z,8
D、8,Z,a
(  A  )
32、以下叙述错误的是________。
A、任何能通过编译和运行的算法都一定能得到所期望的结果
B、一个算法所包含的操作步骤应该是有限的
C、算法中每一条指令必须有确切的含义
D、算法可以用各种描述方法来进行描述
(  B  )
33、下面程序的输出是________。 typedef union
{
long x[2];
int y[4];
char z[8];
}
mytype;
mytype them;
void main()
{
printf("%d\n", sizeof(them));
}
A、32
B、16
C、8
D、24
(  D  )
34、下列叙述中正确的是______。
A、C语言编译时不检查语法
B、C语言的子程序有过程和函数两种
C、C语言的函数可以嵌套定义
D、C语言中,根据函数能否被其它源文件调用,被区分为内部函数和外部函数
(  C  )
35、有以下程序
main()
{
int i=1,j=1,k=2;
if((j++||k++)&&i++) printf("%d,%d,%d\n",i,j,k);
}
执行后输出的结果是______。
A、1,1,2
B、2,2,1
C、2,2,2
D、2,2,3
(  D  )
36、以下叙述中正确的是______。
A、预处理命令行必须位于源文件的开头
B、在源文件的一行上可以有多条预处理命令
C、宏名必须用大写字母表示
D、宏替换不占用程序的运行时间
(  C  )
37、已知int x=10,y=20,z=30; 以下语句:if(x<y) z=x; x=y; y=z; 执行后x,y,z的值是________。
A、x=10, y=20, z=30
B、x=20, y=30, z=30
C、x=20, y=10, z=10
D、x=20, y=30, z=10
(  C  )
38、设 float f[10]; 则f数组中下标最大的元素的正确表示为________。
A、f[10]
B、f[0]
C、f[9]
D、f(9)
(  C  )
39、若有定义:
struct keyword
{
char key[20];
int id;
}
kw[] = {"void", 1, "char", 2, "int", 3, "float", 4, "double", 5 };
则printf("%c,%d\n", kw[3].key[0], kw[3].id);
语句的输出结果为________。
A、i 3
B、n 3
C、f 4
D、l 4
(  D  )
40、有以下程序
void fun(char s[][10],int n)
{
char t;int i,j;
for(i=0;i<N-1;I++)
for(j=i+1,j<N;J++)}
/*比较字符串的首字符大小,并交换字符
串的首字符*/
if(s[i][0])>s[j][0]){
t=s[i][0];s[i][0]=s[j][0];s[j][0]=t;
}
main()
{
char ss[5][10]={“bcc”,”bbcc”,”xy”,”aaaacc”,”aabcc”};
fun(ss,5);printf(”%s,%s”,ss[0],ss[4]);
}
程序运行结果是________。
A、xy,aaaacc
B、aaaacc,xy
C、XCC,aabcc
D、ace,xabcc
(  C  )
41、c 语言主要是借助以下哪种手段来实现程序的模块化()
A、使用丰富的数据类型
B、定义常量和外部变量
C、定义函数
D、使用三种基本结构语句
(  A  )
42、以下说法正确的是________。
A、结构化程序有三种基本结构,分别是循环结构选择结构和顺序结构
B、只有顺序结构的 C 语言源程序才能由计算机正常执行
C、循环结构和分支结构均无法用 N-S 流程图描述
D、循环结构中不能包含分支结构,分支结构中也不能包含循环结构
(  B  )
43、c 语言 double 中类型数据占字节数为________。
A、4
B、8
C、12
D、16
(  C  )
44、以下数值中,不正确的八进制数或十六进制数是________。
A、0x16
B、016
C、-16
D、0xaaaa
(  C  )
45、以下标识符中,不能作为合法的c用户定义标识符的是________。
A、answer
B、to
C、signed
D、_if
(  D  )
46、若有以下定义和语句: int a[10]={1,2,3,4,5,6,7,8,9,10}
, *p=a;
不能表示a数组元素的表达式是________。
A、*p
B、a[9]
C、*p++
D、a[*p-a]
(  C  )
47、下面正确的字符常量是________。
A、"c"
B、'\\''
C、'W'
D、""
(  C  )
48、以下是死循环的程序段是________。
A、for(i=1; ; )if(++i%2==0) continue;if(++i%3==0) break;}
B、i=32767;do{if(i<0) break;}while(++i);
C、for(i=1; ; ) if(++i<10) continue;
D、i=1;while(i--);
(  B  )
49、下列标识符中,不合法的 C语言用户自定义标识符是()。
A、printf
B、enum
C、_(下划线)
D、sin
(  B  )
50、设 p1 和 p2 是指向同一个字符串的指针变量,c 为字符变量,则以下不能正确执行的赋值语句是()。
A、c=*p1+*p2;
B、p2=c;
C、p1=p2;
D、c=*p1*(*p2);