| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1469 人关注过本帖
标题:[求助]一个无法解释的问题,有兴趣的可以看看
取消只看楼主 加入收藏
liux945
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2007-9-30
收藏
 问题点数:0 回复次数:10 
[求助]一个无法解释的问题,有兴趣的可以看看

这是本人的一个阶段作业 由于是第一次发帖子 不太懂规矩 注释的不是十分明白... 另 英语不好 函数和变量名一般都是中文的~
#include <stdio.h>
#include <stdlib.h>//system("cls") exit(0)
#include <windows.h>//Sleep();
int i;
tuichu();
main()
{
int a,j,d,n=0,q,k,h,m,x;//n为计数器
struct aa
{
int xuehao;
char xingming[10];
float fenshu;
}student[300];//定义student为aa类型的结构体
float max=student[0].fenshu,min=2000,sum=0;/*问题就出在这里 max和min是为了统计最高分和最低分的 正常是max min都应该初始化为student[0].fenshu,但如果min初始化为student[0].fenshu 则输出的最低分是个随即数 如果初始化为比较大的数 结果反而正确了~ 无法解释...*/
AB: system("cls");
printf("\n");
printf(" *****************************************************\n");
printf(" * *\n");
printf(" * *\n");
printf(" * 学生管理系统 *\n");
printf(" * *\n");
printf(" * *\n");
printf(" * *\n");
printf(" *****************************************************\n");
printf(" 1---->录入学生信息\n");
printf(" 2---->浏览学生信息\n");
printf(" 3---->添加学生信息\n");
printf(" 4---->统计学生信息\n");
printf(" 5---->汉诺塔游戏\n");
printf(" 6---->退出系统\n");
printf(" 请输入您的选择:");
scanf("%d",&a);
switch(a)
{
case 1:
{
system("cls");
printf("请输入你要录入学生成绩的个数:");
scanf("%d",&q);
for(j=0;j<q;j++)
{
printf("请输入第%d个学生的信息:\n",j+1);
printf("请输入学号:");
scanf("%d",&student[j].xuehao);
printf("请输入姓名:");
scanf("%s",&student[j].xingming);
printf("请输入分数:");
scanf("%f",&student[j].fenshu);
n++;
}
printf("录入成功!返回菜单中");
Sleep(2500);
system("cls");
goto AB;
}
case 2:
{
system("cls");
if(n==0)
{
printf("没有学生信息,返回菜单中!");
Sleep(2500);
system("cls");
goto AB;
}
else
{
for(j=0;j<q;j++)
{
printf("第%d个学生的信息:\n",j+1);
printf("学号:%d",student[j].xuehao);
printf("姓名:%s",student[j].xingming);
printf("分数:%.2f",student[j].fenshu);

}
printf("返回菜单中...");
Sleep(4000);
system("cls");
goto AB;
}
}
case 3:
{
if(n==0)
{
system("cls");
printf("没有学生信息,返回菜单中!");
Sleep(2500);
goto AB;
}
else
{
system("cls");
printf("请输入第%d个学生的信息:\n",++q);
printf("请输入学号:\n");
scanf("%d",&student[q-1].xuehao);
printf("请输入姓名:\n");
scanf("%s",&student[q-1].xingming);
printf("请输入分数:\n");
scanf("%f",&student[q-1].fenshu);
printf("录入成功,返回菜单中...");
Sleep(2500);
system("cls");
goto AB;
}
}
case 4:
{
if(n==0)
{
system("cls");
printf("没有学生成绩!返回菜单中...");
Sleep(2000);
goto AB;
}
else
{
system("cls");
for(j=0;j<q;j++)
{
sum=sum+student[j].fenshu;
}
printf("平均分为:%.2f\n",sum/10);
for(j=0;j<q;j++)
{
if(max<student[j].fenshu)
{
max=student[j].fenshu;
h=j;
}
}
printf("最高分为:%.2f\n最高分的学号为:%d\n最高分的姓名是:%s\n",max,student[h].xuehao,student[h].xingming);
for(j=0;j<q;j++)
{
if(min>student[j].fenshu)
{
min=student[j].fenshu;
k=j;
}
}
printf("最低分为:%.2f\n最低分的学号为:%d\n最低分的姓名是:%s\n",min,student[k].xuehao,student[k].xingming);
printf("返回菜单中...");
Sleep(5000);
goto AB;
}
}
case 5:
{
system("cls");
CC: void hannuota(int n,char a,char b,char c);
printf("请输入汉诺塔的层数:\n");
scanf("%d",&m);
printf("移动步骤如下:\n");
hannuota(m,'A','B','C');
printf("游戏结束,继续吗?\n1.是\n2.否\n");
scanf("%d",&x);
if(x==2)
{
system("cls");
printf("返回菜单中...");
Sleep(2000);
goto AB;
}
else
if(x==1)
{ system("cls");
goto CC;
}
else
{
printf("输入错误,返回菜单中...");
Sleep(2000);
goto AB;
}
}
case 6:
{
system("cls");
printf("真的退出吗?1.是 2.否");
scanf("%d",&d);
if(d==1)
tuichu();
else
{
system("cls");
printf("返回菜单中...");
Sleep(3000);
goto AB;
}
}
default:
system("cls");
printf("输入的选项错误,请重新选择!");
Sleep(2000);
goto AB;
}

}
tuichu()
{
char r[200]="程序制作人:华育7班刘潇,侵权必究!\n\n\t\t\t制作时间:2007年10月23日\n\n\t\tGOODBYE!\n";
system("cls");
for(i=0;i<=strlen(r);i++)
{
printf("%c",r[i]);
Sleep(35);
}
exit(0);
}
void hannuota(int n,char a,char b,char c)
{
void yidong(char x,char y);
if(n==1)
yidong(a,c);
else
{
hannuota(n-1,a,c,b);
yidong(a,c);
hannuota(n-1,b,a,c);
}
}
void yidong(char x,char y)
{
printf("%c——>%c\n",x,y);
}

另此程序是在VC环境下编译的 如果有高手可以指点我一下我非常愿意 本人QQ:36165776

搜索更多相关主题的帖子: 兴趣 解释 
2007-10-24 20:58
liux945
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2007-9-30
收藏
得分:0 
大家可以先运行一下我的程序 搞清功能

吃得苦中苦 方为人上人
2007-10-24 20:59
liux945
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2007-9-30
收藏
得分:0 
呵呵 和汉诺塔合在一起纯属无聊 问题在注释里了 就在定义float max min那里的注释上了

吃得苦中苦 方为人上人
2007-10-24 21:07
liux945
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2007-9-30
收藏
得分:0 

恩 我把他定义在case 4 里了就可以了 但是能解释一下为什么呢?


吃得苦中苦 方为人上人
2007-10-24 21:17
liux945
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2007-9-30
收藏
得分:0 

7楼解释一下 我的程序里max 也定义在了最前面 min也定义了最前面 他们2个初始的值是一样的 为什么最高分max是正确的 而min里却是错误的数据呢?


吃得苦中苦 方为人上人
2007-10-24 21:20
liux945
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2007-9-30
收藏
得分:0 
恩 10楼说的我明白了 但是无法解释的就是为什么最大的数max里是正确的数据 同样初使值一样的情况下min确是错误的或者是随即数

吃得苦中苦 方为人上人
2007-10-24 21:23
liux945
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2007-9-30
收藏
得分:0 

我这是正确的代码 你把min初始成student[0].fenshu, 错误就看着了


吃得苦中苦 方为人上人
2007-10-24 21:26
liux945
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2007-9-30
收藏
得分:0 
恩恩 14楼解释的很清楚了 明白了 max里是正确的完全是因为随即的数比我要比较的数大 而min则没那么幸运了 呵呵

感谢各位帮我解决问题

问题已解决!

吃得苦中苦 方为人上人
2007-10-24 21:33
liux945
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2007-9-30
收藏
得分:0 
恩 错误就是应该在student.fenshu初始化后再进行max min的初始化

吃得苦中苦 方为人上人
2007-10-24 21:36
liux945
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2007-9-30
收藏
得分:0 

那你实际的意思是什么呢?


吃得苦中苦 方为人上人
2007-10-24 21:45
快速回复:[求助]一个无法解释的问题,有兴趣的可以看看
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021828 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved