C语言问题,怎么执行出来的是乱码

来源:百度知道 编辑:UC知道 时间:2024/05/26 09:57:35
#include "stdio.h"
#include "string.h"
#define N 2
struct student
{
long num;
char name[20];
char sex;
int chinese;
int math;
int english;
};
struct student stu[N];
int n;
int choose;
void fun1();
void fun2();
void fun3();
void fun4();

void fun1()
{
int i;
for(i=0;i<N;i++)
{
printf("请输入学号:\n");
scanf("%ld",&stu[i].num);
printf("请输入名字:\n");
scanf("%s",stu[i].name);
getchar();
printf("请输入性别:\n");
scanf("%c",&stu[i].sex);
printf("请输入语文成绩:\n");
scanf("%d",&stu[i].chinese);
printf("请输入数学成绩:\n");
scanf("%d&quo

你做什么操作的时候出现乱码了?

我找到你的程序的一个错误:
void fun4()
{ int k;
char newname[20],t[1];
printf("请输入该学生的名字!\n");
这个地方需要加上一个gets(),为了接收你的回车赋,否则这个功能是实现不了的。再有即使加上这句话,你的程序还是有问题的,并不能删除!
gets(t);

gets(newname);
printf("所有学生记录为:\n");
fun2();
for(k=0;k<2;k++)
if(strcmp(newname,stu[k].name)==0)
{
printf("你选择的学生为:\n");
printf("%ld,%s,%c,%d,%d,%d",stu[k].num,stu[k].name,stu[k].sex,stu[k].chinese,stu[k].math,stu[k].english);

stu[k].num=stu[k+1].num;
strcpy(stu[k].name,stu[k+1].name);
stu[k].sex=stu[k+1].sex;
stu[k].chinese=stu[k+1].chinese;
stu[k].math=stu[k+1].math;
stu[k].english=stu[k+1].english;

}

printf("学生记录删除完毕!");

}

程序没有错误,可以在BCB6正常显示,是系统设置有误,如果想让程序的通用性更好以便不再出现乱码,请将程序中的所有中文都改为英文。