来自简单代码的意外结果

时间:2015-08-02 02:51:22

标签: c++ while-loop

  

Q)写一个程序来接受n个雇员的年龄并计算   以下年龄组的人数:(i)26-35
  (ii)36-45
(iii)46-55

我写了这个程序:

#include<iostream.h>
#include<conio.h>
int main(){
 clrscr();
 unsigned int a, i,ii,iii,ch;
 while(1){
  cout<<"Enter age: ";
  cin>>a;
  if(a>=26 && a<=35){i++;};
  if(a>=36 && a<=45){ii++;};
  if(a>=46 && a<=55){iii++};
  cout<<"continue...[0/1]: ";
  cin>>ch;
  if(!ch){break;}else{continue;};
 };
cout<<"26-35: "<<i<<"/n 36-45: "<<ii<<"\n 45-55: "<<iii;
return 0;
};

该程序的第一个版本包括goto语句,而不是while循环,但事实是两种情况下的结果都是错误的。

运行此代码后的答案是:

26-35:1515
36-45:1539
46-55:1

在这里你可以看到只有最后一个年龄组的数量是正确的,因为我在代码运行时只输入了27,37和54次。

1 个答案:

答案 0 :(得分:4)

  1. 初始化i=0,ii=0,iii=0。 你忘记了初始化它们。(这是错误答案的原因)

  2. 不要使用多余的额外逻辑。 else {continue;}。你不需要它。