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

我这代码怎么输出个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,而这也影响了后续数据的表示。

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • r4bbit 2015-11-02 21:26

    建议用代码格式重新发一下你的代码

    评论
    解决 无用
    打赏 举报
  • r4bbit 2015-11-04 04:24
    #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);
    }
    
    
    

    你的代码应该是粘贴的时候有问题 头文件一般都会粘贴掉

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题