题目:现有N名销售人员,每名销售人员的工资由基本工资与绩效组成,其中绩效为当月成功订单金额中抽成10%,现给出每名销售人员的基本情况,输出每名销售人员的姓名与工资情况。
Input
第一行输入一个N,代表统计了N个销售人员的数据(1<=N<=100)
接下来N行每行输入:姓名(name) 基本工资(wage)成功订单金额(order_amount)
name长度不超过20,仅由英文字母组成
0≤wage≤20000,单位为元,为整数
0≤order_amount≤1000,单位为万元,为整数
Output
输出N行,每行包括销售人员名称和工资情况(单位为元)
Sample Input
Raw
4
RYY 12000 10
LYY 9000 32
QMC 8000 23
ZXD 15000 32
Sample Output
Raw
RYY 22000
LYY 41000
QMC 31000
ZXD 47000
#include
#include
#include
int main()
{
int N,i;
scanf("%d",&N);
struct student
{
char a[20];
int b,c,d;
} stu[N];
for(i=0; iscanf("%s %d %d",stu[i].a,&stu[i].b,&stu[i].c);
stu[i].d=stu[i].c*1000+stu[i].b;
}
printf("\n");
for(i=0; iprintf("%s %d\n",stu[i].a,stu[i].d);
}
return 0;
}
为啥第五行输出会多出来字母?能不能提供一下解决办法或者代码,尝试过扩大数组的容量和对数组内赋值让其成为空数组,输出还是这个东西,
有没有人发一下完整的解决题目的代码
建议把数组改大一点,因为在字符串输出的时候以‘/0’结尾,你输入20个字符把a[20]数组完全占用后,'\0'没有地方储存,输出的时候就会一直向后输出,直到遇到'\0'才会结束,这个时候就会输出超过20个字符,多的字符就是乱码.
a[20]太小了,改大点
字符串以\0结尾,数组长度20,那么字符串最大只能19,你输入了20,导致结尾的0没地方存了,访问的时候就可能会越界