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

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

2. 程序填空

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

#in clude<>

void mai n()

{int i,sum= _____ 0______ ;

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

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

pri ntf("sum=%d\n",sum);

}

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

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

#in clude <>

void mai n()

{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的和。

#in clude <>

void main( )

{ int s,i; ★ 10.6f10.6f10.6f10.6f 代表个数*/

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 个数*/

}

}

#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'' );

}

}

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

}

#include ""

main()

{

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

do

{printf("please input x1&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("root x=%f",x0);

}

}

2)程序填空

(1)

#include <>

void main()

{

int m,n,num1,num2,temp;

printf("Input two positive integer:\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("The grestest common divisor is %d\n",m);

printf("The lowest common multiple is %d\n",num1*num2/__m ___ );

}

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

+(1+2+3+…+10)和。

#in clude<>

void mai n()

{int sum,i,j,t;

sum二 ___ ① ______ ;

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

{t=0;

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

t=t+j;

sum二 ___ ③ ________ ;

}

pri ntf("1+ (1+2) + (1+2+3) + ...+ (1+2+3十 (10)

=%d\n",sum);

}

①0 ②i ③sum+t

3.程序改错

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

#in clude <>

#defi ne <> ★10.3f ⑴

①a[10]=x;

②break;

③a[k]=x;

附:算法简析

mai n()

{

int x,i,j,k;/*感觉似乎j定义了没什么作用*/

int a[11]={8,18,28,38,48,58,68,78,88,98};

printf(" 请输入需要插入的一个整数:"); scanf("%d",&x);

a[10]=x;/* 把x 放到数据串最末位置*/ for(i=0;i<10;i++)

if(x

for(i=10;i>k;i--)/* 将插入点以及其后的每个数据后移一个单位(给x 腾位) */

/* 实例演示——腾位

8 18 28 38 48 58 68 78 88 98 ( x)

8 18 28 38 38 48 58 68 78 88 98

插入点

*/

a[i]=a[i-1];

a[k]=x;/* 将x 放到插入点位置*/

for (i=0;i<11;i++)

printf("%3d",a[i]);

printf("\n");

}

⑵① i%7==0||i%11==0

②n++

③i%5==0

3.

⑴ a.将continue;改为break;

b. 将i二k-1;改为j=k-1;

c. 将j=k+1;改为i=k+1;

相关主题
相关文档
最新文档