1. 程式人生 > >運算子、表示式和語句(練習)

運算子、表示式和語句(練習)

C Primer Plus第五章練習如下:

1.編寫一個程式,把用分鐘表示的時間轉換成用小時和分鐘標識的時間。使用#define或const建立一個表示60的符號常量或const變數。通過while迴圈讓使用者重複輸入值,知道使用者輸入小於或等於0的值才停止迴圈。

程式碼:

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

#define time 60

int main(){
	while (1){
		int minute = 0;
		printf("請輸入分鐘數:");
		scanf("%d", &minute);
		if (minute <= 0){
			break;
		}
		int hour = minute / time;
		int min = minute - hour*time;
		printf("%d分鐘=%d小時%d分鐘\n", minute, hour, min);
	}
	system("pause");
	return 0;
}

執行結果:

2.編寫一個程式,提示使用者輸入一個整數,然後列印從該數到比該數大10的所有整數。要求列印的各值之間用一個空格、製表符或換行符分開。

程式碼:

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

int main(){
	int num;
	printf("請輸入一個數:\n");
	scanf("%d", &num);
	int i = num;
	for (num; num < (i + 11); num++){
		printf("%d ", num);
	}
	printf("\n");
	system("pause");
	return 0;
}

執行結果:

3.編寫一個程式,提示使用者輸入天數,然後將其轉換成周數和天數。以下面的格式顯示結果:
18 days are 2 weeks,4days
通過while迴圈讓使用者重複輸入天數,當用戶輸入一個非正值時,迴圈結束。

程式碼:

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

int main(){
	while (1){
		int day = 0;
		printf("請輸入天數:\n");
		scanf("%d", &day);
		if (day <= 0){
			break;
		}
		int week = day / 7;
		int days = day-week * 7 ;
		printf("%d days are %d weeks,%d days\n",day,week,days);
	}
	system("pause");
	return 0;
}

執行結果:

4.編寫一個程式,提示使用者輸入一個身高(單位:釐米),並分別以釐米和英寸為單位顯示該值。允許有小數部分。程式應該能讓使用者重複輸入身高,直到使用者輸入一個非正值。其輸出示例如下:
Enter a height in centimeters: 182
182.0 cm=5 feet, 71.7 inches
Enter a height in centimeters (<=0 to quit): 168.7
168.7cm=5 feet,  66.1 inches
Enter a height in centimeters (<=0 to quit): 0
bye

程式碼:

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

int main(){
	while (1){
		float height=0;
		printf("Enter a height in centimeters :");
		scanf("%f", &height);
		if (height <= 0){
			break;
		}
		float inches = 0.3937008*height;
		float feet = 0.03*height;
		printf("\n%.1lfcm = %.0lf feet, %.1lf inches\n", height, feet, inches);
	}
	printf("bye\n");
	system("pause");
	return 0;
}

執行結果:

5.修改程式addemup.c (程式清單5.13), 你可以認為addemup .c是計算20天裡賺多少錢的程式(假設第1天賺$1、第2天賺$2、第3天賺$3,以此類推)。修改程式,使其可以與使用者互動,根據使用者輸入的數進行計算(即,用讀入的一個變數來代替20)。

程式碼:

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

int main(){
	int count, sum, day;
	count = 0;
	sum = 0;
	printf("請輸入天數:\n");
	scanf("%d", &day);
	while (count++ < day){
		sum = sum + count;
	}
	printf("sum=%d\n", sum);
	system("pause");
	return 0;
}

執行結果:

6.修改程式設計練習5的程式,使其能計算整數的平方和(可以認為第1天賺$1、第2天賺$4、第3天賺
$9, 以此類推)。C沒有平方函式,但是可以用n * n來表示n的平方。

程式碼:

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

int main(){
	int count, sum, day;
	count = 0;
	sum = 0;
	printf("請輸入天數:\n");
	scanf("%d", &day);
	while (count++ < day){
		sum += count*count;
	}
	printf("sum=%d\n", sum);
	system("pause");
	return 0;
}

執行結果:

7.編寫一個程式,提示使用者輸入一個double型別的數,並列印該數的立方值。自己設計一個函式計算並列印立方值。main ()函式要把使用者輸入的值傳遞給該函式。

程式碼:

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

double Cube(double num){
	double cube = num*num*num;
	return cube;
}

int main(){
	double num;
	printf("請輸入一個數(double):\n");
	scanf("%lf", &num);
	printf("該數立方為:%lf\n", Cube(num));
	system("pause");
	return 0;
}

執行結果:

8.編寫一個程式,顯示求模運算的結果。把使用者輸入的第1個整數作為求模運算子的第2個運算物件,該數在運算過程中保持不變。使用者後面輸人的數是第1個運算物件。當用戶輸入一個非正值時,程式結束。其輸出示例如下:
This program computes modull.
Enter an integer to serve as the second operand:256
Now enter the first operand:438
438% 256 is 182
Enter next number for first operand (<=0 to quit): 1234567
1234567%256 is 135
Enter next number for first operand (<=0 to quit): 0
Done

程式碼:

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

int main(){
	int count = 0;
	int num1, num2, remainder;	
	while (1){	
		if (count == 0){
			printf("This program computes modull.\n");
			printf("Enter an integer to serve as the second operand : ");
			scanf("%d", &num2);
			printf("\nNow enter the first operand : ");
			scanf("%d", &num1);
		}
		else if (count != 0){
			printf(" Enter next number for first operand(<= 0 to quit) : ");
			scanf("%d", &num1);
		}
		if (num1 <= 0){
			break;
		}
		count++;
		remainder = num1%num2;
		printf("\n%d %% %d is %d\n", num1, num2, remainder);
	}
	printf("\nDone\n");
	system("pause");
	return 0;
}

執行結果:

9.編寫一個程式,要求使用者輸入一個華氏溫度。程式應讀取double型別的值作為溫度值,並把該值作為引數傳遞給一個使用者自定義的函式Temperatures()。該函式計算攝氏溫度和開氏溫度,並以小數點後面兩位數字的精度顯示3種溫度。要使用不同的溫標來表示這3個溫度值。下面是華氏溫度轉攝氏溫度的公式:

攝氏溫度=5.0/9.0*(華氏溫度-32.0)

開氏溫標常用於科學研究,0表示絕對零,代表最低的溫度。下面是攝氏溫度轉開氏溫度的公式:

開氏溫度=攝氏溫度+ 273.16

     Temperatures()函式中用const建立溫度轉換中使用的變數。在main()函式中使用一個迴圈讓使用者重複輸入溫度,當用戶輸入q或其他非數字時,迴圈結束。scanf ()函式返回讀取資料的數量,所以如果讀取數字則返回1,如果讀取q則不返回1。可以使用==運算子將scanf ()的返回值和1作比較,測試兩值是否相等。

程式碼:

#define  _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
//celsius  kelvin
void Temperatures(double fahrenheit){
	const double ctran = 5.0 / 9.0;
	const double ktran = 273.16;
	double celsius = ctran*(fahrenheit-32.0);
	double kelvin = celsius+ktran;
	printf("%.2lf華氏溫度 = %.2lf攝氏溫度 = %.2lf開氏溫度\n", fahrenheit, celsius, kelvin);
}

int main(){
	while (1){
		double fahrenheit = 0;
		printf("請輸入一個溫度(華氏):\n");
		if (scanf("%lf", &fahrenheit) != 1){
			break;
		}
		Temperatures(fahrenheit);
	}
	system("pause");
	return 0;
}

執行結果: