統計給定的n個數中,負數、零和正數的個數。

統計給定的n個數中,負數、零和正數的個數。輸入數據有多組,每組佔一行,每行的第一個數是整數n(n<100),表示需要統計的數值的個數,然後是n個實數;如果n=0,則表示輸入結束,該行不做處理。對於每組輸入數據,輸出一行a,b和c,分別表示給定的數據中負數、零和正數的個數。

剛拿到題時,對於n=0,想到的是if語句,但是,結果卻是讓我很傷心啊~~

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main(){
	int n;
	while(scanf("%d",&n)){
		if(n) break;
		int a=0,b=0,c=0; 
		double num;
		for(int i=0;i<n;i++){
		 scanf("%lf",&num);
		 if (num>0) a++;
		 else if(num=0) b++;
		 else c++;
		 //printf("%d",num[i]);
	}
	printf("%d %d %d",a,b,c);
}
}

在這裏插入圖片描述
很明顯,在判斷的時候,他執行了if(n=0)語句。
這裏,比較巧的方法是,在while語句中控制n=0的情況

while(scanf("%d",&n),n)

做題時發現while語句都有用到scanf作爲真假條件,所以,做下筆記吧

while(scanf("%d",&n),n) 當n爲0時中止循環
while(scanf("%d",&n)) 無輸入時,終止循環
while(scanf("%d",&n)!=EOF) 讀到文件結尾時中止循環
while(~scanf("%d",&n)) 讀到文件結尾時中止循環
while(scanf("%d",&n)==1) 賦值失敗,跳出循環
  1. scanf("%d",&n)返回值就是輸入的整數的個數,所以scanf("%d",&n)=1,scanf("%d%d",&n,&m)=2
  2. ~是按位取反,即數值寫成2進制,然後0改成1,1改成0
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章