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

我写的程序就是有错误,各位看看吧

冰点小爱 发布于 2010-05-26 15:45, 659 次点击
输入学生信息,用动态数组表示。然后查找输出信息。
#include<iostream.h>
#include<string.h>
struct student
{
    char no[10];
    char name[20];
    double maths;
};
void input(student *s,int n)
{
    for(int i=0;i<n;i++)
    {
        cout<<"请输入学生学号:";
        cin>>s[i].no;
        cout<<"请输入学生姓名:";
        cin>>s[i].name;
        cout<<"请输入学生成绩:";
        cin>>s[i].maths;
    }
}
void find(student *s,int n,char p[])
{
    for(int i;i<n;i++)
    {
        if(!strcmp(s[i],p[])==0)
        cout<<"学生学号:";
        cout<<s[i].no;
        cout<<"学生姓名:";
        cout<<s[i].name;
        cout<<"学生成绩:";
        cout<<s[i].maths<<endl;
    }
}
void main()
{
    int i;
    char num[10];
    cout<<"请输入学生人数:";
    cin>>i;
    student *stu=new student[i];
    input(stu,i);
    cout<<"请输入要查找的学号:";
    cin>>num;
    find(stu,i,num);
}
6 回复
#2
冰点小爱2010-05-26 15:59
怎么就没人帮着改一下呢。
#3
冰点小爱2010-05-26 16:14
#include<iostream.h>
#include<string.h>
struct student
{
    char no[10];
    char name[20];
    double maths;
};
void input(student *s,int n)
{
    for(int i=0;i<n;i++)
    {
        cout<<"请输入学生学号:";
        cin>>s[i].no;
        cout<<"请输入学生姓名:";
        cin>>s[i].name;
        cout<<"请输入学生成绩:";
        cin>>s[i].maths;
    }
}
void find(student *s,int n,char *p)
{
    for(int i;i<n;i++)
    {
        if(!strcmp(s[i].no,p))
        cout<<"学生学号:"<<endl;
        cout<<s[i].no;
        cout<<"学生姓名:"<<endl;
        cout<<s[i].name;
        cout<<"学生成绩:";
        cout<<s[i].maths<<endl;
    }
}
void main()
{
    int i;
    char num[10];
    cout<<"请输入学生人数:";
    cin>>i;
    student *stu=new student[i];
    input(stu,i);
    cout<<"请输入要查找的学号:";
    cin>>num;
    find(stu,i,num);
}
改完之后的,编译通过,运行错误
#4
南国利剑2010-05-26 16:24
有几个小问题,我把改好的代码贴出来,你看看。希望对你有帮助!
程序代码:
#include"stdafx.h"
#include<iostream.h>
#include<string.h>
struct student
{
    char no[10];
    char name[20];
    double maths;
};
void input(student *s,int n)
{
    for(int i=0;i<n;i++)
    {
        cout<<"请输入学生学号:";
        cin>>s[i].no;
        cout<<"请输入学生姓名:";
        cin>>s[i].name;
        cout<<"请输入学生成绩:";
        cin>>s[i].maths;
    }
}
void find(student *s,int n,char *p)
{
    for(int i=0;i<n;i++)//这句有修改,自己对照看一下,你的i没有初始化
    {
        if(!strcmp(s[i].no,p))//这句有修改,注意对照看看
        {//这个花括号要加上去
            cout<<"学生学号:";
            cout<<s[i].no;
            cout<<"学生姓名:";
            cout<<s[i].name;
            cout<<"学生成绩:";
            cout<<s[i].maths<<endl;
            return ;
        }
    }
}
void main()
{
    int i;
    char num[10];
    cout<<"请输入学生人数:";
    cin>>i;
    student *stu=new student[i];
    input(stu,i);
    cout<<"请输入要查找的学号:";
    cin>>num;
    find(stu,i,num);
    delete[] stu;//加上这句。

}



 
#5
冰点小爱2010-05-26 16:28
回复 4楼 南国利剑
谢谢你呀,我查到这个错误了。不过很感谢你呀。
#6
流氓之父2010-05-26 17:23
路过
#7
流氓之父2010-05-26 17:33
回复 4楼 南国利剑
请输入学生人数:2
请输入学生学号:1
请输入学生姓名:WE
请输入学生成绩:78
请输入学生学号:2
请输入学生姓名:FG
请输入学生成绩:89
请输入要查找的学号:2
学生姓名:
学生成绩:-6.27744e+066
屯WE学生姓名:
屯屯屯屯屯屯屯学生成绩:-6.27744e+066
屯FG学生姓名:
屯屯屯屯屯屯屯学生成绩:2.10535e-314
学生姓名:
学生成绩:0
学生姓名:
学生成绩:0
Press any key to continue
执行结果如上
为什么有错呢,请教一下!
1