重庆文理学院历年C语言期末

本试卷为重庆文理学院历年C语言期末,题目包括:单项选择题,填空题,编程题。

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

C语言期末

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

(  B  )
1、有以下程序: void fun(int a,int b,int c)
{
a=456:b=567;
c=678;
}
main()
{
int x=10,y=20,z=30;
fun(x,y,z);
printf("%d,%d,%d\n",x,y,z);
}
输出的结果是________。
A、30,20,10
B、10,20,30
C、456,567,678
D、678,567,456
(  B  )
2、以下变量声明中正确的是________。
A、int
B、_str
C、6xy
D、h7#
(  D  )
3、有以下程序
struct stu
{
int num;
float totalscore;
};
void f(struct stu p)
{
struct stu s[2]= {{20044,550}, {20045,537}};
p.num = s[1].num;
p.totalscore = s[1].totalscore;
}
main()
{
struct stu s[2]= {{20041,703} ,{20042,580}};
f(s[0]);
printf("%d %3.0f\n", s[0].num, s[0].totalscore);
}
程序运行后的输出结果是________。
A、20045 537
B、20044 550
C、20042 580
D、20041 703
(  C  )
4、设有以下说明语句 struct stu
{
int a ;
float b ;
}
stutype ;
则下面的叙述不正确的是______。
A、struct 是结构体类型的关键字
B、struct stu 是用户定义的结构体类型
C、stutype 是用户定义的结构体类型名
D、a 和 b 都是结构体成员名
(  B  )
5、以下对枚举类型名的定义中正确的是______。
A、enum a={ one , two , three} ;
B、enum a {one=9 , two=-1 , three} ;
C、enum a={"one" , "two" , "three"} ;
D、enum a {"one" , "two" , "three"} ;
(  C  )
6、for(int x=0,y=0;!x&&y<=5;y++)语句执行循环的次数是________。
A、0
B、5
C、6
D、无数次
(  D  )
7、执行下面的语句后,表达式*(p[0]+1)+**(q+2)的值为______。 int a[]= { 5,4,3,2,1 },*p[]= { a+3,a+2,a+1,a },**q=p;
A、8
B、7
C、6
D、5
(  D  )
8、设a为int型变量,执行下列赋值语句后,a的取值分别为 ( )
a=125.534; a=20.0/3; a=20%3; a=(int)125%521%4; a=5<<2;
A、125,6.666666,2,1,1
B、125,6,2,1,1
C、125.534,6.666666,2,1,20
D、125,6,2,1,20
(  C  )
9、以下定义数组中错误的是________。
A、int a [10];
B、int a [2][20];
C、int a[20][ ];
D、int a[];
(  C  )
10、设有定义语句int a []= { 66,77,99 },则下列对此语句的叙述中错误的是________。
A、定义了一个名为a的一维数组
B、a数组有3个元素
C、a数组的元素的下标为1~3
D、数组中的每一个元素都是整型
(  D  )
11、下列字符串中,不可以用作c标识符的是________。
A、y_2006
B、_FEST_H
C、Return
D、switch
(  D  )
12、有以下程序:
main() {
int y=1,x=2,z=3;
printf("%d,%d\n",(++x,y++),z+2);
}
执行后的输出结果是________。
A、3,5
B、2,5
C、3,3
D、1,5
(  D  )
13、有以下程序
#include<stdio.h>
main ()
{
int i, n;
for (i = 0; i < 8; i++)
{
n = rand () % 5;
switch (n)
{
case 1:
case 3:
printf ("%d\n", n);
break;
case 2:
case 4:
printf ("%d\n", n);
continue;
case 0:
exit (0);
}
printf ("%d\n", n);
}
}
以下关于程序执行情况的叙述,正确的是______。
A、for循环语句固定执行8次
B、当产生的随机数n为4时结束循环操作
C、当产生的随机数n为1和2时不做任何操作
D、当产生的随机数n为0时结束程序运行
(  C  )
14、下面程序段的执行结果是________。
#include<stdio.h>
main()
{
int a[5][5],i,j;
for(i=1;i<5;i++) for(j=1;j<5;j++) a[i][j]=(i<j)*(j/i);
for(i=1;i<5;i++) {
for(j=1;j<5;j++) printf("%2d",a[i][j]);
printf("\n");
}
}
A、1111
1111
1111
1111
B、0001
0010
0100
1000
C、0234
0012
0001
0000
D、0000
0000
0000
0000
(  D  )
15、下列关于表达式的描述中,错误的是________。
A、常量和变量都是表达式
B、运算符类型对应表达式的类型
C、每一个表达式都有自己的值
D、表达式必须以分号结尾
(  B  )
16、以下对局部变量描述错误的是________。
A、在函数内部定义的变量
B、在程序的全部执行过程中一直占用存储单元。
C、在main函数中定义的变量是局部变量
D、形式参数也是局部变量。
(  B  )
17、若想通过a&b来使a的二进制码中的首尾两位为原来的值,而其余为0,则b应为:(设变量a,b均占一个字节)
A、01111110
B、10000001
C、视a值而定
D、无法办到
(  C  )
18、以下叙述中正确的是________。
A、对于逻辑表达式:a++||b++,设 a 的值为 1,则求解表达式的值后,b的值会发生改变
B、对于逻辑表达式:a++&&b++,设 a 的值为 0,则求解表达式的值后,b的值会发生改变
C、else 不是一条独立的语句,它只是 if 语句的一部分
D、关系运算符的结果有三种:0,1,-1
(  A  )
19、已定义两个字符数组a,b,则以下正确的输入格式 是________。
A、scanf("%s%s", a, b);
B、get(a, b);
C、scanf("%s%s", &a, &b);
D、gets("a"),gets("b");
(  C  )
20、下面正确的字符常量是________。
A、"c"
B、'\\''
C、'W'
D、""

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

1、c语言中基本的数据类型有:整型、________、________ 。
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、字符串函数________用于从指定的磁盘文件中读出一个字符串。
4、静态存储的变量是在( )时分配存储单元并赋初值,在程序整个运行期间都不被释放。
5、下列程序段的运行结果是________。
int a[5]={1,2,3,4,5},*p;
p=a;
printf("%d", *(p=p+2) ) ;
6、语句只能用在循环中,该语句的作用是结束本层本次循环,继续一下次循环,前不跳出循环。
7、c语言中字符()以存在计算机中,整数以()储存在计算机中
8、下列给定程序中,函数ptoc()的功能是:利用插入排序法对字符串中的字符按从小到大的顺序进行排序。插入法的基本方法是:先对字符串中的头两个元素进行排序,然后把第3个字符插入前两个字符中,插入后前3个字符依然有序;
再把第4个字符插入前三个字符中,待排序的字符串已 在主函数中赋予。 请添加合适的语句____________,使它能得出正确的结果。 注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。 试题程序:
#define M 80
void proc(char*arr)
{
int i,j,n;
char ch;
n=strlen(arr);
for(i=1;i<n;i++)
{
ch=arr[i];
j=i-1;
while(______________)
{
arr[j+1]=arr[j];
j--;
}
arr[j+1]=ch;
}
}
void main()
{
char a[M]="QWERTYUIOPASDFGHJKLMNBVCXZ";
printf("The original string:%s\n",a);
proc(a);
printf("The string after sortin9: %s\n\n",a);
}
9、函数strlen("1234\0xy")的值为:______。
10、函数的形参在未被调用前不分配空间,函数形参的____要和实参相同。

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

1、编写程序:将字符数组a中下标值为奇数的元素从小到大排列,其它元素不变
例如:当a数组中的字符串为:"clanguage"时,程序的输出结果为:cgalgnaue()
2、编写一个函数统计并打印所输入的正文中的各个英文单词出现的次数并按次数的递减顺序输出,使用结构体实现。
3、判断101-200之间有多少个素数,并输出所有素数。
相关标签:
  • C语言
  • 重庆文理学院
  • 期末