编程-我这代码怎么输出个0.0?求大神解答

问题描述

我这代码怎么输出个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);
}

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

时间: 2024-08-03 21:41:45

编程-我这代码怎么输出个0.0?求大神解答的相关文章

对java中递归问题的输出不理解,求大神解答!谢谢

问题描述 对java中递归问题的输出不理解,求大神解答!谢谢 对于这一段代码我能够理解,压栈然后出栈就是6,5,4 package recursion; public class testRecursion { public static void main(String[] args) { int num=3; recursion(num); } private static void recursion(int n){ n++; if(n<7){ recursion(n); System.o

struts2-这段代码的错误在哪里,id属性的值为空,但是控制台能输出所有的value值,求大神解答??

问题描述 这段代码的错误在哪里,id属性的值为空,但是控制台能输出所有的value值,求大神解答?? <s:form action=""deleteMessageAction"" method=""post""> <table align=""center"" width=""40%"" border=""5&

c8051f410-通过超声测得的距离控制PWM输出的代码,不知道哪里错了,求大神帮忙看看

问题描述 通过超声测得的距离控制PWM输出的代码,不知道哪里错了,求大神帮忙看看 #include #define SYSCLK 24500000 // Internal oscillator frequency in Hz #define BAUDRATE 9600 // Baud rate of UART in bps #define uchar unsigned char #define uint unsigned int //L298输入控制端定义 sbit IN1 = P2^0; sb

请问这段代码为什么输出null,求大神解答程序执行的顺序?

问题描述 请问这段代码为什么输出null,求大神解答程序执行的顺序? public class xieCheng { private String baseName="Base"; public xieCheng(){ this.callName(); } public void callName(){ System.out.println(baseName); } } public class Sub extends xieCheng { private String baseNam

出现频率-一道C语言编程题,本人初学者,求大神解答

问题描述 一道C语言编程题,本人初学者,求大神解答 编写程序实现功能:数据文件story.txt是一篇英文小故事,请先统计其中26个字母的出现次数. 要求一:再根据用户要求,输出某个字母的出现次数,直到用户输入#为止. 要求二:请输出出现频率最高的三个字母和它们的出现次数. 解决方案 #include #include #include int main() { int alpha[26]={0}; //用于计数26个字母出现的次数 FILE *text; //FILE 指针 char ch;

二叉树 求结点个数-c++编程,,跪求大神解答

问题描述 c++编程,,跪求大神解答 #include using namespace std; template struct BiNode { BiNode *lchild; datatype data; BiNode *rchild; }; template struct element { BiNode *ptr; int flag; }; BiNode *first,*bt,*q,*temp,stack[20],queue[20]; element s[20]; int count=0

c-关于重复输出的问题,求大神帮我看看

问题描述 关于重复输出的问题,求大神帮我看看 #include<stdio.h>int main(){ for(int i=1;i<=46;i++){ for(int j=i+2;j<=48;j++){ //for(int num1=i;num1<=46;num1++) //为什么这两行写了就会出来很多重复的呢? //for(int num2=j;num2<=48;num2++) int change=0; change=i*(i+1)-i-i-1; change+=j

单链表-请教C编程题,本人初学者,求大神解答,万分感谢

问题描述 请教C编程题,本人初学者,求大神解答,万分感谢 求大侠帮忙:C语言程序设计---编程题说明:以下所有题目程序应是非递归的) 编写一个函数,输出整数m的全部素数因子.例如,m=120时,素数因子为:2,2,2,3,5 请编写程序判断一个字符串是否是回文.若是回文,函数返回值为1,否则返回值为0.(回文是顺读和倒读都一样的字符串).要求: 1) 编写sub()判断一字符串是否为回文 2) 在主函数中完成数据的输入与结果的输出 3.起泡排序是把大的元素向下移,也可以将小的元素向上移,请给出下

求大神解答,用最基础的java代码,,,java小白一个。。。

问题描述 求大神解答,用最基础的java代码,,,java小白一个... 5C 解决方案 http://download.csdn.net/detail/caoyang1405/3270044 解决方案二: http://www.pudn.com/downloads162/sourcecode/java/detail737260.html 解决方案三: http://zhidao.baidu.com/link?url=pmVCcr5PE9MuVNFAQkL7K0G74YqH2b6g2PDjM_i