輸入一些非負實數 用數組輸出這些數 求平均數並輸出(輸入負數時報錯並退出重新輸入,輸入回車時執行下一步操作)
#include
using namespace std;
int main()
{
int i,j,k;
double a[100],sum=0,avr;
part1:
cout<<"輸入數字"<
j=0,k=0;
for (i=0;getchar()!='\n';i++)
{
cin>>a[i];
if (a[i]< 0)
{
j=1;
}
k++;
}
if(j==1)
{
cout<<"您在數據中輸入了一個負數"<<endl;
goto part1;
}
cout<<"輸入的數據為:"<<endl;
for(i=0;i<=k;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
for(i = 0;i<=k;i++)
{
sum=sum+a[i];
}
avr=sum/(k+1);
cout<<avr;
return 0;
}
.用戶輸入的字符被存放在鍵盤緩沖區中.直到用戶按回車為止(回車字符也放在緩沖區中).當用戶鍵入回車之後,getchar才開始從stdio流中每次讀入一個字符..如用戶在按回車之前輸入了不止一個字符,其他字符會保留在鍵盤緩存區中,等待後續getchar調用讀取.也就是說,後續的getchar調用不會等待用戶按鍵,而直接讀取緩沖區中的字符,直到緩沖區中的字符讀完為後,才等待用戶按鍵.
第一個字符被getchar()用掉了。
for (i=0;getchar()!='\n';i++)
{
cin>>a[i];
if (a[i]< 0)
{
j=1;
}
k++;
}
後面的循環應該是i<k,多了一次,輸出了一個隨機數
for(i=0;i<=k;i++)
{
cout<<a[i]<<" ";
}