黄老师 发表于 2017-6-2 09:46:03

天大2017年6月C语言程序设计期末大作业答案参考

C语言程序设计要求:一、独立完成,下面已将三组题目列出,请任选一组题目作答,满分100分;二、答题步骤:1. 使用A4纸打印学院指定答题纸(答题纸请详见附件);2. 在答题纸上使用黑色水笔按题目要求手写作答;答题纸上全部信息要求手写,包括中心、学号、姓名、科目、答题组数等基本信息和答题内容,请写明题型、题号;三、提交方式:请将作答完成后的整页答题纸以图片形式依次粘贴在一个Word文档中上传(只粘贴部分内容的图片不给分),图片请保持正向、清晰;1. 上传文件命名为“中心-学号-姓名-科目.doc” 2. 文件容量大小:不得超过10MB。提示:未按要求作答题目的作业及雷同作业,成绩以0分记!

题目如下:第一组:一、编程题(每题20分,共40分)1、编写程序。定义数组sco存放30名学生的成绩。将成绩由高到低排序,并输出排序结果和所有高于平均分数的成绩(结果保留两位小数)。2、编写程序。先编写一个子函数求xfile:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image002.png,再通过主函数调用该子函数,对输入的一个数y,求yfile:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image004.png并输出。二、程序填空。在程序中的序号处填上正确的内容。(每空4分,共48分)1、程序用于求两个数的和与差。#include <stdio.h">intfun(int a,int b, int *psub){int sum;             sum=a+b; _____①_____=a-b;             return sum;          }void main( ){int x,y,s1,s2;            scanf(“%d%d”, _____②_____);            s1=fun(x,y, _____③_____);            printf(“sum=%d\nsub=%d\n”, _____④_____);         }


2、对于5×5的方阵,输出其下三角的元素。123 45            1234 56            23345 67            3 45456 78            4 567567 89            5 6789
#include<stdio.h>            voidmain(){ int _____①_____,i,j;               for(i=0;i<5;i++)                for(j=0;j<5;j++)                  a= _____②_____;               for(i=0;i<5;i++)                {for(j=0; _____③_____;j++)                  printf("%4d", a);                   _____④_____;}}3、输出所有的水仙花数。所谓的水仙花数是指一个3位数,其各位数字立方和等于该数本身。例如153是一水仙花数,因为153=13+53+33#include<stdio.h>voidmain(){int n, i, j, k;for(n=100; n<= _____①_____; n++){i = n/100;            // 取出n的百位数j = ___ __②_____;   // 取出n的十位数k = __ ___③_____;    // 取出n的个位数if(n==_____④_____)printf("%d\n",n);}}三、写出程序的执行结果(每题4分,共12分)1、          #include <stdio.h> void main( ){int i, j;    for (i=1; i<5; i++)    { for( j=1; j<=12-i; j++)       printf(““);      for (j=1; j<=i; j++) printf(“%4d”,i);printf(“\n”);   }}2、#include <stdio.h>      int a=5;      voidfun(int b)      {   inta=10;          a+=b;           printf("%d ",a);      }      voidmain()      {   intc=20;          fun(c);a+=c;          printf("%d\n",a);      }3、#include <stdio.h>void sub (int x,int y,int*z){ *z=x-y; }void main(){ int a,b,c;sub(10,6,&c);sub(8,c,&b);sub(c,b,&a);printf(“%d%d%d\n”,a,b,c);}第二组:一、编程题(每题20分,共40分)1、编写程序。输入一行字符(以回车符结束),分别统计其中字母、数字和其他符号的个数。2、编写程序。要求编写子函数prime(m)判断m是否为素数,当m为素数时返回1,否则返回0,再调用该子函数求100以内的全部素数(素数就是只能被1和自身整除的正整数,1不是素数,2是素数)。二、程序填空。在程序中的序号处填上正确的内容。(每空4分,共48分)1、按照公式 e=1+file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image006.png+file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image008.png+file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image010.png+…+file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image012.png求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>#define Null0void main(){FILE_____①_____;             char ch;             if((p1=fopen(“file1.dat”,”r”)==Null)||(p2=fopen(“file2.dat”,”w”)= =Null))             { printf(“Can’topen file\n”); _____②_____; }             while(_____③_____)            { ch=_____④_____; fputc(ch,p2); }             fclose(p1);             fclose(p2);          } 3、求二维数组a中所有元素的平均值。   #include<stdio.h>_____①_____void main ( ){inta,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>voidmain(){ intj, 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分)file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image014.png1、编写程序。每当输入10个评委的分数后,求该选手的最后得分并输出(设10个评委按照以下打分原则为选手打分:去掉一个最高分和一个最低分,剩下的求平均分作为选手的最后得分)。2、编写程序。先定义一个求n!的子函数fact,调用该子函数计算并输出的值(m、n的值由键盘输入)。   二、程序填空。在程序中的序号处填上正确的内容。(每空4分,共48分)1、打印出杨辉三角形(只打印出10行,形式如下)。 11 11 2 11 3 3 11 4 6 4 11 5 10105 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);}

李泽勇 发表于 2017-6-18 09:35:28

没见着答案呢?

王爷的爷 发表于 2017-6-22 15:32:53

答案呢,没有看见呀。
页: [1]
查看完整版本: 天大2017年6月C语言程序设计期末大作业答案参考