文档库 最新最全的文档下载
当前位置:文档库 › C语言程序设计实验与习题答案

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

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

2.程序填空

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

#include

void main()

{int i,sum=0;

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

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

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

}

(2) 下面程序接收来自键盘的输入,直到输入+Z(值为-1)键为止。这些字符被原样输出,但若有连续一个以上的空格时只输出一个空格。请填空。

#include

void main()

{char cx;

char front=’’;

while ((cx=getchar())!=’\n’)

{if (cx!=’’)

putchar(cx);

if (cx= =’’)

if (front!=’’)

putchar(cx);

front=cx;

}

}

3.程序改错

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

#include

void main( )

{ int s,i; ★//int s=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

void main()

{ int i,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()

{int s;

float n,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()

{int s;

long times;

float n,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()

{

int i,j,frame;

double wheattal=0;

double wheatfnu=1;

printf("Please input frame’s numbers:");

scanf("%d",&frame);

for(i=0;i

{

wheattal+=wheatfnu;

wheatfnu+=wheatfnu;

}

printf("\n Total wheattatol’s timeter=%e\n",wheattal/1.40e8); }

(3)题

/*方法一:使用递推公式n=n+2*/

main()

{

int i,n=1;

double s=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;

double s=0,t=1;

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

{

t*=2*i+1;

s+=t;

}

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

getch();

}

/*方法三*/

#include "stdio.h"

main()

{

long total,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

void main()

{int i,sum=0;

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

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

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

}

(2) 下面程序接收来自键盘的输入,直到输入+Z(值为-1)键为止。这些字符被原样输出,但若有连续一个以上的空格时只输出一个空格。请填空。

#include

void main()

{char cx;

char front=’’;

while ((cx=getchar())!=’\n’)

{if (cx!=’’)

putchar(cx);

if (cx= =’’)

if (front!=’’)

putchar(cx);

front=cx;

}

}

3.程序改错

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

#include

void main( )

{ int s,i; ★//int s=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

void main()

{ int i,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()

{int s;

float n,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()

{int s;

long times;

float n,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()

{

int i,j,frame;

double wheattal=0;

double wheatfnu=1;

printf("Please input frame’s numbers:");

scanf("%d",&frame);

for(i=0;i

{

wheattal+=wheatfnu;

wheatfnu+=wheatfnu;

}

printf("\n Total wheattatol’s timeter=%e\n",wheattal/1.40e8); }

(3)题

/*方法一:使用递推公式n=n+2*/

main()

{

int i,n=1;

double s=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;

double s=0,t=1;

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

{

t*=2*i+1;

s+=t;

}

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

getch();

}

/*方法三*/

#include "stdio.h"

main()

{

long total,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

void main()

{int i1,i2,i,j,flag;

printf("input two integer(i1,i2):");

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

printf("prime number:\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

void main()

{ int i,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

void main( )

{ int x,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

void main()

{ int i,j;

int s;

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()

{int i,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()

{

int i,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( )

{ int n=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

相关文档