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

源代码:#include<iostream.h>#include<string.h>typedefstruct{intcourse_num;charcourse_name... 源代码:
#include <iostream.h>
#include<string.h>

typedef struct
{
int course_num;
char course_name[20];
float course_score;
}course;

void input(course *cour,int i)
{
int j;
for(j=0;j<i;j++)
{cout<<"请输入第"<<j+1<<"科的课程编号、课程名称、课程成绩"<<endl;
cin>>cour[j].course_num;
cin>>cour[j].course_name[20];
cin>>cour[j].course_score;
}
}

void output(course *cour,int i)
{
int j;
for(j=0;j<i;j++)
{
cout<<"第"<<j+1<<"科的课程编号、课程名称、课程成绩分别为"<<endl;
cout<<cour[j].course_num<<"\t";
cout<<cour[j].course_name<<"\t";
cout<<cour[j].course_score<<"\n";
}
}
void main()
{
course *cour;
cour=new course;
course c[10];
input(c,10);
output(c,10);

}
功能是实现输入10课的成绩,结构体要包含(课程编号、课程名称,和课程成绩),这个课程名称怎么处理?
运行效果:
展开
 我来答
狂盗一枝梅
2013-09-22 · TA获得超过123个赞
知道答主
回答量:131
采纳率:100%
帮助的人:51.1万
展开全部
你的代码有很多漏洞,很不规范
改成这样就行了:
#include <iostream>//头文件的写法不对
#include<string.h>
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<i;j++)
{cout<<"请输入第"<<j+1<<"科的课程编号、课程名称、课程成绩"<<endl;
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<i;j++)
{
cout<<"第"<<j+1<<"科的课程编号、课程名称、课程成绩分别为"<<endl;
cout<<cour[j].course_num<<"\t";
cout<<cour[j].course_name<<"\t";
cout<<cour[j].course_score<<"\n";
}
}
int main()
{
//这里有没有意义的定义
course c[10];
input(c,10);
output(c,10);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hj304huan
2013-09-22 · TA获得超过196个赞
知道小有建树答主
回答量:135
采纳率:0%
帮助的人:104万
展开全部
楼主注意字符数组的输入,cin>>字符数组的地址。改过来就没问题了
void input(course *cour,int i)
{
 int j;
 for(j=0;j<i;j++)
 {cout<<"请输入第"<<j+1<<"科的课程编号、课程名称、课程成绩"<<endl;
  cin>>cour[j].course_num;
  cin>>cour[j].course_name;
  cin>>cour[j].course_score;
 }
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fang852545786
2013-09-22 · TA获得超过131个赞
知道小有建树答主
回答量:221
采纳率:0%
帮助的人:154万
展开全部
void input(course *cour,int i)
{
int j;
for(j=0;j<i;j++)
{cout<<"请输入第"<<j+1<<"科的课程编号、课程名称、课程成绩"<<endl;
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;就行了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
红眼彼加夫
2013-09-22 · TA获得超过566个赞
知道答主
回答量:237
采纳率:0%
帮助的人:134万
展开全部
那个地方没有成功赋值的话就是乱码,你把原来的初始化为零试试,估计输出来就都是零了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式