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

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 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)