|  | 
 
| 天大课程考试C语言程序设计答案参考请在以下三组题目中任选一组作答,满分100分。
 第一组:
 一、编程题(每题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()
 {  int  i,j;
 int  a[10][10];
 for(i=0;i<10;i++)a[0]=1, _____①_____;
 for(_____②_____;i<10;i++)
 for(j=1;j<i;j++)
 a[j]= _____③_____;
 for(i=0;i<10;i++)
 {  for(j=0;j<=i;j++)
 printf("%5d",a[j]);
 _____④_____;
 }
 }
 
 
 
 2、        将输入的一个字符串(以!结束)中的小写字母转换成大写字母,然后输出到磁盘文件“test”中。
 
 #include <stdio.h>
 void main()
 { _____①_____;
 char str[100],filename[10];
 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 ()
 {  int  x=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[50];
 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,求出[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()
 { char  s1[ ]="abcde", s2[10];
 int  i=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));
 }
 
 
 第三组:
 一、编程题(每题20分,共40分)
 1、编写程序。计算  (求n项,n由键盘输入并要求最后一项小于10-6结束。
 2、编写程序。自定义函数求N名学生1门课程成绩的平均分,调用该函数求10名
 学生1门课程成绩的平均分。
 二、程序填空。在程序中的序号处填上正确的内容。(每空4分,共48分)
 1、判断一个整数的各位数字是否都相同,相同则显示“yes“,否则显示”no”。
 #include <stdio.h>
 void main( )
 { int a, r1, r2;
 scanf(“%d”,_____①_____);
 do{  r1=a%10;
 _____②_____;
 r2=a%10;
 }while( a!=0&&_____③_____ );
 if(a!=0 ) printf(”no \n”);
 else _____④_____;
 }
 
 
 
 2、输出如下图形。
 1  2  3  4  5
 1  1  2  3  4
 1  1  1  2  3
 1  1  1  1  2
 1  1  1  1  1
 
 #include<stdio.h>
 void fun(_____①_____)
 { int i,j;
 for(i=1;i<=n;i++)
 {  for(j=1; _____②_____;j++)
 printf(“%3d”,1);
 for(j=2;j<=_____③_____;j++)
 printf(“%3d”,j);
 printf(“\n”);
 }
 }
 void main()
 {
 _____④_____;
 }
 
 
 
 3、输入一个3行5列的整数矩阵,输出其中最大值和它们的下标。
 #include<stdio.h>
 void main()
 { int a[3][5],i,j,t,n=3,m=5,max,maxrow,maxcol;
 printf(“Enter%d*%dnumbers!\n”,n,m);
 for(i =0;i<n;i++)
 for(j=0;j<m;j++)
 { scanf(“%d”,&t);
 _____①_____; }
 max=a[0][0];_____②_____;
 for(i=0;i<n;i++)
 for(j=0;j<m;j++)
 if(_____③_____)
 { _____④_____;maxrow=i;maxcol=j;}
 printf(“MAX=a[%d][%d]=%d\n”,maxrow,maxcol,max,);
 }
 
 
 
 
 三、写出程序的执行结果(每题4分,共12分)
 1、
 #include<stdio.h>
 void main()
 {  int a[][3]={9,7,5,3,l,2,4,6,8};
 int i,j,sl=0,s2=0;
 for(i=0;i<3;i++)
 for(j=0;j<3;j++)
 { if(i==j)
 s1=s1+a[j];
 if(i+j==2)
 s2=s2+a[j];
 }
 printf(“%d%4d\n”,sl,s2);
 }
 
 
 
 2、
 #include<stdio.h>
 void main()
 { char a[]={‘*’,‘*’,‘*’,‘*’,‘*’};
 int i,j,k;
 for(i=0;i<4;i++)
 { printf(“\n”);
 for(j=0;j<i;j++)
 printf(“%c”,‘ ’);
 for(k=0;k<4;k++)
 printf(“%c”,a[k]);
 }
 printf(“\n”);
 }
 
 
 
 
 
 
 3、
 #include <stdio.h>
 void main()
 {   int s[5];
 for (i=0;i<5;i++)
 s=i*2;
 for(i=4;i>=0;i--)
 printf(“%5d”,s);
 printf(“\n”);
 }
 
 
 
 
 
 
 
 
 
 要求:
 1.         独立完成,作答时要写明题型、题号;
 2.        作答方式:手写作答或电脑录入,使用A4格式白纸;
 3.        提交方式:以下两种方式任选其一,
 1)        手写作答的同学可以将作业以图片形式打包压缩上传;
 2)        提交电子文档的同学可以将作业以word文档格式上传;
 4.         上传文件命名为“中心-学号-姓名-科目.rar” 或“中心-学号-姓名-科目.doc”;
 5.        文件容量大小:不得超过20MB。
 
 
 
 
 
 | 
 |