2019c语言期末考试答案,湖州师范学院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

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

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

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

t=t +*p;

printf("\n%d",t);

A.15                         B.16                     C.10                            D.不确定

12、在C语言程序中,有关函数的定义正确的是(   )。

A.函数的定义可以嵌套,但函数的调用不可以嵌套

B.函数的定义不可以嵌套,但函数的调用可以嵌套

C.函数的定义和函数的调用均不可以嵌套

D.函数的定义和函数的调用均可以嵌套

13、以下程序的输出结果是(   )。

#include

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

main()

{int c;

c=10^5;

printf("%d\n",c);

}

则程序的输出结果是(   )。

A.15                         B.105                           C.10000                       D.5

得分

二、程序填空题(每空2分,共30分)

1、从键盘上输入两个电阻的值,求它们并联和串联的电阻值(要求电阻值为实数),输出结果保留两位小数。并联电阻计算公式:577f6b48431b4a98c7ea22fcdb49a534.png,串联电阻计算公式:RS=R1+R2。请将程序补充完整。

#include

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

main()

{

int y,m,d,days,i;

scanf("%d/%d/%d",&y,&m,&d);

(4);

for(i=1;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

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

main()

{

int a[10][10],i,j,row;

scanf("%d",&row);

for(i=0;i

(10);//第0列和对角线元素置1

for(i=2;i

for(j=1;j

(11);//计算除第0列和对角线以外的元素值

for(i=0;i

{

for(j=0;j<=i;j++)

printf("%5d",a[i][j]);

printf("\n");

}

}

5、以下程序的功能是:函数fx的功能是实现其参数传递的字符串反序存放。例如:原字符串为ABCDEF,调用函数后字符串为FEDCBA。请将程序补充完整。

#include

(12)

void fx( (13))

{

int i,j;

char t;

j=strlen(a)-1;

for(i=0;i

{

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

void fun(int *a,int n)

{

int i;

(15);

for(i=2;i

*a=*(a-1)+*(a-2);

}

main()

{

int i,n,a[50]={1,1};

scanf("%d",&n);

fun(a,n);

for(i=0;i

printf("%d ",a[i]);

}得分

三、程序阅读题(每题3分,共15分)

1、程序1

#include

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

main()

{

int n,y;

scanf("%d",&n);

if(n%6==0)

y=1;

else

y=0;

printf("%d\n",y);

}

程序运行时,输入17,则输出的结果是

3、程序3

#include

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

main()

{

int a[10]={1,2,2,3,3,3,4,5,6,6},i,j,n=10;

for(i=1;i

if(a[i]==a[i-1])

{

for(j=i;j

a[j]=a[j+1];

n--;

}

for(i=0;i

printf("%d ",a[i]);

}

程序运行时,程序的输出结果是

5、程序5

#include

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是由键盘输入的实数)

4bb62dbcae43e0252f3468fba5d4ce6b.png

运行示例2:

输入:0

输出:0.000000

2、输入一个正整数n(1≤n≤10),求以下表达式的值并输出计算结果。

2bb8bb3013a6fd5ed9cf9cd96c489b37.png

运行示例:

输入:10

输出:1.718282

3、输入一个正整数n(0

运行示例:

输入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分)

12345678910

1112131415

得分

二、程序填空题(每空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、

湖州师范学院2019—2020学年第二学期

《C程序设计》期末考试试卷(A卷)

参考答案及评分标准

一、单选题(每题1分,共15分)

1、C              2、A             3、C              4、D             5、A

6、C              7、D             8、B              9、B              10、A

11、B            12、B            13、A            14、D            15、A

二、程序填空题(每空2分,共30分)

以下答案仅供参考,其他正确答案均给分

1、(1)float r1,r2,rp,rs        (2)&r1,&r2              (3) rp= rs/(r1*r2)

2、(4)days=0                    (5)((y%4==0&&y%100!=0)||y%400==0)

(6) days++

3、(7) a[i+1]=a[i]               (8)break                  (9)i

4、(10)a[i][i]=a[i][0]=1     (11) a[i][j]=a[i-1][j-1]+a[i-1][j]

5、(12) #include (13)char a[]或*a        (14)fx(str)

6、(15)a=a+2

三、程序阅读题(每题3分,共15分)

有误酌情扣分

1、6 0 0 1 A a

2、0

3、1

4、1 2 3 4 5 6

5、10

四、程序设计题(每小题10分,共40分)

以下答案仅供参考,其他正确答案均给分

1、参考程序

#include

#include                     //1分

main()                                      //1分

{

float x,y;//1分

scanf("%f",&x);                    //1分

if(x>0)                            //5·分

y=1/(1+x+pow(x,2));

else if(x==0)

y=0;

else

y=sqrt(fabs(x+2));

printf("%f\n",y);                     //1分

}

2、参考程序

#include                               //1分

main()                                               //1分

{

float y;

int i,n,t;                                             //1分

y=0;

t=1;                                                   //1分

scanf("%d",&n);                                //1分

for(i=1;i<=n;i++)                               //4分

{

t=t*i;

y=y+1.0/t;

}

printf("%f\n",y);                                 //1分

}

3、参考程序

#include                             //1分

main()                                             //1分

{

int a[100],i,n,x,w;                         //1分

w=-1;

scanf("%d",&n);                          //1分

for(i=0;i

scanf("%d",&a[i]);

scanf("%d",&x);

for(i=0;i

if(a[i]==x)

w=i;

printf("%d\n",w);                         //1分

}

4、参考程序

#include               //1分

int prime(int n)               //1分

{

int i;

for(i=2;i<=n/2;i++)        //2分

if(n%i==0)

return 0;              //1分

return 1;                 //1分

}

main()                         //1分

{

int n;

for(n=200;n<=298;n++)        //1分

{

if(prime(n)&&prime(n+2))   //1分

printf("%d  %d\n",n,n+2); //1分

}

}

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值