湖南中医药大学往年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、若有以下数组说明,则i=10; a[a[i]]元素数值是________。 int a[12]= { 1,4,7,10,2,5,8,11,3,6,9,12 } ;
A、10
B、9
C、6
D、5
(  D  )
3、已知 short int 类型变量占用两个字节 , 若有定义 : short int x[10]={ 0,2,4 }; 则数组 x 在内存中所占字节数是 __________.
A、3
B、6
C、10
D、20
(  B  )
4、设有以下函数:
#include <stdio.h>
int f(int a)
{
int b=0,c;
c=3;
b++ ;
c++;
return (a+b+c);
}
如果在下面的程序中调用该函数,则输出结果是 ______.
void main()
{
int i;
for(i=0;i<3;i++)
printf("%d\n",f(i));
}
A、5 6 7
B、5 7 9
C、3 4 5
D、3 3 3
(  B  )
5、下面关于指针的说法中错误的是________。
A、在指针定义的同时可以对其进行初始化
B、指针根据其所指向变量的类型的不同,所占用内存大小也不同
C、指针中存放的是内存单元的地址
D、相同类型的指针之间可以相互赋值
(  A  )
6、设int a=4,b; 则执行b=a<<1; 语句后,b的结果是________。
A、8
B、2
C、16
D、10
(  A  )
7、下面关于数组的初始化正确的是________。
A、char str[ ] = {'a','b','c'}
B、char str[2]={'a','b','c'}
C、char str[2][3]={{'a','b',},{'c','d'},{'e','f'}}
D、char str( )={'a','b','c'}
(  A  )
8、以下叙述中错误的是______。
A、函数形参的值也可以传回给对应的实参
B、函数调用可以作为一个独立的语句存在
C、若函数有返回值,必须通过return语句返回
D、C程序必须由一个或一个以上的函数组成
(  A  )
9、设有以下语句
typedef struct s
{
int g;
char h;
}
t;
则下面叙述中正确的是________。
A、可用S定义结构体变量
B、可以用T定义结构体变量
C、S是struct类型的变量
D、T是struct S类型的变量
(  D  )
10、若有以下说明和语句:
struct st
{
int n;
char *ch;
}
;
struct st a[3]
{
5,"abc",7,"def",9,"ghk"
}
,*p=a 则值为6的表达式是______。
A、p++->n
B、p->n++
C、(*.n++
D、++p->n
(  D  )
11、以下程序运行后的输出结果是
main( )
{
char s[]="ABCD",*p;
for(p=s+1;p<s+4;p++)printf("%s\n",p);
}
A、ABCD
BCD
CD
D
B、A
B
C
D
C、B
C
D
D、BCD
CD
D
(  C  )
12、下列字符数组长度为5的是________。
A、char a[10]= { 'h','a','b','c','d' };
B、char b[]={ 'h','a','b','e','d','\0'};
C、char c[]={'h','a','b','c','d'};
D、char d[6]= {'h','a','b','c','\0'};
(  C  )
13、已知字符'c' 的ascii码为99,语句printf ("%d,%c",'c','c'+1); 的输出为________。
A、99,c
B、99,100
C、99,d
D、语句不合法
(  B  )
14、下面四个选项中,均是合法的用户标识符的选项是________。
A、void
B、as_b3
C、For
D、2c
(  A  )
15、以下表达式中,其值不等于数值 3 的是________。
A、0+'3'
B、'D'-'A'
C、'3'-'0'
D、'd'-a'
(  B  )
16、以下叙述中正确的是________。
A、循环发生嵌套时,最多只能两层
B、三种循环 for, while,do-while 可以互相嵌套
C、循环嵌套时,如果不进行缩进形式书写代码,则会有编译错误
D、for 语句的圆括号中的表达式不能都省略掉
(  C  )
17、经过以下语句定义后,表达式z+=x>y?++x:++y的值为________。
int x=1,y=2,z=3;
A、2
B、3
C、6
D、5
(  D  )
18、以下程序的运行结果是________。
main()
{
int i=1,sum=0;
while(i<10) sum=sum+1;
i++;
printf("i=%d,sum=%d",i,sum);
}
A、i=10,sum=9
B、i=9,sum=9
C、i=2,sum=1
D、运行出现错误
(  D  )
19、以下程序段中,变量 c 的二进制值是________ char a=2,b=4,c;
c=a+b<<2;
A、00000011
B、00010100
C、00011100
D、00011000
(  B  )
20、C语言中 while 和 do—while 循环的主要区别是
A、While 的循环控制条件比 do—while 的循环控制条件严格
B、do—while 的循环体至少无条件执行一次
C、do—while 允许从外部转到循环体内
D、do—while 循环体不能是复合语句

二、判断题 (共10题,每题2分,共计20分)

(   T  )
1、c程序函数体是由左右花括号{}括起来的部分。 
(   F  )
2、在c语言的嵌套循环结构中,任何一层循环中的brea语句都可以结束整个嵌套循环的执行。 
(   T  )
3、在程序设计中,一组具有相同数据类型的变量集合称为数组。() 
(   F  )
4、函数的实参和形参都可以是变量、常量和表达式。 
(   F  )
5、c 语言标准输入操作中 ,gets() 函数一次只可读取一个字符。 
(   T  )
6、标准c中并没有提供定义常量的方法。 
(   F  )
7、在标准c中,变量定义一定要出现在函数开始部分 
(   F  )
8、在标准c中,没有逻辑型数据,故不能使用逻辑表达式。 
(   T  )
9、常量是在整个程序运行过程中不能改变的量 
(   F  )
10、随机操作只适用于二进制文件。 

三、填空题 (共5题,每题4分,共计20分)

1、数组 int a[3][3]; 共定义了 ________ 个数组元素。
2、全局变量又称外部变量,是在函数______定义的变量。
3、若int a=3,b=2,c=1,f;表达式f=a>b>c 的值是________。
4、结构化程序三种结构为________。
5、数学表达式x<y<z改写为c语言表达式是___________。注:表达式要在英文半角状态下按原表达式顺序书写,且表达式中不要留空格。

四、程序分析题 (共4题,每题5分,共计20分)

1、以下程序中给指针p分配三个double型动态内存单元,请填空。
#include <stdlib.h>
main ( )
{
double *p;
p=(double *) malloc( ________);
p[0]=1.5;
p[1]=2.5;
p[2]=3.5;
printf("%f%f%f\n",p[0],p[1],p[2]);
}
2、以下程序的输出结果是________。#inlcude <stdio.h>
main()
{
int m=68;
putchar(m+30);
}
3、以下程序的运行结果是_____________。
main( )
{
int k, a[4][4]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
for( k=0;k<4;k ++)printf("%d,",a[k][k]);
}
4、下列给定程序中,函数proc()的功能是计算正整数m 各位上数字的平方和。 例如,输入498,则输出应该是161。 请修改程序中的错误,使它能得到正确结果。 注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。 试题程序:
#include<stdlib.h>
#include<stdio.h>
#include<conio.h> long proc(10ng m)
{
long sum=1;
do
{
sum+=(m%10)*(m%10);
m/= 10;
}
while(m)
return(sum);
}
void main()
{
long n;
system("cls");
printf("please enter a number:");
scanf("%1d",&n);
printf("\n%ld\n",proc(n));
}

五、编程题 (共3题,每题0分,共计50分)

1、编写程序:输入10个学生的成绩,统计高于平均分的人数
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、整数转字符串。输入一个整数1234,得到字符串: “1234”
相关标签:
  • C语言
  • 湖南中医药大学
  • 期末复习题