作业错误汇总
前言:
以下是近期部分作业中出现的问题汇总(包括本人学习中遇到的问题和被询问的问题)
PS:如果对你有帮助,就点个赞吧。随手点赞一次,运气增加一份。
问题 D: [正方形和三角形面积]
错误:混淆了输入输出
PS:printf函数和scanf函数输入输出格式上有些许不同,应注意辨别
改进后代码:
#include<stdio.h>
#include<math.h>
int main(void)
{
double edge, S, s, a;
scanf("%lf", &edge);
a = sqrt(3);
S = edge * edge;
s = a * edge * edge / 4;
printf("%.2f %.2f", S, s);
return 0;
}
问题 G: 学号识别 (简单解法)
错误:老师在网课上讲可以限定宽度输入,没讲解补零输出,许多人一知半解
PS:printf函数输出格式%02d表示限定宽度为2不足补0输出
改进后代码:
#include <stdio.h>
int main(void)
{
int a, b, c, d, e;
scanf("%2d%2d%2d%2d%2d", &a, &b, &c, &d, &e);
printf("Grade %02d,College %02d,Major %02d,Class %02d,Number %02d", a, b, c, d, e);
}
输出效果:
总结:
%f:不指定宽度,整数部分全部输出并输出6位小数。
%m.nf:输出共占m列,其中有n位小数,如数值宽度小于m左端补空格。
%-m.nf:输出共占n列,其中有n位小数,如数值宽度小于m右端补空格。
问题 E: 学分绩点 (函数判断)
错误:输入数据类型错误
PS:注意数据类型!!!!!
改进后代码:
#include<stdio.h>
float arr[] = { 4.0, 3.7, 3.3, 3.0, 2.7, 2.3, 2.0, 1.5, 1.0, 0 };
double GPA(int x, double y) {
if (x <= 100 && x >= 90)return y * arr[0];
else if (x <= 89 && x >= 85)return y * arr[1];
else if (x <= 84 && x >= 82)return y * arr[2];
else if (x <= 81 && x >= 78)return y * arr[3];
else if (x <= 77 && x >= 75)return y * arr[4];
else if (x <= 74 && x >= 71)return y * arr[5];
else if (x <= 70 && x >= 66)return y * arr[6];
else if (x <= 65 && x >= 62)return y * arr[7];
else if (x <= 61 && x >= 60)return y * arr[8];
else return y * arr[9];
}
int main()
{
float n;
int m;
scanf("%f %d", &n,&m);
printf("%.6lf", GPA(m, n));
return 0;
}
问题 I: 输出个位 (忽略负数)
错误:忽略负数
PS:注意调试多组数据!!!!!
改进后代码:
#include<stdio.h>
int main(void)
{
int n;
scanf("%d", &n);
if (n > 0) {
printf("%d", n % 10);
}
else {
n = n * -1;
printf("%d", n % 10);
}
return 0;
}
问题 I: 实验2-2:位数判断
多种解法汇总
1.while循环
#include<stdio.h>
int main(void)
{
long int x1;
scanf("%ld", &x1);
int b=0,x=0;
while (x1>9)
{
x1 = x1 / 10;
x++;
}
x++;
printf("%d\n", x);
return 0;
}
2.还是while循环@2205030213
#include<math.h>
#include <stdio.h>
int main()
{
int x;
scanf("%d", &x);
int sum = 0;
int j;
while (x > 0) {
int b = x % 10;
sum += b;
sum *= 10;
x /= 10;
}
sum /= 10;
for (j; sum > 0; j++) {
sum /= 10;
}
printf("%d", j);
return 0;
}