1. 程式人生 > >字串和格式化輸入/輸出(練習)

字串和格式化輸入/輸出(練習)

C Primer Plus第四章練習如下:

1.編寫一個程式,提示使用者輸入名和姓,然後以“名,姓”的格式打印出來

程式碼:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>

int main(){
	char nom[40];
	char prenom[40];

	printf("請輸入您的姓名:\n");
	scanf("%s %s", nom,prenom);
	printf("%s,%s",prenom,nom);

	system("pause");
	return 0;
}

執行結果:

2.編寫一個程式,提示使用者輸入名字,並執行以下操作: a.列印名字,包括雙引號; b.在寬度為20的欄位右端列印名字,包括雙引號; c.在寬度為20的欄位左端列印名字,包括雙引號; d.在比姓名寬度寬3的欄位中列印名字。  

程式碼:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>

int main(){
	char name[40];
	
	printf("請輸入您的姓名:\n");
	scanf("%s", name);
	printf("您的名字為:\"%s\"\n",name);      //a
        printf("您的名字為:\"%20s\"\n",name);    //b
        printf("您的名字為:\"%-20s\"\n",name);   //c

	system("pause");
	return 0;
}

執行結果:a

執行結果:b

執行結果:c

程式碼:d

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>

int main(){
	char name[40];
	int length;
	
	printf("請輸入您的姓名:\n");
	scanf("%s", name);
	length = strlen(name) + 3;
	printf("您的名字為:\"%*s\"\n", length,name);

	system("pause");
	return 0;
}

執行結果:

3.編寫一個程式,讀取一個浮點數,首先以小數點記數法列印,然後以指數記數法列印。用下面的格式進行輸出(系統不同,指數記數法顯示的位數可能不同):

a.  The input  is 21.3 or 2.1e+001. b. The input is +21.290 or 2.129E+001.

程式碼:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>

int main(){
	float i;
	float j;
	printf("請輸入一個浮點數:");
	scanf("%f", &i);
	printf("The input is %.1f or %.1e.\n",i,i);

	printf("請再輸入一個浮點數:");
	scanf("%f", &j);
	printf("The input is %+.3f or %.3E.\n", j,j);
	system("pause");
	return 0;
}

執行結果:

4.編寫一個程式,提示使用者輸入身高(單位:英寸)和姓名,然後以下面的格式顯示使用者剛輸入的資訊: Dabney, you are 6.208 feet tall 使用float 型別,並用/作為除號。如果你願意,可以要求使用者以釐米為單位輸入身高,並以米為單位顯示出來。

程式碼:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>

int main(){
	char name[40];
	float height;
	float feet;

	printf("請輸入身高(單位:英寸)和姓名:");
	scanf("%f %s", &height, name);
	//1英寸=0.076199999884176尺
	feet = 0.076199999884176*height;
	printf("%s, you are %.3f feet tall\n", name, feet);

	system("pause");
	return 0;
}

執行結果:

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.

程式碼:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>

int main(){
	float speed, size,time;

	printf("請輸入以兆位每秒(Mb / s)為單位的下載速度和以兆位元組(MB)為單位的檔案大小\n");
	scanf("%f %f", &speed,&size);
	//1位元組等於8位
	time = 8 * size / speed;
	printf("At %.2f megabits per second, a file of %.2f megabytes\n\
downloads in %.2f seconds.\n", speed, size, time);
	system("pause");
	return 0;
}

執行結果:

6.編寫一個程式,先提示使用者輸入名,然後提示使用者輸入姓。在一行列印使用者輸入的名和姓,下一 行分別列印名和姓的字母數。字母數要與相應名和姓的結尾對齊,如下所示:

Melissa Honeybee

          7                8

接下來,再列印相同的資訊,但是字母個數與相應名和姓的開頭對齊,如下所示:

Melissa Honeybee

7           8

程式碼:

執行結果:

7.編寫一個程式,將一個double型別的變數設定為1.0/3.0, 一個float 型別的變數設定為1.0/3.0。 分別顯示兩次計算的結果各3次:一次顯示小數點後面6位數字;一次顯示小數點後面12位數字;一次顯示小數點後面16位數字。 程式中要包含float.h標頭檔案,並顯示FLT_ DIG和DBL_DIG的值。1.0/3.0的值與這些值一致嗎?

程式碼:

執行結果:

8.編寫一個程式,提示使用者輸入旅行的里程和消耗的汽油量。然後計算並顯示消耗每加侖汽油行駛的英里數,顯示小數點後面一位數字。接下來,使用1加侖大約3.785升,1英里大約為1.609千米,把單位是英里/加侖的值轉換為升/100公里(歐洲通用的燃料消耗表示法),並顯示結果,顯示小數點後面1位數字。注意,美國採用的方案測量消耗單位燃料的行程( 值越大越好),而歐洲則採用單位距離消耗的燃料測量方案( 值越低越好)。使用#define 建立符號常量或使用const限定符建立變數來表示兩個轉換系數。

程式碼:

執行結果: