收藏 分销(赏)

太原理工大学级c语言试验参考指导书参考答案.docx

上传人:二*** 文档编号:5151848 上传时间:2024-10-27 格式:DOCX 页数:24 大小:38.06KB 下载积分:5 金币
下载 相关 举报
太原理工大学级c语言试验参考指导书参考答案.docx_第1页
第1页 / 共24页
本文档共24页,全文阅读请下载到手机保存,查看更方便
资源描述
太原理工大学13级c语言试验指导书参考答案 试验一 次序 1-3.温度*/编写程序,输入华氏温度(F),按下列公式计算并输出对应摄氏温度(C)。           C = 5/9(F – 32) #include<stdio.h> void main() { float c,f; scanf("%f",&f); c=5.0/9.0*(f-32); printf("%5.2f\n",c); }   /*1-4.三角形面积*/编写程序,从键盘输入一个三角形三条边长a、b、c(要求任何两条边边长之和均大于第三条边边长),求该三角形面积。 求三角形面积公式是:           其中:   #include "stdio.h" #include "math.h" void main() { float a,b,c,s,area; scanf("%f,%f,%f",&a,&b,&c); s=1.0/2.0*(a+b+c); area=sqrt(s*(s-a)*(s-b)*(s-c)); printf("area=%f\n",area); }   /*1-5两数合并*/编写程序,将两个两位数正整数a、b合并形成一个整数放在c中。 合并方法是:将a数十位和个位数依次放在c数十位和千位上, b数十位和个位数依次放在c数个位和百位上。 比如,当a=45,b=12,运行结果为:c=5241。   #include <stdio.h> void main() { int a,b,c; printf("Input a,b :"); scanf("%d,%d",&a,&b); c=(b/10*1); c+=(a/10*10); c+=(b%10*100); c+=(a%10*1000); printf("The result is:%d\n",c); } 试验二 选择 必做题 2.1编一程序,使用单分支if语句形式,求a,b,c三个整数中间值。比如:a、b、c值分别为3、4、5,则输出4。 #include <stdio.h> void main() {    int a,b,c,t;    printf("Input a,b,c:");    scanf("%d,%d,%d",&a,&b,&c);    if(a>b){t=a;a=b;b=t;}    if(a>c){t=a;a=c;c=t;}    if(b>c){t=b;b=c;c=t;}    printf("中间数 = %d\n", b); }   2.2有一函数             x              (x<1)      y =   2x – 1         (1≤x<10) 3x – 11        (x≥10) 用 scanf函数输入x值(分别取x<1、1~10、≥10三种情况),求y值。   #include <stdio.h> void main() {    int x,y;    printf("Input x:");    scanf("%d",&x);    if(x<1)y=x;    else if(x<10) y=2*x-1;    else y=3*x-11;    printf("x= %d,y=%d\n", x,y); }   2.3编写程序,输入一位学生生日(年:y0、月:m0、日:d0)数据,再输入目前日期(年:y1、月:m1、日:d1)数据,计算并输出该学生实足年纪。 #include <stdio.h> void main() {    int y0,m0,d0,y1,m1,d1,nl;    printf("Input 生日(年,月,日):");    scanf("%d,%d,%d",&y0,&m0,&d0);    printf("Input 目前日期(年,月,日):");    scanf("%d,%d,%d",&y1,&m1,&d1);    if(m1>m0||m1= =m0&&d1>=d0)nl=y1-y0;    else nl=y1-y0-1;    printf("年纪 = %d\n", nl); }   2.4编写程序,定义四个字符变量c1,c2,c3和c4,分别用getchar()函数任意输入四个字母,分别输出其中最大值和最小值。 #include <stdio.h> void main() {    char c1,c2,c3,c4,max,min;    printf("Input 四个字符 :");    c1=getchar();c2=getchar();c3=getchar();c4=getchar();    max=min=c1;    if(c2>max)max=c2;    if(c3>max)max=c3;    if(c4>max)max=c4;    min=c2<min?c2:min;    min=c3<min?c3:min;    min=c4<min?c4:min;    printf("max=%c,min=%c\n",max,min); }   2.5设整型变量a值为正数,请将以下C源程序中if语句形式改写成switch语句形式。 #include <stdio.h> main() {  int a;    printf(”a = ”);  scanf(”%d”, &a);    if(a<30)  m = 1;    else if(a < 40) m = 2;    else if(a < 50) m = 3;  else if(a < 60) m = 4;  else m = 6;  printf(”m = %d\n”, m);     }   #include <stdio.h> void main() {    int a,t,m;    printf("Input a=");    scanf("%d",&a);    if(a>0)     {t=a/10;      switch(t)         {case 0:case 1:case 2:m=1;break;          case 3:m=2;break;       case 4:m=3;break;          case 5:m=4;break;          default:m=6;}         printf("m=%d\n",m);        }    else       printf("a为非正数\n"); }   试验三  循环 必做题 3.1编写程序,计算并输出正整数n全部因子(1和n除外)之和。 #include <stdio.h> void main() {    int n,i,s=0,m=0;    printf("Input n:");    scanf("%d",&n);    for(i=2;i<n;i++)          {if(n%i= =0)            {printf("%5d",i);s+=i;m++;}        if(m%10= =0)printf("\n");}    printf("\ns= %d\n", s); }   3.2编写程序,利用以下所表示简单迭代方法求方程:cos(x)-x=0一个实根。迭代步骤以下:       (1)取x1初值为0.0;     (2)x0=x1,把x1值赋给x0;     (3)x1=cos(x0),求出一个新x1;     (4)若x0-x1绝对值小于0.000001,实施步骤(5),不然实施步骤(2);     (5)所求x1就是方程cos(x)-x=0一个实根。   #include <math.h> #include <stdio.h> void main() {    double x0,x1=0.0;    do    {x0=x1;    x1=cos(x0);     }    while(fabs(x1-x0)>=1e-6);    printf("\nx1= %.2f\n", x1); }   3.3编写程序,输入一行字符,分别统计出其中大写字母、小写字母、空格和数字个数。 提醒:用以下循环格式处理输入一行字符。     while((c = getchar())!=’\n’)    /* 若输入c不是回车符时继续 */         循环体 或: c = getchar(); while(c !=’\n’)      /* 若c不是回车符时继续 */     {         循环体         c = getchar();     }   #include <ctype.h> #include <stdio.h> void main() {    char c;    int n1,n2,n3,n4;    n1=n2=n3=n4=0;    printf("请输入一行字符,以换行结束:");    while((c=getchar())!='\n')      if(isupper(c))n1++;         else if(islower(c))n2++;         else if(isdigit(c))n3++;         else if( c==' ')n4++;    printf("\n大写=:%d,小写: %d,数字: %d,空格: %d,\n", n1,n2,n3,n4); }     3.4编写程序,在屏幕上输出杨辉三角形。     1 1  1 1  2  1 1  3  3  1 1  4  6  4  1 1  5  10  10  1      …  …  …  …  …   #include "stdio.h" #define N 20 void main() {int i,j,array[N][N]={0},n;  printf("请输入n行:\n");  scanf("%d",&n);  for(i=0;i<n;i++)  {array[i][0]=1;array[i][i]=1;}  for(i=2;i<n;i++)     for(j=1;j<i;j++)           array[i][j]=array[i-1][j-1]+array[i-1][j];  printf("杨辉三角形:\n");  for(i=0;i<n;i++)  { for(j=0;j<=i;j++)       printf("%4d ",array[i][j]);    printf("\n");}  printf("\n"); }   选做题 3.1 #include<math.h> #include<stdio.h> void main() {    float x,,t,sum=1.0,i=1.0,m=1.0;    int s=1;    printf("请输入x:");    scanf("%f",&x);    t=x;    while(fabs(t)>1e-6)    {sum+=t;     s=-s;        i++;        m*=i;        t=s*1.0*pow(x,i)/m;        }    printf("\nx=%f,f(x)=%f\n", x,sum); } 3.2 #include <math.h> #include <stdio.h> main() {    int i,m,n,k=0,j;    double s;    printf("请输入正整数m,n(m<n):");    scanf("%d,%d",&m,&n);    for(i=m+1;i<n;i++)    {s=sqrt(i);     for(j=2;j<=s;j++)               if(i%j==0)break;        if(j>s){printf("%6d",i);k++;}        if(k%8==0)printf("\n");    }  printf("\n"); } 3.3 #include <stdio.h> void main() {    int i,m=2,j,n;    double s=0.0,k=1.0,t;    printf("请输入正整数n:");    scanf("%d",&n);    for(i=1;i<=n;i++)    {t=m/k;     s+=t;        j=m;        m=m+k;        k=j;    }  printf("\n和为:%lf\n",s);  } 3.4 #include "stdio.h"   void main() {int i;  double h=100.0,h1,s=100.0;  for(i=2;i<=10;i++)    {h1=h/2;     h=h1;        s+=2*h;        }  printf("s=%lf,h=%lf\n",s,h);  }     试验四 数组 必做题 4.1编写程序,将3~n之间全部非素数存入数组array中,然后输出该数组元素。 比如:若n=20,则输出 4,6,8,9,10,12,14,15,16,18,20。   #include <stdio.h> #include <math.h> #define N 20 void main() {int i,array[N],j,m,k=0;  for(i=3;i<=N;i++)    {m=sqrt(i);     for(j=2;j<=m;j++)               if(i%j==0){array[k++]=i;break;}        }  for(i=0;i<=k-1;i++)     printf("%d ",array[i]); printf("\n"); }   4.2 编写程序,将字符数组str中字符串逆置后输出。 比如:若str字符串为“This is a C programe.”,则输出为“.emargorp C a si sihT”。   #include <stdio.h> #include <string.h> #define N 80 void main() {int i,k;  char str[N],t;  gets(str);  k=strlen(str);  for(i=0;i<k/2;i++)  {t=str[i];str[i]=str[k-1-i];str[k-1-i]=t;} printf("\n%s\n",str); }   4.3从键盘输入10个整数,选择一个排序算法,将这些数按从大到小次序排列输出。 #include<stdio.h> #define N 10 void main() {int i,j,array[N],m,t;  printf("请输入10个整数:");  for(i=0;i<N;i++)     scanf("%d",&array[i]);  for(i=0;i<N-1;i++)    {m=i;     for(j=i+1;j<N;j++)               if(array[j]>array[m])m=j;        if(m!=i)        {t=array[m];array[m]=array[i];array[i]=t;}        }  for(i=0;i<N;i++)     printf("%d ",array[i]); printf("\n"); }   4.4计算5×5矩阵主对角线元素和此对角线元素之和。若有下列矩阵,则输出值应该是130。 1     2     3     4     5 6     7     8     9     10 11    12    13    14    15 16    17    18    19    20 21    22    23    24    25   #include <stdio.h> #define N 5 void main() {int i,j,array[N][N],s=0;  printf("请输入5×5个整数:");  for(i=0;i<N;i++)     for(j=0;j<N;j++)       scanf("%d",&array[i][j]);  for(i=0;i<N;i++)     for(j=0;j<N;j++)        {if(i==j||i+j==N-1)s+=array[i][j];        if(i==j&&i+j==N-1)s+=array[i][j];}  for(i=0;i<N;i++)  { for(j=0;j<N;j++)       printf("%4d ",array[i][j]);    printf("\n");}  printf("s=%d\n",s); }   选做题 4.1 #include "stdio.h" #include "string.h" #define M 5 void main() {int i,j,a[M],k,x;  char str[M][80],t[M];  printf("请输入5个字符串:");  for(i=0;i<M;i++)  {gets(str[i]);a[i]=strlen(str[i]);}  for(i=0;i<M-1;i++)  {k=i;   for(j=i+1;j<M;j++)         if(a[j]>a[k])k=j;   if(k!=i){strcpy(t,str[i]);strcpy(str[i],str[k]);strcpy(str[k],t);            x=a[k];a[k]=a[i];a[i]=x;}  }   for(i=0;i<M;i++)       puts(str[i]);   printf("\n"); }   4.2 #include "stdio.h" #include "string.h" #define M 80 void main() {int i,j=0,k=0,a;  char s[M],t[M],w[M];  printf("请输入1个字符串:\n");  gets(s);a=strlen(s);  for(i=0;i<a;i++)   if(!(s[i]>='0'&&s[i]<='9'))t[j++]=s[i];   else w[k++]=s[i];  t[j]='\0';w[k]='\0';  strcat(t,w);strcpy(s,t);   puts(s);   printf("\n"); }   4.3 #include "stdio.h" #define N 6 void main() {int i,array[N],t,k;  printf("请输入N个整数:\n");  for(i=0;i<N;i++)     scanf("%d",&array[i]);  k=N%2?N/2+1:N/2;  for(i=0;i<N/2;i++)  {t=array[i];array[i]=array[k+i];array[k+i]=t;}   for(i=0;i<N;i++)     printf("%d ",array[i]); printf("\n"); }   4.4 #include "stdio.h" #define N 4 void main() {int i,j,array[N][N],t;  printf("请输入4×4个整数:\n");  for(i=0;i<N;i++)     for(j=0;j<N;j++)       scanf("%d",&array[i][j]);  printf("移动前矩阵:\n");  for(i=0;i<N;i++)     { for(j=0;j<N;j++)          printf("%4d ",array[i][j]);       printf("\n");}  printf("\n");  for(i=0;i<N;i++)     for(j=0;j<2;j++)           if(j==0){t=array[i][j];array[i][j]=array[i][2-j];array[i][2-j]=t;}           else {t=array[i][j];array[i][j]=array[i][4-j];array[i][4-j]=t;}  printf("移动后矩阵:\n");  for(i=0;i<N;i++)  { for(j=0;j<N;j++)       printf("%4d ",array[i][j]);    printf("\n");}  printf("\n"); }   试验五  函数 必做题 5.1编写一个判定素数函数 int Isprime(int m)。在主函数中输入一个整数n,然后调用Isprime,假如n是素数,则输出:n is prime! 不然输出:n isn’t prime!   #include <stdio.h> void main() {   int n;   printf("请输入正整数n:\n");   scanf("%d",&n);    if(Isprime(n))printf("%d is prime!\n",n);   else printf("%d isn't prime!\n",n);   printf("\n");  } int Isprime(int m) {int j;  for(j=2;j<=m/2;j++)               if(m%j==0)break;  if(j>m/2)return 1;  else return 0;}   5.2编写两个函数,分别求两个整数最小公倍数和最大条约数并返回给主函数,两个整数由主函数输入。   #include <math.h> #include <stdio.h> int Lowest_common_multiple(int m,int n,int h); int Greatest_common_divisor(int m,int n); void main() {   int m,n,t,p,k;   printf("请输入两个正整数m,n:\n");   scanf("%d,%d",&m,&n);    if(m<n){t=m;m=n;n=t;}   k=Greatest_common_divisor(m,n);   p=Lowest_common_multiple(m,n,k);   printf("最大条约数:%d\n" ,k);   printf("最小公倍数:%d\n" ,p);   printf("\n");  } int Lowest_common_multiple(int m,int n,int h) { return m*n/h;} int Greatest_common_divisor(int m,int n) {int r;  while((r=m%n)!=0)  {m=n;n=r;}   return n; }   5.3编一个函数fun(char s[]),其功效是把字符串中小写字母转换成大写字母,其它字符不变。   #include <stdio.h> #include <string.h> #define N 80 void fun(char s[]); void main() {int i,k;  char s1[N];  printf("请输入一个字符串:\n");  gets(s1);puts(s1);  k=strlen(s1);  fun(s1);  printf("\n%s\n",s1); } void fun(char s[]) {int i;  for(i=0;s[i]!='\0';i++)     if(islower(s[i]))s[i]=s[i]-32; }   5.4编一函数 void convert(int a[][3]),求3×3矩阵转置矩阵。 比如,原矩阵是: 1     2     3 4     5     6 7     8     9 则转置后矩阵是: 1     4     7 2     5     8 3     6     9   #include <stdio.h> void convert(int a[][3]); void main() {int i,j,array[3][3],s=0;  printf("请输入3×3个整数:\n");  for(i=0;i<3;i++)     for(j=0;j<3;j++)       scanf("%d",&array[i][j]);  printf("转置前:\n");        for(i=0;i<3;i++)       { for(j=0;j<3;j++)       printf("%4d ",array[i][j]);       printf("\n"); }  convert(array);  printf("转置后:\n");  for(i=0;i<3;i++)       { for(j=0;j<3j++)       printf("%4d ",array[i][j]);       printf("\n"); } printf("\n"); } void convert(int a[][3]) {int i,j,t;  for(i=0;i<2;i++)    for(j=i+1;j<3;j++)    {t=a[i][j];a[i][j]=a[j][i];a[j][i]=t;} }   选做题 5.1 #include <stdio.h > #define N 40 void Fibonacci(long a[]); int fun(int t); int a[N]; main() {   int t,k;   printf("请输入正整数t:\n");   scanf("%d",&t);   Fibonacci(a);   k=fun(t);   printf("小于%d最小一个数:%d\n",t,k);  } int fun(int t) {int j;  for(j=0;j<N;j++)               if(a[j]>t)break;  return a[j];  } void Fibonacci(long a[]) {int i;  a[0]=a[1]=1;  for(i=2;i<=N;i++)     a[i]=a[i-2]+a[i-1]; }   5.2 #define N 10 #include <stdio.h> float averf(float s[],int n); main() {   int n,i;   float s[N],av;   printf("请输入10个数组元素:\n");   for(i=0;i<N;i++)          scanf("%f",&s[i]);   printf("请输入n:\n");   scanf("%d",&n);    av=averf(s,n);   printf("\n前%d个数平均:%f\n",n,av);  } float averf(float s[],int n) {int j;  float sum=0.0,av;  for(j=0;j<n;j++)        sum+=s[j];  av=sum/n;  return av; }   5.3 #include "stdio.h" #define M 4 #define N 4 void fun(int xx[][N],int pp[]); void main() {int i,j,xx[M][N],pp[M*N];  printf("请输入4×4个整数:\n");  for(i=0;i<M;i++)     for(j=0;j<N;j++)       scanf("%d",&xx[i][j]);  printf("矩阵:\n");  for(i=0;i<M;i++)  { for(j=0;j<N;j++)       printf("%4d ",xx[i][j]);    printf("\n");}  fun(xx,pp);  printf("转换后一维数组:\n");  for(i=0;i<M*N;i++)       printf("%4d ",pp[i]);  printf("\n"); } void fun(int xx[][N],int pp[]) {int i,j;  for(i=0;i<M;i++)    for(j=0;j<N;j++)       pp[4*i+j]=xx[i][j]; }   5.4 #include "stdio.h" #include "string.h" #define N 80 void deletechar(char str[],char ch); void main() {  char str[N],ch;  printf("请输入一个字符串:\n");  gets(str);  printf("请输入要删除一个字符:\n");  ch=getchar();  deletechar(str,ch);  printf("\n%s\n",str); } void deletechar(char str[],char ch) {int i,j=0;  for(i=0;str[i]!='\0';i++)     if(str[i]!=ch)str[j++]=str[i];  str[j]='\0'; }     试验六  指针 必做题 6.1 #include <stdio.h> main() {    int a,b,c,t,*pa=&a,*pb=&b,*pc=&c;    printf("Input a,b,c:");    scanf("%d,%d,%d",&a,&b,&c);    printf("\n排序前:%d,%d,%d\n",a,b,c);    if(*pa>*pb){t=*pa;*pa=*pb;*pb=t;}    if(*pa>*pc){t=*pa;*pa=*pc;*pc=t;}    if(*pb>*pc){t=*pb;*pb=*pc;*pc=t;}    printf("\n从小到大排序:%d,%d,%d\n",a,b,c); }   6.2 #include "stdio.h" #include "string.h" #define N 80 void fun(char *s);   void main(void) {  char s1[N];  printf("\n请输入一个字符串:\n");  gets(s1);  fun(s1);  printf("\n逆置后:%s\n",s1); }   void fun(char *s) {int i,k,t;  k=strlen(s);  for(i=0;i<k/2;i++)  {t=*(s+i);*(s+i)=*(s+k-1-i);*(s+k-1-i)=t;} }   6.4 #include "stdio.h" #include "string.h" #define N 80 void scat(char *s1,char *s2); void main() {  char s1[2*N],s2[N];  printf("请输入第一个字符串:\n");  gets(s1);  printf("请输入第二个字符串:\n");  gets(s2);  scat(s1,s2);  printf("输出连接后字符串:\n");  puts(s1);  printf("\n"); } void scat(char *s1,char *s2) {int i,k,m;  k=strlen(s1);m=strlen(s2);  for(i=0;s2[i]!='\0';i++)     s1[k+i]=s2[i];  s1[k+m]='\0'; }   6.5 #define N 10 #include <stdio.h> float averf(int x[],int n,int *max,int *min); main() {   int i,x[N],max,min;   float av;   printf("请输入10个数组元素:\n");   for(i=0;i<N;i++)          scanf("%d",&x[i]);   av=averf(x,N,&max,&min);   printf("\n10个数平均:%f,最大:%d,最小:%d\n",av,max,min);  } float averf(int x[],int n,int *max,int *min) {int j;  float sum=x[0],av;  *max=*min=x[0];  for(j=1;j<n;j++)        {sum+=x[j];      if(x[j]>*max)*max=x[j];         if(x[j]<*min)*min=x[j];        }  av=sum/n;  return av; }   选做题 6.1 #include "stdio.h" #include "string.h" #define N 80 int fun(char *s1,char *s2);   void main() {
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服