成都中医药大学2022年C语言程序设计冲刺卷

本试卷为成都中医药大学2022年C语言程序设计冲刺卷,题目包括:单项选择题,填空题,编程题。

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

C语言程序设计冲刺卷

一、单项选择题 (共20题,每题2分,共计40分)

(  D  )
1、若有定义:int c[4][5],(*cp)[5]; 和语句cp=c; ,则能正确引用c数组元素的是________。
A、cp+1
B、*(cp+3)
C、*(cp+1)+3
D、*(*cp+2)
(  C  )
2、设变量a、b、e、d和y都已正确定义并赋值。若有以下if语句: if(a<b) if(c==d) y=0; else y=1; 该语句所表示的含义是________。
A、y=0,a
B、y=0,a
y=1,a≥b y一1,a≥b且c≠d
C、y=0,a
D、y=0,a
y=1,a<B且C≠D y="1,c≠d
(  C  )
3、设有定义:"double x[10],*p=x; ",以下能给数组x下标为6的元素读人数据的正确语句是________。
A、scanf("%f",&x[6]);
B、scanf("%If",*(x+6));
C、scanf("%if",p+6);
D、scanf("%if",p[6]);
(  D  )
4、有以下程序
main( )
{
int i,s=0;
for(i=1;i<10;i+=2) s+=i+1;
printf("%d\n",s);
}
程序执行后的输出结果是________。
A、自然数1~9的累加和
B、自然数1~10的累加和
C、自然数1~9中的奇数之和
D、自然数1~10中的偶数之和
(  A  )
5、有定义语句:int x, y; 若要通过scanf("%d,%d",&x,&y); 语句使变量x得到数值11,变量y得到数值12,下面四组输入形式中,错误的是________。
A、11 12<回车>
B、11, 12<回车>
C、11,12<回车>
D、11,<回车>
12<回车>
(  D  )
6、若有以下说明语句:
struct student
{
int num;
char name[ ];
float score;
} stu;
则下面的叙述不正确的是: ( )
A、struct是结构体类型的关键字
B、struct student 是用户定义的结构体类型
C、num, score都是结构体成员名
D、stu是用户定义的结构体类型名
(  D  )
7、执行下列程序后的输出结果是 _________.
#include <stdio.h>
void main( )
{
int k=4,a=3,b=2,c=1;
printf("%d\n",k<a?k:c<b?c:a);
}
A、4
B、3
C、2
D、1
(  B  )
8、若有定义:int a[4][10]; 则以下选项中对数组元素a[i][j]引用错误的是______。 (0<=i<4,0<=j<10)
A、*(&a[0][0]+10*i+j)
B、*(a+i)+j
C、*(*(a+i)+j)
D、*(a[i]+
(  C  )
9、设
struct data
{
int a;
float b;
} c,*p=&c;
,引用正确的是________。
A、*p.a
B、p.b
C、p->a
D、*p->b
(  D  )
10、下列c语言标识符中,合法的是________。
A、if
B、return
C、23a
D、a23
(  D  )
11、如果在一个运算表达式中包含有逻辑运算、关系运算和算术运算,并且其中未用圆括号规定这些运算的先后顺序,那么这样的综合型表达式的运算顺序是______。
A、逻辑→算术→关系
B、关系→逻辑→算术
C、算术→逻辑→关系
D、算术→关系→逻辑
(  C  )
12、设有如下说明
typedef struct st
{
long a;
int b;
char c[2];
}
new;
则下面叙述中正确的是______。
A、以上的说明形式非法
B、ST 是一个结构体类型
C、NEW 是一个结构体类型
D、NEW 是一个结构体变量
(  B  )
13、有以下程序
main()
{
int a[4][4]={{1,4,3,2},{8,6,5,7},{3,7,2,5},{4,8,6,1}},i,k,t;
for(i=0;i<3;i++)
for(k=i+1;k<4;k++)
if(a[i][i]<a[k][k])
{
t=a[i][i];
a[i][i]=a[k][k];
a[k][k]=t;
}
for(i=0;i<4;i++)
printf("%d,",a[0][i]);
}
程序运行后的输出结果是________。
A、6,2,1,1,
B、6,4,3,2,
C、1,1,2,6,
D、2,3,4,6,
(  B  )
14、定义如下变量和数组: int k; int a[3][3]= {9,8,7,6,5,4,3,2,1}; 则下面语句的输出结果是________。
for(k=0;k<3;k++) printf("%d",a[k][k]);
A、7 5 3
B、9 5 1
C、9 6 3
D、7 4 1
(  D  )
15、下列运算符结合性不同的是________。
A、+
B、%
C、/
D、=
(  A  )
16、以下选项中哪些描述是不正确的?
A、循环语句必须要有终止条件否则不能编译
B、break关键字用于跳出当前循环
C、continue用于终止本次循环,执行下一次循环
D、switch条件语句中可以使用break
(  A  )
17、以下叙述中错误的是________。
A、在一个程序中,每个模块均可以独立编译运行
B、程序“模块化”有利于任务的分解简化
C、允许对函数单独进行编译,是 C 语言实现“模块化”的基础
D、采用模块化结构,可以提高编程效率
(  B  )
18、执行下面的程序段int x=5;
char z='a';
int b;
b=((x&15)&&(z<'a') );
后,b的值为________。
A、0
B、1
C、2
D、3
(  C  )
19、以下是死循环的程序段是________。
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  )
20、以下程序的输出结果是________。
main( )
{
char c1='6', c2='0' ;
printf ( ''%d,%d, %d\n'' , c1, c2, c1-c2);
}
A、因输出格式不合法,输出出错信息
B、54,48,6
C、6)0,7
D、6,0,6

二、填空题 (共10题,每题2分,共计20分)

1、若有定义:int a[3][4]={{1,2},{0},{4,6,8,10}};
则初始化后,a[1][2]的值为________,a[2][1]得到的值为________。
2、程序结果:
void main()
{
int a,b,sum;
a=123;
b=456;
sum=a+b;
printf("sum is %d\n",sum);
}
3、执行下列程序段后,输出的a的值是_____________。
main( )
{
int a = 0;
switch(a)
{
case 0: a--;
break;
case 1: a++;
break;
case 2: a=a+5;
break
}
printf("%d",a);
}
4、设a=3,b=2,c=1,则a>b>c的值为________。
5、在循环的过程中,有时要提前中止循环,通常采用 () 语句。
6、设变量已正确定义为整型,则表达式n=i=2,++i,i++的值为 ________。
7、编译预处理包括宏定义、文件包含、( )等。
8、在c 语言中,一个函数一般由两个部分组成,它们是【1】和【2】。
9、函数del 的作用是删除有序数组a 中的指定元素x。已有调用语句n=del(a,n,x);
其中实参n 为删除数组元素的个数,赋值号左边的n 为删除后数组元素的个数。请填空。del(int a[],int n,int x)
{
int p,i;
p=0;
while (x>=a[p]&&p<n)【1】________;
for(i=p-1;i<n;i++)【2】________;
n=n-1;
return n;
}
10、int a = 2, b = 3; 表达式 a > b ? a ++ : ++ b的值为______。

三、编程题 (共3题,每题0分,共计40分)

1、编写程序:求两个正整数[m,n]之间所有既能被3整除也能被7整除的整数之和例如:m=1,n=1000,则程序的输出结果应为:_________________。
2、编写程序:使用结构体,创建一个长度为n的链表。
3、输入一个字符串和一个特定字符,在字符串中删除从该特定字符开始的所有字符。例如输入字符串为"abcdefg",特定字符为'd',删除后的字符串为"abc";输入字符串为"abcdefg",特定字符为'x',则输出“特定字符不存在”。