⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_40902.htm

📁 vc
💻 HTM
字号:
<p>
序号:40902 发表者:阳光游子 发表日期:2003-05-22 13:23:29
<br>主题:一个结构体的初级问题~
<br>内容:前一段刚学了结构体,近来做一个题,学的不精,好些问题,望前辈们指点指点~<BR>要求:有4名学生,每个学生数据包括姓名、学号、成绩,要求输入后找出成绩最高的学生的姓名和成绩……<BR>struct stu<BR>{<BR> char name[20];<BR> long num;<BR> float score;<BR>}<BR>float max4(float x,float y,float z,float d)<BR>{<BR> float max=x;<BR> if(d&gt;z)<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(d&gt;y)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(d&gt;x)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; max=d;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if(z&gt;y)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(z&gt;x)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;max=z;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if(y&gt;x)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;max=y;<BR>&nbsp;&nbsp; reture(max);<BR>}<BR>main()<BR>{<BR>&nbsp;&nbsp;struct stu student[4],*p;<BR>&nbsp;&nbsp;int i;<BR>&nbsp;&nbsp;char numstr[20];<BR>&nbsp;&nbsp;float max4(float x,float y,float z,float d)<BR>&nbsp;&nbsp;for(i=0,p=student;p&lt;student+4;p++,i++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("\nplease enter all data of student[%d]:\n",i);l<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gets(student[i].name);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gets(numstr); p-&gt;num=atol(numstr);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gets(numstr); p-&gt;score=atof(numstr);<BR> <BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;printf("这里该怎么弄?")<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>}<BR>我写的和这个差不多,不过原来没用指针,输出是用puts分别输出名字,学号和成绩的,可是只能输出分数,名字和学号是乱码,改用指针后,就只能输出成绩了……我知道上面的程序错误的地方很多,而且好象调用也不对,请大虾根据我的成绩指出我的不足吧,谢谢!!
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:晓哥 回复日期:2003-05-22 16:22:31
<br>内容:<BR>atof(numstr) 的返回值是double所以p-&gt;score可能出问题<BR>另外main函数最好有个返回值.把您的几个if合并一下让程序长漂亮些 <BR>我觉得atof没sscanf好用.<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:砖头 回复日期:2003-05-23 16:12:56
<br>内容:朋友,你出的问题就是出在你返回是只返回了,成绩而没有返回学生的其他信息.所以你输出是肯定只能输出成绩而不能输出其他了.<BR><BR><BR>#include&lt;iostream.h&gt;<BR>#include&lt;stdlib.h&gt;<BR>struct student{<BR>&nbsp;&nbsp;&nbsp;&nbsp;char *name;<BR>&nbsp;&nbsp;&nbsp;&nbsp;long int num;<BR>&nbsp;&nbsp;&nbsp;&nbsp;float score;<BR>};<BR>student a[4];<BR>void main()<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;int i;<BR>&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;i&lt;4;i++)//这里输入学生的数据<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&lt;&lt;"请输入学生的名字,学号,成绩"&lt;&lt;endl;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cin&gt;&gt;a[i].name&gt;&gt;a[i].num&gt;&gt;a[i].score;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;float max=a[0].score;<BR>&nbsp;&nbsp;&nbsp;&nbsp;for(i=1;i&lt;4;i++)//比较出哪个学生的成绩最高;<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(max&lt;a[i].score)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;max=a[i].score;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;continue;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;for(i=1;i&lt;4;i++)//搜索并输入成绩最高的学生的信息<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(a[i].score==max)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&lt;&lt;"成绩最高的学生的姓名是:"&lt;&lt;a[i].name&lt;&lt;" "<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;&lt;"学号是:"&lt;&lt;a[i].num&lt;&lt;"成绩是:"&lt;&lt;a[i].score&lt;&lt;endl;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;continue;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>}<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:伊洛沙鼠 回复日期:2003-05-23 21:09:03
<br>内容:for(i=1;i&lt;4;i++)//搜索并输入成绩最高的学生的信息<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(a[i].score==max)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&lt;&lt;"成绩最高的学生的姓名是:"&lt;&lt;a[i].name&lt;&lt;" "<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;&lt;"学号是:"&lt;&lt;a[i].num&lt;&lt;"成绩是:"&lt;&lt;a[i].score&lt;&lt;endl;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;continue;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>这是楼上的最后一个for<BR>我觉得可以这样写:<BR>cout&lt;&lt;"成绩最高的学生的姓名是:"&lt;&lt;a[i].name&lt;&lt;" "<BR>&nbsp;&nbsp;&nbsp;&nbsp;&lt;&lt;"学号是:"&lt;&lt;a[i].num<BR>&nbsp;&nbsp;&nbsp;&nbsp;&lt;&lt;"成绩是:"&lt;&lt;a[i].score&lt;&lt;endl;<BR>而不用写for循环了,因为在上面的一个循环已经找到这个学生的位置i了。<BR>不知道我说的对吗?请指教。<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:砖头 回复日期:2003-05-29 11:14:03
<br>内容:伊洛沙鼠,朋友,你说最后一个for循环可以不要,我认为不对,因为在a[i]中,不比较到最后一个是不知道谁的成绩最好的.而这样就改变了i的数值,所以最后一个for是不可以少的!<BR><BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:伊洛沙鼠 回复日期:2003-06-06 21:05:28
<br>内容:哈哈,对了,我没想到这个问题,最后的 i 值是 4,已经越界了,不好意思,我也是刚学不久的……不过我又改动了一下,可以将最后一个 for 省略掉,而且调试是对的。我们可以记录 有 max 值的学生的位置。如下:<BR>&nbsp;&nbsp;&nbsp;&nbsp;int j;<BR>&nbsp;&nbsp;&nbsp;&nbsp;for(i=1;i&lt;4; i++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(max &lt; a[i].score){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;max = a[i].score;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; j=i;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;cout &lt;&lt; "成绩最高的学生的姓名是:" &lt;&lt; a[j].name &lt;&lt; " "<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;&lt; "学号是:" &lt;&lt; a[j].num<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;&lt; "成绩是:" &lt;&lt; a[j].score &lt;&lt; endl;<BR>我想这样总可以节省一点时间了,不知错否?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:砖头 回复日期:2003-06-12 10:30:42
<br>内容:呵呵,有道理!<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -