程序填空題
導讀:在程序填空題中,已經給出了程序的主干,讀者首先要理解程序的思路,再選擇正確的內容填入空白處,使程序完成既定的功能。這類習題的設計就是要引導讀者逐步掌握編程的方法。本節(jié)習題的難度適中,可能有些典型的程序在課堂上已經有所接觸,讀者一定要獨立完成它,這樣就可以逐步提高自己的編程能力。在程序設計語言學習的中期,讀者對程序設計已經有了初步的了解,而自己編寫程序又不知從何處入手,此時解答此類題目可以避免盲目性,從而提高學習的效率。
【3.1】下面程序的功能是不用第三個變量,實現兩個數的對調操作。
#include
main()
{ int a,b;
scanf("%d%d",&a,&b);
printf("a=%d,b=%d\n",a,b);
a= ① ;
b= ② ;
a= ③ ;
printf("a=%d,b=%d\n",a,b);
}
【3.2】下面程序的功能是根據近似公式:π2/6≈ 1/12+1/22+1/32+ …… +1/n2,求π值。
#include
double pi(long n)
{ double s=0.0;
long i;
for(i=1;i<=n;i++)
s=s+ ① ;
return( ② );
}
【3.3】下面的程序的功能是求一維數組中的最小元素。
findmin(int *s,int t,int *k)
{ int p;
for(p=0,*k=p;p if(s[p] 、 ; } main() { int a[10],i,*k=&i; for(i=0;i<10;i++) scanf("%d",&a[i]); findmin(a,10,k); printf("%d,%d\n",*k,a[*k]); } 【3.4】下面程序的功能是計算1-3+5-7+ …… -99+101的值。 main() { int i,t=1,s=0; for(i=1;i<=101;i+=2) { ① ; s=s+t; ② ; } printf("%d\n",s); } 【3.5】有以下程序段: s=1.0; for(k=1;k<=n;k++) s=s+1.0/(k*(k+1)); printf("%f\n",s); 填空完成下述程序,使之與上述程序的功能完全相同。 s=0.0; ① ; k=0; do { s=s+d; 、 ; d=1.0/(k*(k+1)); }while( ③ ); printf("%f\n",s); 【3.6】下面程序的功能是從鍵盤上輸入若干學生的學習成績,統(tǒng)計并輸出最高成績和最低成績,當輸入為負數時結束輸入。 main() { float x,amax,amin; scanf("%f",&x); amax=x; amin=x; while( ① ) { if(x>amax) amax=x; if( ② ) amin=x; scanf("%f",&x); } printf("\namax=%f\namin=%f\n",amax,amin); } 【3.7】下面程序的功能是將形參x的值轉換為二進制數,所得的二進制數放在一個一維數組中返回,二進制數的最低位放在下標為0的元素中。 fun(int x,int b[]) { int k=0,r; do { r=x% ① ; b[k++]=r; x/= ② ; }while(x); } 【3.8】下面程序的功能是輸出1到100之間每位數的乘積大于每位數的和的數。例如數字26,數位上數字的乘積12大于數字之和8。 main() { int n,k=1,s=0,m; for(n=1;n<=100;n++) { k=1; s=0; 、 ; while( ② ) { k*=m%10; s+=m%10; 、 ; } if(k>s) printf("%d",n); } } 【3.9】下面程序的功能是統(tǒng)計用0至9之間的不同的數字組成的三位數的個數。 main() { int i,j,k,count=0; for(i=1;i<=9;i++) for(j=0;j<=9;j++) if( ① ) continue; else for(k=0;k<=9;k++) if( ② ) count++; printf("%d",count); } 【3.10】下面程序的功能是輸出100以內的個位數為6、且能被3整除的所有數。 main() { int i,j; for(i=0; ① ;i++) { j=i*10+6; if( ② ) countinue; printf("%d",j); } } 【3.11】下面程序的功能是用輾轉相除法求兩個正整數m和n的最大公約數。 hcf(int m,int n) { int r; if(m { r=m; 、 ; n=r; } r=m%n; while( ② ) { m=n; n=r; r=m%n; } 、 ; } 【3.12】下面程序的功能是使用冒泡法對輸入的10個浮點數從小到大進行排序。排好序的10個數分兩行輸出。程序如下: #include main() { ① ; int i,j; printf("Input 10 numbers please\n"); for(i=0; ② ;i++ ) scanf("%f", &a[i]); printf("\n"); for(i=2; ③ ;i++ ) for(j=0; ④ ;j++ ) if( ⑤ ) { x=a[j]; ⑥ ; a[j+1]=x; } printf("The sorted 10 numbers;\n"); for(i=0; ⑦ ;i++ ) { if( ⑧ ) printf("\n"); printf("%f\t",a[i]); } printf("\n"); } 【3.13】下面程序的功能是讀入20個整數,統(tǒng)計非負數個數,并計算非負數之和。 #include "stdio.h" main() { int i,a[20],s,count; s=count=0; for(i=0;i<20;i++ ) scanf("%d", ① ); for(i=0;i<20;i++) { if(a[i]<0) 、 ; s+=a[i]; count++; } printf("s=%d\t count=%d\n",s,count); } 【3.14】下面程序的功能是刪除字符串s中的空格。 #include main() { char *s="Beijing ligong daxue"; int i,j; for(i=j=0;s[i]!='\0';i++) if(s[i]!= ' ') ① ; else ② ; s[j]= '\0'; printf("%s",s); } 【3.15】下面程序的功能是將字符串s中所有的字符'c'刪除。請選擇填空。 #include main( ) { char s[80]; int i,j; gets(s); for(i=j=0;s[i]!= '\0';i++ ) if(s[i]!= 'c') ① ; s[j]= '\0'; puts(s); }