湖州师范学院2019—2020学年第二学期 《C程序设计》期末考试试卷(A卷)
湖州师范学院2019—2020学年第二学期
《C程序设计》期末考试试卷(A卷)
考试时间 120 分钟
说明:(1)将所有试题的答案写在答卷上;
(2)交卷时将答卷纸和试题一同上交。
学院 班级 学号 姓名 成绩
题号 | 一 | 二 | 三 | 四 | 总分 |
分数 |
得分 |
一、单选题(每题1分,共15分)
1、C语言规定在一个C程序中,main()函数的位置( )。
A.必须在最开始
B.必须在系统调用的库函数的后面
C.程序中的任意位置 D.必须在最后
2、以下不合法的用户标识符是( )。
A.2020zhang B._ C
C.yy701 D.IF
3、要为float类型变量x、y、z赋同一初值3.14,下列说明语句哪一个是正确的( )。
A.float x,y,z=3.14; B.float x,y,z=3*3.14;
C.float x=3.14,y=3.14,z=3.14; D.float x=y=z=3.14;
4、有变量定义:char c=’a’;则以下不能将变量c转换成大写字母的C语言表达式是( )。
A.c=’A’ B.c=c-32
C. c=toupper(c); D. c=c+32
5、根据下面的程序及数据的输入,则程序输出结果是( )。
#include <stdio.h>
main()
{ char ch1,ch2,ch3;
scanf("%c%c%c",&ch1,&ch2,&ch3);
printf("%c%c%c\n",ch1,ch2,ch3);
}
数据输入形式:A空格B空格C
A.A空格B B.ABC C.AB空格 D.空格AB
6、以下程序的运行结果是( )。
#include<stdio.h>
main ( )
{ int a=0,b=0,c=0;
if(++a>0 || ++b>0) ++c;
printf("%d,%d,%d",a,b,c);
}
A.0,0,0 B.1,1,1 C.1,0,1 D.0,1,1
7、以下程序运行的情况是( )。
#include <stdio.h>
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.死循环
8、以下能正确定义一维数组的是( )。
A.int a[5]={0,1,2,3,4,5}; B.char a[]={'0', '1', '2’, '3', '4', '5'};
C.char a={'A','B','C'}; D.int a[5]="01234";
9、有定义:int a=[][3]={1,2,3,4,5,6,7,8,9};,则a[1][1]的值是( )。。
A.1 B.5 C.7 D.9
10、下列不正确的定义是( )。
A.int *p=&i,i; B.int *p,i; C.int i,*p=&i; D.int t,*p;
11、下列程序段的输出结果是( )。
int t=0,a[3]={10,5,1};
int*p;
for(p=a;p<a+3;p++)
t=t +*p;
printf("\n%d",t);
A.15 B.16 C.10 D.不确定
12、在C语言程序中,有关函数的定义正确的是( )。
A.函数的定义可以嵌套,但函数的调用不可以嵌套
B.函数的定义不可以嵌套,但函数的调用可以嵌套
C.函数的定义和函数的调用均不可以嵌套
D.函数的定义和函数的调用均可以嵌套
13、以下程序的输出结果是( )。
#include <stdio.h>
void p(int *x, int *y)
{ ++ x;
--*y;
}
main()
{ int x=0, y=3;
p(&x, &y);
printf("(%d, %d)", x, y);
}
A.(0, 2) B.(0, 3) C.(1, 3) D.(1, 2)
14、以下程序段的输出结果是( )。
#define M(x, y) x / y
printf("%d", M(10,2+3));
A.2 B.2.0 C.5 D.8
15、如有以下程序:
#include <stdio.h>
main()
{int c;
c=10^5;
printf("%d\n",c);
}
则程序的输出结果是( )。
A.15 B.105 C.10000 D.5
得分 |
二、程序填空题(每空2分,共30分)
1、从键盘上输入两个电阻的值,求它们并联和串联的电阻值(要求电阻值为实数),输出结果保留两位小数。并联电阻计算公式: ,串联电阻计算公式:RS=R1+R2。请将程序补充完整。
#include<stdio.h>
main()
{ (1) ;
printf("请输入电阻r1和r2:");
scanf("%f%f", (2) );
rs= (r1+r2);
(3) ; //计算并联电阻
printf("并联电阻RP=%.2f 串联电阻RS=%.2f\n",rp,rs);
}
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);
(4) ;
for(i=1;i<m;i++)
switch(i)
{
case 1:days=days+31;break;
case 2:days=days+28;break;
case 3:days=days+31;break;
case 4:days=days+30;break;
case 5:days=days+31;break;
case 6:days=days+30;break;
case 7:days=days+31;break;
case 8:days=days+31;break;
case 9:days=days+30;break;
case 10:days=days+31;break;
case 11:days=days+30;break;
}
days=days+d;
if( (5) &&m>2)
(6) ;
printf("%d\n",days);
}
3、以下程序功能是:在一个已排好序的整型数组,输入一个整数,要求按原来排序的规律(升序)将它插入数组中。例如原数组中的元素为:2,7,18,30,123,输入整数200,则数组中的元素为:2,7,18,30,123,200。请将程序补充完整。
#include <stdio.h>
main()
{
int a[10]={2,7,18,30,123},n=5,i,x;
scanf("%d",&x);
for(i=n-1;i>=0;i--)
if(a[i]>x)
(7) ;
else
(8) ;
a[i+1]=x;
for(i=0; (9) ;i++)
printf("%d ",a[i]);
}
4、以下程序的功能是:利用二维数组生成如下形状的杨辉三角。(杨辉三角的第0列和对角线元素全为1,其余元素由上一行对应两个元素之和。)请将程序补充完整。
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
#include <stdio.h>
main()
{
int a[10][10],i,j,row;
scanf("%d",&row);
for(i=0;i<row;i++)
(10) ;//第0列和对角线元素置1
for(i=2;i<row;i++)
for(j=1;j<i;j++)
(11) ;//计算除第0列和对角线以外的元素值
for(i=0;i<row;i++)
{
for(j=0;j<=i;j++)
printf("%5d",a[i][j]);
printf("\n");
}
}
5、以下程序的功能是:函数fx的功能是实现其参数传递的字符串反序存放。例如:原字符串为ABCDEF,调用函数后字符串为FEDCBA。请将程序补充完整。
#include <stdio.h>
(12)
void fx( (13) )
{
int i,j;
char t;
j=strlen(a)-1;
for(i=0;i<j;i++,j--)
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
main()
{
char str[100];
gets(str);
(14) ;
puts(str);
}
6、以下程序的功能是:生成Fibonacci数列,将数列的各项存放在数组a中,其中函数fun的功能是生成Fibonacci数列,main函数中将数列各项输出(所谓Fibonacci数列是指第1,2为1,从第3项开始为前2项之和)。请将程序补充完整。
#include <stdio.h>
void fun(int *a,int n)
{
int i;
(15) ;
for(i=2;i<n;i++,a++)
*a=*(a-1)+*(a-2);
}
main()
{
int i,n,a[50]={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=13;
b=7;
printf("%d %d",b%a,b/a);
printf("%d %d",b>a,b&&a);
printf("%c %c\n",c,c+32);
}
程序的输出结果是
2、程序2
#include <stdio.h>
main()
{
int n,y;
scanf("%d",&n);
if(n%6==0)
y=1;
else
y=0;
printf("%d\n",y);
}
程序运行时,输入17,则输出的结果是
3、程序3
#include <stdio.h>
main()
{
int a,b,t=0;
scanf("%d",&a);
b=a;
while(a)
{
t=t*10+a%10;
a=a/10;
}
if(t==b)
printf("%d\n",1);
else
printf("%d\n",0);
}
程序运行时,输入121,程序的输出结果是
4、程序4
#include <stdio.h>
main()
{
int a[10]={1,2,2,3,3,3,4,5,6,6},i,j,n=10;
for(i=1;i<n;i++)
if(a[i]==a[i-1])
{
for(j=i;j<n-1;j++)
a[j]=a[j+1];
n--;
}
for(i=0;i<n;i++)
printf("%d ",a[i]);
}
程序运行时,程序的输出结果是
5、程序5
#include <stdio.h>
int f(int n)
{
if(n<=1)
return 1;
else
return f(n-1)+n;
}
main()
{
int n;
n=f(4);
printf("%d\n",n);
}
则输出的结果是
得分 |
二、 程序设计题(每小题10分,共40分)
1、求下列分段函数的值。(x是由键盘输入的实数)
运行示例2: 输入:0 输出:0.000000
|
2、输入一个正整数n(1≤n≤10),求以下表达式的值并输出计算结果。
运行示例:
输入:10
输出:1.718282
3、输入一个正整数n(0<n≤100),然后输入n 个整数并存入数组,再输入一个整数x,在数组查找x,若x在数组中输出在数组中的位置(下标),若有多个输出最大的下标值;若不在数组中则输出-1。
运行示例:
输入n:5
1 2 5 4 5
输入x:5
输出:4
4、两个素数之差为2,则称这两个素数为双胞胎数。输出[200,300]之内所有双胞胎数。要求:(1)定义函数prime(n),功能判断n是否为素数,若是返回1,否则返回0;(2)在main函数输出双胞胎数,每对占一行。(所谓素数是指只能被1和自身整除且大于1的自然数。)
运行示例:
输出:
227 229
239 241
269 271
281 283
湖州师范学院2019—2020学年第二学期
《C程序设计》期末考试试卷(A卷)
考试时间 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、程序运行时,输入17,则输出的结果是
3、程序运行时,输入121,程序的输出结果是
4、程序运行时,程序的输出结果是
5、程序的输出结果是
得分 |
四、程序设计题(每小题10分,共40分)
1、
2、
3、
4、