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) 下面程序接收来自键盘的输入,直到输入<Ctrl>+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<num2){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+t3.程序改错(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<a[i]) {k=i;break;}/* 寻找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==03.⑴ a.将continue;改为break;b. 将i二k-1;改为j=k-1;c. 将j=k+1;改为i=k+1;d. 将for(i=0;i<10;i++) 改为for(i=0;i<9;i++); 附:算法简析#include <>void main(){int x, i,j,k;int a[10]={ 8,18,28,38,48,58,68,78,88,98}; printf(" 请输入需要删除的一个整数:");scanf("%d",&x);i=0;j=9;while(i<=j){k=(i+j)/2 ; if(a[k]==x) break; if(a[k]>x) j=k-1; if(a[k]<x) i=k+1;}/* 二分法查找x 在数组中的位置,该位置即删除点,注意始末坐标不要弄颠倒*/if(i>j) printf(" 需要删除的数不在数组中\n");else { for( ;k<9;k++) a[k]=a[k+1];/* 挤位,后面的数据向删除点靠拢*//* 实例演示——挤位(若删除38)删除点8,18,28,38,48,58,68,78,88,988,18,28,48,58,68,78,88,98,98 */for (i=0;i<9;i++)/* 删除一个数,只剩9 个,数组最末尾储存的是重复的数据(倒数第二个),故不输出*/printf("%5d",a[i]);}}⑵a.将for(i=0,j=0;iv=10;i++)改为for(i=1,j=0;iv=10;i++)b. 将if(i%3=0)改为if(i%3==0)c. 将for(;j>=0;j++)改为for(;j>=0;j--)4.⑴#include<> #include<> int isprime(int x){int k=sqrt(x);for(;k>1;k--) if(x%k==0) return 0;return x;}void sort(int a[],int x){int i,k,t; for(i=0;i<x-1;i++) for(k=i+1;k<x;k++) if(a[i]>a[k]){ t=a[i]; a[i]=a[k]; a[k]=t;}}void main(){int num[50],prime[50],i,n=0,j; printf("PLease input 50 integers:\n"); for(i=0;i<50;i++) { scanf("%d",&num[i]); if((j=isprime(num[i]))!=0) prime[n++]=j;} sort(prime,n); printf("The sorted prime numbers are : \n"); for(i=0;i<n;i++) printf("%-5d",prime[i]);} ⑵ #include<>#include<>main(){char input[10],paswor[10]="password",ch,flag=0;int count=1,i=0;while(count<=3){printf(" 请输入密码:");while((ch=getch())!=13){input[i++]=ch;putchar( '* ');}input[i]= 0';if(strcmp(input,paswor)==0){printf("\n\n 你好!我的主人!");flag=1;break;}elseprintf("\n\n 离我远点!"); count++;getch();}if(flag==0)printf(" 密码输入三次错误,你不是我的主人!\n\n 离我远点!否\n\n 则,我很生气,后果很严重");getch();}⑶main(){int num[10],i,max,min,maxj,minj;printf("Please input the data:\n");scanf("%d",&num[0]);max=min=num[0];for(i=1;i<10;i++){ scanf("%d",&num[i]); if(max<num[i]){max=num[i];maxj=i;}if(min>num[i]){min=num[i];minj=i;}}printf("The maximum element ' s underside is %d,max=%d",maxj,num[maxj]);nThe minimum element ' s underside is %d,min=%d",minj,num[minj]);}⑷#include<>#include<> void input(int a[],int *n) {int i;printf("How many datas do you want to input "); scanf("%d",n);printf("\nPlease input %d datas:\n",*n);for(i=0;i<*n;i++)scanf("%d",&a[i]);}void sort(int a[],int n){int i,j,t;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}}void menu(int a[],int n){int i;gotoxy(1,24); printf("Datas: "); for(i=0;i<n;i++)printf("%-3d",a[i]);gotoxy(1,1);printf(" MENUprintf("************************\n"); printf("* \n"); *\n");printf("* a data *\n");printf("* *\n");printf("* a data *\n");printf("* *\n"); printf("* a data *\n");printf("* *\n"); printf("* *\n");printf("* *\n"); printf("************************\n");printf("PLease input a command==>");}void find(int a[],int n){int x;int low=0,high=n-1,mid;printf("\nPLease input a data to be searched: ");scanf("%d",&x); while(low<=high){mid=(low+high)/2;if(x==a[mid]) break;else if(x>a[mid]) low=mid+1;else high=mid-1;}nThis data can ' t be found in the database!"); else {printf("\nThis data is in the position %d",mid); gotoxy(7+3*(mid+1)-2,23);putchar(25);}}void insert(int a[],int n){int x,k,i;printf("\nPLease input a data to be inserted:"); scanf("%d",&x);a[n]=x; for(i=0;i<n;i++)if(x<a[i]) {k=i;break;}for(i=n;i>k;i--)a[i]=a[i-1];a[k]=x;gotoxy(1,24);delline();printf("Datas: ");for(i=0;i<=n;i++) printf("%-3d",a[i]);}void Delete(int a[],int n){int x,low,high,mid,i;printf("\nPLease input a data to be deleted:"); scanf("%d",&x);low=0;high=n-1; while(low<=high) {mid=(low+high)/2 ; if(a[mid]==x) break;if(a[mid]>x) high=mid-1; if(a[mid]<x) low=mid+1; } if(low>high) printf("Thedata to be deleted is not in the database!\n"); else { for( ;mid<n-1;mid++)a[mid]=a[mid+1]; gotoxy(1,24);delline();printf("Datas: "); for(i=0;i<=n-2;i++) printf("%-3d",a[i]);}}main(){int a[50],n=0;char com;input(a,&n);sort(a,n);clrscr(); menu(a,n); com=getch(); switch(com) { case ' 1' :find(a,n);break; case '2' :insert(a,n);break; case ' 3' :Delete(a,n);break; default: break;}getch();}/*DT made it in 2009/05/16*/程序填空:( 1 ) #include <>#define N 4void main(){ int a[N][N],s1=0,s2=1,max,i,j;for(i=0; i<N; i++)for(j=0; j<N; j++)scanf("%d", &a[i][j] );max= a[0][0] ;for(i=0;i<N;i++)for(j=0; j< N ;j++){if(i==j) s1=s1+a[i][j] ;if(i+j==N-1) s2*=a[i][j];if(a[i][j]> max )max=a[i][j];}printf("s1=%d,s2=%d,max=%d\n",s1,s2,max); }(2)#include<>#define M 4#define N 3void main( )for(i=0;i<N;i++)sum+=a[0][i]+ a[M-1][i] ;for(j=1;j<M-1;j++)sum+=a[j][0]+ a[j][N-1] ;printf("%d\n",sum);}改错:(1)#in#include<>#define M 3#define N 4void main( ){int a[M][N]={{1,2,3,4},{5,6,7,8 },{9,10,11,12}}; int b[N][M];int i,j;for(i=0;i<M;i++){for(j=0;j<N;j++)printf("%3d",a[i][j]);printf("\n");}for(i=0;i<N;i++)for(j=0;j<M;j++)b[i][j]=a[j][i];printf("\n");for(i=0;i<N;i++){for(j=0;j<M;j++)printf("\n");}}printf("%3d",b[i][j]);void main(){int d[][4] ={{0,0,0,0}},i,j;printf("\nPlease input 16 num: ");for(i=0;i<4;i++)for(j=0;j<4;j++)scanf("%d",&d[i][j]);for(i=0;i<4;i++)for(j=0;j<4;j++)if(d[i][j]<d[j][i])d[i][j]=d[j][i];for(i=0;i<4;i++){printf("\n\n\n\n\n");/* 为了保持每行的间隔与每列的相同*/for(j=0;j<4;j++)if(j>=i)printf("\t%d",d[i][j]);/* 为了使位数不同的数输出依然保持三角型*/ elseprintf("\t");}}设计性实验:(1)#include<>#define M 3void main(){int i,j,max,min,m=0,n=0,p=0,q=0;#define N 6for(i=0;i<M;i++)for(j=0;j<N;j++)scanf("%d",&a[i][j]);max=min=a[0][0];for(i=0;i<M;i++)for(j=0;j<N;j++){ if(a[i][j]>max){max=a[i][j];m=i;n=j;}else if(a[i][j]<min){ min=a[i][j];p=i;q=j;}}printf("max(%d,%d)=%d,min(%d,%d)=%d",m,n,max,p,q,min);}3)#include<>#define N 20 void main(){int n,i,j;int a[N][N];printf("please input the n:");scanf("%d",&n);for(i=0;i<n;i++){a[i][0]=1;a[i][i]=1;}for(i=2;i<n;i++)for(j=1;j<i;j++)a[i][j]=a[i-1][j-1]+a[i-1][j];for(i=0;i<n;i++){for(j=0;j<=i;j++)printf("%-4d",a[i][j]);printf("\n");}}2.程序填空(1)以下程序的功能是求数组a 中元素的和#in elude <>void mai n(){ int a[10];int *p,sum=0;for(p=a; pva+10; p++)sea nf("%d",①); 〃pfor(p=a;p<a+10;p++)sum=sum+ ②_______ 〃*p prin tf("sum=③_______ \n",sum); //%d}(2)以下程序功能是在数组中查找与x值相同的元素所在的位#in elude<>void mai n(){ int i,x,a[11];printf( “ please in put ten nu mber:” );for(i=1;i<11;i++)sea nf("%d",a+i);prin tf("please in put x:");sea nf("%d", &x);a[0]= ________ ①___________ ; //xi=10;while(x != *(a+i))______ ② ________ ; // i--if( _______ ③ _________ ) //x==*(a+i)printf("found position is : %d',i);elseprintf("not foun d!");3.程序改错(1)以下程序的功能是求一元二次方程的实数根。