C Primer Plus 第四章 程式設計練習
1.編寫一個程式,提示使用者輸入名和姓,然後以“名,姓”的格式打印出來。
1 #include<stdio.h> 2 3 int main() 4 { 5 char first_name[20]; //名 6 char last_name[20]; //姓 7 8 printf("請輸入名:"); 9 scanf("%s",first_name); 10 printf("請輸入姓:"); 11 scanf("%s",last_name); 12 printf("%s,%s\n",first_name,last_name);13 14 return 0; 15 }
執行結果:
2 .編寫一個程式,提示使用者輸入名和姓,並執行以下操作:
a. 列印名和姓,包括雙引號;
b. 在寬度為20的欄位右端列印名和姓,包括雙引號;
c. 在寬度為20的欄位左端列印名和姓,包括雙引號;
d. 在比姓名寬度寬3的欄位中列印名和姓。
1 #include<stdio.h> 2 #include<string.h> 3 4 int main() 5 { 6 char first_name[20]; //名 7 char last_name[20]; //姓 8int fwidth,lwidth; //字元寬度 9 10 printf("請輸入名:"); 11 scanf("%s",first_name); 12 printf("請輸入姓:"); 13 scanf("%s",last_name); 14 15 fwidth = strlen(first_name)+3; 16 lwidth = strlen(last_name)+3; 17 18 printf("\"%s,%s\"\n",first_name,last_name); 19 printf("\"%20s,%20s\"\n",first_name,last_name); 20 printf("\"%-20s,%-20s\"\n",first_name,last_name); 21 printf("%*s%*s\n",fwidth,first_name,lwidth,last_name); 22 23 return 0; 24 }
執行結果:
3 .編寫一個程式,讀取一個浮點數,首先以小數點記數法列印,然後以指數記數法列印。用下面的格式進行輸出(系統不同,指數記數法顯示的位數可能不同);
a. 輸入21.3或2.1e+001;
b. 輸入+21.290或2.129E+001;
1 #include <stdio.h> 2 #include <stdlib.h> 3 4 int main() 5 { 6 double number; 7 printf("請輸入一個浮點數:"); 8 scanf("%lf", &number); 9 printf("小數點記數法:%lf\n", number); 10 printf("指數記數法:%e\n", number); 11 return 0; 12 }
執行結果:
4 .編寫一個程式,提示使用者輸入身高(單位:英寸)和姓名,然後以下面的格式顯示使用者剛輸入的資訊:
Dabney, you are 6.208 feet tall
使用float型別,並用/作為除號。如果你願意,可以要求使用者以釐米為單位輸入身高,並以米為單位顯示出來。
1 #include <stdio.h> 2 3 int main() 4 { 5 char name[20]; 6 float height; 7 printf("請輸入您的姓名:"); 8 scanf("%s",name); 9 printf("請輸入您的身高(釐米):"); 10 scanf("%f",&height); 11 printf("%s, you are %.3f meters tall.\n", name, height/100); 12 return 0; 13 }
5.編寫一個程式,提示使用者輸入以兆位每秒(Mb/s)為單位的下載速度和以兆位元組(MB)為單位的檔案大小。程式中應計算檔案的下載時間。注意,這裡1位元組等於8位。使用float型別,並用/作為除號。該程式要以下面的格式列印3個變數的值(下載速度、檔案大小和下載時間),顯示小數點後面兩位數字:
At 18.12 megabits per second, a file of 2.20 megabytes
downloads in 0.97 seconds.
1 #include <stdio.h> 2 3 int main() 4 { 5 float download_speed; 6 float file_size; 7 float download_time; 8 printf("請輸入下載速度(Mb/s):"); 9 scanf("%f", &download_speed); 10 printf("請輸入檔案大小(MB):"); 11 scanf("%f", &file_size); 12 download_time = file_size * 8 / download_speed; 13 14 printf("At %.2f megabits per second, a file of %.2f megabytes\n",download_speed, file_size); 15 printf("downloads in %.2f seconds.\n",download_time); 16 17 return 0; 18 }
6.編寫一個程式,先提示使用者輸入名,然後提示使用者輸入姓。在一行列印使用者輸入的名和姓,下一行分別列印名和姓的字母數。字母數要與相應名和姓的結尾對齊,如下所示:
Melissa Honeybee
7 8
接下來,再列印相同的資訊,但是字母個數與相應名和姓的開頭對齊,如下所示:
Melissa Honeybee
7 8
1 #include <stdio.h> 2 #include <string.h> 3 4 int main() 5 { 6 char first_name[20]; 7 char last_name[20]; 8 int fwidth; 9 int lwidth; 10 printf("請輸入名:"); 11 scanf("%s", first_name); 12 printf("請輸入姓:"); 13 scanf("%s", last_name); 14 fwidth = strlen(first_name); 15 lwidth = strlen(last_name); 16 printf("%s %s\n", first_name, last_name); 17 printf("%*d %*d\n", fwidth, fwidth, lwidth, lwidth); 18 printf("%s %s\n", first_name, last_name); 19 printf("%-*d %-*d\n", fwidth, fwidth, lwidth, lwidth); 20 return 0; 21 }
為了趕進度,此處省略7、8題,後續補充,望見諒!
歡迎大家指出錯誤,如有不妥之處,歡迎大家留言!