习题 4.8 给出一百分制成绩,要求输出成绩等级‘A’、‘B’、‘C’、‘D’、‘E’。90分以上为‘A’,80~89分为‘B’,70~79分为‘C’,60~69分为‘D’,60分以下为’E‘。

xiaoxiao2021-02-28  58

程序设计 (第四版) 谭浩强 习题4.8 个人设计

习题 4.8 给出一百分制成绩,要求输出成绩等级‘A’、‘B’、‘C’、‘D’、‘E’。90分以上为‘A’,80-89分为‘B’,70-79分为‘C’,60~69分为‘D’,60分以下为’E‘。

代码块

方法1:(利用switch选择结构)

#include <stdio.h> #include <stdlib.h> int main() { int score, g; scanf("%d", &score); while (score < 0 || score > 100){ printf("Error! Retry!\n"); scanf("%d", &score); } g = score / 10; if (g >= 9) printf("Grade is A!\n"); switch(g){ case 0: case 1: case 2: case 3: case 4: case 5: printf("Grade is E!\n"); break; case 6: printf("Grade is D!\n"); break; case 7: printf("Grade is C!\n"); break; case 8: printf("Grade is B!\n"); break; } system("pause"); return 0; }

方法2:(利用条件结构)

#include <stdio.h> #include <stdlib.h> int main() { int score; scanf("%d", &score); while (score < 0 || score >100){ printf("Error! Retry!\n"); scanf("%d", &score); } if (score < 60) printf("Grade is E!\n"); else if (score >= 60 && score < 70) printf("Grade is D!\n"); else if (score >= 70 && score < 80) printf("Grade is C!\n"); else if (score >=80 && score < 90) printf("Grade is B!\n"); else printf("Grade is A!\n"); system("pause"); return 0; }

方法3:(利用函数的模块化设计)

#include <stdio.h> #include <stdlib.h> void grade(); //定义等级函数 void input(); //定义输入函数 void function(double x); //定义分级判断函数 void error(); //定义出错函数 double score; //定义全局变量,分数 int main() { grade(); //调用等级函数 system("pause"); return 0; } //等级函数 void grade() { input(); //调用输入函数 function(score); //调用分级判断函数 } //输入函数 void input() { printf("Please enter score: "); scanf("%lf", &score); } //分级判断函数 void function(double x) { int n; n = x / 10; switch(n){ case 9: printf("Grade is A!\n"); break; case 8: printf("Grade is B!\n"); break; case 7: printf("Grade is C!\n"); break; case 6: printf("Grade is D!\n"); break; case 5: case 4: case 3: case 2: case 1: case 0: printf("Grade is E!\n"); break; //此处为了区别100.1至100.9也属于出错范围而设置 default: x == 100 ? printf("Grade is A!\n") : (error(), grade()); break; } } //出错函数 void error() { printf("Error! Retry!\n"); }

方法4:(动态分配内存)

#include <stdio.h> #include <stdlib.h> void input(double *s); void score_output(double *s); int main() { double *score=(double*)malloc(sizeof(double)); input(score); score_output(score); system("pause"); return 0; } void input(double *s) { printf("Enter score: "); scanf("%lf", s); } void score_output(double *s) { int grade=*s/10; switch(grade){ case 10: case 9: printf("A\n"); break; case 8: printf("B\n"); break; case 7: printf("C\n"); break; case 6: printf("D\n"); break; case 5: case 4: case 3: case 2: case 1: case 0: printf("E\n"); break; default: break; } }
转载请注明原文地址: https://www.6miu.com/read-47291.html

最新回复(0)