《C程式設計快速進階大學教程》第六章程式設計題
阿新 • • 發佈:2018-11-05
1.輸入一個5位整數,將每位的資料進行分離,要求逆序輸出對應的數,即分別按照字元型輸出個位、十位、百位、千位以及萬位上的整數。例如,輸入12345,輸出5-4-3-2-1。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int R;
int z[5];
printf("輸入一個5位整數:");
scanf("%d",&R);
int i;
for(i=0;i<5;i++){
z[i] = R%10;
R = R/10;
}
int j;
for(j=0;j<5;j++){
printf("%d ",z[j]);
}
return 0;
}
2.輸入三角形的三個邊長,計算最大角的正弦值及三角形面積。
注意對輸入資料有效性的檢測及三角形邊長合理性的判斷。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
float a,b,c;
printf("請輸入三角形三邊邊長:(請從大到小輸入)\n" );
scanf("%f %f %f",&a,&b,&c);
//判斷邊長是否合理
if(a+b>c && a+c>b && b+c>a && a>b-c && b>a-c && c>a-b){
//計算面積
float p = (a+b+c)/2;
float S = sqrt(p*(p-a)*(p-b)*(p-c));
printf("三角形的面積為:%f \n",S);
//計算正弦
float cosA = (b*b+c*c-a*a)/(2*b*c);
float sinA = sqrt(1-cosA*cosA);
printf("最大角的正弦為: %f \n",sinA);
}
else{
printf("輸入的三邊邊長無法構成三角形");
}
return 0;
}
3.編寫程式預測斷電後冰箱的溫度。斷電後經過一段時間,溫度保持情況由如下公式決定:
其中,t為斷電後經過的時間(小時),T為溫度(℃)。經過若干小時候冰箱溫度接近室溫並保持不變. 假設室溫為18℃. 程式提示使用者輸入時間,它以整數小時和分鐘表示,需要將其轉換為浮點型的小時數。輸出此時的溫度值(小數點後2位有效數字)。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
float T;//溫度
float t;//時間
int h,m;
printf("請輸入時間:(時:分)");
scanf("%d : %d",&h,&m);
t = h + (float)m/60;
// printf("%f",t);
T = 4*t*t/(t+2) - 20;
if( T >= 18 ){
printf("冰箱此時的溫度值:18");//室溫
}else{
printf("冰箱此時的溫度值:%.2f \n",T);
}
return 0;
}
4.程式設計計算汽車的平均速度
汽車在高速公路上勻速行駛。沿途都有距離上路地點的里程標誌,已知開始和結束的里程,分別輸入上路時間和下路時間(時、分、秒),假設汽車上路和下路的時間在同一天。計算汽車在該段形式的平均速度,並以“公里數/每小時”的形式輸出平均速度。程式的執行介面如所示。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int startL,endL;//開始里程和結束里程
int startH,startM,startS;//開始時間
int endH,endM,endS;//結束時間
printf("所有輸入都為整數\n");
printf("開始里程?\n");
scanf("%d",&startL);
printf("開始時間:(時 分 秒)\n");
scanf("%d %d %d",&startH,&startM,&startS);
printf("結束里程?\n");
scanf("%d",&endL);
printf("結束時間:(時 分 秒)\n");
scanf("%d %d %d",&endH,&endM,&endS);
float startT,endT,T;
int H,M,S;
float v;
startT = startH + (float)startM/60 + (float)startS/60/60;
endT = endH + (float)endM/60 + (float)endS/60/60;
T = endT - startT;
printf("%f %f %f ...\n",startT,endT,T);
int sT,eT;
sT = startS + startM*60 + startH*60*60;
eT = endS + endM*60 + endH*60*60;
H = (eT-sT)/60/60;
M = (eT-sT)/60 - H*60;
S = (eT-sT) - H*3600 -M*60;
v = (endL - startL)/T;
printf("一共行駛了 %d 公里。\n",endL-startL);
printf("一共花了 %d 小時 %d 分 %d 秒 \n",H,M,S);
printf("速度為:%.4f 公里/小時 \n",v);
return 0;
}