1. 程式人生 > >C Primer Plus 第四章 程式設計練習

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];    //
 8
int 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題,後續補充,望見諒!

歡迎大家指出錯誤,如有不妥之處,歡迎大家留言!