運算子、表示式和語句(練習)
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;
}
執行結果: