YXTS122 2015-11-02 12:42 采纳率: 100%
浏览 1610
已采纳

我这代码怎么输出个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("%s\t%s\t%s\t%d\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\n",
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,"%s\t%s\t%s\t%d\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\n",
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("%s\t%s\t%s\t%d\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\n",
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);
}
图片说明

  • 写回答

3条回答 默认 最新

  • SGoer 2015-11-02 13:43
    关注

    你的代码直接copy过来很多错误,但我认为问题应该是在你的print()函数里面,调用printf()时,里面有个d%但对应的传入参数是double,而这也影响了后续数据的表示。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序