皆编译通过,但可能存在些遗漏,仅供参考
其余章节还没有学习,持续稳定缓慢更新中..
5.1
#include <stdio.h> int main (void) { int num = 0; int dig = -1; // 初始化-1便于发现错误 printf ("Enter a number: "); scanf ("%d", &num); if (num < 0) { //题目并没有说如果输入是负数或五位数会怎么样,所以不更多考虑了 }else if (num < 10) { dig = 1; }else if (num < 100) { dig = 2; }else if (num < 1000) { dig = 3; }else if (num < 10000) { dig = 4; } printf ("The number %d has %d digits", num, dig); return 0; }
ps:加个 i f 即可判断输入是否合法,懒得加了
5.2
#include <stdio.h> int main (void) { int hour, hour1, min; printf ("Enter a 24-hour time: "); scanf ("%d:%d", &hour, &min); printf ("Equivalent 12-hour time: "); if (hour > 12) { hour1 = hour - 12; printf ("%d:%.2d", hour1, min); } else { printf ("%d:%.2d", hour, min); } switch (hour) { case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: case 10: case 11: case 12: printf ("AM"); break; default: printf ("PM"); break; } return 0; }
ps: 这题感觉写麻烦了,所以附上官方版
5.3
#include <stdio.h> int main (void) { int num; float price, value, commission1, commission2; printf ("输入购股数量:"); scanf ("%d", &num); printf ("输入每股单价:"); scanf ("%f", &price); value = num * price; //自己 if (value < 2500.0f){ commission1 = 30.0f + 0.017f * value; } else if (value < 6250.0f) { commission1 = 56.0f + 0.0066f * value; } else if (value < 20000.0f) { commission1 = 76.0f + 0.0034f * value; } else if (value < 50000.0f) { commission1 = 100.0f + 0.0022f * value; } else if (value < 500000.0f) { commission1 = 155.0f + 0.0011f * value; } else { commission1 = 255.0f + 0.0009f * value; } if (commission1 < 39) commission1 = 39; //竞争对手 if (num < 2000){ commission2 = 33.03f * num; } else { commission2 = 33.02f * num; } printf("你的佣金是: $%.2f ,竞争对手的佣金是: $%.2f", commission1, commission2); return 0; }
5.4
#include <stdio.h> int main (void) { int speed; printf ("Input the speed:"); scanf ("%d", &speed); printf ("GRADE: "); if (speed < 1){ printf ("Clam"); } else if (speed <= 3) { printf ("Light air"); } else if (speed <= 27){ printf ("Breeze"); } else if (speed <= 47){ printf ("Gale"); } else if (speed <= 63){ printf ("Storm"); } else printf ("Hurricane"); return 0; }
5.5
#include <stdio.h> int main (void) { float income, tax; printf ("Enter the income value: "); scanf ("%f", &income); if (income < 750.0f) { tax = income * 0.01; } else if (income < 2250.0f) { tax = 7.5f + (income - 750.0f) * 0.02; } else if (income < 3750.0f) { tax = 37.5f + (income - 2250.0f) * 0.03; } else if (income < 5250.0f) { tax = 82.5f + (income - 3750.0f) * 0.04; } else if (income < 7000.0f) { tax = 142.5f + (income - 5250.0f) * 0.05; } else tax = 230.0f + (income - 7000.0f) * 0.06; printf ("The tax to be paid is %.4f", tax); return 0; }
5.6
#include <stdio.h> int main (void) { int d, i1, i2, i3, i4, i5, j1, j2, j3, j4, j5, c; int first_sum, second_sum, total; int check; printf ("Enter the 12 digits of a UPC: "); scanf ("%1d%1d%1d%1d%1d%1d%1d%1d%1d%1d%1d%1d",&d, &i1, &i2, &i3, &i4, &i5, &j1, &j2, &j3, &j4, &j5, &c); first_sum = d + i2 + i4 + j1 + j3 + j5; second_sum = i1 + i3 + i5 + j2 + j4; total = 3 * first_sum + second_sum; check = 9 - ((total - 1) % 10); if (check == c) printf ("VALID"); else printf ("NOT VALID"); return 0; }
5.7
#include <stdio.h> int main (void) { int a, b, c, d; int min1, min2, max1, max2; printf ("Enter four integers: "); scanf ("%d%d%d%d", &a, &b, &c, &d); if (a < b) { min1 = a; max1 = b; } else { min1 = b; max1 = a; } if (c < d) { min2 = c; max2 = d; } else { min2 = d; max2 = c; } if (min1 > min2) min1 = min2; if (max1 < max2) max1 = max2; printf ("Largest: %d\n", max1); printf ("Smallest: %d", min1); return 0; }
5.8
#include <stdio.h> int main (void) { int hours, minutes; int time; printf ("Enter a 24-hour time:"); scanf ("%d:%d", &hours, &minutes); time = hours * 60 + minutes; // 480 583 679 767 840 945 1140 1305 这是几个起飞时间换算为分钟的结果 if (time < 480){ printf ("Closest departure time is 8:00 a.m., arriving at 10:16 a.m."); } else if (time < 583) { if ((time-480) < (583-time)) printf ("Closest departure time is 8:00 a.m., arriving at 10:16 a.m."); else printf ("Closest departure time is 9:43 a.m., arriving at 11:52 a.m."); } else if (time < 679) { if ((time-583) < (679-time)) printf ("Closest departure time is 9:43 a.m., arriving at 11:52 a.m."); else printf ("Closest departure time is 11:19 a.m., arriving at 1:31 p.m"); } else if (time < 767) { if ((time-679) < (767-time)) printf ("Closest departure time is 11:19 a.m., arriving at 1:31 p.m."); else printf ("Closest departure time is 12:47 a.m., arriving at 3:00 p.m"); } else if (time < 840) { if ((time-767) < (840-time)) printf ("Closest departure time is 12:47 a.m., arriving at 3:00 p.m."); else printf ("Closest departure time is 2:00 p.m., arriving at 4:08 p.m."); } else if (time < 945) { if ((time-840) < (945-time)) printf ("Closest departure time is 2:00 p.m., arriving at 4:08 p.m."); else printf ("Closest departure time is 3:45 p.m., arriving at 5:55 p.m."); } else if (time < 1140) { if ((time-945) < (1140-time)) printf ("Closest departure time is 3:45 p.m., arriving at 5:55 p.m."); else printf ("Closest departure time is 7:00 p.m., arriving at 9:20 p.m."); } else { if ((time-1140) < (1305-time)) printf ("Closest departure time is 7:00 p.m., arriving at 9:20 p.m."); else printf ("Closest departure time is 9:45 p.m., arriving at 11:58 p.m."); } return 0; }
5.9
#include <stdio.h> // 根据题目, 这道题输入的年份需要在同一个世纪, 否则会出错 int main (void) { int day1, month1, year1; int day2, month2, year2; printf ("Enter first date (mm/dd/yy): "); scanf ("%d/%d/%d", &month1, &day1, &year1); printf ("Enter second date (mm/dd/yy): "); scanf ("%d/%d/%d", &month2, &day2, &year2); if (year1 < year2) { printf ("%d/%d/%.2d is earlier than %d/%d/%.2d", month1, day1, year1, month2, day2, year2); } else if (year1 == year2) { if (month1 < month2) { printf ("%d/%d/%.2d is earlier than %d/%d/%.2d", month1, day1, year1, month2, day2, year2); } else if (month1 == month2) { if (day1 < day2) { printf ("%d/%d/%.2d is earlier than %d/%d/%.2d", month1, day1, year1, month2, day2, year2); } else if (day1 == day2) { printf ("%d/%d/%.2d is equal than %d/%d/%.2d", month1, day1, year1, month2, day2, year2); } else { printf ("%d/%d/%.2d is earlier than %d/%d/%.2d", month2, day2, year2, month1, day1, year1); } } else { printf ("%d/%d/%.2d is earlier than %d/%d/%.2d", month2, day2, year2, month1, day1, year1); } } else { printf ("%d/%d/%.2d is earlier than %d/%d/%.2d", month2, day2, year2, month1, day1, year1); } return 0; }
5.10 以下两道题就加入了输入数据是否合法的判断
#include <stdio.h> int main (void) { int num; printf ("Enter numerical grade: "); scanf ("%d", &num); if (num < 0 || num >100) { printf ("Illegal input!"); return 0; } switch (num/10) { case 10: case 9 : printf ("Lstter grade: A"); break; case 8 : printf ("Lstter grade: B"); break; case 7 : printf ("Lstter grade: C"); break; case 6 : printf ("Lstter grade: D"); break; default : printf ("Lstter grade: F"); break; } return 0; }
5.11
#include <stdio.h> int main (void) { int num; printf ("Enter a two-digit number: "); scanf ("%d", &num); if (num < 10 || num > 99) { printf ("Illegal input!"); return 0; } printf("You entered the number "); switch (num / 10) { case 9: printf ("ninety"); break; case 8: printf ("eighty"); break; case 7: printf ("seventy"); break; case 6: printf ("sixty"); break; case 5: printf ("fifty"); break; case 4: printf ("fourty"); break; case 3: printf ("thirty"); break; case 2: printf ("twenty"); break; case 1: switch (num % 10) { case 0: printf ("ten"); break; case 1: printf ("eleven"); break; case 2: printf ("twelve"); break; case 3: printf ("thirteen"); break; case 4: printf ("fourteen"); break; case 5: printf ("fifteen"); break; case 6: printf ("sixteen"); break; case 7: printf ("seventeen"); break; case 8: printf ("eighteen"); break; case 9: printf ("nineteen"); break; } return 0; } switch (num % 10) { case 9: printf ("-nine"); break; case 8: printf ("-eight"); break; case 7: printf ("-seven"); break; case 6: printf ("-six"); break; case 5: printf ("-five"); break; case 4: printf ("-four"); break; case 3: printf ("-three"); break; case 2: printf ("-two"); break; case 1: printf ("-one"); break; case 0: break; } return 0; }