注册 登录
编程论坛 C++教室

小问题被老师骂 望师兄稍微指点

孤魂居士 发布于 2007-05-31 00:26, 2701 次点击


今天上机
老师布置了个很简单的题目,
调用函数编写以下程序
有10个学生的成绩...................
自己输入
有这10个学生的平均成绩 和最高分和最低分```
我 自己是这样写的
但不管怎么样 总是有个错误 我快急死 我不知道问题究竟出在哪里?知道这题目没有挑战性 也许是我上机少了
不好发现 希望师兄门指点
#include "iostream.h"
int a[10];
void main()
{
void stu(); //声明求平均数函数
void stu1(); //声明求最高分和最低分函数
int b[],i;
cout<<输入10位同学的成绩:"<<endl;
for(i=0;i<=N;i++)
cin>>b[10];
sut(b[10]);
sut1(b[10]);
}


void stu() //定义求平均数函数
{
int sum;
float sun;
int i;
for(i=0;i<=9;i++)
sum=sum+a[i];
sun=sum/10;
cout<<"平均数为:"<<sun<<endl;
}

void stu1() //定义求最高分和最低分函数
{
int t;
int j;
int k;
int max; int min;
for(j=0;j<=9;j++)
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
for(k=0;k<=9;k++)
cout<<a[j]<<endl;
max=a[9];
min=a[0];
cout<<"最高分为:"<<max<<endl;
cout<<"最低分为:"<<min<<endl;
}


错误信息
看不懂 望师兄帮助我指点迷津
Deleting intermediate files and output files for project '11 - Win32 Debug'.
--------------------Configuration: 11 - Win32 Debug--------------------
Compiling...
520.cpp
c:\1000\520.cpp(9) : error C2018: unknown character '0xca'
c:\1000\520.cpp(9) : error C2018: unknown character '0xe4'
c:\1000\520.cpp(9) : error C2018: unknown character '0xc8'
c:\1000\520.cpp(9) : error C2018: unknown character '0xeb'
c:\1000\520.cpp(9) : error C2018: unknown character '0xce'
c:\1000\520.cpp(9) : error C2018: unknown character '0xbb'
c:\1000\520.cpp(9) : error C2018: unknown character '0xcd'
c:\1000\520.cpp(9) : error C2018: unknown character '0xac'
c:\1000\520.cpp(9) : error C2018: unknown character '0xd1'
c:\1000\520.cpp(9) : error C2018: unknown character '0xa7'
c:\1000\520.cpp(9) : error C2018: unknown character '0xb5'
c:\1000\520.cpp(9) : error C2018: unknown character '0xc4'
c:\1000\520.cpp(9) : error C2018: unknown character '0xb3'
c:\1000\520.cpp(9) : error C2018: unknown character '0xc9'
c:\1000\520.cpp(9) : error C2018: unknown character '0xbc'
c:\1000\520.cpp(9) : error C2018: unknown character '0xa8'
c:\1000\520.cpp(9) : error C2143: syntax error : missing ';' before ':'
c:\1000\520.cpp(9) : error C2001: newline in constant
c:\1000\520.cpp(10) : error C2065: 'N' : undeclared identifier
c:\1000\520.cpp(10) : warning C4552: '<=' : operator has no effect; expected operator with side-effect
c:\1000\520.cpp(10) : error C2143: syntax error : missing ';' before ')'
c:\1000\520.cpp(24) : warning C4244: '=' : conversion from 'int' to 'float', possible loss of data
执行 cl.exe 时出错.

11.exe - 1 error(s), 0 warning(s)

34 回复
#2
孤魂居士2007-05-31 00:28

#include "iostream.h"
int a[10];
void stu(); //声明求平均数函数
void stu1(); //声明求最高分和最低分函数

void main()
{
int a[10],i;
cout<<输入10位同学的成绩:"<<endl;
for(i=0;i<=9;i++)
cin>>a[10];
stu(); //这地方我发现了一个
stu1();
}


void stu() //定义求平均数函数
{
int sum;
float sun;
int i;
for(i=0;i<=9;i++)
sum=sum+a[i];
sun=sum/10;
cout<<"平均数为:"<<sun<<endl;
}

void stu1() //定义求最高分和最低分函数
{
int t;
int j;
int k;
int max; int min;
for(j=0;j<=9;j++)
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
for(k=0;k<=9;k++)
cout<<a[j]<<endl; //从小到大输出这10个学生的成绩
max=a[9];
min=a[0];
cout<<"最高分为:"<<max<<endl;
cout<<"最低分为:"<<min<<endl;
}


是这个程序 我改了这个地方

#3
孤魂居士2007-05-31 00:32

又改了几下 还是老样子


#include "iostream.h"
int a[10];
void main()
{
void stu(); //声明求平均数函数
void stu1(); //声明求最高分和最低分函数

int a[10],i;
cout<<输入10位同学的成绩:"<<endl;
for(i=0;i<=9;i++)
cin>>a[10];
stu();
stu1();
}


void stu() //定义求平均数函数
{
int sum;
float sun;
int i;
for(i=0;i<=9;i++)
sum=sum+a[i];
sun=sum/10;
cout<<"平均数为:"<<sun<<endl;
}

void stu1() //定义求最高分和最低分函数
{
int t;
int j;
int k;
int max; int min;
for(j=0;j<=9;j++)
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
for(k=0;k<=9;k++)
cout<<a[j]<<endl; //从小到大输出这10个学生的成绩
max=a[9];
min=a[0];
cout<<"最高分为:"<<max<<endl;
cout<<"最低分为:"<<min<<endl;
}




Deleting intermediate files and output files for project '11 - Win32 Debug'.
--------------------Configuration: 11 - Win32 Debug--------------------
Compiling...
520.cpp
c:\1000\520.cpp(9) : error C2018: unknown character '0xca'
c:\1000\520.cpp(9) : error C2018: unknown character '0xe4'
c:\1000\520.cpp(9) : error C2018: unknown character '0xc8'
c:\1000\520.cpp(9) : error C2018: unknown character '0xeb'
c:\1000\520.cpp(9) : error C2018: unknown character '0xce'
c:\1000\520.cpp(9) : error C2018: unknown character '0xbb'
c:\1000\520.cpp(9) : error C2018: unknown character '0xcd'
c:\1000\520.cpp(9) : error C2018: unknown character '0xac'
c:\1000\520.cpp(9) : error C2018: unknown character '0xd1'
c:\1000\520.cpp(9) : error C2018: unknown character '0xa7'
c:\1000\520.cpp(9) : error C2018: unknown character '0xb5'
c:\1000\520.cpp(9) : error C2018: unknown character '0xc4'
c:\1000\520.cpp(9) : error C2018: unknown character '0xb3'
c:\1000\520.cpp(9) : error C2018: unknown character '0xc9'
c:\1000\520.cpp(9) : error C2018: unknown character '0xbc'
c:\1000\520.cpp(9) : error C2018: unknown character '0xa8'
c:\1000\520.cpp(9) : error C2143: syntax error : missing ';' before ':'
c:\1000\520.cpp(9) : error C2001: newline in constant
c:\1000\520.cpp(10) : warning C4552: '<=' : operator has no effect; expected operator with side-effect
c:\1000\520.cpp(10) : error C2143: syntax error : missing ';' before ')'
c:\1000\520.cpp(24) : warning C4244: '=' : conversion from 'int' to 'float', possible loss of data
执行 cl.exe 时出错.

11.exe - 1 error(s), 0 warning(s)



#4
谁与争疯2007-05-31 00:37
以下是引用孤魂居士在2007-5-31 0:28:29的发言:

#include "iostream.h"
int a[10];
void stu(); //声明求平均数函数
void stu1(); //声明求最高分和最低分函数

void main()
{
int a[10],i;
cout<<输入10位同学的成绩:"<<endl;//少了双引号。
for(i=0;i<=9;i++)
cin>>a[10];//注意你是用循环给数组 0-9的下标赋值。你这不是越界吗?你这是给哪个赋值呢?
stu(); //这地方我发现了一个
stu1();
}


void stu() //定义求平均数函数
{
int sum;
float sun;
int i;
for(i=0;i<=9;i++)
sum=sum+a[i];
sun=sum/10;//这里在VC6.0中也有个错误
cout<<"平均数为:"<<sun<<endl;
}

void stu1() //定义求最高分和最低分函数
{
int t;
int j;
int k;
int max; int min;
for(j=0;j<=9;j++)
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
for(k=0;k<=9;k++)
cout<<a[j]<<endl; //从小到大输出这10个学生的成绩
max=a[9];
min=a[0];
cout<<"最高分为:"<<max<<endl;
cout<<"最低分为:"<<min<<endl;
}


是这个程序 我改了这个地方

[此贴子已经被作者于2007-5-31 0:51:56编辑过]

#5
谁与争疯2007-05-31 00:53
要睡觉了、我也是新手,实在是看不出什么错误了。
新高手弄弄吧。晚安
#6
谁与争疯2007-05-31 00:54
有提示错误的语句里,双击一下,系统会自动跳到有毛病的程序行中的,你要学会自己仔细看一下。
连双引号漏了也不知道。
#7
孤魂居士2007-05-31 00:55

都睡觉的啊``
我运行看看哦```
嘿嘿谢谢兄弟指点``
#8
天下第二刀2007-05-31 01:08
#include "iostream.h"
int a[10];
void main()
{
void stu(); //声明求平均数函数
void stu1(); //声明求最高分和最低分函数

int i; // 这里不要 a[10], 前面定义了
cout<<"输入10位同学的成绩:"<<endl; //引号, 前面的兄弟说了
for(i=0;i<=9;i++)
cin>>a[i]; //这里是 a[i]
stu();
stu1();
}


void stu() //定义求平均数函数
{
int sum=0; // 这里要初使化, 见意用 float 形
float sun;
int i;
for(i=0;i<=9;i++)
sum=sum+a[i];
sun=sum/10;
cout<<"平均数为:"<<sun<<endl;
}

void stu1() //定义求最高分和最低分函数
{
int t;
int j;
int k;
int max; int min;
for(j=0;j<=9;j++)
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
for(k=0;k<=9;k++)
cout<<a[j]<<endl; //从小到大输出这10个学生的成绩
max=a[9];
min=a[0];
cout<<"最高分为:"<<max<<endl;
cout<<"最低分为:"<<min<<endl;
}


还有一个函数也有问题,要睡觉了没看,88

[此贴子已经被作者于2007-5-31 1:10:20编辑过]

#9
天下第二刀2007-05-31 01:12
基本功不行啊,  int b[];这样定义??
#10
孤魂居士2007-05-31 01:13


改了下 也没有结果 没有错误 但是没有结果 结果为0都是0 还出现了个这个错误:希望师兄点击看下:

#include "iostream.h
int a[10];

void stu(); //声明求平均数函数
void stu1(); //声明求最高分和最低分函数

void main()
{
int a[10],i;
cout<<"输入10位同学的成绩:"<<endl; //少了双引号。
for(i=1;i<=10;i++)
cin>>a[i]; //注意你是用循环给数组 0-9的下标赋值。你这不是越界吗?你这是给哪个赋值呢?
stu(); //这地方我发现了一个
stu1();
}


void stu() //定义求平均数函数
{
int sum;
float sun;
int i;
for(i=1;i<=10;i++)
sum=sum+a[i];
sun=sum/10.0; //这里在VC6.0中也有个错误
cout<<"平均数为:"<<sun<<endl;
}

void stu1() //定义求最高分和最低分函数
{
int t;
int j;
int k;
int max; int min;
for(j=1;j<=10;j++)
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
for(k=1;k<=10;k++)
cout<<a[j]<<endl; //从小到大输出这10个学生的成绩
max=a[10];
min=a[1];
cout<<"最高分为:"<<max<<endl;
cout<<"最低分为:"<<min<<endl;
}

只有本站会员才能查看附件,请 登录

#11
孤魂居士2007-05-31 01:16

我粗心了
都睡这早干什么啊 ?????????
#12
孤魂居士2007-05-31 01:17

我基础看的书太多太杂
呜````
的确不行``
#13
孤魂居士2007-05-31 01:24

8楼的师兄
我把你改正的运行了一下

第1个函数可要了
第2个函数还不是行``没有错误但是结果是错的 我找不到 还需要师兄指点``

输入10位同学的成绩:
1 2 3 4 5 6 7 8 9 10
平均数为:5
10
10
10
10
10
10
10
10
10
10
最高分为:0
最低分为:1
Press any key to continue
#14
天下第二刀2007-05-31 01:29
哎, 帮你搞下吧, ==
#15
孤魂居士2007-05-31 01:30

谢谢 师兄```
#16
天下第二刀2007-05-31 01:33

#include "iostream.h"
int a[10];
void main()
{
void stu(); //声明求平均数函数
void stu1(); //声明求最高分和最低分函数

int i; // 这里不要 a[10], 前面定义了
cout<<"输入10位同学的成绩:"<<endl; //引号, 前面的兄弟说了
for(i=0;i<=9;i++)
cin>>a[i]; //这里是 a[i]
stu();
stu1();
}


void stu() //定义求平均数函数
{
float sum=0; // 这里要初使化, 见意用 float 形
float sun;
int i;
for(i=0;i<=9;i++)
sum=sum+a[i];
sun=sum/10;
cout<<"平均数为:"<<sun<<endl;
}

void stu1() //定义求最高分和最低分函数
{
int temp;
int max; int min;
for(int j=0;j<=9;j++)
for( int k=j+1;k<10;k++)
if(a[j]>a[k])
{
temp=a[j];
a[j]=a[k];
a[k]=temp;
}

for(int
k=0;k<=9;k++)
cout<<a[k]<<endl; //从小到大输出这10个学生的成绩
max=a[9];
min=a[0];
cout<<"最高分为:"<<max<<endl;
cout<<"最低分为:"<<min<<endl;
}


完整的~~~~~

#17
孤魂居士2007-05-31 02:37


两位大哥的都对了``
我的和你们的差不多
缺点就在函数和数组相互应用还不是很熟悉
以后多多训练``
谢谢两位师兄``

#18
孤魂居士2007-05-31 02:54

还有问17楼的兄弟

你的程序:

int t,max,min;
for(int i=0;i<10;i++)
for(int j=0;j<10;j++) //这里为什么要用两个循环?不是很知道?望指点下``应该一个循环就可以比较大小了啊?
if(b[j]>b[j+1])
{
t=b[j];
b[j]=b[j+1];
b[j+1]=t;
}
#19
ifeitian2007-05-31 08:37
#include<iostream>
using namespace std;
class student
{
public:
student();//构造函数初始化数组
void set_value(); //成绩输入函数
void show_value(); //所有结果输出函数
void disave(); // 球总成绩及平均成绩函数
void max_min(); //球最大值及最小值函数
private:
double stu[10];
double sum;
double ave;
double max;
double min;
};
student::student()
{
int i;
for(i=0;i<10;i++)
stu[i]=0;
sum=0;
}
void student::set_value()
{
int i;
cout<<"请输入十个成绩:"<<endl;
for(i=0;i<10;i++)
cin>>stu[i];
}
void student::show_value()
{
int i;
cout<<"您输入的十个成绩是:"<<endl;
for(i=0;i<10;i++)
{
cout<<"stu["<<i<<"]:"<<stu[i]<<" ";
if(i==4) cout<<endl;
}
cout<<endl;
cout<<"总成绩是:"<<sum<<endl;
cout<<"平均成绩是:"<<ave<<endl;
cout<<"最高成绩是:"<<max<<endl;
cout<<"最低成绩是:"<<min<<endl;
}
void student::disave()
{
int i;
for(i=0;i<10;i++)
sum+=stu[i];
ave=sum/10;
}
void student::max_min()
{
int i;
max=stu[0];
min=stu[0];
for(i=0;i<10;i++)
if(max<stu[i]) max=stu[i];
if(min>stu[i]) min=stu[i];
}
int main()
{
student stu;
stu.set_value();
stu.disave();
stu.max_min();
stu.show_value();
return 0;
}
你对比着看看吧。看懂了你就会了。
#20
ifeitian2007-05-31 08:41
不好意思没发现已有正解了。
#21
aipb20072007-05-31 10:48

[CODE]#include <iostream>
#include <algorithm>
using namespace std;

int main(){
double scores[10],sum = 0;
for (int i = 0;i < 10;++i){
cin >> scores[i];
sum += scores[i];
}
sort(scores,scores+10);
cout << "lowest :" << scores[0] << endl;
cout << "highest :" << scores[9] << endl;
cout << "average : " << sum / 10 << endl;
}[/CODE]

确实该骂。


[此贴子已经被作者于2007-5-31 10:48:41编辑过]

#22
孤魂居士2007-05-31 13:19

连无限循环哥哥都这说``
看来真的该骂,哎 以后多多上机上机``把程序写的熟点 不要一个题目出来又无法上手 上机到处小问题忘掉``

谢谢 兄弟们``
#23
孤魂居士2007-05-31 17:04

22楼的兄弟  我明白了嘿嘿   谢谢 兄弟的指点哦``
#24
谁与争疯2007-05-31 22:02
孤魂居士 兄弟,不要灰心,高手就是由这些小程序慢慢练成D
我也一样是新手,大家一起努力哈,。
#25
zkkpkk2007-05-31 22:32
汗,你的子函数里都没参数
#26
谁与争疯2007-05-31 23:38
以下是引用aipb2007在2007-5-31 10:48:00的发言:

[CODE]#include <iostream>
#include <algorithm>
using namespace std;

int main(){
double scores[10],sum = 0;
for (int i = 0;i < 10;++i){
cin >> scores[i];
sum += scores[i];
}
sort(scores,scores+10);
cout << "lowest :" << scores[0] << endl;
cout << "highest :" << scores[9] << endl;
cout << "average : " << sum / 10 << endl;
}[/CODE]

sort(scores,scores+10);
sort 这是什么东东?没见过啊,请高手给我介绍一下。





#27
天下第二刀2007-06-01 00:21

呵呵, STL里面的, 快速排序

#28
kyan542007-06-01 08:12

#include "iostream.h"

void main()
{
void stu(int a[]); //声明求平均数函数
void stu1(int a[]); //声明求最高分和最低分函数
int b[10],i;

cout<<"输入10位同学的成绩:"<<endl;
for(i=0;i<=9;i++)
cin>>b[i];
stu(b);
stu1(b);
}


void stu(int a[]) //定义求平均数函数
{
float sun=0.0;
int i;
for(i=0;i<=9;i++)
sun=sun+a[i];
sun=sun/10;
cout<<"平均数为:"<<sun<<endl;
}

void stu1(int a[]) //定义求最高分和最低分函数
{
int t;
int j;
int k;
int max; int min;
for(j=0;j<=9;j++)
for(k=0;k<=9;k++)
if(a[j]<a[k])
{
t=a[j];
a[j]=a[k];
a[k]=t;
}

for(k=0;k<=9;k++)
cout<<a[k]<<endl;
max=a[9];
min=a[0];
cout<<"最高分为:"<<max<<endl;
cout<<"最低分为:"<<min<<endl;
}

#29
tangofan2007-06-01 10:04
我说,大家怎么都编程编到一两点啊? 抗得住吗? 真是佩服
#30
tangofan2007-06-01 10:05
对了,儿童节快乐!
#31
孤魂居士2007-06-01 15:46

34楼兄弟的和我原始的差不多 就比我的多了个循环
我的就错了 他的就对了
#32
孤魂居士2007-06-01 15:50

32楼仁兄的代码好少啊?
#33
zkkpkk2007-06-03 17:27
以下是引用谁与争疯在2007-5-31 23:38:53的发言:

请注意#include <algorithm>,它提供了常用的算法,sort()是里面的负责排序的函数,对于新手而言不支持使用现成的函数

#34
zkkpkk2007-06-03 17:28
以下是引用孤魂居士在2007-6-1 15:50:24的发言:

32楼仁兄的代码好少啊?

他问的另外个问题吧,和你的无关,也不知道他为什么跑来你的帖问

#35
独孤风2007-06-04 18:48
#include <list>
#include <algorithm>
int a[10];
void main()
{
void stu(); //声明求平均数函数
void stu1(); //声明求最高分和最低分函数

int i; // 这里不要 a[10], 前面定义了
cout<<"输入10位同学的成绩:"<<endl; //引号, 前面的兄弟说了
for(i=0;i<=9;i++)
cin>>a[i]; //这里是 a[i]
stu();
stu1();
}


void stu() //定义求平均数函数
{
double sum=0; // 这里要初使化, 见意用 float 形

double sun;
int i;
for(i=0;i<=9;i++)
sum=sum+a[i];
sun=sum/10;
cout<<"平均数为:"<<sun<<endl;
}

void stu1() //定义求最高分和最低分函数
{


list<int> ival; //这里定义一个容器

for(int i=0;i<9;i++)
ival.push_back(a[i]); //给容器赋值
ival.sort(); //容器排序
list<int>::iterator iter;
for(iter=ival.begin();iter!=ival.end();iter++)
{
int i=0;
a[i++]=*iter; //给数组值
}
for(int k=0;k<10;k++)
cout<<a[k]<<ends;
//从小到大输出这10个学生的成绩

cout<<"最低分为:"<<a[0]<<endl;


cout<<"最高分为:"<<a[9]<<endl;
}
1