名叫黑客的技术小白 2017-03-10 04:28 采纳率: 66.7%
浏览 951
已采纳

c语言结构体数组赋值新值但旧值还在

#include
#include
struct stu{
char name[20];

int num;

int age;

char group;

float score;

}stus[5] = {{"Zhou ping", 5, 18, 'C', 145.0},
{"Zhang ping", 4, 19, 'A', 130.5},
{"Liu fang", 1, 18, 'A', 148.5},
{"Wang ming", 3, 17, 'B', 144.5} } ;
int main ()
{

struct stu*p=stus;
int j;
char name[20];
int pjf ( struct stu w[],int i );
int charu ( struct stu a[3]);
int shang ( struct stu *a);
pjf (stus,5);
(p+4)[0]=(p+3)[0];
charu(stus);
printf(" \n");
for(j=0;j<5;j++)
{
printf("%s,%d,%d,%c,%7.2f\n",p[j].name,p[j].num,p[j].age,p[j].group,p[j].score);
}
printf(" \n");
shang (stus);
for(j=0;j<4;j++)
{
printf("%s,%d,%d,%c,%7.2f\n",p[j].name,p[j].num,p[j].age,p[j].group,p[j].score);

   }   

return 0;
}

int pjf ( struct stu w[],int i )
{
int sum=0;
for(i=0;i<5;i++)
{
sum+=w[i].score;
}
printf ("平均分是 %7.2f\n",sum/4.0);
return 0;
}

int charu ( struct stu a[3])
{
printf("请输入一条记录 姓名,学号,年龄,小组,成绩 (逗号隔开)\n");
scanf("%s,%d,%d,%c,%f",a[3].name,a[3].num,a[3].age,a[3].group,a[3].score);
return 0;
}

int shang ( struct stu *a)
{
(a+2)[0]=(a+3)[0];
(a+3)[0]=(a+4)[0];
return 0;
}

图片说明
圈出的就是问题所在,为什么原来的数值还在,跪求大神

  • 写回答

3条回答 默认 最新

  • KinoluKaslana 2017-03-10 07:17
    关注

    第一次看见解引这么玩的哈哈
    问题一:pjf这个函数的i的意义是什么,怎么在for的时候又给i重新赋了个值。
    问题二:初始化的时候只有4个元素,但是在pjf这个函数里面怎么访问到了第五个元素的位置,这个虽然是可以的,而且系统自动帮你初始化了。
    问题三:也就是最致命的,你在输入的时候只是把name那一项当作字符串了,期间没有制表符,所以此时你输入的所有东西都是name,不是其他的。
    之后还有一些其他地方的小问题,加油

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog