回 帖 发 新 帖 刷新版面

主题:一段程序的报警,请教好心人

以下程序完成三门课程的成绩输入,求平均分输出。
编译时没问题,但运行时报警,报警见附件。
请好心人指出原因所在。谢谢!!!

//求三门课程的平均分
#include <iostream.h>
#include<iomanip.h>
#include<string.h>
void get_score(double *,double *,double *);
int subject_number=1;
char *subject;
int main()
{
    double a,b,c,d;
    while (subject_number<4&&subject_number>0)
    {
              get_score(&a,&b,&c);
       subject_number++;
       d=(a+b+c)/3;
       cout<<subject<<"平均成绩是"<<d<<endl;
    }
    return 0;
}
void get_score(double *a,double *b,double *c)
{   
          switch(subject_number)
          {
           case 1:
                  strcpy(subject,"语文");
           break;
           case 2:
                strcpy(subject,"数学");
               break;
       case 3:
               strcpy(subject,"英语");
               break;

           default:
               cout<<"没有该门课";
        }
        cout<<"请输入"<<subject<<"成绩"<<endl;
        cin>>*a>>*b>>*c;
}

回复列表 (共3个回复)

沙发

char *subject; 这是指针类型,要操作如strcpy(subject,"英语"); 时要先申请空间.而且定义时最好初始化.不知道你是不是要同时操作多个..大致改了下你的程序如下,可以参考下.
#include <iostream.h>
#include<iomanip.h>
#include<string.h>

void get_score(double *,double *,double *);
int subject_number=1;
char subject[20];

int main()
{
    double a,b,c,d;
    get_score(&a,&b,&c);
    //subject_number++;
    d=(a+b+c)/3;
    cout<<"平均成绩是"<<d<<endl;
    return 0;
}
void get_score(double *a,double *b,double *c)
{   
    switch(subject_number)
    {
    case 1:
        strcpy(subject,"语文");
        cout<<"请输入"<<subject<<"成绩"<<endl;
        cin>>*a;
    case 2:
        strcpy(subject,"数学");
        cout<<"请输入"<<subject<<"成绩"<<endl;
        cin>>*b;
    case 3:
        strcpy(subject,"英语");
        cout<<"请输入"<<subject<<"成绩"<<endl;
        cin>>*c;
        break;
    default:
        cout<<"没有该门课";
        break;
    }
}

板凳

char *subject;
subject没分配内存空间

3 楼


 我们在定义一个指针变量的时候,建议先给指针变量初始化
在这个地方出现的是一个常见的问题,subject没有初始化

我来回复

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