写个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课的成绩,结构体要包含(课程编号、课程名称,和课程成绩),这个课程名称怎么处理?
运行效果: 展开
#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课的成绩,结构体要包含(课程编号、课程名称,和课程成绩),这个课程名称怎么处理?
运行效果: 展开
展开全部
你的代码有很多漏洞,很不规范
改成这样就行了:
#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);
}
改成这样就行了:
#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);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼主注意字符数组的输入,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;
}
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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;就行了
{
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;就行了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
那个地方没有成功赋值的话就是乱码,你把原来的初始化为零试试,估计输出来就都是零了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询