不計算%和休息/退出我試圖做一個小程序,在用戶輸入號碼的清單,並在年底就顯示多少在數字%是奇數或偶數。計劃在C對特定輸入
如果用戶輸入沒有值(剛按下回車)它停止請求的數目,並顯示該計算,但如果用戶輸入exit
它退出。此外,我想檢查輸入的號碼是否是整數。
在這裏我得到了什麼至今:
#include <stdio.h>
int main(void)
{
int input, all [100], even[100], odd[100], even_counter, even_print, odd_counter, odd_print, total_counter, total_print, even_p, odd_p;
char cinput;
for (;;)
{
printf("Enter a number: ");
if (scanf("%d", &cinput) != 1) break;
input=(int)(cinput-0);
all[total_counter]=input; //Insert number in all numbers array
if (input % 2 == 0)
{
even[even_counter]=input; //Insert number in even numbers array
even_counter++;
total_counter++;
}
if (input % 2 != 0)
{
odd[odd_counter]=input; //Insert number in odd numbers array
odd_counter++;
total_counter++;
}
}
printf("\n You entered the following numbers: ");
for (total_print=0; total_print<total_counter; total_print++)
{
printf("%d ", all[total_print]); //Show all entered numbers
}
printf("\n Even numbers are: ");
for (even_print=0; even_print<even_counter; even_print++)
{
printf("%d ", even[even_print]); //Show even numbers only
}
printf("\n Odd numbers are: ");
for (odd_print=0; odd_print<odd_counter; odd_print++)
{
printf("%d ", odd[odd_print]); //show odd numbers only
}
printf("\n\n Total numbers entered: %d", total_counter); //Show count of all numbers
printf("\n Even numbers entered: %d", even_counter); //Show count of even numbers
printf("\n Odd numbers entered: %d", odd_counter); //Show count of odd numbers
even_p=(even_counter/total_counter)*100; //Calculate % of even numbers
odd_p=(odd_counter/total_counter)*100; //Calculate % of odd numbers
printf("\n\n Even numbers are %d %% of total number (%d out of %d)", even_p, even_counter, total_counter);
printf("\n Odd numbers are %d %% of total number (%d out of %d)", odd_p, odd_counter, total_counter);
}
什麼工作:
- 它將所有輸入的數字在一個陣列中,偶數和奇數中 單獨的數組。
- 它計算許多數字是如何進入,有多少是連怎麼 很多都是奇數。
- 只要輸入一個非數字字符不言而喻顯示 結果。
什麼不起作用:
- 的計算%總是說,這是0%。
- 奇數組中的第一個數字是0。
我想不出什麼:
- 如何使它去的結果,如果不輸入任何?試圖
if (scanf("%d", &cinput) != "\n") break;
,但它只是 陷入了循環請求另一個號碼。 - 如何使程序退出如果輸入
exit
? - 如何檢查是否輸入了整數?
編輯
計數器初始化。 scanf(「%d」,&輸入)更改爲scanf(「%d」,&輸入)。將even_p和odd_p更改爲float(從int)。現在計算工作正常,odd_array中的第一個值很好。
#include <stdio.h>
int main(void)
{
int input, all [100], even[100], odd[100], even_counter, even_print, odd_counter, odd_print, total_counter, total_print;
even_counter=0;
even_print=0;
odd_counter=0;
odd_print=0;
total_counter=0;
total_print=0;
for (;;)
{
printf("Enter a number: ");
if (scanf("%d", &input) != 1) break;
all[total_counter]=input; //Insert number in all numbers array
if (input % 2 == 0)
{
even[even_counter]=input; //Insert number in even numbers array
even_counter++;
total_counter++;
}
if (input % 2 != 0)
{
odd[odd_counter]=input; //Insert number in odd numbers array
odd_counter++;
total_counter++;
}
}
printf("\n You entered the following numbers: ");
for (total_print=0; total_print<total_counter; total_print++)
{
printf("%d ", all[total_print]); //Show all entered numbers
}
printf("\n Even numbers are: ");
for (even_print=0; even_print<even_counter; even_print++)
{
printf("%d ", even[even_print]); //Show even numbers only
}
printf("\n Odd numbers are: ");
for (odd_print=0; odd_print<odd_counter; odd_print++)
{
printf("%d ", odd[odd_print]); //show odd numbers only
}
printf("\n\n Total numbers entered: %d", total_counter); //Show count of all numbers
printf("\n Even numbers entered: %d", even_counter); //Show count of even numbers
printf("\n Odd numbers entered: %d", odd_counter); //Show count of odd numbers
float even_p=((float)(even_counter)/total_counter)*100; //Calculate % of even numbers
float odd_p=((float)(odd_counter)/total_counter)*100; //Calculate % of odd numbers
printf("\n\n Even numbers are %f %% of total number (%d out of %d)", even_p, even_counter, total_counter);
printf("\n Odd numbers are %f %% of total number (%d out of %d)", odd_p, odd_counter, total_counter);
}
現在我只需要如果它是一個整數(顯示消息,但繼續要求的數字),去計算,如果未輸入值,如果輸入exit
退出要檢查的輸入。而且我忘了 - 如果用戶輸入的號碼少於10個,用戶就不應該進行計算。 :(
您應該掃描一個字符串和解析它根據您的需要[有用鏈接](http://stackoverflow.com/questions/5406935/reading-a-string-with-scanf) –
「如果(scanf函數(「% d「,&cinput)!= 1)'no。cinput是一個字符,你讀取一個int :( – ThingyWotsit
)你應該初始化計數器爲0 –