编写一个程序,要调试成功哦

要求用户不停地输入学生的学号和考试成绩,直到学号为-1结束输入。程序自动输出这些数据中的最高分,最低分以及取得这两个成绩的学生的学号、成绩。(考试成绩的范围为0至100分)。
用纯C语言,不用C++

6-2 03:12
首先,建立3个text和4个command,名称不改了
text1:原始数字
text2:排序后奇数
text3:排序后偶数
command1:产生随机数
command2:排序
command3:清空
command4:结束

其次,在设计状态把所有text的属性multiline修改成true,方便看数字

最后贴上程序代码,你可以拷贝尝试调试一下看看,我这里成功了:)

Option Explicit
Dim X(1 To 60) As Integer, Os() As Integer, Js() As Integer
Dim I As Integer, J As Integer
Dim N As Integer, M As Integer
Dim Temp As Integer

Private Sub Command1_Click()
Text1 = ""
For I = 1 To 60 '产生100到200的随机数
X(I) = Int(Rnd * 100) + 100
Text1 = X(I) & "," & Text1
Next I
End Sub

Private Sub Command2_Click()
N = 0
M = 0
For I = 1 To 60 '根据奇偶安排随机数进入各自数组
If X(I) Mod 2 = 0 Then
N = N + 1
ReDim Preserve Os(1 To N)
Os(N) = X(I)
Else
M = M + 1
ReDim Preserve Js(1 To M)
Js(M) = X(I)
End If
Next I

For I = 1 To N - 1 '冒泡排序排偶数
For J = I + 1 To N
If Os(I) < Os(J) Then
Temp = Os(I)
Os(I) = Os(J)
Os(J) = Temp
End If
Next J
Next I

For I = 1 To M - 1 '冒泡排序排奇数
For J = I + 1 To M
If Js(I) > Js(J) Then
Temp = Js(I)
Js(I) = Js(J)
Js(J) = Temp
End If
Next J
Next I

Text2 = ""
Text3 = ""
For I = 1 To M
Text2 = Js(I) & "," & Text2
Next I
For I = 1 To N
Text3 = Os(I) & "," & Text3
Next I
End Sub

Private Sub Command3_Click()
Text1 = ""
Text2 = ""
Text3 = ""
End Sub

Private Sub Command4_Click()
End
End Sub

Private Sub Form_Load()
Randomize '随机时钟
End Sub

6-2 13:10
最后祝你顺利哈,偶睡觉鸟,有问题给偶留言啦~

无语了,居然有人这么无耻,抄我的改了我的注释而已,我可是半夜3点多写完的程序,虽然代码仅区区几行,但是请尊重别人的成果!!
tong_ai_ya如果你会请写出自己的东西,没有必要把我的说明和变量定义都抄了过去,大家都知道写程序有很多个人习惯的,一般一看就能看出来,我对你无语,太让人心寒了。。。

楼主你好,你这个问题我晚上来帮你解决,我现在去考试了。
现在问你一个问题,100~200数字中取60个数字可否有重复?我现在写的程序是有重复的,如果你的意思是没有重复数字那么我也晚上来改哦~考试去啦嘻嘻:)

不好意思哈,又是这个点,考完试出去疯了嘿嘿~
根据你的不重复要求我更改了一个算法,大体感觉上应该是优化的,懒得算啦:P
其实我以前和楼主一样,碰到程序问题就很头疼,尤其以前网上搜资料不像现在这么多这么方便。往往一个很简单很基础的问题可以让我做一个通宵,所以我觉得现在休息的时候帮助一下其他人的程序学习很有好处,尤其有这么一个好的平台:)
说实话,楼主初学vb的话,只要能够独立看懂程序就行,然后再尝试自己动手写程序,用vb的一个好处就是F5和F8,自己找碴自己解决还是很有成就感的哦~
我专业和这个完全没有关系,但是还是对编程很有兴趣,如果楼主是编程兴趣爱好者,我们可以相互交流一下,共同进步哈:D

以下是代码,控件没有改动
Option Explicit '强制变量定义,个人习惯而已
Dim X(1 To 60) As Integer, Os() As Integer, Js() As Integer '定义数组,X是随机数字存放的数组;Os是偶数存放的数组,由于随机偶数不确定,因此采用不定长数组形式
Dim Sz(1 To 100) As Integer '这个数组用来存放100~199(上下含)的所有数字,见下述
Dim I As Integer, J As Integer
Dim N As Integer, M As Integer
Dim Temp As Integer, T As Integer '两个临时变量
Dim Si As Boolean '也是一个临时变量,用布朗值描述代表真伪判断

Private Sub Command1_Click()
Text1 = ""
For I = 1 To 100
Sz(I) = I + 99
Next I
For I = 1 To 60 '产生100到200的随机数并且取出数字不重复
Do '常规思路是每生成一个数字,就让它与之前的所有数字进行比较判断是否重复
Si = False '而这里我用了另一种思路,即将所有数字进行标记,以取出的形式获得,形象地说,可以比喻成从篮子里拿苹果:)
T = Int(Rnd * 100) + 1 '我想说,编程时同一个目标是可以由不同的过程来完成的,打开思路想咯,我没仔细考虑过两种算法的优劣,懒得去算啦,偶也不是学这个的。。。只是感觉我现在用的方法速度更快~
If Sz(T) <> 0 Then
X(I) = Sz(T)
Sz(T) = 0
Si = True
End If
Loop Until (Si = True)
If ((I - 1) Mod 10 = 0) And (I <> 1) Then '以6行形式输出,每行10个数字
Text1 = Text1 & vbCrLf '这个问题很简单,就是在文本框中加上chr(10)和chr(13),vb中可以用vbCrLf表示,就是回车和换行啦
End If
If (I - 1) Mod 10 = 0 Then
Text1 = Text1 & X(I)
Else
Text1 = Text1 & " " & X(I)
End If
Next I
End Sub

Private Sub Command2_Click()
N = 0
M = 0
For I = 1 To 60 '根据奇偶安排随机数进入各自数组
If X(I) Mod 2 = 0 Then
N = N + 1
ReDim Preserve Os(1 To N)
Os(N) = X(I)
Else
M = M + 1
ReDim Preserve Js(1 To M)
Js(M) = X(I)
End If
Next I

For I = 1 To N - 1 '冒泡排序排偶数
For J = I + 1 To N
If Os(I) < Os(J) Then
Temp = Os(I)
Os(I) = Os(J)
Os(J) = Temp
End If
Next J
Next I

For I = 1 To M - 1 '冒泡排序排奇数
For J = I + 1 To M
If Js(I) > Js(J) Then
Temp = Js(I)
Js(I) = Js(J)
Js(J) = Temp
End If
Next J
Next I

Text2 = ""
Text3 = ""
For I = 1 To M
Text2 = Js(I) & " " & Text2
Next I
For I = 1 To N
Text3 = Os(I) & " " & Text3
Next I
End Sub

Private Sub Command3_Click()
Text1 = ""
Text2 = ""
Text3 = ""
End Sub

Private Sub Command4_Click()
End
End Sub

Private Sub Form_Load()
Randomize '随机时钟 如果尝试去掉这一行,你会发现每次随机都是相同的数字:P
End Sub
另外,虚机团上产品团购,超级便宜
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-05-05
#include <stdio.h>
#include <stdlib.h>
//0x30(48) = '0' 0x39(57) = '9'
#define CLS system("cls")
#define ASK_OP(response) puts("INPUT O = IN Ordinary V = IN VIP Q = QUIT");response = getch();

typedef struct _d{
int num;
int score;
struct _d *next;
} stu_data;

stu_data * stu_inp(stu_data *head); //输入函数,同时做最大最小判断
int main(int argc, char *argv[])
{
stu_data *head = NULL;
head = stu_inp(head);
/*这里可以自己再操作链表,如排序,遍历等等*/
system("PAUSE");
return 0;
}

stu_data * stu_inp(stu_data *head)
{
stu_data *pHead = NULL, *pCur = NULL, *pTail = NULL, *pMax = NULL, *pMin = NULL;
int stnum, stscore, max_score = 0, min_score = 0;
printf("input num & score\n");
scanf("%d %d",&stnum, &stscore); //输入示例 :11+空格+98+回车 表示学号11 成绩98
pHead = head; //结束输入的话可以 -1空格+任意数字+回车
while((stnum != -1)&&(stscore>=0)&&(stscore<=100))
{
if(NULL == pHead)
{
if(NULL == (pHead = (stu_data *)malloc(sizeof(stu_data)))) return pHead;
pHead->num = stnum;
pHead->score = stscore;
pHead->next = NULL;
max_score = stscore;
min_score = stscore;
pMax = pHead;
pMin = pHead;
pCur = pHead;
pTail = pHead;
}
else
{
if(NULL == (pTail = (stu_data *)malloc(sizeof(stu_data)))) return pHead;
pCur->next = pTail;
pTail->num = stnum;
pTail->score = stscore;
pTail->next = NULL;
pCur = pTail;
if(max_score < pCur->score)
{
max_score = pCur->score;
pMax = pCur;
}
else
{
if(min_score > pCur->score)
{
min_score = pCur->score;
pMin = pCur;
}
}
}
CLS;
printf("input num & score\n");
scanf("%d %d",&stnum, &stscore);
}
printf("\n max_score is:%d student num is:%d\n\n", pMax->score, pMax->num);
printf("\n min_score is:%d student num is:%d\n\n", pMin->score, pMin->num);
return pHead;
}追问

在VC6里测试有一处错误 e:\program files\microsoft visual studio\myprojects\22\22.cpp(77) : fatal error C1010: unexpected end of file while looking for precompiled header directive
执行 cl.exe 时出错.

追答

你工程属性设置不对,
方法一、右键点击22.cpp 菜单project-》settings里 c++页面,Precomplie header设置为Not Using precomplied headers
方法二、增加头文件 #include “stdafx.h”
以上解决方式网络得到,你自己试试.

或者你新建一个c的工程试试,不要用c++的工程

本回答被提问者采纳
第2个回答  2011-05-05
#include<stdio.h>
void main()
{
double a,b,c;
scanf ("%lf,%lf",&a,&b);
if (a>b) c=a;
else c=b;
printf ("max is %lf\n",c);
}
这是改动后的程序,我运行的可以~~