安徽中医药大学历年C语言精选样卷

本试卷为安徽中医药大学历年C语言精选样卷,题目包括:单项选择题。

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

本卷包括如下题型:

一、单项选择题

C语言精选样卷

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

(  A  )
1、若a是数值类型,则逻辑表达式(a==1)||(a!=1)的值是________。
A、1
B、0
C、2
D、不知道a的值,不能确定
(  A  )
2、下列字符数组初始化语句中,不正确的是________。
A、char c[]='goodmorning';
B、char e[20]="goodmorning":
C、char c[]=('a','b','c','d');
D、char c[]={”ffgoodmorning”);
(  A  )
3、下列运算符中优先级最高的算符是________。
A、!
B、%
C、-=
D、&&
(  A  )
4、有如下程序:
main ()
{
int x = 1, a = 0, b = 0;
switch (x)
{
case 0:
b++;
case 1:
a++;
case 2:
a++;
b++;
}
printf ("a = %d, b = %d\n", a, b);
}
该程序的输出结果是________。
A、a=2,b=1
B、a=1,b=1
C、a=1,b=0
D、a=2 b=2
(  C  )
5、表达式y=(13>12?15:6>7?8:9)的值为________ 。
A、9
B、8
C、15
D、1
(  B  )
6、break语句的正确的用法是________。
A、无论在任何情况下,都中断程序的执行,退出到系统下一层。
B、在多重循环中,只能退出最靠近的那一层循环语句。
C、跳出多重循环。
D、只能修改控制变量。
(  B  )
7、语句 for(k=0;k<5;++k)
{
if(k== 3) continue;
printf("%d",k);
}
的输出结果为______
A、012
B、0124
C、01234
D、没有输出结果
(  C  )
8、以下对二维数组a的正确说明是________。
A、int a[3][]
B、float a(3,4)
C、double a[1][4]
D、float a(3)(4)
(  A  )
9、在c语言中,下面合法的长整型数是________。
A、0L
B、4962710
C、0.054838743
D、2.1869e10
(  B  )
10、有以下程序
struct s
{
int x,y;
}
data[2]={ 10,100,20,200 };
main()
{
struct s *p=data;
printf("%d\n",++(p->x));
}
程序运行后的输出结果是________。
A、10
B、11
C、20
D、21
(  C  )
11、若有以下程序
#include <stdio.h>
void f(int n);
main()
{
void f(int n);
f(5);
}
void f(int n)
{
printf("%d\n",n);
}
则以下叙述中不正确的是________。
A、若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数f
B、若在主函数前对函数f进行说明,则在主函数和其后的其它函数中都可以正确调用函数f
C、对于以上程序,编译时系统会提示出错信息:提示对对f函数重复说明
D、函数f无返回值,所以可用void将其类型定义为无值型
(  A  )
12、若有下面的说明和定义:
struct test
{
int ml;
char m2;
float m3;
union uu
{
char ul[5];
int u2[2];
}
ua;
}
myaa;
则sizeof(struct test )的值是________。
A、12
B、16
C、14
D、9
(  B  )
13、有如下程序 int a[10]={ 1,2,3,4,5,6,7,8,9,10 },*p=a; 则数值为9的表达式是________。
A、*P+9
B、*(P+8)
C、*P+=9
D、P+8
(  D  )
14、下面程序段运行时输出结果是______。 char s[12]= "a book"; printf("%d\n",strlen(s));
A、12
B、8
C、7
D、6
(  C  )
15、对于类型相同的两个指针变量之间,不能进行的运算是______。
A、<
B、=
C、+
D、-
(  D  )
16、下面程序输出的结果是 __________.
#include <stdio.h>
void main( )
{
int i,j,x=0;
static int a[6]={1,2,3,4,5,6};
for(i=0,j=1;i<5;++i,j++) x+=a[i]*a[j];
printf("%d\n",x);
}
A、数组 a 中首尾的对应元素的乘积
B、数组 a 中首尾的对应元素的乘积之和
C、数组 a 中相邻各元素的乘积
D、数组 a 中相邻各元素的乘积之和
(  B  )
17、以下定义语句中,错误的是 __________.
A、int a[]={1,2};
B、char a={"test"};
C、char s[10]={"test"};
D、int a[]={'a','b','c'};
(  C  )
18、若函数调用时用数组名作为函数参数,以下叙述中,不正确的是 __________.
A、实参与其对应的形参共占用同一段存储空间
B、实参将其地址传递给形参,结果等同于实现了参数 之间的双向值传递
C、实参与其对应的形参分别占用不同的存储空间
D、在调用函数中必须说明数组的大小,但在被调函数中可以使用不定尺寸数组
(  B  )
19、若有定义int a=2; 则执行完语句a/=a*a; 后,a的值是________。
A、0.5
B、0
C、1/2
D、1/4
(  A  )
20、执行完语句int [] x= new int [25]; 后,则下列哪项说法是正确的
A、x[24]值为0
B、x[24]值未定义
C、x[25]值为0
D、x[0]值为空
(  B  )
21、有如下定义语句:int a[]= {1,2,3,4,5 },则对语句int * p=a; 正确的描述是________。
A、语句int * p=a;定义不正确
B、语句int * p=a;初始化变量p,使其指向数组对象a的第一个元素
C、语句int * p=a;是把a[0]的值赋给变量p
D、语句int * p=a;是把a[1]的值赋给变量p
(  B  )
22、c语言中,int型数据在内存中的存储形式是________。
A、ASCⅡ码
B、补码
C、反码
D、原码
(  D  )
23、在16位pc机上使用c语言,若有如下定义
struct data {
int i;
char ch;
double f;
} b;
则结构变量b占用内存的字节数是________。
A、1
B、2
C、7
D、11
(  C  )
24、若调用一个函数,且此函数中没有return语句,则正确的说法是该函数________。
A、没有返回值
B、返回若干个系统默认值
C、有返回值,但返回一个不确定的值
D、能返回一个用户所希望的函数值
(  C  )
25、下述关于break语句的描述中,( )是不正确的。
A、break语句可用于循环体内,它将退出该重循环
B、break语句可用于switch语句中,它将退出switch语句
C、break语句可用于对体内,它将退出if语句
D、break语句在一个循环体内可以出现多次
(  B  )
26、在下面的运算符中,不是算术运算符的是________。
A、++
B、==
C、%
D、+
(  D  )
27、以下程序有错,错误原因是
main()
{
int *p,i;
char*q,ch;
p=&i;
q=&ch;
*p=40;
*p=*q;
…
}
A、p和q的类型不一致,不能执行*p=*q;语句
B、*p中存放的是地址值,因此不能执行*p=40;语句
C、q没有指向具体的存储单元,所以*q没有实际意义
D、q虽然指向了具体的存储单元,但该单元中没有确定的值,所以执行*p=*q;没有意义,可能会影响后面语句的执行结果
(  D  )
28、有以下程序
main()
{
int i=0,s=0;
for(;;)
{
if(i==3‖i==5) continue;
if(i==6) break;
i++;
s+=i;
}
;
printf("%d\n",s);
}
程序运行后的输出结果是________。
A、10
B、13
C、24
D、程序进入死循环
(  A  )
29、有以下程序
#include <stdio.h>
main( )
{
file *fp;
int i,a[6]={1,2,3,4,5,6};
fp=fopen("d3.dat","w+b");
fwrite(a,sizeof(int),6,fp);
fseek(fp,sizeof(int)*3,seek_set);
/*该语句使读文件的位置指针从文件头向后移动3个int型数据*/ fread(a,sizeof(int),3,fp);
fclose(fp);
for(i=0;i<6;i++)printf("%d,",a[i]);
}
程序运行后的输出结果是________。
A、4,5,6,4,5,6,
B、1,2,3,4,5,6,
C、4,5,6,1,2,3,
D、6,5,4,3,2,1,
(  A  )
30、设有定义:char*c; 以下选项中能够使字符型指针c正确指向一个字符串的是________。
A、charstr[]="string";c=str;
B、scanf("%s",c);
C、c=getchar();
D、char str[]="string";strcpy("C,str")
(  B  )
31、有以下程序:
int *f(int *x, int *y) {
if (*x<*y) return x;
else return y;
}
main()
{
int a=7,b=8,*p,*q,*r;
p=&a;
q=&b;
r=f(p,q);
printf ("%d,%d,%d\n",*p,*q,*r);
}
执行后输出结果是________。
A、7,8,8
B、7,8,7
C、8,7,7
D、8,7,8
(  D  )
32、下列字符常量的写法中,正确的是________。
A、'abc'
B、'\5A'
C、A
D、'\73'
(  C  )
33、下列程序的运行结果是______。
main()
{
int a[6],i;
for(i=2;i<6;i++)
{
a[i]=4*(i-2*(i>3))%5;
printf("%2d",a[i]);
}
}
A、2 3 2 3
B、1 2 1 2
C、3 2 3 2
D、2 2 2 2
(  B  )
34、若定义a=3,b=4,执行printf("%d, %d",(a,b),(b,a)); 的输出结果为________。
A、3,4
B、4,3
C、3,3
D、4,4
(  A  )
35、以下程序的输出结果是_______。
main()
{
char t[]="student",*p;
p=t+1;
printf("%c",*p++);
printf("%c",*p++);
}
A、tu
B、st
C、ud
D、en
(  C  )
36、若有以下程序段int m=0xabc,n=0xabc;
m-=n;
printf("%x\n",m);
执行后输出结果是______。
A、0X0
B、0x0
C、0
D、0XABC
(  D  )
37、在c语言中,数字029是一个( )
A、八进制数
B、十进制数
C、十六进制数
D、非法数
(  C  )
38、下列函数中,能够从键盘获得一个字符数据的函数是________。
A、puts()
B、putchar()
C、getchar()
D、gets()
(  D  )
39、执行语句组 int a,b; b=(a=4*9,a*2),a-3; 后, b 的值是________。
A、36
B、69
C、33
D、72
(  B  )
40、设fp为指向某二进制文件的指针,且已读到此文件末尾,则函数feof(fp)的返回值为________。
A、EOF
B、非0值
C、0
D、NULL
(  B  )
41、关于数组和指针,以下说法错误的是________。
A、数组名本身就是一个指针,指向数组内存的起始位置
B、既可以读入数据到数组中,也可以读入数据到未赋初值的指针中
C、可以让一个指针指向一个同类型的数组
D、指针可以指向同类型的数组中的任意一个元素
(  D  )
42、以下说法错误的是________。
A、C 语言标识符中可以有多个字母数字和下划线字符
B、C 语言标识符中下划线字符可以出现在任意位置
C、C 语言标识符不能全部由数字组成
D、C 语言标识符必须以字母开头
(  C  )
43、以下叙述中正确的是________。
A、由 printf 输出的数据都隐含左对齐
B、scanf 和 printf 是 C 语言提供的输入和输出语句
C、赋值语句是一种执行语句,必须放在函数的可执行部分
D、由 printf 输出的数据的实际精度是由格式控制中的域宽和小数的域宽来完全决定的
(  C  )
44、以下数值中,不正确的八进制数或十六进制数是________。
A、0x16
B、016
C、-16
D、0xaaaa
(  C  )
45、若ch为char型变量,k为int型变量(已知字符a的ascii十进制代码为97), 则以下程序段的执行结果是________。 ch='a';
k=12;
printf("%x,%o,",ch,ch,k);
printf("k=%%d\n",k);
A、因变量类型与格式描述符的类型不匹配,输出无定值
B、输出项与格式描述符个数不符,输出为零值或不定值
C、61,141,k=%d
D、61,141,k=%12
(  C  )
46、以下函数的返回类型是______。 fff(float x)
{
return 5.86;
}
A、与参数x的类型相同
B、void 类型
C、int类型
D、无法确定
(  A  )
47、定义如下变量和数组: int k,a[3][3]={1,2,3,4,5,6,7,8,9};
则下面语句的输出结果是________。for(k=0;k<3;k++) printf("%d ",a[k][2-k]);
A、3 5 7
B、3 6 9
C、1 5 9
D、1 4 7
(  D  )
48、若有char s1[]="abc",s2[20],*t=s2;gets(t);则下列语句中能够实现当字符串 s1 大于字符串 s2 时,输出 s2 的语句是()。
A、if(strcmp(s1,s1)>0)puts(s2);
B、if(strcmp(s2,s1)>0)puts(s2);
C、if(strcmp(s2,t)>0)puts(s2);
D、if(strcmp(s1,t)>0)puts(s2);
(  B  )
49、设 j 和 k 都是 int 类型,则 for 循环语句
for(j=0,k=-1;k=1;j++,k++) printf("****\n");()。
A、循环结束的条件不合法
B、是无限循环
C、循环体一次也不执行
D、循环体只执行一次
(  A  )
50、对结构体类型的变量的成员的访问,无论数据类型如何都可使用的运算符是
A、.
B、->
C、*
D、&
相关标签:
  • C语言
  • 安徽中医药大学
  • 精选样卷