安徽理工大学往年C语言

本试卷为安徽理工大学往年C语言,题目包括:单项选择题。

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

本卷包括如下题型:

一、单项选择题

C语言

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

(  D  )
1、能正确表示a和b同时为正或同时为负的逻辑表达式是________。
A、(a>=0‖b>=0)&&(a<0‖b<0)
B、(a>=0&&b>=0)&&(a<0&&b<0)
C、(a+b>0)&&(a+b<=0)
D、a*b>0
(  A  )
2、若有定义:int x,*pb;则正确的赋值表达式是________。
A、pb=&X
B、pb=X
C、*pb=&x
D、*pb=*x
(  A  )
3、有以下程序:
main()
{
int c=0,k;
for(k=1;k<3;k++)
switch(k)
{
default:c+=k;
case2:c++;
break;
case4:c+=2;
break;
}
printf("%d\n",c);
}
程序运行后的输出结果是________。
A、3
B、5
C、7
D、9
(  A  )
4、c语言中,合法的字符型常数是________。
A、‘A’
B、“A”
C、65
D、A
(  B  )
5、设有字符串a="he has 钱!",则该字符串的长度为( )。
A、9
B、10
C、11
D、8
(  A  )
6、在c语言中对于实型数组,其每个数组元素的类型是________。
A、实型
B、整型
C、可以为任何类型
D、不确定
(  B  )
7、设j为int型变量,则下面for循环语句的执行结果是________。 for(j=10;j>3;j--)
{
if(j%3)j--;
--j;
--j;
printf("%d",j);
}
A、6 3
B、7 4
C、6 2
D、7 3
(  C  )
8、在c语言的循环语句for,while,do-while语句中,用于直接中断最内层循环的语句是:________。
A、switch
B、continue
C、break
D、if
(  D  )
9、执行下面程序段,给x、y赋值时,不能作为数据分隔符的是________。 int x,y; scanf("%d%d",&x,&y);
A、空格
B、Tab键
C、回车
D、逗号
(  C  )
10、已知x=43,ch='a',y=0,则表达式(x>=y&&ch<'b'&&!y)的值是________。
A、0
B、语法错
C、1
D、"假"
(  A  )
11、若指针p已正确定义,要使p指向两个连续的整型动态存储单元,不正确的语句是________。
A、p=2*(int*)malloc(sizeof(int));
B、p=(int*)malloc(2*sizeof(int));
C、p=(int*)malloc(2*2);
D、p=(int*)calloc(2,sizeof(int));
(  A  )
12、有以程序
#include <stdio.h>
#include <string.h>
typedef struct
{
char name[9];
char sex;
float score[2];
} stu;
void f( stu a)
{
stu b={"zhao" ,’m’,85.0,90.0} ;
int i;
strcpy(a.name,b.name);
a.sex=b.sex;
for(i=0;i<2;i++) a.score[i]=b.score[i];
}
main()
{
stu c={"qian",’p’,95.0,92.0};
f(c);
printf("%s,%c,%2.0f,%2.0f\n",c.name,c.sex,c.score[0],c.score[1]);
}
程序的运行结果是________。
A、Qian,f,95,92
B、Qian,m,85,90
C、Zhao,f,95,92
D、Zhao,m,85,90
(  B  )
13、下列关于c语言的说法错误的是________ 。
A、C程序的工作过程是编辑、编译、连接、运行
B、C语言不区分大小写。
C、C程序的三种基本结构是顺序、选择、循环
D、C程序从main函数开始执行
(  B  )
14、已知char x[]="hello", y[]={ 'h','e','a','b','e' }; 则关于两个数组长度的正确描述是________。
A、相同
B、x大于y
C、x小于y
D、以上答案都不对
(  B  )
15、在一个应用程序中有如下定义:int a[]= {1,2,3,4,5,6,7,8,9,10 },为了打印输出数组a的最后一个元素,下面正确的代码是________。
A、printf("%d",a[10];)
B、printf("%d",a[9]);
C、printf("%d",a[a.length]);
D、printf("%d",a[8]);
(  D  )
16、若有表达式(w)(--x):(++y),则其中与w等价的表达式是________。
A、w==1
B、w==0
C、w!=1
D、w!=0
(  B  )
17、下列语句序列执行后,x的值是________。 int a=3,b=4,x=5; if (++ a==b)x=++a*x;
A、35
B、25
C、20
D、5
(  A  )
18、如果用数组名作为实参,则传递给形参的是________。
A、数组的首地址
B、第一个元素的值
C、数组元素的个数
D、数组中全部元素的值
(  D  )
19、以下能正确定义整型变量a,b和c,并为其赋初值1的语句是______。
A、int a=b=c=1;
B、int a,b,c=1;
C、a=b=c=1;
D、int a=1,b=1,c=1;
(  A  )
20、下列定义数组的语句中,正确的是______。
A、#define N 10
int x[N];
B、int N=10;
int x[N];
C、int x[0...10];
D、int x[];
(  C  )
21、下列描述中正确的是________。
A、在C语言程序中预处理是指完成宏替换和文件包含指定的文件的调用
B、预处理指令只能位于C源程序文件的首部
C、预处理命令可以放在程序中的任何位置
D、预处理命令结尾需要加分号
(  C  )
22、以下定义数组中错误的是________。
A、int a [10];
B、int a [2][20];
C、int a[20][ ];
D、int a[];
(  A  )
23、下述程序的输出结果是________。
#include<stdio.h>
void main() {
char a=1,b=2;
char c=a^b<<2;
printf("\n%d",c);
}
A、9
B、10
C、12
D、2
(  A  )
24、下列程序的运行结果是________
#include<stdio.h>
main()
{
int x=5,a=1,b=2,c=5,d=0;
if(a<b) if(b!=3) if(!c) x=1;
else if(d) x=l;
else x=-1;
printf("%d",x);
}
A、-1
B、0
C、1
D、不确定的值
(  C  )
25、以下能将字符串,you are luck!正确读入的语句组是________。
A、char s[80]; scanf("%s",s);
B、char *s: scanf("%s",s);
C、char s[80]; gets(s);
D、char *s; gets(3);
(  D  )
26、以下不正确的转义字符是________。
A、'\\'
B、'\d'
C、'\s'
D、'088'
(  B  )
27、关于c语言中print()函数与scanf()函数,下列描述中正确的是________。
A、printf()函数可以向任何地方输出数据
B、printf()只向控制台输出数据
C、scanf()只能输入英文字母和数字
D、scanf()函数可以识别输入的空格
(  D  )
28、要定义一个字符串,下列选项中错误的是________。
A、char s[5] = "hello";
B、char s[] = "hello";
C、char *s = "hello";
D、char s[] = {"h","e","l","l","o"};
(  D  )
29、设a、b、c、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、m=2、n=3则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值为______。
A、0
B、1
C、2
D、3
(  C  )
30、以下程序的输出结果是______。
main()
{
int i,x[3][3]={9,8,7,6,5,4,3,2,1},*p=&x[1][1];
for(i=0;i<4;i+=2) printf("%d",p[i]);
}
A、52
B、51
C、53
D、97
(  C  )
31、请读程序片段(字符串内没有空格字符):printf("%d\n",strlen("ats\n012\1\\") );
上面程序片段的输出结果是______。
A、11
B、10
C、9
D、8
(  D  )
32、若有下面的说明和定义,则sizeof(struct aa)的值是______。
struct aa
{
int r1;
double r2;
float r3;
}
maya;
A、20
B、18
C、14
D、16
(  D  )
33、有以下程序
#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、Qian,f,95,92
B、Qian,m,85,90
C、Zhao,f,95,92
D、Zhao,m,85,90
(  C  )
34、设x为整型变量,和表达式"!(!x)"值完全相同的表达式是________。
A、A==0
B、x==1
C、x!=0
D、x!=1
(  D  )
35、利用函数fseek可实现的操作是________。
A、改变文件指针fp的值
B、文件的顺序读写
C、文件的随机读写
D、以上答案均正确
(  B  )
36、判断实数 x 属于闭区间 [a, b ] 的表达式为 ▁▁▁▁▁设a为整型变量,不能正确表达数学关系10<a<15的c语言表达是________。
A、a>10&&a<15
B、a>10||a<15
C、!(a<=10||a>=15)
D、!(a<=10)&&!(a>=15)
(  B  )
37、若想通过a&b来使a的二进制码中的首尾两位为原来的值,而其余为0,则b应为:(设变量a,b均占一个字节)
A、01111110
B、10000001
C、视a值而定
D、无法办到
(  B  )
38、有以下程序段:char c1,c2,c3; scanf("%c%c%c",&c1,&c2,&c3); 若要给 c1、c2、c3 分别输入字母 a bc,则以下对输入形式的描述正确的是________。
A、字母 A B C 之间可以用空格分隔
B、字母 A B C 之间不能有分隔符
C、字母 A B C 之间可以用回车符分隔
D、字母 A B C 之间可以用 Tab 键分隔
(  B  )
39、对长度为 8 的数组进行快速排序,最多需要的比较次数为________。
A、8
B、28
C、56
D、64
(  D  )
40、下列语句的结果是________。
main()
{
int j;
j=3;
printf("%d,",++j);
printf("%d",j++);
}
A、3,3
B、3,4
C、4,3
D、4,4
(  A  )
41、设变量定义为"int x, *p=&x;
",则&(*p)相当于
A、p
B、*p
C、x
D、*(&x)
(  A  )
42、以下正确的字符串常量是________。
A、"\\"
B、'abc'
C、OlympicGames
D、'A'
(  B  )
43、字符串指针变量中存入的是________。
A、字符串
B、字符串的首地址
C、第一个字符
D、字符串变量
(  B  )
44、以下有关switch语句的正确说法是________。
A、break语句是语句中必须的一部分
B、在switch 语句中可以根据需要使用或不使用break语句
C、break语句在switch 语句中不可以使用
D、在switch 语句中的每一个case都要用break语句
(  D  )
45、下面程序有错误的行是(行前数字表示行号) 。
1 main()
{
2 int a[3]={3*0};
3 int i;
4 for(i=0;i<3;i++)
5 scanf("%d",&a[i]);
6 for(i=1;i<3;i++)
7 a[0]=a[0]+a[i];
8 printf("%d\n",a[0]);
}
A、第2 行有错误
B、第6 行有错误
C、第7 行有错误
D、没有错误
(  B  )
46、下面语句中( )是c 语言的正确赋值语句。
A、a=1,b=2
B、I++;
C、a=b=5
D、y=int(x);
(  A  )
47、若有定义 int a[10],*p=a;,则 p+5 表示
A、元素 a[5]的地址
B、元素 a[5]的值
C、元素 a[6]的地址
D、元素 a[6]的值
(  B  )
48、C语言中以下几种运算符的优先次序()的排列是正确的。
A、由高到低为:!,&&,||,算术运算符,赋值运算符
B、由高到低为:!,算术运算符,关系运算符,&&,||,赋值运算符
C、由高到低为:算术运算符,关系运算符,赋值运算符,!,&&,||
D、由高到低为:算术运算符,关系运算符,!,&&,||,赋值运算符
(  A  )
49、函数 rewind 的作用是()。
A、使位置指针重新返回文件的开头
B、将位置指针指向文件中所要求的特定位置
C、使位置指针指向文件的末尾
D、使位置指针自动移至下一个字符位置
(  D  )
50、若有说明:int a[3][4];则数组 a 中各元素()。
A、可在程序的运行阶段得到初值 0
B、可在程序的编译阶段得到初值 0
C、不能得到确定的初值
D、可在程序的编译或运行阶段得到初值 0