湖州师范学院2019—2020学年第二学期 《C程序设计》期末考试试卷(B卷)
湖州师范学院2019—2020学年第二学期
《C程序设计》期末考试试卷(B卷)
考试时间 120 分钟
说明:(1)将所有试题的答案写在答卷上;
(2)交卷时将答卷纸和试题一同上交。
学院 班级 学号 姓名 成绩
题号 | 一 | 二 | 三 | 四 | 总分 |
分数 |
得分 |
一、单选题(每题1分,共15分)
1、以下叙述中正确的是( )。
A.C语言程序将从源程序中第一个函数开始执行
B.可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行
C.C语言规定必须用main()作为主函数名,程序将从此开始执行,在此结束
D.main可作为用户标识符,用以命名任意一个函数作为主函数
2、以下合法的用户标识符是( )。
A._2020zhang B.95_ C
C.y-7 D.if
3、设整型变量a的值为2,执行下列语句后,实型变量b的值不为0.5的是( )。
A.b=1.0/a B.b=(float)(1/a)
C.b=1/(float)a D.b=1/(a*1.0)
4、有变量定义:char c=’A’;则以下不能将变量c转换成小写字母的C语言表达式是( )。
A.c=’a’ B.c=c+32
C. c=tolowerr(c); D. c=c-32
5、以下程序执行后输出结果是( )。
#include <stdio.h>
main( )
{
int x=102,y=012;
printf("%2d,%2d\n",x,y);
}
A.10,01 B.02,12 C.102,10 D.02,10
6、以下程序段的输出结果是( )。
int a = 10,b = 0 ;
if ( a > 15 )
b = 1;
else if ( a < 2 )
b = 2;
else
b = 3;
printf("%d",b);
A.3 B.2 C.1 D.0
7、执行语句for (i=1; ++i<4;) ; 后变量i的值是( )。
A.3 B.4 C.5 D.不定
8、有定义:int a=[]={1,2,3,4};,则a[3]的值是( )。
A.1 B.2
C.3 D.4
9、以下叙述中正确的是( )。
A.语句int a[][3]={1,2,4,5};是错误的初始化形式
B.在逻辑上可以把二维数组看成是一个具有行和列的矩阵或表格
C.语句int a[4][3]={{1,2},{4,5}};是错误的初始化形式
D.语句int a[4][3]={1,2,4,5};是错误的初始化形式
10、下列语句定义p为指向float类型变量d的指针,其中正确的是( )。
A.float d,*p=d; B.float d,*p=&d;
C.float*p=&d,d; D.float d,p=d;
11、以下程序运行后的输出结果是( )。
#include <stdio.h>
main()
{ int a[]={1,2,3,4,5,6,7,8,9,10,11,12,},*p=a+5,*q=NULL;
q=p+5;
printf("%d %d\n",*p,*q);
}
A.运行后报错 B.6 6 C.6 11 D.5 10
12、C语言规定,函数返回值的类型是由( )决定的。
A.return语句中的表达式类型 B.调用该函数时的主调函数类型
C.调用该函数时由系统临时
D.在定义函数时所指定的函数类型
13、以下程序运行后的输出结果是( )。
#include <stdio.h>
void point(char *p)
{
p+=3;
}
main()
{ char b[4]={'a','b','c','d'},*p=b;
point(p); printf("%c\n",*p);
}
A.a B.b C.c D.d
14、设有以下宏定义,则执行语句z=2*(N+Y(5+1));后,z的值为( )。
#define N 3
#define Y(n) ((N+1)*n)
A.出错 B.42 C.48 D.54
15、若有以下程序
#include<stdio.h>
main()
{ int c;
c=13|5;
printf("%d\n",c);
}
则程序的输出结果是( )。
A.13 B.5 C.18 D.15
得分 |
二、程序填空题(每空2分,共30分)
1、从键盘输入梯形的上下底边长度a、b和高h(均为实数),计算梯形的面积。梯形的面积 。请将程序补充完整。
#include<stdio.h>
main()
{ (1) ;
printf("请输入梯形上底边a、下底边b和高h:");
scanf("%f%f%f", (2) );
(3) ; //计算梯形面积
printf("梯形面积S=%.2f \n",s);
}
2、以下程序的功能是:从键盘上输入一个日期,计算这个日期是当年的第几天?例如,输入2020/2/2,输出33。请将程序补充完整。(能被4整除但不能被100整除;或者能被400整除的年份是闰年。另:本程序不考虑输入不正确的月份和日期)
#include <stdio.h>
main()
{
int y,m,d,days,i;
scanf("%d/%d/%d",&y,&m,&d);
days=0;
for(i=1;i<m;i++)
if(i==1||i==3||i==5||i==7||i==8||i==10)
days=days+31;
else if( (4) )
days=days+28;
else
days=days+30;
(5) ;
if( (6) &&m>2)
days++;
printf("%d\n",days);
}
3、以下程序功能是:实现插入排序。插入排序是指在待排序的元素中,假设前面n-1(其中n>=2)个数已经是排好顺序的,现将第n个数插到前面已经排好的序列中,然后找到合适自己的位置,使得插入第n个数的这个序列也是排好顺序的。按照此法对所有元素进行插入,直到整个序列排为有序的过程,称为插入排序。例如原数组中的元素为:18,7,200,2, 30, 123,输入整数200,则数组中的元素为:2,7,18,30,123,200。请将程序补充完整。
#include <stdio.h>
main()
{
int a[10]={18,7,200,2,30,123},n,i,x;
for(n=1;n<6;n++)
{
(7) ;
for(i=n-1;i>=0;i--)
if(a[i]>x)
(8) ;
else
(9) ;
a[i+1]=x;
}
for(i=0;i<6;i++)
printf("%d ",a[i]);
}
4、以下程序的功能是:给定矩阵的下三角部分,补齐上三角部分,使其成为对称矩阵(如下所示)。请将程序补充完整。
7 3 2 5 11 3 8 6 4 13 2 6 9 1 15 5 4 1 10 16 11 13 15 16 14 |
#include <stdio.h>
main()
{
int a[5][5]={{7}, {3,8}, {2,6,9}, {5,4,1,10},{11,13,15,16,14}},j,i;
for(i=0;i<5;i++)
for( (10) ;j<5;j++)
(11) ;
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
printf("%4d",a[i][j]);
printf("\n");
}
}
5、以下程序的功能是:函数len的功能是计算参数对应字符串的长度。例如:字符串:string,则函数的返回值为6。请将程序补充完整。
#include <stdio.h>
#include <string.h>
int len( (12) )
{
int i=0;
while( (13) )
i++;
return i;
}
main()
{
char str[100];
int L;
gets(str);
L= (14) ;
printf("%d\n",L);
}
6、以下程序的功能是:生成一个数列,该数的规则是第1,2,3为1,从第4项开始为前3项之和,将数列的各项存放在数组a中,其中函数fun的功能是生成数列的各项,main函数中将数列各项输出)。请将程序补充完整。
#include <stdio.h>
void fun(int *a,int n)
{
int i;
(15) ;
for(i=3;i<n;i++,a++)
*a=*(a-1)+*(a-2)+ *(a-3);
}
main()
{
int i,n,a[50]={1,1,1};
scanf("%d",&n);
fun(a,n);
for(i=0;i<n;i++)
printf("%d ",a[i]);
}
得分 |
三、程序阅读题(每题3分,共15分)
1、程序1
#include <stdio.h>
main()
{
int a,b;
char c=’a’;
a=15;
b=6;
printf("%d %d ",a%b,a/b);
printf("%d %d ",b==a,b||a);
printf("%c %d\n",c,c-32);
}
程序的输出结果是
2、程序2
#include <stdio.h>
main()
{
int n,y;
scanf("%d",&n);
if(n%3==0&&n%5==0)
y=1;
else
y=0;
printf("%d\n",y);
}
程序运行时,输入15,则输出的结果是
3、程序3
#include <stdio.h>
main()
{
int n,i;
scanf("%d",&n);
for(i=2;i<n;i++)
if(n%i==0)
break;
if(i>=n)
printf("YES\n");
else
printf("NO\n");
}
程序运行时,输入13,程序的输出结果是
4、程序4
#include <stdio.h>
main()
{
int a[10]={1,4,2,4,3,4,5,4,6,4},i,j=0,x;
scanf("%d",&x);
for(i=0;i<10;i++)
if(a[i]!=x)
a[j++]=a[i];
for(i=0;i<j;i++)
printf("%d ",a[i]);
}
程序运行时,输入4,程序的输出结果是
5、程序5
#include <stdio.h>
float fun(int n)
{
if(n<=1)
return 1;
else
return fun(n-1)+1.0/n;
}
main()
{
float f;
f=fun(4);
printf("%f\n",f);
}
则输出的结果是
得分 |
四、程序设计题(每小题10分,共40分)
1、求下列分段函数的值。(x是由键盘输入的实数)
运行示例2: 输入:0 输出:0.000000
|
2、输入一个正整数n(1≤n≤10),求以下表达式的值并输出计算结果。
运行示例:
输入:10
输出:0.632120
3、输入一个正整数n(0<n≤100),然后输入n 个整数并存入数组,再输入一个整数x,在数组查找x,若x在数组中输出在数组中的位置(下标),若有多个输出最小的下标值;若不在数组中则输出-1。
运行示例:
输入n:5
1 2 5 4 5
输入x:5
输出:2
4、输出100到300之间的所有回文数(所谓回文数是指将整数的各位数字反向排列所得自然数与原数相等,则称为回文数,例如121。)。要求:(1)定义函数hw(n),功能判断n是否为回文数,若是返回1,否则返回0;(2)在main函数中输出结果,要求每一行输出5个回文数。
运行示例:
输出: 101 111 121 131 141
151 161 171 181 191
202 212 222 232 242
252 262 272 282 292
湖州师范学院2019—2020学年第二学期
《C程序设计》期末考试试卷(B卷)
适用班级 20190218,20190713,20190714,20190721,20191023,20191024
20191025,20191026,20191611,20191622,20191624,20191626
考试时间 120 分钟
说明:(1)将所有试题的答案写在答卷上;
(2)交卷时将答卷纸和试题一同上交。
学院 班级 学号 姓名 成绩
题号 | 一 | 二 | 三 | 四 | 总分 |
分数 |
得分 |
一、单选题(每题1分,共15分)
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | |
11 | 12 | 13 | 14 | 15 | ||||||
得分 |
二、程序填空题(每空2分,共30分)
1、(1) (2)
(3)
2、(4) (5)
(6)
3、(7) (8)
(9)
4、(10) (11)
5、(12) (13)
(14)
6、 (15)
得分 |
三、程序阅读题(每题3分,共15分)
1、程序的输出结果是
2、程序运行时,输入15,则输出的结果是
3、程序运行时,输入13,程序的输出结果是
4、程序运行时,输入4,程序的输出结果是
5、程序的输出结果是
得分 |
四、程序设计题(每小题10分,共40分)
1、
2、
3、
4、