天大2019年秋学期考试《C语言程序设计》离线作业考核试题(答案)
C语言程序设计
要求:
一、 独立完成,下面已将三组题目列出,请任选其中一组题目作答,
每人只答一组题目,多答无效,满分100分;
二、答题步骤:
1. 使用A4纸打印学院指定答题纸(答题纸请详见附件);
2. 在答题纸上使用黑色水笔按题目要求手写作答;答题纸上全部信息要求手写,包括学号、姓名等基本信息和答题内容,请写明题型、题号;
三、提交方式:请将作答完成后的整页答题纸以图片形式依次粘贴在一个Word
文档中上传(只粘贴部分内容的图片不给分),图片请保持正向、清晰;
1. 上传文件命名为“中心-学号-姓名-科目.doc”
2. 文件容量大小:不得超过20MB。
提示:未按要求作答题目的作业及雷同作业,成绩以0分记!
题目如下:
第一组:
一、编程题(每题20分,共40分)
1、编写程序。输入一行字符(以回车符结束),分别统计其中字母、数字和其他符号的个数。
2、编写程序。要求编写子函数prime(m)判断m是否为素数,当m为素数时返回1,否则返回0,再调用该子函数求100以内的全部素数(素数就是只能被1和自身整除的正整数,1不是素数,2是素数)。
二、程序填空。在程序中的序号处填上正确的内容。(每空4分,共48分)
1、按照公式 e=1+ + + +…+ 求e的近似值,至n=10为止。
#include < stdio.n>
void main ( )
{ float_____①_____;
int n=1, i;
for(_____②_____)
{ n=_____③_____;
e=_____④_____;
}
printf (“ e= %f\n” ,e);
}
2、将文件file1.dat中的内容复制到file2.dat中。
#include <stdio.h>
#defineNull0
void main()
{FILE_____①_____;
char ch;
if((p1=fopen(“file1.dat”,”r”)= =Null)||(p2=fopen(“file2.dat”,”w”)= =Null ))
{ printf(“Can’t open file\n”); _____②_____; }
while(_____③_____)
{ ch=_____④_____; fputc(ch,p2); }
fclose(p1);
fclose(p2);
}
3、求二维数组a中所有元素的平均值。
#include <stdio.h>
_____①_____
void main ( )
{int a,i ,j, pa;
for (i=0;i<5;i++)
for (j=0;j<4;j++)
scanf(“%d”, &a);
pa= _____②_____;
printf (“average=%d\n”,pa);
}
int average (int s[ ] )
{int i,j,aver=0;
for (i=0;i<5;i++)
for (j=0;j<4;j++) aver=aver+s;
aver=_____③_____;
_____④_____;
}
三、写出程序的执行结果(每题4分,共12分)
1、
#include <stdio.h>
void main()
{int i, j, k=4;
for (int i=1;i<=k;i++)
printf("%c",’*’); printf("\n");
for (int i=1;i<=k-2;i++)
{printf("%c",’*’);
for (j=1;j<= k-2;j++)
printf(" ");
printf("*\n");
}
for (i=1;i<=k;i++)
printf("%c",’*’); printf("\n");
}
2、
#include <stdio.h>
void fun(int s[ ]);
void main()
{ int a[ ]={1,2,3,4,5,6},k;
fun(a);
for(k=0;k<=5;k++) printf(“%d”,a);
printf(“\n”);
}
void fun(int s[ ])
{int i=0;
while(i<3) { s=s+5;i++; }
}
3、
#include <stdio.h>
void main()
{ int j, a[ ]={1,2,3,4,10,12,13,15};
for( j=3; j>0; j--)
switch ( j )
{case 1:
case 2: printf(“%d,”, a); break;
case 3: printf(“%d,”, a);
}
printf(“\n”);
}
第二组:
一、编程题(每题20分,共40分)
1、编写程序。每当输入10个评委的分数后,求该选手的最后得分并输出(设10个评委按照以下打分原则为选手打分:去掉一个最高分和一个最低分,剩下的求平均分作为选手的最后得分)。
2、编写程序。先定义一个求n!的子函数fact,调用该子函数计算并输出
的值(m、n的值由键盘输入)。
二、程序填空。在程序中的序号处填上正确的内容。(每空4分,共48分)
1、 打印出杨辉三角形(只打印出10行,形式如下)。
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
……
#include <stdio.h>
void main()
{inti,j;
inta;
for(i=0;i<10;i++)a=1, _____①_____;
for(_____②_____;i<10;i++)
for(j=1;j<i;j++)
a= _____③_____;
for(i=0;i<10;i++)
{for(j=0;j<=i;j++)
printf("%5d",a);
_____④_____;
}
}
2、 将输入的一个字符串(以!结束)中的小写字母转换成大写字母,然后输出到磁盘文件“test”中。
#include <stdio.h>
void main()
{ _____①_____;
char str,filename;
int i=0;
if((fp=_____②_____ ==NULL)
{ printf("cannot open the file\n");exit(0); }
printf("please input a string:\n");
gets(str);
while(_____③_____)
{ if(str>='a'&&str<='z')
str=str-32;
fputc(str,fp);
_____④_____;
}
fclose(fp);
}
3、输出如下图形。
* *
* *
**
*
**
* *
* *
#include <stdlib.h>
void main()
{ int i=1,j;
while(i<=3)
{j=1;
printf("*");
while(j<=3)
{ printf(" ");
_____①_____; }
printf("*\n");
_____②_____;
}
_____③_____;
i=1;
while(i<=3)
{ j=1;
printf("*");
while(_____④_____)
{ printf(" ");
j++; }
printf("*\n");
i++;
}
}
三、写出程序的执行结果(每题4分,共12分)
1、
#include<stdio.h>
void sub(int x,int y,int *z)
{ *z = x+y;}
void main()
{ int a=5,b=6,c=7;
printf(“%d,%d,%d ”,a,b,c);
sub(b,c,&a); sub(a,b,&c)
printf(“%d,%d,%d\n”,a,b,c);
}
2、
#include<stdio.h>
void main ()
{intx=1,a=0,b=0;
switch(x)
{case 1:a++ ;
case 2:a++; b++; break;
default: b++;break;
}
printf(“a=%d,b=%d”,a,b);
}
3、
#include<stdio.h>
void fun(int x);
void main()
{fun(7);
printf("\n");
}
void fun(int x)
{if(x/2>1)
fun(x/2);
printf("%5d",x);
}
第三组:
一、编程题(每题20分,共40分)
1、 编写程序。定义数组存放任意输入的10个实数,求出其中的最大值以及第一个最
大值的下标并输出。
2、编写程序。要求编写一个求最大供公约数的子函数,调用该子函数对输入的a、b求它们的最大公约数并输出。
二、程序填空。在程序中的序号处填上正确的内容。(每空4分,共48分)
1、程序用于输出如下图形。
#include <stdio.h>
void main( )
{ int i, j;
for(i=1; i<10; i++)
printf(“%4d”, _____①_____);
for(i=1;i<10;i++)
{ for(j=1; _____②_____;j++)
printf(“%4d”, _____③_____ );
_____④_____; }
}
2、输入50个实数,统计其中正数、负数和零的个数。
#include <stdio.h>
void fun(int *zs,int *fs,int *l, _____①_____)
{int i;
for(i=0;i<50;i++)
{ if(aa>0)(*zs)++;
if(aa<0)
(*fs)++;
if(aa==0)
(*l)++; }
}
void main()
{ float num;
int i,czs,cfs,cl;
czs=cfs=cl=0;
printf("\nPlease enter 50 float numbers:\n");
for(i=0;i<50;i++)
scanf(“%f”, _____②_____);
fun(_____③_____, _____④_____);
printf("\n正数:%d,负数:%d,零:%d\n",czs,cfs,cl);
}
3、输入正整数m和n,求出区间的所有素数。
#include <stdio.h>
_____①_____
void main()
{int m,n,i,j,k;
scanf("%d%d",&m,&n);
for(i=m;i<n;i++)
{ k=sqrt(i);
for(j=2; _____②_____;j++)
if(_____③_____)break;
if(_____④_____)
printf(" %d",i);
}
printf("\n");
}
三、写出程序的执行结果(每题4分,共12分)
1、
#include <stdio.h>
void main()
{ chars1[ ]="abcde", s2;
inti=0;
while( s1 !=’\0’)
{ s2[ i ]= s1[ i ]+3; i++; }
s2[ i ]= '\0';
printf("%s", s2);
}
2、
#include<stdio.h>
void main()
{char ch1='A',ch2='B';
switch(ch1)
{case 'A':switch(ch2)
{case 'B':printf("Good!");break;
case'A':printf("Better!");break;
}
case 'B': printf("Best!\n");break;
}
}
3、
#include<stdio.h>
int age(int n)
{int c;
if(n==1)
c=10;
else
c=age(n-1)+2;
return(c);
}
void main()
{printf("%d",age(5));
}
页:
[1]