写个C++程序,但是字符数组的值输出的是乱码什么情况??

2025-02-25 14:52:13
推荐回答(4个)
回答1:

你的代码有很多漏洞,很不规范
改成这样就行了:
#include //头文件的写法不对
#include
using namespace std;//有时候会用到,最好写上
typedef struct
{
int course_num;
char course_name[200];
float course_score;
}course;

void input(course *cour,int i)
{
int j;
for(j=0;j {cout<<"请输入第"< cin>>cour[j].course_num;
cin>>cour[j].course_name;//这里是错误的主要地方,注意输入字符串的格式
cin>>cour[j].course_score;
}
}

void output(course *cour,int i)
{
int j;
for(j=0;j {
cout<<"第"< cout< cout< cout< }
}
int main()
{
//这里有没有意义的定义
course c[10];
input(c,10);
output(c,10);
}

回答2:

楼主注意字符数组的输入,cin>>字符数组的地址。改过来就没问题了
void input(course *cour,int i)
{
 int j;
 for(j=0;j {cout<<"请输入第"<  cin>>cour[j].course_num;
  cin>>cour[j].course_name;
  cin>>cour[j].course_score;
 }
}

回答3:

void input(course *cour,int i)
{
int j;
for(j=0;j {cout<<"请输入第"< cin>>cour[j].course_num;
cin>>cour[j].course_name[20];
cin>>cour[j].course_score;
}
}
这里错了。
cin>>cour[j].course_name[20];这样操作数组越界了,而且即使没有越界,这样写也只是给数组的下标为20的元素赋值,并没有成功给整个数组赋值。
将 cin>>cour[j].course_name[20];改成 cin>>cour[j].course_name;就行了

回答4:

那个地方没有成功赋值的话就是乱码,你把原来的初始化为零试试,估计输出来就都是零了