问题描述
- 我这代码怎么输出个0.0?求大神解答
-
#include
#include
#include
static int stnum;
char hint[80]="请按提示输入!";
struct Score
{
double yuwen,math,english,tiyu,sum;
};
struct Student
{
char num[10],name[20],sex[10];
int age;struct Score score;
}stu[5];
void printstudent(int i)
{
printf("%st%st%st%dt%.1ft%.1ft%.1ft%.1ft%.1fn",
stu[i].num,stu[i].name,stu[i].sex,stu[i].score.yuwen,stu[i].score.math,
stu[i].score.english,stu[i].score.tiyu,stu[i].score.sum);
}
void sethint(const char s)
{
strcpy(hint,s);
}
void printline()
{
int i;
for(i=0;i<80;i++)
putchar('');
}
void printtitle(const char title)
{
int i;
int length=strlen(title);
putchar('');
for(i=0;i<(80-2-length)/2;i++)
putchar(' ');
printf("%s",title);
for(i=i+length-1;i<=80-4;i++)
putchar(' ');
putchar('*');
}
void menu()
{
printline();
printtitle("学生成绩管理系统");
printline();
printtitle("输入指令,执行相应操作");
printtitle("1.学生信息的录入 2.学生信息的查询");
printtitle("3.学生信息的删除 4.学生信息的排序");
printtitle("5.学生信息的修改 6.学生信息的保存");
printtitle("7.学生信息的显示 8.退出系统");
printline();
printtitle(hint);
printline();
}
void modelmenu(const char *s)
{
printline();
printtitle(s);
printline();
}
void input()
{
int i=0; char l; system("cls");
modelmenu("录入学生成绩");
i=stnum;
printf("已经输入了%d个学生的信息!",i++);
printf("n输入第%d个学员学号:",i);
scanf("%s",stu[i].num); getchar();
printf("n输入第%d个学员姓名:",i);
scanf("%s",stu[i].name); getchar();
printf("n输入第%d个学员性别:",i);
scanf("%s",stu[i].sex); getchar();
printf("n输入第%d个学员年龄:",i);
scanf("%d",&stu[i].age); getchar();
printf("n输入第%d个学员语文成绩:",i);
scanf("%lf",&stu[i].score.yuwen); getchar();
printf("n输入第%d个学员数学成绩:",i);
scanf("%lf",&stu[i].score.math); getchar();
printf("n输入第%d个学员英语成绩:",i);
scanf("%lf",&stu[i].score.english); getchar();
printf("n输入第%d个学员体育成绩:",i);
scanf("%lf",&stu[i].score.tiyu); getchar();
stu[i].score.sum+=stu[i].score.yuwen+stu[i].score.math+
stu[i].score.english+stu[i].score.tiyu;
printstudent(i);
stnum++;
printf("是否继续输入?(Y/N):");
scanf("%c",&l);
if(l=='n'||l=='N')
return;
else if(l=='Y'||l=='y')
{
system("cls");
input();
}
}
void search()
{
int i=0,flag=1;
char str[20],l; system("cls");
modelmenu("查询学生信息");
printf("请输入要查找的学员学号:");
scanf("%s",str); getchar();
for(i=0;i
if((strcmp(str,stu[i].num))==0)
{
printstudent(i);
flag=0;
}
if(flag==1)
printf("无此学号!n");
printf("是否继续查询?(Y/N):");
scanf("%c",&l);
if(l=='n'||l=='N')
return;
else
system("cls");
}
void del()
{
int i,j,flag=1;
char str[20],l; system("cls");
modelmenu("删除学生信息");
printf("请输入要删除的学员学号:");
scanf("%s",str); getchar();
for(i=0;i
if((strcmp(str,stu[i].num))==0)
{
printstudent(i);
for(j=i;j
stu[j]=stu[j+1];
flag=0;
printf("删除成功!n");
stnum--;
}
if(flag==1)
printf("没有这个学生!n");
printf("是否继续删除?(Y/N):");
scanf("%c",&l);
if(l=='n'||l=='N')
return;
else
{
system("cls");
del();
}
}
void modi()
{
int i=0,flag=1;
char str[20],l; system("cls");
modelmenu("修改学生信息");
printf("请输入要修改的学员学号:");
scanf("%s",str); getchar();
for(i=0;i
if((strcmp(str,stu[i].num))==0)
break;
if(i!=5)
{
printline();
printstudent(i);
printline();
printf("n请输入修改内容n");
printf("请修改学生学号");
scanf("%s",stu[i].num); getchar();
printf("请修改学生姓名");
scanf("%s",stu[i].name); getchar();
printf("请修改学生性别");
scanf("%s",stu[i].sex); getchar();
printf("请修改学生年龄");
scanf("%d",&stu[i].age); getchar();
printf("请修改学生语文成绩");
scanf("%lf",&stu[i].score.yuwen); getchar();
printf("请修改学生数学成绩");
scanf("%lf",&stu[i].score.math); getchar();
printf("请修改学生英语成绩");
scanf("%lf",&stu[i].score.english); getchar();
printf("请修改学生体育成绩");
scanf("%lf",&stu[i].score.tiyu); getchar();
printf("修改后的学生信息为:n");
printline();
printstudent(i);
printline();
}
else
printf("没有这个学生!n");
printf("是否继续修改?(Y/N):");
scanf("%c",&l);
if(l=='n'||l=='N')
return;
else
{
system("cls");
modi();
}
}
void sort()
{
struct Student t;
int i,k,p,x,flag=1;
double sum[5],g;
system("cls");
sethint("排序完成");
menu();
for(i=0;i
sum[i]=stu[i].score.yuwen+stu[i].score.math+
stu[i].score.english+stu[i].score.tiyu;
for(k=0;k
{
x=k;
for(p=k+1;p
if(sum[x]>sum[p])
{
x=p;
g=sum[k]; sum[k]=sum[x]; sum[x]=g;
t=stu[k]; stu[k]=stu[x]; stu[x]=t;
}
}
}
void save()
{
FILE *fp; int i;
fp=fopen("c:student.txt","w");
system("cls"); sethint("保存成功");
menu();
fprintf(fp,"学号t姓名t性别t年龄t语文t数学t英语t体育t总分n");
for(i=5;i>0;i--)
if(stu[i].age!=0)
fprintf(fp,"%st%st%st%dt%.1ft%.1ft%.1ft%.1ft%.1fn",
stu[i].num,stu[i].name,stu[i].sex,stu[i].score.yuwen,stu[i].score.math,
stu[i].score.english,stu[i].score.tiyu,stu[i].score.sum);
fclose(fp);
}
void print()
{
int i; system("cls");
modelmenu("显示全部学生的信息");
printf("学号t姓名t性别t年龄t语文t数学t英语t体育t总分n");
for(i=5;i>0;i--)
if(stu[i].age!=0)
printf("%st%st%st%dt%.1ft%.1ft%.1ft%.1ft%.1fn",
stu[i].num,stu[i].name,stu[i].sex,stu[i].score.yuwen,stu[i].score.math,
stu[i].score.english,stu[i].score.tiyu,stu[i].score.sum);
while(1)
{
char l;
printf("是否返回主菜单?(Y/N):");
scanf("%c",&l); getchar();
if(l=='Y'||l=='y')
return;
}
}
void main()
{
int as; system("color f5");
do
{
menu();
printf("Input>");
sethint("请按提示输入!");
scanf("%d",&as); getchar();
if(as8)
as=0;
switch(as)
{
case 0: sethint("输入错误,请重新输入!"); break;
case 1: input(); break;
case 2: search(); break;
case 3: del(); break;
case 4: sort(); break;
case 5: modi(); break;
case 6: save(); break;
case 7: print(); break;
case 8: break;
default:menu();
}
system("cls");
}
while(as!=8);
}
解决方案
你的代码直接copy过来很多错误,但我认为问题应该是在你的print()函数里面,调用printf()时,里面有个d%但对应的传入参数是double,而这也影响了后续数据的表示。
解决方案二:
建议用代码格式重新发一下你的代码
解决方案三:
#include
#include
#include
static int stnum;
char hint[80]="请按提示输入!";
struct Score
{
double yuwen,math,english,tiyu,sum;
};
struct Student
{
char num[10],name[20],sex[10];
int age;
struct Score score;
}stu[5];
void printstudent(int i)
{
printf("%st%st%st%dt%.1ft%.1ft%.1ft%.1ft%.1fn",
stu[i].num,stu[i].name,stu[i].sex,stu[i].score.yuwen,stu[i].score.math,
stu[i].score.english,stu[i].score.tiyu,stu[i].score.sum);
}
void sethint(const char s)
{
strcpy(hint,s);
}
void printline()
{
int i;
for(i=0;i<80;i++)
putchar('');
}
void printtitle(const char title)
{
int i;
int length=strlen(title);
putchar('');
for(i=0;i<(80-2-length)/2;i++)
putchar(' ');
printf("%s",title);
for(i=i+length-1;i<=80-4;i++)
putchar(' ');
putchar('*');
}
void menu()
{
printline();
printtitle("学生成绩管理系统");
printline();
printtitle("输入指令,执行相应操作");
printtitle("1.学生信息的录入 2.学生信息的查询");
printtitle("3.学生信息的删除 4.学生信息的排序");
printtitle("5.学生信息的修改 6.学生信息的保存");
printtitle("7.学生信息的显示 8.退出系统");
printline();
printtitle(hint);
printline();
}
void modelmenu(const char *s)
{
printline();
printtitle(s);
printline();
}
void input()
{
int i=0; char l; system("cls");
modelmenu("录入学生成绩");
i=stnum;
printf("已经输入了%d个学生的信息!",i++);
printf("n输入第%d个学员学号:",i);
scanf("%s",stu[i].num); getchar();
printf("n输入第%d个学员姓名:",i);
scanf("%s",stu[i].name); getchar();
printf("n输入第%d个学员性别:",i);
scanf("%s",stu[i].sex); getchar();
printf("n输入第%d个学员年龄:",i);
scanf("%d",&stu[i].age); getchar();
printf("n输入第%d个学员语文成绩:",i);
scanf("%lf",&stu[i].score.yuwen); getchar();
printf("n输入第%d个学员数学成绩:",i);
scanf("%lf",&stu[i].score.math); getchar();
printf("n输入第%d个学员英语成绩:",i);
scanf("%lf",&stu[i].score.english); getchar();
printf("n输入第%d个学员体育成绩:",i);
scanf("%lf",&stu[i].score.tiyu); getchar();
stu[i].score.sum+=stu[i].score.yuwen+stu[i].score.math+
stu[i].score.english+stu[i].score.tiyu;
printstudent(i);
stnum++;
printf("是否继续输入?(Y/N):");
scanf("%c",&l);
if(l=='n'||l=='N')
return;
else if(l=='Y'||l=='y')
{
system("cls");
input();
}
}
void search()
{
int i=0,flag=1;
char str[20],l; system("cls");
modelmenu("查询学生信息");
printf("请输入要查找的学员学号:");
scanf("%s",str); getchar();
for(i=0;i if((strcmp(str,stu[i].num))==0)
{
printstudent(i);
flag=0;
}
if(flag==1)
printf("无此学号!n");
printf("是否继续查询?(Y/N):");
scanf("%c",&l);
if(l=='n'||l=='N')
return;
else
system("cls");
}
void del()
{
int i,j,flag=1;
char str[20],l; system("cls");
modelmenu("删除学生信息");
printf("请输入要删除的学员学号:");
scanf("%s",str); getchar();
for(i=0;i if((strcmp(str,stu[i].num))==0)
{
printstudent(i);
for(j=i;j stu[j]=stu[j+1];
flag=0;
printf("删除成功!n");
stnum--;
}
if(flag==1)
printf("没有这个学生!n");
printf("是否继续删除?(Y/N):");
scanf("%c",&l);
if(l=='n'||l=='N')
return;
else
{
system("cls");
del();
}
}
void modi()
{
int i=0,flag=1;
char str[20],l; system("cls");
modelmenu("修改学生信息");
printf("请输入要修改的学员学号:");
scanf("%s",str); getchar();
for(i=0;i if((strcmp(str,stu[i].num))==0)
break;
if(i!=5)
{
printline();
printstudent(i);
printline();
printf("n请输入修改内容n");
printf("请修改学生学号");
scanf("%s",stu[i].num); getchar();
printf("请修改学生姓名");
scanf("%s",stu[i].name); getchar();
printf("请修改学生性别");
scanf("%s",stu[i].sex); getchar();
printf("请修改学生年龄");
scanf("%d",&stu[i].age); getchar();
printf("请修改学生语文成绩");
scanf("%lf",&stu[i].score.yuwen); getchar();
printf("请修改学生数学成绩");
scanf("%lf",&stu[i].score.math); getchar();
printf("请修改学生英语成绩");
scanf("%lf",&stu[i].score.english); getchar();
printf("请修改学生体育成绩");
scanf("%lf",&stu[i].score.tiyu); getchar();
printf("修改后的学生信息为:n");
printline();
printstudent(i);
printline();
}
else
printf("没有这个学生!n");
printf("是否继续修改?(Y/N):");
scanf("%c",&l);
if(l=='n'||l=='N')
return;
else
{
system("cls");
modi();
}
}
void sort()
{
struct Student t;
int i,k,p,x,flag=1;
double sum[5],g;
system("cls");
sethint("排序完成");
menu();
for(i=0;i sum[i]=stu[i].score.yuwen+stu[i].score.math+
stu[i].score.english+stu[i].score.tiyu;
for(k=0;k {
x=k;
for(p=k+1;p if(sum[x]>sum[p])
{
x=p;
g=sum[k]; sum[k]=sum[x]; sum[x]=g;
t=stu[k]; stu[k]=stu[x]; stu[x]=t;
}
}
}
void save()
{
FILE *fp; int i;
fp=fopen("c:student.txt","w");
system("cls"); sethint("保存成功");
menu();
fprintf(fp,"学号t姓名t性别t年龄t语文t数学t英语t体育t总分n");
for(i=5;i>0;i--)
if(stu[i].age!=0)
fprintf(fp,"%st%st%st%dt%.1ft%.1ft%.1ft%.1ft%.1fn",
stu[i].num,stu[i].name,stu[i].sex,stu[i].score.yuwen,stu[i].score.math,
stu[i].score.english,stu[i].score.tiyu,stu[i].score.sum);
fclose(fp);
}
void print()
{
int i; system("cls");
modelmenu("显示全部学生的信息");
printf("学号t姓名t性别t年龄t语文t数学t英语t体育t总分n");
for(i=5;i>0;i--)
if(stu[i].age!=0)
printf("%st%st%st%dt%.1ft%.1ft%.1ft%.1ft%.1fn",
stu[i].num,stu[i].name,stu[i].sex,stu[i].score.yuwen,stu[i].score.math,
stu[i].score.english,stu[i].score.tiyu,stu[i].score.sum);
while(1)
{
char l;
printf("是否返回主菜单?(Y/N):");
scanf("%c",&l); getchar();
if(l=='Y'||l=='y')
return;
}
}
void main()
{
int as; system("color f5");
do
{
menu();
printf("Input>");
sethint("请按提示输入!");
scanf("%d",&as); getchar();
if(as8)
as=0;
switch(as)
{
case 0: sethint("输入错误,请重新输入!"); break;
case 1: input(); break;
case 2: search(); break;
case 3: del(); break;
case 4: sort(); break;
case 5: modi(); break;
case 6: save(); break;
case 7: print(); break;
case 8: break;
default:menu();
}
system("cls");
}
while(as!=8);
}
你的代码应该是粘贴的时候有问题 头文件一般都会粘贴掉