#include
int main(){
int n;
int sum=0;
double p;
int count=0;
scanf("%d\n",&n);
int a[n][n];
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
scanf("%d",&a[i][j]);
}scanf("\n");
}
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
sum+=a[i][j];
count ++;
}
}p=sum/count;
printf("%.1lf",p);
return 0;
}
基于Monster 组和GPT的调写:
你的代码实现基本正确,但有两个小问题:
如果想要输出小数点后一位,应该使用 "%.1f" 而不是 "%.1lf"。
在输入数据的时候,可以不用在每一行的末尾再输入一个换行符,因为 scanf 函数会自动跳过空白字符,包括换行符。
以下是修改后的代码:
#include <stdio.h>
int main() {
int n;
int sum = 0;
double avg;
int count = 0;
scanf("%d", &n);
int a[n][n];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
scanf("%d", &a[i][j]);
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
sum += a[i][j];
count++;
}
}
avg = (double) sum / count;
printf("%.1f", avg);
return 0;
}
21行有问题
p=sum/count;
由于sum和count都是int型,实际这个除法进行的是整除运算,得到的结果是没有小数部分的
改为
p = sum * 1.0/count;这样就会有小数了
该回答引用ChatGPT
试一下这个
#include <stdio.h>
int main() {
int n;
double sum = 0;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
double h;
scanf("%lf", &h);
sum += h;
}
}
printf("%.1f", sum / (n * n));
return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话: