C語言程式設計入門訓練(二)
文章目錄
-
- 練習十一:ASCII碼
- 練習十二:出生日期輸入輸出
- 練習十三:按照格式輸入并交換輸出
- 練習十四:字元轉ASCII值
- 練習十五:計算表達式的值
- 練習十六:計算帶餘除法
- 練習十七:kiki算數
- 練習十八:浮點數的個位數字
- 練習十九:你能活多少秒?
- 練習二十:時間轉換
- 練習二十一:總成績和平均分計算
- 練習二十二:計算體重指數
- 練習二十三:計算三角形的周長和面積
- 練習二十四:計算球體的體積
- 練習二十五:大小寫轉換
- 練習二十六:2的n次方計算
- 未完待續.......
接上篇入門訓練(一)——部落格入口
題目描述
BoBo教KiKi字元常量或字元變量表示的字元在記憶體中以ASCII碼形式存儲。BoBo出了一個問題給KiKi,轉換以下ASCII碼為對應字元并輸出他們。
73, 32, 99, 97, 110, 32, 100, 111, 32, 105, 116 , 33
輸入描述:
無
輸出描述:
轉換輸出題目中給出的所有ASCII到對應的字元。
代碼如下:
#include <stdio.h>int main(){char arr[12] = { 73, 32, 99, 97, 110, 32, 100, 111, 32, 105, 116, 33 };int sz=sizeof(arr)/sizeof(arr[0]);int i = 0;for (i = 0; i<12; i++){printf("%c", arr[i]);}return 0;}
輸入一個人的出生日期(包括年月日),将該生日中的年、月、日分别輸出。
輸入隻有一行,出生日期,包括年月日,年月日之間的數字沒有分隔符。
三行,第一行為出生年份,第二行為出生月份,第三行為出生日期。輸出時如果月份或天數為1位數,需要在1位數前面補0。
示例1
輸入
20130225
輸出
year=2013
month=02
date=25
#include <stdio.h>int main(){int year=0;int month=0;int day=0;scanf("%4d%2d%2d",&year,&month,&day);printf("year=%4d\n",year);printf("month=%02d\n",month);printf("date=%02d\n",day);return 0;}
備注:
通過scanf函數的%m格式控制可以指定輸入域寬,輸入資料域寬(列數),按此寬度截取所需資料;通過printf函數的%0格式控制符,輸出數值時指定左面不使用的空位置自動填0。
輸入兩個整數,範圍-231~231-1,交換兩個數并輸出。
輸入隻有一行,按照格式輸入兩個整數,範圍,中間用“,”分隔。
把兩個整數按格式輸出,中間用“,”分隔。
a=1,b=2
a=2,b=1
#include <stdio.h>int main(){int a;int b;int tmp;scanf("a=%d,b=%d",&a,&b);tmp=a;a=b;b=tmp;printf("a=%d,b=%d",a,b);return 0;}
如果格式控制串中有非格式字元則輸入時也要輸入該非格式字元。
BoBo教KiKi字元常量或字元變量表示的字元在記憶體中以ASCII碼形式存儲。BoBo出了一個問題給KiKi,輸入一個字元,輸出該字元相應的ASCII碼。
一行,一個字元。
一行,輸出輸入字元對應的ASCII碼。
c
99
#include <stdio.h>int main(){char ch;scanf("%c",&ch);printf("%d",ch);return 0;}
請計算表達式“(-8+22)×a-10+c÷2”,其中,a = 40,c = 212。
無。
(-8+22)×a-10+c÷2計算之後的結果,為一個整數。
#include <stdio.h>int main(){int a=40;int c=212;int sum=0;sum=(-8+22)*a-10+c/2;printf("%d\n",sum);return 0;}
給定兩個整數a和b (-10,000 < a,b < 10,000),計算a除以b的整數商和餘數。
一行,包括兩個整數a和b,依次為被除數和除數(不為零),中間用空格隔開。
一行,包含兩個整數,依次為整數商和餘數,中間用一個空格隔開。
15 2
7 1
#include <stdio.h>int main(){int a=0;int b=0;scanf("%d %d",&a,&b);printf("%d %d",a/b,a%b);return 0;}
問題:KiKi今年5歲了,已經能夠認識100以内的非負整數,并且并且能夠進行 100 以内的非負整數的加法計算。不過,BoBo老師發現KiKi在進行大于等于100的正整數的計算時,規則如下:
- 隻保留該數的最後兩位,例如:對KiKi來說1234等價于34;
- 如果計算結果大于等于 100, 那麼KIKI也僅保留計算結果的最後兩位,如果此兩位中十位為0,則隻保留個位。
例如:45+80 = 25
要求給定非負整數 a和 b,模拟KiKi的運算規則計算出 a+b 的值。
一行,輸入兩個非負整數a和b,用一個空格分隔。(0 <= a,b<= 231-1)。
針對每組輸入,輸出按照KiKi的運算規則計算出 a+b 的值。
45 80
25
#include <stdio.h>int main(){int a;int b;scanf("%d %d",&a,&b);printf("%d\n",(a%100+b%100)%100);//printf("%d",(a+b)%100);return 0;}
給定一個浮點數,要求得到該浮點數的個位數。
一行,包括一個浮點數。
一行,包含一個整數,為輸入浮點數對應的個位數。
13.141
3
#include <stdio.h>int main(){float c;scanf("%f",&c);printf("%d",(int)c%10);return 0;}
問題:一年約有3.156×107s,要求輸入您的年齡,顯示該年齡合多少秒。
一行,包括一個整數age(0<age<=200)。
一行,包含一個整數,輸出年齡對應的秒數。
20
631200000
#include <stdio.h>int main(){int age=0;scanf("%d", &age);long long ret = age*3.156e7;printf("%lld", ret);return 0;}
備注:c語言的指數形式表示要注意,還有int類型的資料值的大小是有限的,對于比較大的數,我們要有long 類型或者 long long 儲存。
給定秒數seconds (0< seconds < 100,000,000),把秒轉化成小時、分鐘和秒。
一行,包括一個整數,即給定的秒數。
一行,包含三個整數,依次為輸入整數對應的小時數、分鐘數和秒數(可能為零),中間用一個空格隔開。
3661
1 1 1
#include <stdio.h>int main(){int sec=0;scanf("%d",&sec);printf("%d %d %d",sec/60/60,sec/60%60,sec%60);return 0;}
備注:注意題目中時,分,秒的正确表達形式。
依次輸入一個學生的3科成績,在螢幕上輸出該學生的總成績以及平均成績。
一行,3科成績,成績之間用一個空格隔開。
一行,總成績和平均成績(小數點後保留兩位),用一個空格隔開。
79.5 80.0 98.0
257.50 85.83
#include <stdio.h>int main(){float a,b,c;scanf("%f %f %f",&a,&b,&c);printf("%.2f %.2f",a+b+c,(a+b+c)/3.0);return 0;}
問題:計算BMI指數(身體品質指數)。BMI指數(即身體品質指數,簡稱體質指數又稱體重,英文為Body Mass Index,簡稱BMI),是用體重公斤數除以身高米數平方得出的數字,是目前國際上常用的衡量人體胖瘦程度以及是否健康的一個标準。主要用于統計用途,當我們需要比較及分析一個人的體重對于不同高度的人所帶來的健康影響時,BMI值是一個中立而可靠的名額。
一行,兩個整數,分别表示體重(公斤),身高(厘米),中間用一個空格分隔。
一行,BMI指數(保留兩位小數)。
70 170
24.22
#include <stdio.h>#include<math.h>int main(){int wei,high;scanf("%d %d",&wei,&high);
printf("%.2f",wei/(pow((high/100.0),2)));return 0;}
備注:數學指數函數要引用頭檔案<math.h>,要熟悉基本數學符号的函數
根據給出的三角形3條邊a, b, c(0 < a, b, c < 100,000),計算三角形的周長和面積。
一行,三角形3條邊(能構成三角形),中間用一個空格隔開。
一行,三角形周長和面積(保留兩位小數),中間用一個空格隔開,輸出具體格式詳見輸出樣例。
3 3 3
circumference=9.00 area=3.90
#include <stdio.h>#include <math.h>int main(){int a = 0;int b = 0;int c = 0;scanf("%d%d%d", &a, &b, &c);double circumference = a + b + c;float p = (a + b + c) / 2.0;float area = sqrt(p*(p - a)*(p - b)*(p - c));printf("circumference=%.2f area=%.2f", circumference, area);return 0;}
備注:熟悉平方函數的應用,還有計算三角形面積的海倫公式要知道。
給定一個球體的半徑,計算其體積。其中球體體積公式為 V = 4/3*πr3,其中 π= 3.1415926。
一行,用浮點數表示的球體的半徑。
一行,球體的體積,小數點後保留3位。
113.097
#include <stdio.h>#include <math.h>int main(){double r=0.0;double pi=3.1415926;scanf("%lf",&r);printf("%.3lf",4.0/3*pi*r*r*r);return 0;}
實作字母的大小寫轉換。多組輸入輸出。
多組輸入,每一行輸入大寫字母。
針對每組輸入輸出對應的小寫字母。
A
B
a
b
#include <stdio.h>int main(){char ch ;while ((ch = getchar()) != EOF){getchar();putchar(ch+32);printf("\n");}return 0;}
備注:多組輸入過程中要注意“回車”也是字母,是以要“吸收”(getchar())掉該字母。
不使用累計乘法的基礎上,通過移位運算(<<)實作2的n次方的計算。
多組輸入,每一行輸入整數n(0 <= n < 31)。
針對每組輸入輸出對應的2的n次方的結果。
2
10
4
1024
#include <stdio.h>int main(){int n=0;while(scanf("%d",&n)!=EOF){printf("%d\n",1<<n);}return 0;}
未完待續…