兰州财经大学C语言程序设计复习题

本试卷为兰州财经大学C语言程序设计复习题,题目包括:单项选择题,填空题,编程题。

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

C语言程序设计复习题

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

(  D  )
1、当把以下四个表达式用作if语句的控制表达式时,有一个选项与其它三个选项含义不同,这个选项是________。
A、k%2
B、k%2==1
C、(k%2)!=0
D、!k%2==1
(  B  )
2、c语言中的简单数据类型有( )。
A、整型、实型、逻辑型
B、整型、实型、字符型
C、整型、字符型、逻辑型
D、整型、实型、逻辑型、字符型
(  D  )
3、以下程序的输出结果是________。
#define M(x,y,z) x*y+z
main()
{
int a=l,b=2,c=3;
printf("%d\n",m(a+b.b+c,c+a));
}
A、19
B、1 7
C、15
D、12
(  D  )
4、s1和s2已正确定义并分别指向两个字符串。若要求:当s1所指串大于s2所指串时,执行语句s; 则以下选项中正确的是________。
A、if(s1>s2)S;
B、if(strcmp(s1,s2))S;
C、if(strcmp(s2,sl)>O)S;
D、if(stremp(s1,s2)>O)S;
(  B  )
5、下面叙述不正确的是________。
A、C语句末尾必须有分号
B、C语言中无论是整数还是实数都能准确的表示
C、运算符“%”只能用于整数运算
D、乘除运算符优先级高于加减运算符
(  D  )
6、若有以下说明语句:
struct student
{
int num;
char name[ ];
float score;
} stu;
则下面的叙述不正确的是: ( )
A、struct是结构体类型的关键字
B、struct student 是用户定义的结构体类型
C、num, score都是结构体成员名
D、stu是用户定义的结构体类型名
(  A  )
7、设 a 为整型变量 , 不能正确表达数学关系 10<a<15 的 c 语言表达式是 __________.
A、10<a<15
B、a==11||a==12||a==13||a==14
C、a>10&&a<15
D、!(a<=10)&&!(a>=15)
(  D  )
8、若有说明int a[3][4]; 则a数组元素的非法引用是________。
A、a[0][2*1]
B、a[1][3]
C、a[4-2][0]
D、a[0][4]
(  A  )
9、下列描述说明正确的是________。
A、定义结构体时,它的每个成员的数据类型可以不同
B、不同结构体的成员名不能相同
C、结构体定义时,其成员的数据类型不能是结构体本身
D、结构体定义时各成员项之间可用分号也可用逗号隔开
(  B  )
10、结构化程序设计的3种结构是________。
A、顺序结构,分支结构,跳转结构
B、顺序结构,选择结构,循环结构
C、分支结构,选择结构,循环结构
D、分支结构,跳转结构,循环结构
(  D  )
11、若有下面的说明和定义,则sizeof(struct aa)的值是________。
struct aa {
int rl;
double r2;
float r3;
union uu {
char u1[5];
long u2[2];
} ua;
} mya;
A、30
B、29
C、24
D、22
(  A  )
12、以下对c语言函数的有关描述中,正确的是________。
A、在C语言中调用函数时,只能把实参的值传给形参,形参的值不能传送给实参
B、C函数既可以嵌套定义又可以递归调用
C、函数必须有返回值,否则不能使用函数
D、函数必须有返回值,返回值类型不定
(  C  )
13、若有下面的程序片段:
int[12]={0},*p[3],**pp,i;
for(i=0;i<3;i) p[i]=&a[i*4];
pp=p
则对数组元素的错误引用是________。
A、pp[0][1]
B、a[10]
C、p[3][1]
D、*(*(p+2)+2)
(  C  )
14、有以下程序
main()
{
int x=011;
printf("%d\n",++x);
}
程序运行后的输出结果是________。
A、12
B、11
C、10
D、9
(  C  )
15、以下程序运行后,如果从键盘上输入abcdef<回车>,则输出结果为______。
#include<stdio.h>
#include<string.h>
func(char str[]) {
int num=0;
while(*(str+num)!=’\0’) num++;
return(num);
}
main()
{
char str[10],*p=str;
gets(p);
printf("%d\n",func(p));
}
A、8
B、7
C、6
D、5
(  B  )
16、下面程序
main()
{
int y=9;
for(;y>0;y--)
{
if(y%3==0)
{
printf("%d",--y);
continue;
}
}
}
的输出是______。
A、741
B、852
C、963
D、875421
(  C  )
17、执行语句for(i=1;i<4;i++ ); 后变量i的值是________。
A、3
B、5
C、4
D、不定
(  A  )
18、以下叙述中正确的是________。
A、字符串数组,是指数组中的每个元素都是一个存放字符串的一维数组
B、char ca[3][4]={"A","BB","CCC"};是不合语法的
C、char ca[][5]={"A","BB","CCC"};是不合语法的
D、char *ca[3]= {"A","BB","CCC"};是不合语法的
(  C  )
19、以下叙述中错误的是________。
A、算法正确的程序对于相同的输入一定有相同的结果
B、算法正确的程序可以有零个输入
C、算法正确的程序可以有零个输出
D、算法正确的程序最终一定会结束
(  D  )
20、已知p,p1为指针变量,a为数组名,j为整型变量,下列赋值语句中 不正确的是________。
A、p=&j,p=p1;
B、p=a;
C、p=&a[j];
D、p=10;

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

1、若从键盘输入58,则以下程序输出的结果是 ________ 。
main()
{
int a;
scanf("%d",&a);
if(a>50) printf("%d",a);
if(a>40) printf("%d",a);
if(a>30) printf("%d",a);
}
2、以下程序的输出结果是 ________。
#include<stdio.h>
void swap(int *a,int *b)
{
int *t;
t=a;
a=b;
b=t;
}
main()
{
int i=3,j=5,*p=&i,*q=&j;
swap(p,q);
printf("%d %d\n",*p,*q);
}
3、在c语言中,用转义字符 \' 表示______________。答题提示:双引号/单引号/反斜线/横向跳格/回车换行
4、在c语言中,假使x为单精度实型变量,如果我们采用printf("格式控制",x)格式输出x,那么"格式控制"具体表示为"__"。
5、局部变量的作用域是从______的位置起,到函数结束止。
6、下列程序段的运行结果是_____。
main()
{
int m=1,t=1;
for(;;)
{
m=m*t;
t++;
if(t>4)break;
}
printf("%d\n",m);
}
7、以下程序的输出结果为________。
main()
{
char m ,n ;
m=getchar();
/*(输入d)*/n=m-34;
printf("%c",n);
}
8、数学表达式x<y<z改写为c语言表达式是___________。注:表达式要在英文半角状态下按原表达式顺序书写,且表达式中不要留空格。
9、已知函数定义为:int stat(int a,float *p),则此函数的两个参数类型分别是______、 浮点型。
10、C程序中用______括起来的内容是程序的注释语句。

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

1、编写程序: 一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
2、题⽬描述
有10个学⽣,每个学⽣的数据包括学号、姓名、3门课程的成绩。读⼊这10个学⽣的数据,要求输出3门课程的总平均成绩,以及个⼈平均分最⾼的学⽣的数据(包括学号、姓名、3门课程成绩、平均分数)。
输⼊
共有10⾏,每⾏包含了⼀个学⽣的学号(整数)、名字(长度不超过19的⽆空格字符串)和3门课程的成绩(0⾄100之间的整数),⽤空格隔开。
输出
第⼀⾏包含了3个实数,分别表⽰3门课程的总平均成绩,保留2位⼩数,每个数之后输出⼀个空格。
第⼆⾏输出个⼈平均分最⾼的学⽣的数据,与输⼊数据格式相同。如果有多位个⼈平均分最⾼的学⽣,输出按照输⼊顺序第⼀个最⾼分的学⽣数据。
请注意⾏尾输出换⾏。
样例输⼊
样例输出
85.60 87.90 90.40
105 EEE 92 93 94
3、编写程序,将用户输入的字符串中删除所有的数字,然后输出剩余的字符。