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

[复制链接]
发表于 2017-6-2 09:46:03 | 显示全部楼层 |阅读模式
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">
int  fun(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的方阵,输出其下三角的元素。
1  2  3 4  5            1
2  3  4 5  6            2  3
3  4  5 6  7            3 4  5
4  5  6 7  8            4 5  6  7
5  6  7 8  9            5 6  7  8  9

#include<stdio.h>
              voidmain()
{ int   __________,i,j;
               for(i=0;i<5;i++)
                for(j=0;j<5;j++)
                    a[j]= __________;
                 for(i=0;i<5;i++)
                {  for(j=0; __________;j++)
                    printf("%4d", a[j]);
                   __________;}
}
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);
}
}
  三、写出程序的执行结果(每题412
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 Null  0
void 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[5][4]中所有元素的平均值。
   #include<stdio.h>
____  __  ____
void main ( )
{  inta[5][4],i ,j, pa;
      for(i=0;i<5;i++)
for (j=0;j<4;j++)
          scanf(“%d”, &a[j]);
      pa= __________;
      printf (“average=%d\n”,pa);
}
int average (int s[ ][4] )
   {  int i,j,aver=0;
      for(i=0;i<5;i++)
        for(j=0;j<4;j++) aver=aver+s[j];
     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[k]);
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[j+4]); break;
          case 3: printf(“%d,”, a[j-1]);
}
              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行,形式如下)。
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10105 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 xint yint*z)
          { *z = x+y;}
          void main()
          { int a=5b=6c=7;
printf(“%d%d%d    ”abc);
sub(b,c,&a); sub(a,b,&c)
printf(“%d%d%d\n”abc);
}



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);
}


2017年6月 C语言程序设计 第2组答案.rar

21.43 KB, 下载次数: 2, 下载积分: 贡献 1

售价: 60 金币  [记录]  [购买]

答案

发表于 2017-6-18 09:35:28 | 显示全部楼层
发表于 2017-6-22 15:32:53 | 显示全部楼层
快速回复 返回顶部 返回列表