不计算%和休息/退出我试图做一个小程序,在用户输入号码的清单,并在年底就显示多少在数字%是奇数或偶数。计划在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 –