一、編寫一個程序,建立一個具備26個元素的數組,並在其中存儲26個小寫字母。並讓該程序顯示該數組的內容。api
#include int main (void) { int i; int max=26; char CH[max]; for(i=0;i
二、使用嵌套循環產生下列圖案:
數組
$
函數
$$
spa
$$$
code
$$$$
索引
$$$$$
input
#include int main (void) { int i,j; for(i=0;i<5;i++) { for (j=0;j<=i;j++) printf("$"); printf("\n"); } return 0; }
#include int main (void) { int i,j; for(i=0;i<5;i++) { for (j=0;j<=i;j++) printf("$"); printf("\n"); } return 0; }
三、使用嵌套循環產生下列圖案:
it
F
io
FE
for循環
FED
FEDC
FEDCB
FEDCBA
#include int main (void) { int i,j; char ch='F'; for(i=0;i<6;i++) { for (j=0;j<=i;j++) printf("%C",ch-j); printf("\n"); } return 0; }
#include int main (void) { int i,j; char ch='F'; for(i=0;i<6;i++) { for (j=0;j<=i;j++) printf("%C",ch-j); printf("\n"); } return 0; }
四、讓程序要求用戶輸入一個大寫字母,使用嵌套循環產生像下面這們的金字塔圖案:
A
ABA
ABCBA
ABCDCDA
ABCDEDCBA
這種圖案要擴展到用戶輸入的字符。例如前面的圖案是在輸入E時須要產生的。提示:使用一個外部循環來處理行,在每一行中使用三個內部循環,一個處理空格,一個以升序打印字母,一個以降序打印字母。
#include int main (void) { int i,j,k; char letter; printf("Please input a capital:"); scanf("%c",&letter); k=letter-'A'+1; //計算字符的個數; for(i=0;i=0;j--) //第三個循環,降序打印字母(比升序時少1個字母) printf("%c",'A'+j); printf("\n"); } return 0; }
五、編寫一個程序打印一個表,表的每一行都給出一個整數、它的平方以及它的立方。要求用戶輸入表的上限和下限。使用一個for循環。
#include int main (void) { int i,min,max; printf("Please input the min and the max :"); scanf("%d %d",&min,&max); printf("%10s%10s%10s\n","num","square","cube"); for(i=min;i<=max;i++) { printf("%10d%10d%10d\n",i,i*i,i*i*i); } return 0; }
六、編寫一個程序把一個單詞讀入一個字符數組,而後反向打印這個詞。提示:使用strlen()計算數組中最後一個字符的索引。
#include #include //使用strlen() int main (void) { char word[20]; int i; printf("Please input a word:"); scanf("%s",&word); for(i=strlen(word)-1;i>=0;i--) //最後一個字符的下標strlen(word)-1,word是數組名稱 printf("%c",word[i]); printf("\n"); return 0; }
七、編寫一個程序要求輸入兩個浮點數,而後打印用二者的差值除以二者的乘積所得的結果。在用戶鍵入非數字的輸入以前程序循環處理每對輸入值。
#include int main (void) { float f1,f2; printf("Please input tow floats:"); while(scanf("%f%f",&f1,&f2)==2) { printf("The result is %.2f\n",(f1-f2)/(f1*f2)); printf("Please input tow floats:"); } printf("end\n"); return 0; }
八、對練習7進行修改,讓它使用一個函數來返回計算值。
#include float fac(float a,float b); int main (void) { float f1,f2; printf("Please input tow floats:"); while(scanf("%f%f",&f1,&f2)==2) { printf("The result is %.2f\n",fac(f1,f2)); printf("Please input tow floats:"); } printf("end\n"); return 0; } float fac(float a,float b) { float c; c=(a-b)/(a*b); return c ; }
九、編寫一個程序,要求用戶輸入下限整數和一個上限整數,而後,依次計算從下限到上限的每個整數的平方的加和,最後顯示結果。程序將不斷提示用戶輸入下限整數和上限整數並顯示出方法,直到用戶輸入的上限整數等於或小於下限整數爲止。程序運行結果示例應該以下所示
Enter lower and upper integer limits:5 9
The sums of the squares from 25 to 81 is 255
Enter next set of limits :3 25
The sums of the squares from 9 to 625 is 5520
Enter next set of limits :5 5
Done
#include int fac(int a,int b); int main (void) { int n1,n2; printf("Enter lower and upper integer limits:"); scanf("%d %d",&n1,&n2); while(n1
十、編寫一個程序,把8個整數讀入一個數組中,而後以相反的順序打印它們;
#include int main (void) { int abc[8]; int i; printf("Please input 8 numbers:"); for(i=0;i<8;i++) //循環讀取輸入 { scanf("%d",&abc[i]); } for(i=7;i>=0;i--) { printf("The %d is %d\n",i+1,abc[i]); } return 0; }
#include int main (void) { int abc[8]; int i; printf("Please input 8 numbers:"); for(i=0;i<8;i++) //循環讀取輸入 { scanf("%d",&abc[i]); } for(i=7;i>=0;i--) { printf("The %d is %d\n",i+1,abc[i]); } return 0; }
十一、考慮這兩個無限序列:
1.0+1.0/2.0+1.0/3.0+1.0/4.0+......
1.0-1.0/2.0+1.0/3.0-1.0/4.0+......
編寫一個程序來計算這兩個序列不斷變化的總和,直到達到 某個次數。讓用戶交互的輸入這個次數。看看在20次、100次和500次以後 的總和。是否每一個序列都看上去要收斂於某個值?提示:奇數個-1的乘積爲-1,而偶數個-1的乘積爲1。
#include int main(void) { double i,sum1,sum2; int sign,count; printf("Enter the count:"); scanf("%d",&count); for(i=1.0,sign=1,sum1=0,sum2=0;i<=count;i++,sign *= -1) { sum1 += 1.0 / i; sum2 += sign * 1.0 / i; //利用sign的變化規律,使運算符在正負間交替變化 } printf("1.0 + 1.0/2.0 + 1.0/3.0 + 1.0/4.0 ...(%d terms) = %lf\n",count,sum1); printf("1.0 - 1.0/2.0 + 1.0/3.0 - 1.0/4.0 ...(%d terms) = %lf\n",count,sum2); printf("%d\n",sign); return(0); }
十二、編寫一個程序,建立一個8個元素的int數組,而且把元素分別設置爲2的前8次冪,而後打印出它們的值。使用for循環來設置值;爲了變化,使用do while來顯示這些值。
#include #include int main(void) { int num[8]; int i; for (i=0;i<8;i++) { num[i]=pow(2,i); //POW乘冪函數,利用math.h頭文件 } i=0; //使用do while時需將i初始爲0; do printf("%d\t",num[i]); while(++i<8); //退出條件爲++i<8 return 0; } /*do while 至少爲執行一次,檢測退出條件是否知足,知足時返回再次執行,直到while的值爲flase*/
1三、編寫一個程序,建立兩個8元素的double數組,使用一個循環來讓用戶鍵入第一個數組的8個元素的值。程序把第二個數組的元素設置爲第一個數組的元素的累積和。例如,第二個數組的第4個元素應該等於第一個數組 的前4個元素的和,第二個數組的第5個元素應該等於第一個數組的前5個元素的和(使用嵌套循環能夠作到這一點。不過利用第二個數組的第5個元素等於第二個數組的第4個元素加上第一個數組的第5個元素這個事實,能夠避免嵌套,而使用單個循環來完成這個任務)。最後,使用一個循環來顯示這兩個數組的內容,第一個數組在一行中顯示 ,而第二個數組的每一個元素在第一個數組的對應元素之下進行顯示。
#include int main(void) { double num[8],sum[8]; int i,j; printf("Please enter 8 numbers:"); for(i=0;i<8;i++) //在一個循環中爲兩個數組賦值 { scanf("%lf",&num[i]); for(j=0,sum[i]=0;j<=i;j++) //從數組元素等於主數組元素的累加和; sum[i] += num[j]; /*注意此處的公式,sum數組的第n個元素等於第n-1個元素加num數組的第n元素的值*/ } for(i=0;i<8;i++) printf("%8.3lf",num[i]); printf("\n"); for(i=0;i<8;i++) printf("%8.3lf",sum[i]); printf("\n"); return 0; }
1四、編寫一個程序讀入一行輸入,而後反向打印該行。您能夠把輸入存儲在一個char數組中;假定該行不超過255個字符。回憶一下,您可使用具備%c說明符的scanf()從輸入中一次讀入一個字符 ,並且當您按下回車鍵時會產生換行符(\n).
#include<stdio.h> #define LENGTH 20 int main(void) { char a[255]; int i; for(i=0;i<LENGTH;i++) scanf("%c",&a[i]); for(i=LENGTH-1;i>=0;i--) //注意:i=LENGTH-1,而不等於LENGTH printf("%c",a[i]); printf("\n"); return 0; }
1五、Daphne以10%的單利息投資了100美圓(也就是說,每一年投資贏得的利息等於原始投資的10%)。Deirde則以每一年5%的複合利息投資了100美圓(也就是說,利息是當前結餘的5%,其中包括之前的利息)。編寫一個程序,計算須要多少年Deirdre 的投資纔會超過Daphne,而且顯示出到那裏兩我的的投資額。
#include<stdio.h> int main(void) { double Daphne=100,Deirdre=100; int i=0; //不要忘記變量的初始化 while(Daphne>=Deirdre) { Daphne+=100*0.1; Deirdre+=Deirdre*0.5; i++; } printf("After %d years,Deirdre's investment is %f ,Daphne's investment is %f \n", i,Deirdre,Daphne); return 0; }
1六、Chuckie Luchy贏了100萬美圓,他把它存入每一年贏得8%的賬戶。在每一年的最後一天,Chuckie取出10萬美圓。編寫一個程序,計算須要多少年Chuckie就會清空他的賬戶。
#include<stdio.h> int main(void) { double investment = 100; int i=0; while(investment > 0) { investment += investment * 0.08; investment -= 10; i++; } printf("After %d years,Chuckie Lucky's investment is out\n",i); return(0); }