回 帖 发 新 帖 刷新版面

主题:为什么我的程序提前跳出循环

#include<stdio.h>
#include<malloc.h>

struct Student
{
    int age;
    float score;
    char name[100];
    
};
int main(void)
{
    int len;
    int i;
    struct Student *pArr;
    
    printf("&#199;&#235;ê&#228;è&#235;&#209;§éúμ&#196;&#184;&#246;êy£o\n");
    printf("len  = ");
    scanf("%d", &len);
    
    pArr = (struct Student *)malloc(len * sizeof(struct Student));
    
    for(i = 0; i < len; ++i)
    {
        printf("&#199;&#235;ê&#228;è&#235;μú%d&#184;&#246;&#209;§éúD&#197;&#207;¢", i+1);
        printf("age = ");
        scanf("%d",&pArr[i].age);
        
        printf("score = ");
        scanf("%f", &pArr[i].score);
        
        printf("name = ");
        scanf("%s",pArr[i].name);
    }
    
    return 0;
}

在windows7 32位运行结果如下:

请输入学生的个数:
len  = 3
请输入第1个学生信息age = 1
score = 2
name = 3
请输入第2个学生信息age = 1
score = 2
name = 3
请输入第3个学生信息age = score = name = 请按任意键继续. . .



我想提问,为什么第三个学生信息不能输入????


回复列表 (共3个回复)

沙发

把++i换成i++;

板凳

#include<stdio.h>
#include<malloc.h>

struct Student
{
    int age;
    float score;
    char name[100];

};
int main(void)
{
    int len;
    int i;
    struct Student *pArr;

    printf("请输入学生的个数:\n");
    printf("len  = ");
    scanf("%d", &len);

    pArr = (struct Student *)malloc((len+1) * sizeof(struct Student));//[color=000080]多分配一个空间就可[/color]
    for(i = 0; i < len; ++i)
    {
        printf("请输入第%d个学生信息\n", i+1);
        printf("age = ");
        scanf("%d",&pArr[i].age);

        printf("score = ");
        scanf("%f", &pArr[i].score);

        printf("name = ");
        scanf("%s",pArr[i].name);
    }

    return 0;
}

3 楼


在循环里,不是先制行循环体吗?那i++和i--的作用应该一样啊

我来回复

您尚未登录,请登录后再回复。点此登录或注册