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

上传人:b****0 文档编号:12549337 上传时间:2023-04-20 格式:DOCX 页数:56 大小:25.61KB
下载 相关 举报
太原理工大学13级c语言实验指导书参考题答案.docx_第1页
第1页 / 共56页
太原理工大学13级c语言实验指导书参考题答案.docx_第2页
第2页 / 共56页
太原理工大学13级c语言实验指导书参考题答案.docx_第3页
第3页 / 共56页
太原理工大学13级c语言实验指导书参考题答案.docx_第4页
第4页 / 共56页
太原理工大学13级c语言实验指导书参考题答案.docx_第5页
第5页 / 共56页
点击查看更多>>
下载资源
资源描述

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

《太原理工大学13级c语言实验指导书参考题答案.docx》由会员分享,可在线阅读,更多相关《太原理工大学13级c语言实验指导书参考题答案.docx(56页珍藏版)》请在冰豆网上搜索。

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

太原理工大学13级c语言实验指导书参考题答案

太原理工大学13级c语言实验指导书参考答案

实验一顺序

1-3.温度*/编写程序,输入华氏温度(F),按下列公式计算并输出对应的摄氏温度(C)。

         C=5/9(F–32)

#include

voidmain()

{

floatc,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"

voidmain()

{

floata,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

voidmain()

{

inta,b,c;

printf("Inputa,b:

");

scanf("%d,%d",&a,&b);

c=(b/10*1);

c+=(a/10*10);

c+=(b%10*100);

c+=(a%10*1000);

printf("Theresultis:

%d\n",c);

}

实验二选择

必做题

2.1编一程序,使用单分支的if语句形式,求a,b,c三个整数的中间值。

例如:

a、b、c的值分别为3、4、5,则输出4。

#include

voidmain()

{

  inta,b,c,t;

  printf("Inputa,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

voidmain()

{

  intx,y;

  printf("Inputx:

");

  scanf("%d",&x);

  if(x<1)y=x;

  elseif(x<10)y=2*x-1;

  elsey=3*x-11;

  printf("x=%d,y=%d\n",x,y);

}

 

2.3编写程序,输入一位学生的生日(年:

y0、月:

m0、日:

d0)数据,再输入当前的日期(年:

y1、月:

m1、日:

d1)数据,计算并输出该学生的实足年龄。

#include

voidmain()

{

  inty0,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;

  elsenl=y1-y0-1;

  printf("年龄=%d\n",nl);

}

 

2.4编写程序,定义四个字符变量c1,c2,c3和c4,分别用getchar()函数任意输入四个字母,分别输出其中的最大值和最小值。

#include

voidmain()

{

  charc1,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

c2:

min;

  min=c3

c3:

min;

  min=c4

c4:

min;

  printf("max=%c,min=%c\n",max,min);

}

 

2.5设整型变量a的值为正数,请将以下C源程序中的if语句形式改写成switch语句形式。

#include

main()

{ inta;

  printf(”a=”);

 scanf(”%d”,&a);

  if(a<30) m=1;

  elseif(a<40)m=2;

  elseif(a<50)m=3;

 elseif(a<60)m=4;

 elsem=6;

 printf(”m=%d\n”,m);

   }

 

#include

voidmain()

{

  inta,t,m;

  printf("Inputa=");

  scanf("%d",&a);

  if(a>0)

   {t=a/10;

    switch(t)

       {case0:

case1:

case2:

m=1;break;

       case3:

m=2;break;

     case4:

m=3;break;

       case5:

m=4;break;

       default:

m=6;}

       printf("m=%d\n",m);

      }

  else

     printf("a为非正数\n");

}

 

实验三 循环

必做题

3.1编写程序,计算并输出正整数n的所有因子(1和n除外)之和。

#include

voidmain()

{

  intn,i,s=0,m=0;

  printf("Inputn:

");

  scanf("%d",&n);

  for(i=2;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

#include

voidmain()

{

  doublex0,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

#include

voidmain()

{

  charc;

  intn1,n2,n3,n4;

  n1=n2=n3=n4=0;

  printf("请输入一行字符,以换行结束:

");

  while((c=getchar())!

='\n')

    if(isupper(c))n1++;

       elseif(islower(c))n2++;

       elseif(isdigit(c))n3++;

       elseif(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"

#defineN20

voidmain()

{inti,j,array[N][N]={0},n;

 printf("请输入n行:

\n");

 scanf("%d",&n);

 for(i=0;i

 {array[i][0]=1;array[i][i]=1;}

 for(i=2;i

   for(j=1;j

         array[i][j]=array[i-1][j-1]+array[i-1][j];

 printf("杨辉三角形:

\n");

 for(i=0;i

 {for(j=0;j<=i;j++)

     printf("%4d",array[i][j]);

  printf("\n");}

 printf("\n");

}

 

选做题

3.1

#include

#include

voidmain()

{

  floatx,,t,sum=1.0,i=1.0,m=1.0;

  ints=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

#include

main()

{

  inti,m,n,k=0,j;

  doubles;

  printf("请输入正整数m,n(m

");

  scanf("%d,%d",&m,&n);

  for(i=m+1;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

voidmain()

{

  inti,m=2,j,n;

  doubles=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"

 

voidmain()

{inti;

 doubleh=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

#include

#defineN20

voidmain()

{inti,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字符串为“ThisisaCprograme.”,则输出为“.emargorpCasisihT”。

 

#include

#include

#defineN80

voidmain()

{inti,k;

 charstr[N],t;

 gets(str);

 k=strlen(str);

 for(i=0;i

 {t=str[i];str[i]=str[k-1-i];str[k-1-i]=t;}

printf("\n%s\n",str);

}

 

4.3从键盘输入10个整数,选择一种排序算法,将这些数按从大到小的顺序排列输出。

#include

#defineN10

voidmain()

{inti,j,array[N],m,t;

 printf("请输入10个整数:

");

 for(i=0;i

   scanf("%d",&array[i]);

 for(i=0;i

  {m=i;

   for(j=i+1;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

   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

#defineN5

voidmain()

{inti,j,array[N][N],s=0;

 printf("请输入5×5个整数:

");

 for(i=0;i

   for(j=0;j

     scanf("%d",&array[i][j]);

 for(i=0;i

   for(j=0;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

 {for(j=0;j

     printf("%4d",array[i][j]);

  printf("\n");}

 printf("s=%d\n",s);

}

 

选做题

4.1

#include"stdio.h"

#include"string.h"

#defineM5

voidmain()

{inti,j,a[M],k,x;

 charstr[M][80],t[M];

 printf("请输入5个字符串:

");

 for(i=0;i

 {gets(str[i]);a[i]=strlen(str[i]);}

 for(i=0;i

 {k=i;

 for(j=i+1;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

     puts(str[i]);

 printf("\n");

}

 

4.2

#include"stdio.h"

#include"string.h"

#defineM80

voidmain()

{inti,j=0,k=0,a;

 chars[M],t[M],w[M];

 printf("请输入1个字符串:

\n");

 gets(s);a=strlen(s);

 for(i=0;i

 if(!

(s[i]>='0'&&s[i]<='9'))t[j++]=s[i];

 elsew[k++]=s[i];

 t[j]='\0';w[k]='\0';

 strcat(t,w);strcpy(s,t);

 puts(s);

 printf("\n");

}

 

4.3

#include"stdio.h"

#defineN6

voidmain()

{inti,array[N],t,k;

 printf("请输入N个整数:

\n");

 for(i=0;i

   scanf("%d",&array[i]);

 k=N%2?

N/2+1:

N/2;

 for(i=0;i

 {t=array[i];array[i]=array[k+i];array[k+i]=t;}

 for(i=0;i

   printf("%d",array[i]);

printf("\n");

}

 

4.4

#include"stdio.h"

#defineN4

voidmain()

{inti,j,array[N][N],t;

 printf("请输入4×4个整数:

\n");

 for(i=0;i

   for(j=0;j

     scanf("%d",&array[i][j]);

 printf("移动前矩阵:

\n");

 for(i=0;i

   {for(j=0;j

        printf("%4d",array[i][j]);

     printf("\n");}

 printf("\n");

 for(i=0;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

 {for(j=0;j

     printf("%4d",array[i][j]);

  printf("\n");}

 printf("\n");

}

 

实验五 函数

必做题

5.1编写一个判断素数的函数intIsprime(intm)。

在主函数中输入一个整数n,然后调用Isprime,如果n是素数,则输出:

nisprime!

否则输出:

nisn’tprime!

 

#include

voidmain()

{

 intn;

 printf("请输入正整数n:

\n");

 scanf("%d",&n); 

 if(Isprime(n))printf("%disprime!

\n",n);

 elseprintf("%disn'tprime!

\n",n);

 printf("\n"); 

}

intIsprime(intm)

{intj;

 for(j=2;j<=m/2;j++)

             if(m%j==0)break;

 if(j>m/2)return1;

 elsereturn0;}

 

5.2编写两个函数,分别求两个整数的最小公倍数和最大公约数并返回给主函数,两个整数由主函数输入。

 

#include

#include

intLowest_common_multiple(intm,intn,inth);

intGreatest_common_divisor(intm,intn);

voidmain()

{

 intm,n,t,p,k;

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1