南京工程学院2022年C语言程序设计

本试卷为南京工程学院2022年C语言程序设计,题目包括:单项选择题,判断题,填空题,程序分析题,编程题。

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

C语言程序设计

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

(  A  )
1、以下程序的功能是进行位运算
main()
{
unsigned char a, b;
a=7^3;
b= ~4 & 3;
printf("%d %d\n",a,b);
}
程序运行后的输出结果是________。
A、4 3
B、7 3
C、7 0
D、4 0
(  D  )
2、下列选项中,能够正确定义数组的语句是________。
A、int num[0..2008];
B、int num[];
C、int N=2008;
D、#define N 2008
int num[N]; int num[N]
(  B  )
3、设有如下的程序段: char str[]="hello" ; char *ptr ; ptr=str; 执行上面的程序段后 , * ( ptr+5 )的值为 。
A、'o'
B、'\0'
C、不确定的值
D、'o' 的地址
(  A  )
4、以下叙述中正确的是______。
A、每个数组包含一组具有同一类型的变量,这些变量在内存中占有连续的存储单元
B、一条语句只能定义一个数组
C、数组说明符的一对方括号中只能使用整型常量,而不能使用表达式
D、在引用数组元素时,下标表达式可以使用浮点数
(  C  )
5、若a的值为3时,下列程序段被执行后,c的值是________。
int c = 1;
if (a>0) if (a>3) c = 2;
else c = 3;
else c = 4;
A、1
B、2
C、3
D、4
(  D  )
6、下列不是循环语句的是________。
A、while语句
B、do…while语句
C、for语句
D、if…else语句
(  D  )
7、有以下程序:
#include<stdio.h>
main() int a=1,b=0;
printf("%d,",b=a+b);
printf("%d\n",a=2+b);
程序运行后的输出结果是________。
A、0,0
B、1,0
C、3,2
D、1,2
(  A  )
8、两次运行下面的程序,如果从键盘上分别输入3和2,则输出结果是________。
#include<stdio.h>
main() {
int x;
scanf("%d",&x);
if(x++>2)printf("%d",x);
else printf("%d\n",x--);
}
A、4和3
B、4和2
C、4和1
D、3和2
(  D  )
9、有以下结构体说明、变量定义和赋值语句
struct std
{
char name[10];
int age;
char sex;
}
s[5],*ps;
ps=&s[0];
则以下scanf函数调用语句中错误引用结构体变量成员的是________。
A、scanf("%S",S[0].name);
B、scanf("%d",&s[0].age);
C、scanf("%C",&(ps->sex));
D、scanf("%d",ps->age);
(  C  )
10、\、/、mod、*等4个算术运算符中,优先级最低的是________。
A、\
B、/
C、Mod
D、*
(  C  )
11、下列选项中,哪一项不是c语言的关键字________。
A、auto
B、int
C、add
D、goto
(  B  )
12、以下合法的赋值语句是______。
A、X=Y=100
B、D--;
C、X+Y;
D、C=INT(A+B)
(  D  )
13、以下关于c语言标识符的描述中,正确的是________。
A、标识符可以由汉字组成
B、标识符只能以字母开头
C、关键字可以作为用户标识符
D、Area与area是不同的标识符
(  B  )
14、在64位编译器环境下,int类型占多少字节?
A、2
B、4
C、1
D、8
(  D  )
15、下面( )表达式的值为4。
A、11/3
B、11.0/3
C、(float)11/3
D、(int)(11/3+1)
(  B  )
16、对于以下递归函数f,调用 f(3) 的返回值是________。 int f(int n)
{
if(n) return f(n-1) + n;
else return n;
}
A、10
B、6
C、3
D、0
(  C  )
17、如果用数组元素作为函数调用时的实参,则该实参向函数的形参传送的是________。
A、数组元素的地址
B、数组的首地址
C、数组元素的值
D、数组名
(  A  )
18、以下关于 c 语言数据类型使用的叙述中错误的是________。
A、若只处理“真”和“假”两种逻辑值,应使用逻辑类型
B、若要保存带有多位小数的数据,可使用双精度类型
C、整数类型表示的自然数是准确无误差的
D、若要处理“人员信息”等含有不同类型的相关数据,应自定义结构体类型
(  C  )
19、若有以下数组说明,则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
(  A  )
20、以下语句中,循环次数不为 10 次的语句是()。
A、for(i=1;i<10;i++);
B、i=1;do{i++;}while(i<=10);
C、i=10;while(i>0){--i;}
D、i=1;m:if(i<=10){i++;goto m;}

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

(   F  )
1、if语句不可以嵌套使用。 
(   T  )
2、数组元素可以作为函数参数。 
(   F  )
3、当函数定义在后、调用在先时,vc++允许省略函数声明。 
(   T  )
4、for语句的一般形式如下,若表达式2的值为"假",则结束循环。 
(   F  )
5、c 语言标准输出操作中 ,putchar() 函数可以输出显示一个字符串。 
(   F  )
6、若函数的返回值与return 表达式类型不一致时,以return 表达式类型为准。 
(   T  )
7、宏定义和文件包含都是c语言中的编译预处理命令,对它们的处理是在编译前完成的 
(   F  )
8、在同一种类型中,变量值越大,它所占内存的字节数越多。( ) 
(   T  )
9、如果函数定义出现在函数调用之前,可以不必加函数原型声明 
(   T  )
10、使用static k定义的变量属于静态变量 

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

1、c语言中基本的数据类型有:整型、________、________ 。
2、在c语言中,关系运算符中的"等于"表示为________。
3、执行下列的程序段后,正确的结果是_____________。
int i=5;
while( i = 1)i -- ;
printf("%d", i );
4、从文件读入一行,读取字符包括空格,使用函数________。
5、已知函数定义为:int stat(int a,float *p),则此函数的两个参数类型分别是______、 浮点型。

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

1、表达式7+10>2 && 25 %5的结果是 ________ 。
2、有以下程序
#include <string.h>
main()
{
char a[]={'a','b','\0'};
int j;
j=strlen(a);
printf("%d\n",j);
}
程序运行后的输出结果是________。
3、下面程序段的运行结果是________。
i=1;
a=0;
s=1;
do
{
a=a+s*i;
s=-s;
i++;
}
while(i<=10);
printf("a=%d",a);
4、改正下列程序中不正确的语句。
main()
{
int n ;
float s=1.0;
for(n=10;n>1;n--) s=s+1/n;
printf("%6.1f\n",s);
}

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

1、编写程序:计算并输出100~300之间能被3和7整除的所有数,每8个换行
2、编写程序:用getchar函数读入两个字符给c1、c2,然后分别用putchar函数和printf函数输出这两个字符。
#include<stdio.h>
void main()
{
char c1, c2;
printf("请输入两个字符给c1和c2:\n");
_________________________________
_________________________________
printf("用putchar函数输出结果为:\n") ;
_________________________________
_________________________________
printf("\n用printf函数输出结果为:\n") ;
_________________________________
}
3、编写程序:本题为用结构体求学生的平均分和分数最高的学生对应课程以及分数。
输入10个学生5门课的成绩,分别用函数实现以下功能:
1、计算每个学生平均分
2、计算每门课平均分
3、找出所有50个分数中最高的分数所对应的学生和课程