- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我编写了一个程序,它从用户那里接收一系列数字 (<=20),而最后一个“0”表示系列结束(不包括在系列存储中)。 2 个数组 (x,y) 大小为 20(0-19 + 1 表示“0”)必须为零,m 表示 Y 数组中的器官数。
用户必须输入升序数字(可以是 4ex. 1,2,2,3,7,8,...,0)并以“0”结尾,当然,如果不是,则会出现相应的错误消息出现,程序将关闭。
我们可以确定用户会保留 <=20 个输入。
Y 数组将是(如果 X 数组一切正常的话)X 的排序数组但没有重复项。 “m”将是 Y 中的器官数量,当然不包括“0”。
函数 SIFT 必须只组织 Y 数组以便从 main() 打印。
示例:
如果用户将存储在 X 中:1,1,2,3,5,5,5,6
屏幕上将是:m = 5 Y = 1,2,3,5,6
我的代码:
#include <stdio.h>
#include <string.h>
void SIFT(int x_arr[ ], int y_arr[]);
int main ()
{
int x[20] = {0} , y[20] = {0};
int m=0,temp=0,curr=0,i=0,j=0;
printf("Please enter your numbers now:\n\n");
/*enter numbers one by one. if x[i+1] value < x[i] value, err msg.
when user want to end the series he must enter '0' which means end of string (it wont included in x[]) */
while ( ( temp = getchar() ) != '0' )
{
if (temp >= curr)
{
x[i] = temp;
curr = temp;
i++;
}
else
{
printf("The numbers are not at the right order !\n\nProgram will now terminate...\n\n");
}
}
SIFT(x,y);
for (i=0 ; y[i]=='0' ; i++) /*strlen(y) without ('0')'s includes*/
m++;
/*Prints m , y's organs*/
printf("\n\nm = %d",m);
printf("Y = ");
while (y[j]!='0')
{
printf ("%d ,",y[j]);
j++;
}
return 0;
}
void SIFT(int x_arr[ ], int y_arr[])
{
int i=0,j=0;
while (x_arr[i] != '0')
{
if (x_arr[i] == x_arr[i+1]) /*if current val. equals next val. -> jump dbl at x_arr*/
{
y_arr[j] = x_arr[i];
i+=2;
j++;
}
else
{
y_arr[j]=x_arr[i];
i++;
j++;
}
}
}
出于某种未知原因,对于任何类型的合法输入,我都会收到“数字顺序不正确...”错误消息...
如果有人能修复它,我会非常高兴,所以它应该可以正常工作,因为直到现在我可以看到一切似乎都很好......
谢谢 :( ...
最佳答案
getchar()
并不像您认为的那样。阅读它的描述 ( http://pubs.opengroup.org/onlinepubs/9699919799/functions/getchar.html )。
您可以尝试使用 scanf()
(http://pubs.opengroup.org/onlinepubs/9699919799/functions/scanf.html),或者更好的方法是 fgets()
和 sscanf()
。
关于c - 程序没有做它应该做的事 - C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5664480/
我是一名优秀的程序员,十分优秀!