往数组中输入数据,并通过 回车键 来确定输入的结束(提早结束输入)

小城之光 2012-10-17 07:43:42
#include<iostream>
using namespace std;
const int max = 10;
int input_golf(double ar[]);
void show_golf(double ar[], int size);
double average_golf(double ar[], int size);

int main()
{
double golf[max];
int n;
n = input_golf(golf);
show_golf(golf, n);
double average;
average = average_golf(golf, n);
cout << "the average score is : " << average << endl;
return 0;
}

int input_golf(double ar[])
{
double score;
int i = 0;
cout << "please enter scores : " << endl;
cin >> score;
while ((cin.get() != '\n') && (i < max))
{
ar[i] = score;
cin >> score;
i++;
}
return(i);
}

void show_golf(double ar[], int size)
{
int i;
for (i = 0; i < size; i++)
{
cout << ar[i] << " ";
}
cout << endl;
}

double average_golf(double ar[], int size)
{
int i;
double sum = 0;
for (i = 0; i < size; i++)
{
sum += ar[i];
}
return(sum/size);
}
输入:8 9
输出:8
平均值:8

请教!为啥输出总比输入少一个数呃?
...全文
511 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangqiang1101 2012-10-20
  • 打赏
  • 举报
回复
i != '\n'就可以啊!
mujiok2003 2012-10-19
  • 打赏
  • 举报
回复

cout << "please enter scores : " << endl;
//cin >> score;
while (i < MAX)
{
cin >> score;
if(cin)
{
ar[i++] = score;
}
else //非法字母
{
break;
}

if(cin.get() == '\n') //换行了
{
break;
}
}
小城之光 2012-10-19
  • 打赏
  • 举报
回复
多谢大家咧! 不过只能采纳 #1楼 的修改方法了,因为想实现通过enter键来判断数组是否提早结束输入。
同时追问 #1楼,修改前后的区别在哪里?
赵4老师 2012-10-19
  • 打赏
  • 举报
回复
char s[1000];
fgets(s,1000,stdin);
mujiok2003 2012-10-19
  • 打赏
  • 举报
回复

int input_golf(double ar[])
{
double score;
int i = 0;
cout << "please enter scores : " << endl;
//cin >> score;
while (i < max && cin >> score)
{
ar[i] = score;
//cin >> score;
i++;
}
return(i);
}
mujiok2003 2012-10-19
  • 打赏
  • 举报
回复
[code=C/C++]
int input_golf(double ar[])
{
double score;
int i = 0;
cout << "please enter scores : " << endl;
//cin >> score;
while (i < max && cin >> score)
{
ar[i] = score;
//cin >> score;
i++;
}
return(i);
}
code]
logiciel 2012-10-19
  • 打赏
  • 举报
回复
请参考以下修改
int input_golf(double ar[])
{
double score;
int i = 0;
cout << "please enter scores : " << endl;
//cin >> score;
do//while ((cin.get() != '\n') && (i < max))
{
cin >> score;
ar[i] = score;
//cin >> score;
i++;
}while ((cin.get() != '\n') && (i < max));

return(i);
}

65,199

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧