WRF-OOP 2023-06-09 09:40 采纳率: 41.7%
浏览 25
已结题

请问运行后,图中红框里为什么是随机值?

如图,这是一个输入信息、打印信息、比较信息的小程序,但是在最后运行的时候红框里部分输出是随机值,请问什么原因?

img


#include<stdio.h>
#include<stdlib.h>
struct student
{
    char name[50];
    int age;
    int score;
};
void setinfo(struct student *ws,int a )
{
    int i;
    for(i = 0;i < a;i++)
    {
        printf("请输入第%d个人信息\n",i+1);
        scanf("%s%d%d",ws[i].name,&ws[i].age,&ws[i].score);
    }
  }
void showinfo(struct student *p,int n)
{
    int i;
    for(i = 0;i < n;i++)
    {
        printf("name is %s\n age is %d\n score is %d\n ",p[i].name,p[i].age,p[i].score);
    }
}
void getmax(struct student*q,int c)
{
    int i,max=0;
    max = q[0].score;
    for(i = 1;i <c ;i++)
    {
        if(max < q[i].score)
        {
            max = q[i].score;
        }
    }
    printf("%s %d %d\n",q[i].name,q[i].age,q[i].score);
}
int main()
{
    int n;
    printf("请输入人数:\n");
    scanf("%d",&n);
    struct student *p = (struct student*)malloc(n*sizeof(struct student));
    setinfo(p,n);
//    getmax(p,n);
    showinfo(p,n);
    getmax(p,n);
        free(p);
    return 0;
}
  • 写回答

3条回答 默认 最新

  • 赵4老师 2023-06-09 09:48
    关注

    第38行,i已经是3了

    void getmax(struct student*q,int c)
    {
        int i,j,max=0;
        max = q[0].score;
        j=0;
        for(i = 1;i <c ;i++)
        {
            if(max < q[i].score)
            {
                max = q[i].score;
                j=i;
            }
        }
        printf("%s %d %d\n",q[j].name,q[j].age,q[j].score);
    }
    
    
    
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 12月5日
  • 修改了问题 6月9日
  • 创建了问题 6月9日