1.
请写一段程序来判断表达式是否相等。
输入格式:
只有一行,为三个用空格分隔的浮点数a,b,c(0<a,b,c<100)。
输出格式:
也只有一行,如果 a - b 等于c ,则输出yes,否则输出no。
1 //原答案,未满分 2 int main(void) { 3 double a, b, c; 4 5 scanf("%f %f %f", &a, &b, &c); 6 7 if(fabs(a - b-c) <= 1.0E-100) { 8 printf("yes"); 9 } else { 10 printf("no"); 11 } 12 return 0; 13 }
//修正,参考了https://fishc.com.cn/thread-234152-1-1.html #include <stdio.h> int main() { float a, b, c; scanf("%f %f %f", &a, &b, &c); int x = a * 100 + 0.5; int y = b * 100 + 0.5; int z = c * 100 + 0.5; if (x - y == z) { printf("yes"); } else { printf("no"); } return 0; }
2.
写一程序,按要求输出。
输入格式:
为三行,第一行为整数a、第二行为字符c、第三行为整数b。(0<a,b<100000)。
输出格式:
共四行。
第一行依次输出a,b,c,三个值之间用一个空格分隔;
第二依次输出a+b,a-b,a*b,a/b,a%b的值,每个值之间用一个空格分隔;
第三行输出a和b的比率(浮点数,精确到小数点后两位);
第四行输出a和b的百分比率(浮点数,精确到小数点后两位)。具体格式见输出样例。
1 //原答案 2 #include <stdio.h> 3 4 int main() { 5 int a, b; 6 char c; 7 scanf("%d\n%c\n%d", &a, &c, &b); 8 printf("%d %d %c\n", a, b, c); 9 printf("%d %d %d %d %d\n", a + b, a - b, a * b, a / b, a % b); 10 printf("The ratio of %d versus %d is %.2f.\n", a, b, (float)a / (float)b); 11 printf("The ratio of %d / %d is %.2f%%.", a, b, (float)a * 100 / (float)b); 12 return 0; 13 }
1 //修正后 2 #include <stdio.h> 3 int main() 4 { 5 long int a,b; 6 char c; 7 float ans; 8 scanf("%ld %c %ld",&a,&c,&b); 9 ans=(float)a/b; 10 printf("%ld %ld %c\n",a,b,c); 11 printf("%ld %ld %ld %d %d\n",a+b,a-b,a*b,a/b,a%b); 12 printf("The ratio of %ld versus %ld is %.2f.\n",a,b,ans); 13 14 printf("The ratio of %ld / %ld is %.2f%%.\n",a,b,ans*100); 15 return 0; 16 }
gpt:原始代码中使用了int
类型来存储输入的整数,并且使用了%d
来格式化输出。修正后的代码中,将int
改为了long int
以增加数据范围,同时也修复了输入的格式问题(移除了多余的换行符)。在输出方面,修正后的代码使用了%ld
来格式化长整数,并且计算并保存了浮点数结果,用于精确计算比例和百分比。
总之,修正后的代码更准确地处理输入和输出,并提供了更大范围的整数支持和精确的浮点数计算。
3.
某门课规定总成绩由两部分组成,即平时成绩和期末考试成绩,这两部分成绩的比例为a:b,假设a为3,b为7,则意味着在总成绩中平时成绩占30%,期末考试成绩占70%。
现在请你写一段程序来计算一下,某位同学是否及格。
输入格式:
为4个用空格分隔的整数,依次代表两种成绩所占比例a,b 以及平时成绩,期末考试成绩。注意:测试用例不保证a+b一定等于10。
输出格式:
为两行,第一行为该同学的总成绩(保留1位小数),
第二行,如果该同学总成绩及格(大于等于60),则输出pass,否则输出fail。
测试用例保证合法,且整数可以用int存储,小数可以用float存储。
1 //原答案 2 #include <stdio.h> 3 4 int main(void) { 5 int a, b, regular_score, final_score; 6 float total_score; 7 8 scanf("%d %d %d %d", &a, &b, ®ular_score, &final_score); 9 10 total_score = (a * regular_score + b * final_score) / 10.0; 11 12 printf("%.1f\n", total_score); 13 14 if (total_score >= 60) { 15 printf("pass"); 16 } else { 17 printf("fail"); 18 } 19 20 return 0; 21 }
1 //修正后 2 #include <stdio.h> 3 4 int main() { 5 int a, b, score1, score2; 6 float totalScore; 7 8 // 输入两种成绩所占比例a和b,以及平时成绩和期末考试成绩 9 scanf("%d %d %d %d", &a, &b, &score1, &score2); 10 11 // 计算总成绩 12 totalScore = (float)(a * score1 + b * score2) / (a + b); 13 14 // 输出总成绩 15 printf("%.1f\n", totalScore); 16 17 // 判断是否及格并输出结果 18 if(totalScore >= 60) { 19 printf("pass\n"); 20 } else { 21 printf("fail\n"); 22 } 23 24 return 0; 25 }
标签:输出,ld,oj,int,三道,float,C语言,score,printf From: https://www.cnblogs.com/WCMS-XDU688/p/17802835.html