#include<stdio.h> #include<string> struct player{ char name[30]; int num; int cha; }; int main(){ static int orc=0; int n; scanf("%d",&n); int total=0; int average; struct player a[1000]; for(int i=0;i<n;i++){ scanf("%s",&a[i].name); scanf("%d",&a[i].num); total+=a[i].num; } average=(total/n)/2; for(int i=0;i<n;i++){ a[i].cha=a[i].num-average; if(a[i].cha<0){ a[i].cha=-a[i].cha; } } for(int i=0;i<n;i++){ printf("%d %s\n",a[i].cha,a[i].name); } for(int i=0;i<n;i++){ a[n].cha=a[0].cha; if(a[n].cha>a[i].cha){ a[n].cha=a[i].cha; orc=i; } } printf("%d %s\n",average,a[orc].name); }我的代码为啥运行不出正常的结果
时间: 2024-04-15 19:24:55 浏览: 119
您的代码有一些问题,导致结果不正确,具体有以下几点需要注意:
1. 结构体数组的声明应该使用`std::string`而不是`char[]`来存储名称。所以将`name`字段从`char name[30]`改为`std::string name`。
2. 在使用`scanf`读取字符串时,不需要使用`&`符号。所以将`scanf("%s", &a[i].name)`改为`scanf("%s", a[i].name)`。
3. 求平均值时,应该将`total / n`的结果除以2而不是乘以2。所以将`average = (total / n) / 2`改为`average = total / (2 * n)`。
4. 在查找差值最小的元素时,错误地将`a[n].cha = a[0].cha`放在了循环内部。应该将其放在循环外部,并且将循环条件改为`i < n`而不是`i <= n`。
5. 在打印结果时,差值应该是绝对值,所以将`printf("%d %s\n", a[i].cha, a[i].name)`改为`printf("%d %s\n", abs(a[i].cha), a[i].name)`。
请根据上述修改建议进行代码调整,应该能够得到正确的结果。如果还有其他问题,请提供更详细的描述。
相关问题
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> #include "添加药品.cpp" struct medicine { char name[20]; char number[50]; char price[50]; char type[10]; char inventory[50]; char brand[20]; char time[60]; char remark[30]; }medicines[100]; int num; int main(void) { int selectnum;add_medicine(); }int add_medicine() { printf("输入要保存的药品信息\n"); printf("输入药品名称\n"); scanf("%s",medicines[num].name); printf("输入药品编号\n"); scanf("%s",medicines[num].number); printf("输入药品单价\n"); return 0; } 帮我将这串代码分成两个cpp文件,一个主文件,一个子文件
主文件(main.cpp):
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include "medicine.h"
struct medicine medicines[100];
int num;
int main(void) {
int selectnum;
add_medicine();
return 0;
}
子文件(medicine.cpp):
#include "medicine.h"
#include <stdio.h>
int add_medicine() {
printf("输入要保存的药品信息\n");
printf("输入药品名称\n");
scanf("%s",medicines[num].name);
printf("输入药品编号\n");
scanf("%s",medicines[num].number);
printf("输入药品单价\n");
return 0;
}
头文件(medicine.h):
#ifndef MEDICINE_H
#define MEDICINE_H
struct medicine {
char name[20];
char number[50];
char price[50];
char type[10];
char inventory[50];
char brand[20];
char time[60];
char remark[30];
};
int add_medicine();
#endif
阅读全文