C语言程序设计实验与习题答案.docx

上传人:b****5 文档编号:11671614 上传时间:2023-03-30 格式:DOCX 页数:38 大小:29.09KB
下载 相关 举报
C语言程序设计实验与习题答案.docx_第1页
第1页 / 共38页
C语言程序设计实验与习题答案.docx_第2页
第2页 / 共38页
C语言程序设计实验与习题答案.docx_第3页
第3页 / 共38页
C语言程序设计实验与习题答案.docx_第4页
第4页 / 共38页
C语言程序设计实验与习题答案.docx_第5页
第5页 / 共38页
点击查看更多>>
下载资源
资源描述

C语言程序设计实验与习题答案.docx

《C语言程序设计实验与习题答案.docx》由会员分享,可在线阅读,更多相关《C语言程序设计实验与习题答案.docx(38页珍藏版)》请在冰豆网上搜索。

C语言程序设计实验与习题答案.docx

C语言程序设计实验与习题答案

2.程序填空

(1)以下程序的功能是计算1~50之间能被7整除的整数之和。

#include

voidmain()

{inti,sum= 0;

for(i=1;50;i++)

if(i%7==0)sum+=i;

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

}

 

(2)下面程序接收来自键盘的输入,直到输入+Z(值为-1)键为止。

这些字符被原样输出,但若有连续一个以上的空格时只输出一个空格。

请填空。

#include

voidmain()

{charcx;

charfront=’’;

while((cx=getchar())!

=’\n’)

{if(cx!

=’’)

putchar(cx);

if(cx==’’)

if(front!

=’’)

putchar(cx);

front=cx;

}

}

 

3.程序改错

(1)下列程序的功能是求1+3+5+…99的和。

#include

voidmain()

{ints,i;★  //ints=0,i;

i=1;

while(i<=99)s=s+i;★ //{s=s+i;i++;}

printf("1+3+5+…99的和是:

%d\n",s);

}

(2)下面程序的功能是输入一个正整数,判断是否是素数,若

为素数输出1,否则输出0。

 

 

 

 

 

#include

voidmain()

{inti,x,y=0;★ //y=1

scanf("%d",&x);

for(i=2;i<=x/2&&y;i++)

if((x%i)!

=0)y=0;★ //x%i==0

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

}

 

4.设计性实验

 

 

(1)题

 

/*方法

(1)精度控制 */

#include

#include

main()

{   ints;

    floatn,t,pi;

    t=1; pi=0; n=1.0; s=1;

    while((fabs(t))>=1e-6)

    {  pi=pi+t;

 n=n+2;

 s=-s;

 t=s/n;

    }

    pi=pi*4;

    printf("pi=%10.6f\n",pi);

}

/*方法

(2)次数控制*/

#include

#include

main()

{   ints;

    longtimes;

    floatn,t,pi;

    t=1; pi=0; n=1.0; s=1;

   for(times=1;times<=1e9;times++)

    {  pi=pi+t;

 n=n+2;

 s=-s;

 t=s/n;

    }

    pi=pi*4;

    printf("pi=%10.6f\n",pi);

}

 

(2)题

 main()

{

 inti,j,frame;

 doublewheattal=0;

 doublewheatfnu=1;

 printf("Pleaseinputframe’snumbers:

");

 scanf("%d",&frame);

 for(i=0;i

 {

 wheattal+=wheatfnu;

 wheatfnu+=wheatfnu;

 }

 printf("\nTotalwheattatol’stimeter=%e\n",wheattal/1.40e8);

}

(3)题

/*方法一:

使用递推公式n=n+2*/

 

 

main()

{

 int i,n=1;

 doubles=0,t=1;

 for(i=1;i<=20;i++)

 {

  t*=n;

  s+=t;

  n+=2;

 }

 printf("s=%lf",s);

 getch();

}

 

/*方法二:

使用通项公式2*i+1*/

main()

{

 int i;

 doubles=0,t=1;

 for(i=1;i<=20;i++)

 {

  t*=2*i+1;

  s+=t;

 }

 printf("s=%lf",s);

 getch();

}

 

 

 

/*方法三*/

#include"stdio.h"

main()

{

longtotal,sum,m,n,t;

total=0;

for(m=1;m<=20;m++)

 {

  sum=1;t=1;

  for(n=1;n<=m;n++){sum=sum*t;t=t+2;}

  total=total+sum;

 }

 printf("total=%ld",total);

}

 

 

 

2.程序填空

(1)以下程序的功能是计算1~50之间能被7整除的整数之和。

#include

voidmain()

{inti,sum= 0;

for(i=1;50;i++)

if(i%7==0)sum+=i;

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

}

 

(2)下面程序接收来自键盘的输入,直到输入+Z(值为-1)键为止。

这些字符被原样输出,但若有连续一个以上的空格时只输出一个空格。

请填空。

#include

voidmain()

{charcx;

charfront=’’;

while((cx=getchar())!

=’\n’)

{if(cx!

=’’)

putchar(cx);

if(cx==’’)

if(front!

=’’)

putchar(cx);

front=cx;

}

}

 

3.程序改错

(1)下列程序的功能是求1+3+5+…99的和。

#include

voidmain()

{ints,i;★  //ints=0,i;

i=1;

while(i<=99)s=s+i;★ //{s=s+i;i++;}

printf("1+3+5+…99的和是:

%d\n",s);

}

(2)下面程序的功能是输入一个正整数,判断是否是素数,若

为素数输出1,否则输出0。

 

 

 

 

 

#include

voidmain()

{inti,x,y=0;★ //y=1

scanf("%d",&x);

for(i=2;i<=x/2&&y;i++)

if((x%i)!

=0)y=0;★ //x%i==0

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

}

 

4.设计性实验

 

 

(1)题

 

/*方法

(1)精度控制 */

#include

#include

main()

{   ints;

    floatn,t,pi;

    t=1; pi=0; n=1.0; s=1;

    while((fabs(t))>=1e-6)

    {  pi=pi+t;

 n=n+2;

 s=-s;

 t=s/n;

    }

    pi=pi*4;

    printf("pi=%10.6f\n",pi);

}

/*方法

(2)次数控制*/

#include

#include

main()

{   ints;

    longtimes;

    floatn,t,pi;

    t=1; pi=0; n=1.0; s=1;

   for(times=1;times<=1e9;times++)

    {  pi=pi+t;

 n=n+2;

 s=-s;

 t=s/n;

    }

    pi=pi*4;

    printf("pi=%10.6f\n",pi);

}

 

(2)题

 main()

{

 inti,j,frame;

 doublewheattal=0;

 doublewheatfnu=1;

 printf("Pleaseinputframe’snumbers:

");

 scanf("%d",&frame);

 for(i=0;i

 {

 wheattal+=wheatfnu;

 wheatfnu+=wheatfnu;

 }

 printf("\nTotalwheattatol’stimeter=%e\n",wheattal/1.40e8);

}

(3)题

/*方法一:

使用递推公式n=n+2*/

 

 

main()

{

 int i,n=1;

 doubles=0,t=1;

 for(i=1;i<=20;i++)

 {

  t*=n;

  s+=t;

  n+=2;

 }

 printf("s=%lf",s);

 getch();

}

 

/*方法二:

使用通项公式2*i+1*/

main()

{

 int i;

 doubles=0,t=1;

 for(i=1;i<=20;i++)

 {

  t*=2*i+1;

  s+=t;

 }

 printf("s=%lf",s);

 getch();

}

 

 

 

/*方法三*/

#include"stdio.h"

main()

{

longtotal,sum,m,n,t;

total=0;

for(m=1;m<=20;m++)

 {

  sum=1;t=1;

  for(n=1;n<=m;n++){sum=sum*t;t=t+2;}

  total=total+sum;

 }

 printf("total=%ld",total);

}

 

 

 

2.程序填空

(1)求任意两个整数之间所有的素数。

 #include

 voidmain()

{inti1,i2,i,j,flag;

printf("inputtwointeger(i1,i2):

");

scanf("%d%d",&i1,&i2);

printf("primenumber:

\n");

for(i=i1;i<=i2;i++)

{

flag=1;

for(j=2;j<=i-1;j++)

{

if(i%j==0)

{

flag=0;

break;

}

}

if(flag==1)printf("%d\t",i);

}

printf("\n");

}

 

(2)以下程序的功能是输出下三角九九乘法表。

#include

voidmain()

{inti,j;

for(i=1;i<=9;i++)

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

printf("%d*%d=%d\t",i,j,i*j);

printf("\n");

}

}

 

3.程序改错

(1)下列程序的功能是输出所有的“水仙花数”。

谓“水仙花数”是指一个三位数,该数的各位数字立

方和等于该数本身的数。

例如:

153是一个“水仙

花数”,因为153=13+53+33。

#include

voidmain()

{intx,s,a;

for(s=0,x=100;x<1000;s=0,x++)★ 

{a=x;

while(a!

=0)

{s=s+(a%10)*(a%10)*(a%10);★ 

a=a/10;

}

if(x==s)printf("%d",x);★

}

}

 

(2)以下程序的功能是输出1至1000之间的所有完数。

若一个整数等于该数的所有因子之和,则称该整数为完数。

#include

voidmain()

{inti,j;

ints;

for(i=1;i<=999;i++)

{s=1;★    //s=0;  

for(j=1;j

{if(i/j==0)s=s+j;}★//i%j

if(s=i)printf("%5d",i);★  //s==i

}

}

 

4.设计性实验

SY61.C

main()

{ inti,j,k,n=0;    /*i,j,k分别代表三位整数的百位,十位,个位.n代表个数*/

 for(i=1;i<=9;i++)

    for(j=0;j<=9;j++)

      for(k=0;k<=9;k++)

        if(i*i*i+j*j*j+k*k*k==1099) /*在所有组合中找出满足指定条件的*/

         {

             printf("%4d",100*i+10*j+k);

             n++;

            if(n%5==0) printf("\n");  /*表示每行输出5个数*/

         }

}

SY62.C

#include

#include

main()

{

 inti,j,k;

 for(i=1;i<=4;i++)   /*上三角形有4行,每循环1次输出1行*/

 {

    for(k=1;k<8-((2*i-1)/2);k++) /*该循环输出每行的空格.8用于调节偏离位置,可换成别的数(>=8)*/

    printf("");

   for(j=1;j<=2*i-1;j++) /*该循环输出每行的’*’字符*/

      printf("*");

   putchar(’\n’);       /*换行*/

 }

 for(i=3;i>=1;i--)    /*下面为倒三角形,有3行*/

 {

   for(k=1;k<8-((2*i-1)/2);k++)

       printf("");

   for(j=1;j<=2*i-1;j++)

       printf("*");

   putchar(’\n’);

 }

}

 

 

 

 sy63.c

main()

{intn=1,score,t;

scanf("%d",&score);

while(score>=0&&n<=5)

{n++;

t=0;

while(score!

=0)

{

t=t+(score%10)*(score%10);

score=score/10;

}

if(t==108)

printf("%d",score);

scanf("%d",&score);

}

}

 

 

SY64.C

#include"math.h"

main()

{

  floatx0,x1,x2,fx0,fx1,fx2;/*x1,x2分别表示每次区间的左右端点,x0代表区间的中间点,fx0,fx1,fx2代表相应点的函数值*/

  do

  {printf("pleaseinputx1&x2:

");

   scanf("%f,%f",&x1,&x2);

   fx1=x1*((2*x1-4)*x1+3)-6;

  fx2=x2*((2*x2-4)*x2+3)-6;

  }while(fx1*fx2>0);    /*该循环指定有根的区间*/

 do

 {

    x0=(x1+x2)/2;

   fx0=x0*((2*x0-4)*x0+3)-6;

   if((fx0*fx1)<0)  /*丢掉右区间*/

   {

      x2=x0;

       fx2=fx0;

   }

 else            /*丢掉左区间*/

   {

      x1=x0;

      fx1=fx0;

   }

 }while(fabs(fx0)>1e-5);   /*该循环实现二分法求根*/

 printf("rootx=%f",x0);

}

 

2)程序填空

(1)

#include

voidmain()

 {

   intm,n,num1,num2,temp;

   printf("Inputtwopositiveinteger:

\n");

  scanf("%d,%d",&num1,__&num2_______);

  if(num1

     {temp=num1;num1=num2;num2=__temp_______;}

   m=num1;

   n=num2;

   while(n!

=0)

     {temp=__m%n__________;

       m=n;

        n=temp;

     }

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

   printf("Thelowestcommonmultipleis%d\n",num1*num2/__m____);

 }

 

(2)下面程序是计算表达式1+(1+2)+(1+2+3)+…+(1+2+3+…+10)和。

#include

voidmain()

{intsum,i,j,t;

sum=①;

for(i=1;i<=10;i++)

{t=0;

for(j=1;j<=②;j++)

t=t+j;

sum=③;

}

printf("1+(1+2)+(1+2+3)+…+(1+2+3+…+10)=%d\n",sum);

}

 

①0  ②i    ③sum+t

3.程序改错

(1)下面的程序是求1~100之间的素数,并将所有素数按每行10个输出。

#include

#define★              //#include

voidmain()

{inti,m,k,n;★                //inti,m,k,n=0;

for(m=1;m<=100;m=m+2)

{

if(n/10==0)★              //if(n%10==0)

printf("\n");

k=1;

for(i=2;i<=sqrt(m);i++)

if(m%i!

=0)★             //if(m%i==0)

{k=0;break;}

if(k==1)

{printf("%3d",m);n=n+1;}

}

printf("\n");

}

(2)下面程序是求表达式1-1/2+1/3-1/4+1/5-……-1/100的值,结果保留小数后4位。

#include

voidmain()

{inti;

floats;

i=0;★            //i=1;

s=1;★            //s=0;

while(i<100)

{if(i%2==0)

s=s-1/i;★    //s=s-1.0/i;

else

s=s+1/i;★    //s=s+1.0/i

i=i+1;

}

printf("1-1/2+1/3-1/4+…-1/100=%10.3f\n",s);

}

 

4.设计性实验

(1)编程输出以下图形。

 

#include

  voidmain()

  {

    inti,j,k;

    for(i=1;i<=6;i++)

    {

       for(k=1;k<=20-(2*i-1)/2;k++)

          printf("");

       for(j=1;j<=2*i-1;j++)

         printf("%d",i);

       printf("\n");

     }

   }

 

 

(2)编写一个程序输出所有5位数字的回文。

 

 

方法一:

#include 

voidmain()

 {

  longx,a,t;   //x:

原5位整数,a:

用来暂存x,t:

把a反序后的数

  inti,num=0;  //i:

表示原5位数的某一位,num:

回文数的个数

  for(x=10000;x<=99999;x++)  //每次取出1个5位整数

  {

      a=x;                   //把取出的5位整数保存到a

   t=0;                   //t用来存放反序后的数          

      while(a>0)  

   {i=a%10;              //取出当前数的最后一位到i

        t=t*10+i;            //把取出的i组装到t

        a=a/10; 

   }

   if(x==t)               //原来的5位整数等于反序后的数t

   {printf("%ld,",x); num++;}

   if(num%10==0) printf("\n"); //每行输出10个数

  }

}

方法二:

/*求5位整数中所有回文*/

#include

voidmain()

{

 longintn,m,t=0;

 for(n=10000;n<=99999;n++)

  {

     if(hw(n)==1)

      {printf("%6ld",n);

        t++;

        if(t%5==0) printf("\n"); 

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

当前位置:首页 > 工作范文 > 行政公文

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

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