安徽工业大学C语言程序设计期末模拟

本试卷为安徽工业大学C语言程序设计期末模拟,题目包括:单项选择题。

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

本卷包括如下题型:

一、单项选择题

C语言程序设计期末模拟

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

(  D  )
1、有以下程序
void fun(int*a,int n)/*fun函数的功能是将a所指数组元素从大到小排序*/
{
int t,i,j;
for(i=0;i<n一1;j++) for(j=i+1;j<n;j++) if(a[i]
}
main()
{
int c[10]={1,2,3,4,5.6,7,8,9,0 },i;
fun(c+4.6): for(i=0;i<10;i++)printf("%d,",c[i]);
printf("n"):
}
}
程序运行的结果是________。
A、1,2,3,4,5,6,7,8,9,0,
B、0,9,8,7,6,5,1,2,3,4,
C、0,9.8,7.6,5,4,3,2,1.
D、1,2,3,4,9,8,7,6,5,0,
(  D  )
2、若已定义: 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]的表达式是________。
A、*((+prt+1)[2])
B、*(*(p+5))
C、(+prt+1)+2
D、*(*(a+1)+2)
(  B  )
3、与"y=(x>0?1:x<0?-1:0)";的功能相同的if语句是________。
A、if(x>0)y=1;
B、if(x)
else if(x>0)y=1;
else y=0; else if(x%0)y=-1;
else y=0;
C、y=-1
D、y=0;
if(x) if(x>=0)
if(x>O)y=1; if(xi>=O)y=1;
else if(x==0)y=0; else y=-1;
else y=-1;
(  D  )
4、下面是有关c语言字符数组的描述,其中错误的是________。
A、不可以用赋值语句给字符数组名赋字符串
B、可以用输入语句把字符串整体输入给字符数组
C、字符数组中的内容不一定是字符串
D、字符数组只能存放字符串
(  D  )
5、有以下定义:"int a;long b;double x,y;",则以下选项中正确的表达式是________。
A、a%(int x—y)
B、a=x!=Y;
C、(a*y)%b
D、y=x+y=X
(  C  )
6、若a为int类型,且其值为3,则执行完表达式a+= a-=a*a后,a的值是________。
A、-3
B、9
C、-12
D、6
(  D  )
7、以下叙述中不正确的是________。
A、在不同的函数中可以使用相同名字的变量
B、函数中的形式参数是局部变量
C、在一个函数内定义的变量只在本函数范围内有效
D、在一个函数内的复合语句中定义的变量在本函数范围内有效
(  C  )
8、有以下程序 int a=2;
int f(int n)
{
static int a=3;
int t=0;
if(n%2)
{
static int a=4;
t += a++;
}
else
{
static int a=5;
t += a++;
}
return t+a++;
}
main()
{
int s=a, i;
for( i=0; i<3; i++) s+=f(i);
printf("%d\n", s);
}
程序运行后的输出结果是________。
A、26
B、28
C、29
D、24
(  A  )
9、有以下程序
#include <studio.h>
#include <string.h>
struct a
{
int a;
char b[10];
double c;
};
void f(struct a t);
main()
{
struct a a={1001,"zhangda",1098.0};
f(a);
pringt("%d,%s,%6.1f\n",a.a,a.b,a.c);
}
void f(struct a t)
{
t.a=1002;
strcpy(t.b,"changrong");
t.c=1202.0;
}
程序运行后的输出结果是________。
A、1001,ZhangDa,1098.0
B、1002,ChangRong,1202.0
C、1001,ChangRong,1098.0
D、1002,ZhangDa,1202.0
(  A  )
10、以下叙述中错误的是________。
A、可以通过typedef增加新的类型
B、可以用typedef将已存在的类型用一个新的名字来代表
C、用typedef定义新的类型名后,原有类型名仍有效
D、用typedef可以为各种类型起别名,但不能为变量起别名
(  D  )
11、设有定义:int n=0,*p=&n,**q=&p; 则以下选项中,正确的赋值语句是________。
A、p=1;
B、*q=2;
C、q=p;
D、*p=5;
(  C  )
12、设有定义: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;
(  A  )
13、若"int n; float f=13.8; ",则执行"n=(int)f%3"后,n的值是________。
A、1
B、4
C、4.333333
D、4.6
(  B  )
14、下面函数的功能是______。 sss ( char *s , char *t )
{
while (( *s ) && ( *t ) && ( *t++== *s++ )) ;
return ( *s-*t ) ;
}
A、求字符串的长度
B、比较两个字符串的大小
C、将字符串 s 复制到字符串 t 中
D、将字符串 s 接续到字符串 t 中
(  C  )
15、设有以下说明语句 struct stu
{
int a ;
float b ;
}
stutype ;
则下面的叙述不正确的是______。
A、struct 是结构体类型的关键字
B、struct stu 是用户定义的结构体类型
C、stutype 是用户定义的结构体类型名
D、a 和 b 都是结构体成员名
(  A  )
16、运行下面程序时 , 从键盘输入 "12,34,9<cr>" , 则输出结果是 ________.
#include <stdio.h>
void main( )
{
int x,y,z;
scanf("%d,%d,%d",&x,&y,&z);
if (x<y) if (y<z)printf("%d\n",z);
else printf("%d\n",y);
else if (x<z)printf("%d\n",z);
else printf("%d\n",x);
}
A、34
B、12
C、9
D、不确定的值
(  D  )
17、下列程序的执行结果是 ___________.
#include <stdio.h>
void main( )
{
int x=0,y=1,z=0;
if (x=z=y) x=3;
printf("%d,%d\n",x,z);
}
A、3,0
B、0, 0
C、0,1
D、3,1
(  D  )
18、假定等级和分数有以下对应关系: 等级: a 分数: 85 ~ 100 等级: b 分数: 60 ~ 84 等级: c 分数: 60 以下 对于等级 grade 输出相应的分数区间,能够完成该功能的程序段是 __________.
A、switch (grade)
{
case 'A':printf("85--100\n");
case 'B':printf("60--84\n");
case 'C':printf("60 以下 \n");
default:printf(" 等级错误 !\n");
}
B、switch (grade)
{
case 'A':printf("85--100\n");break;
case 'B':printf("60--84\n");
case 'C':printf("60 以下 \n");
default:printf(" 等级错误 !\n");
}
C、switch (grade)
{
case 'A':printf("85--100\n");break;
case 'B':printf("60--84\n");break;
case 'C':printf("60 以下 \n");
default:printf(" 等级错误 !\n");
}
D、switch (grade)
{
case 'A':printf("85--100\n");break;
case 'B':printf("60--84\n");break;
case 'C':printf("60 以下 \n");break;
default:printf(" 等级错误 !\n");}
(  D  )
19、下列一维数组初始化语句中,正确且与语句 float a[ ]={ 0,3,8,0,9}; 等价的是 __________.
A、float a[6]={
0,3,8,0,9};
B、float a[4]={
0,3,8,0,9};
C、float a[7]={
0,3,8,0,9};
D、float a[5]={
0,3,8,0,9};
(  D  )
20、已知 short int 类型变量占用两个字节 , 若有定义 : short int x[10]={ 0,2,4 }; 则数组 x 在内存中所占字节数是 __________.
A、3
B、6
C、10
D、20
(  B  )
21、以下能对二维数组a进行正确初始化的语句是________。
A、int a[2][]={{(1,0,1},{5,2,3}};
B、int a[][3]={{1,2,3},{ 4,5,6}};
C、int a[2][4]={{ 1,2,3},{ 4,5},{6}};
D、int a[][3]={{1,0,1},{},{1,1}};
(  A  )
22、表示一条指令的存储单元的符号地址称________。
A、标号
B、变量
C、偏移量
D、类型
(  B  )
23、下列表达式为关系表达式的为_________。(其中a为一整型变量)
A、3+4*5
B、a==10
C、a>0a:-a
D、a=1
(  B  )
24、有以下定义和语句:
struct students {
int num;
char name[20];
char c;
struct {
int grade1;
int grade2;
} s;
};
struct students w,*pw;
*pw=w;
下列赋值语句不正确的是________。
A、num=1002;
B、w.grade1=85;
C、pw->num=1002;
D、w.s.grade2=85;
(  C  )
25、用高级程序设计语言编写的程序称为________。
A、目标程序
B、可执行程序
C、源程序
D、伪代码程序
(  C  )
26、在c语言中,关于函数fseek的说法正确的是________。
A、使位置指针重新返回文件的开头
B、使位置指针到文件的结尾
C、可以改变文件位置指针
D、利用fseek函数只能实现文件顺序读写
(  C  )
27、有以下程序
main() {
int i;
for(i=0;i<3;i++)
switch(i) {
case 0: prinft("%d",i);
case 2: prinft("%d",i);
default:prinft("%d",i);
}
}
程序运行后的输出结果是________。
A、022111
B、021021
C、000122
D、012
(  C  )
28、有以下程序
main()
{
int x,y,z;
x=y=1;
z=x++,y++,++y;
printf("%d,%d,%d\n",x,y,z);
}
程序运行后的输出结果是______。
A、2,3,3
B、2,3,2
C、2,3,1
D、2,2,1
(  B  )
29、下面程序的运行结果是________。
#include <stdio.h>
main() {
int a=1,b=10;
do
{
b-=a;
a++;
}
while(b--<0);
printf("a=%d,b=%d\n",a,b);
}
A、a=3,b=11
B、a=2,b=8
C、a=1,b=-1
D、a=4,b=9
(  C  )
30、若x、y、z、m、n均为int型变量,则执行下面语句后z的值为( )
m=10; n=5; x=(--m=n++)--m:++n; y=m++; z=n;
A、5
B、6
C、7
D、10
(  C  )
31、有以下程序
#include<stdio.h>
main ()
{
int i, j, x = 0;
for (i = 0; i < 2; i++)
x++;
for (j = 0; j <= 3; j++)
{
if (j % 2)
continue;
x++;
x++;
}
printf ("x=%d\n", x);
}
程序执行后的输出结果是______。
A、x=8
B、x=4
C、x=6
D、x=12
(  C  )
32、以下能将字符串,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);
(  B  )
33、以下关系表达式中,其值为true的是________。
A、"XYZ">"XYz"
B、"VisualBasic"<>"visualbasie"
C、"the"="there"
D、"Integer"<"Int\
(  B  )
34、关于字符型变量的定义,下列选项正确的是________。
A、char ch = a;
B、char ch = 'a';
C、char ch = "a";
D、char ch = \a;
(  B  )
35、有如下程序段int *p,a=1,b=2; p=&b; a=*p+a; 执行该程序段后,a的值为______。
A、2
B、3
C、4
D、编译出错
(  C  )
36、下面各语句行中,能正确进行给字符串赋值操作的语句行是______。
A、char st[4][5]={"ABCDE"};
B、char s[5]={'A','B','C','D','E'};
C、char *s="ABCDE";
D、char *s; scanf("%s",*s);
(  B  )
37、printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列。如果字符串长度大于5,则输出按方式 ________。
A、从左起输出该字符串,右补空格
B、按原字符长从左向右全部输出
C、0
D、输出错误信息
(  A  )
38、编写c语言程序并上机调试运行的一般过程是________。
A、编辑→编译→连接→运行
B、编译→编辑→连接→运行
C、编辑→连接→编译→运行
D、编译→连接→编辑→运行
(  C  )
39、下列关于指针变量的描述,不正确的是________。
A、在没有对指针变量赋值时,指针变量的值是不确定的
B、同类指针类型可以进行相减操作
C、在使用没有赋值的指针变量时,不会出现任何问题
D、可以通过指针变量来取得它指向的变量值
(  D  )
40、double x; scanf("%lf",&x); 不可以赋值给x变量的常量是________。
A、123
B、100000
C、A'
D、"abc"
(  C  )
41、以下能对一维数组a进行正确初始化的语句是________。
A、int a[10]=(0,0,0,0,0)
B、int a[10]={};
C、int a[]={0};
D、int a[10]={10*1};
(  D  )
42、fwrite函数的一般调用形式是________。
A、fwrite(buffer,count,size,fp);
B、fwrite(fp,size,count,buffer);
C、fwrite(fp,count,size,buffer);
D、fwrite(buffer,size,count,fp);
(  D  )
43、若二维数组a 有m 列,则计算任一元素a[i][j] 在数组中位臵的公式为(假设a[0][0] 位于数组的第一个位臵上) ________。
A、i*m+j
B、j*m+i
C、i*m+j-1
D、i*m+j+1
(  B  )
44、对说明语句int a[10]={6,7,8,9,10};
的正确理解是________。
A、将5 个初值依次a[1]至a[5]
B、将5 个初值依次a[0]至a[4]
C、将5 个初值依次a[5]至a[9]
D、将5 个初值依次a[6]至a[10]
(  B  )
45、已有定义int k=2;
int *p1,*p2;
且p1,p2 均指向变量k,下面不能正确执行的赋值语句是________。
A、k=*p1+*p2;
B、p2=k;
C、p1=p2;
D、k=*p1*(*p2);
(  C  )
46、若用fopen() 函数打开一个新的二进制文件,该文件可以读也可以写,则文件打开模式是________ 。
A、“ab+”
B、“wb+”
C、“ rb+ ”
D、“ab”
(  C  )
47、int a=3,b=2,c=1;
if(a>b>c)a=b;
else a=c;
则a 的值为____
A、3
B、2
C、1
D、0
(  C  )
48、以下程序的输出结果是________。
#include<stdio.h>
main( )
{
int i;
for(i=1;i<5;i++)
{
if(i%2)printf(''+''); else continue;
printf(''-'')
}
printf('' $ \n'');
}
A、+-+-+- $
B、-+-+-+ $
C、+-+- $
D、-+-+ $
(  D  )
49、static char str[10]="China";数组元素个数为()。
A、5
B、6
C、9
D、10
(  C  )
50、C语言执行程序的开始执行点是()。
A、程序中第一条可以执行语言
B、程序中第一个函数
C、程序中的 main 函数
D、包含文件中的第一个函数