注册 登录
编程论坛 C++教室

简单问题求大神指正错误

fl8962 发布于 2012-10-27 20:07, 280 次点击
#include<stdio.h> 我是想求随意输入学生的个数,然后输入他们四门课的成绩,然后求出每个学生不及格的科目的个数。我运行结果不对,求指点。
#define max 10000
void main()
{
    int n,chengji[max][4],*p2;
    int(*p1)[4],i,term,j;
    printf("请输入学生个数");
    scanf("%d",&n);
    printf("请输入各个学生这四门课的成绩");
    p2=*chengji;
    for(;*p2!='\n';p2++)
    {scanf("%d",p2);
    }
    printf("\n");
    p1=chengji;
    for(i=0;i<n;i++)
    {    term=0;
        for(j=0;j<4;j++)
        {
            if(*(*(p1+i)+j)<60)
                term=term+1;
        }
        printf("第%d学生的不及格数目为%d",i+1,term);   
    }
}
4 回复
#2
stuniversity2012-10-27 20:49
回复 楼主 fl8962
我把你输入部分的代码更改如下就没问题了:
#include<stdio.h>
#define max 100
void main()
{
    int n,chengji[max][4],*p2;
    int (*p1)[4],i,term,j;
    printf("请输入学生个数:");
    scanf("%d",&n);
    printf("请输入各个学生这四门课的成绩:");
    p2=*chengji;
    for(i=0;i<(4*n);p2++,i++)
    {
        scanf("%d",p2);
    }
    printf("\n");
    p1=chengji;
    for(i=0;i<n;i++)
    {   
        term=0;
        for(j=0;j<4;j++)
        {
            if(*(*(p1+i)+j)<60)
            term=term+1;
        }
        printf("第%d学生的不及格数目为%d\n",i+1,term);   
    }
}
你的这个代码 for(;*p2!='\n';p2++) 有问题,因为*p2是整数,而且没有赋初值,大小不确定,而‘\n’在ascII码中数值等于10,所以相当
for(;*p2!=10;p2++)
#3
zxd5432012-10-27 20:54
指针是一个麻烦的数据类型
能不用尽量不要用
这种小程序最好不要用指针写
#4
小小小火柴2012-10-28 14:32
   同意三楼!为什么有简单的算法不用,反而要去使用指针呢?
#5
w5277050902012-10-30 16:02
我也觉得指针是很蛋疼的玩意。。。
1