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) 下面程序接收来自键盘的输入,直到输入
键为止。这些字符被原样输出,但若有连续一个以上的空格时只输出一个空格。请填空。
#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++)