问题X: 关于近期实验作业的错误汇总


前言:
以下是近期部分作业中出现的问题汇总(包括本人学习中遇到的问题和被询问的问题)
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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西湖西的冰糖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值