用于从输入中排除字符的getchar()

用于从输入中排除字符的getchar(),c,while-loop,max,min,getchar,C,While Loop,Max,Min,Getchar,以下是我想做的: 我的老师给了我一个任务,让我接收来自用户的输入,如“1,2,3,4,-3,17,-9,0,5,-8,10”,用户按下enter键后,程序应忽略“,”符号,并打印正数和负数(每个)的最大值和最小值。 现在他说我们应该用getchar()来做这个,但我不明白怎么做。。。我知道该函数用于从用户读取单个字符(然后用putchar()打印),而不是忽略字符,因此我想了解如何在while循环中使用它来执行此类操作 所以总结一下,我的问题是有选择地阅读输入(其他事情我会自己处理,尽管如果有人

以下是我想做的: 我的老师给了我一个任务,让我接收来自用户的输入,如“1,2,3,4,-3,17,-9,0,5,-8,10”,用户按下enter键后,程序应忽略“,”符号,并打印正数和负数(每个)的最大值和最小值。 现在他说我们应该用getchar()来做这个,但我不明白怎么做。。。我知道该函数用于从用户读取单个字符(然后用putchar()打印),而不是忽略字符,因此我想了解如何在while循环中使用它来执行此类操作

所以总结一下,我的问题是有选择地阅读输入(其他事情我会自己处理,尽管如果有人看到代码中的某些东西并能给出提示,我会很高兴,但我希望理解getchar()函数,以实现与我阅读它的目的相反的功能),我已经编写和删除了数千次的代码,但无法让它工作。。。这就是它现在的样子(但它不起作用):

#包括
#包括
int main(){
char enter=“\n”;
整数列表中的整数[100];
charch1[100];
int neg_num[100];
int pos_num[100];
printf(“请输入以“,”分隔的数字:\n”);
while(getchar()!=enter){
scanf(“%d”),&list\u/nums;
如果(数量列表>=0){
getchar();
位置编号追加(编号列表);
}
否则{
负数值追加(数值列表);
}
}
int max_pos=max.pos_num[];
int min_pos=min.pos_num[];
int max_neg=max.neg_num[];
int min_pos=min.neg_num[];
printf(“所有正片的最大数量为:%d\n”,最大位置);
printf(“所有正片的最小数量为:%d\n”,min\u pos);
printf(“所有底片的最大数量为:%d\n”,max_neg);
printf(“所有底片的最小数量为:%d\n”,最小负片数);
返回0;
}

根据第一个输入选择下一个输入中发生的情况。以下是负数的代码。只需添加两位数的大小写并对其进行优化:

#include <stdio.h>
#include <stdlib.h>
#define MAX_NUMBERS 100

int main(void){
    int list_of_nums[MAX_NUMBERS];
    int pos_nums[MAX_NUMBERS];
    int neg_nums[MAX_NUMBERS];
    int size = 0, size_pos = 0, size_neg = 0, i, max_pos, min_pos, max_neg, min_neg, neg_flag = 0;
    char input;

    printf("Enter numbers separated by ',':\n");

    do {
        input = getchar();
        if(input == '-') {
            neg_flag = 1;   //for negative numbers
            input = getchar();
        }
        if(input >= '0' && input <= '9') {
            if(neg_flag) {
                list_of_nums[size] = -(input - 48); //FROM ASCII CHARACTER CODE
            } else {
                list_of_nums[size] = input - 48;
            }
            neg_flag = 0;
            size++;
        } else {
            neg_flag = 0;
        }
    } while(input != '\n');

    for(i = 0; i < size; i++) {
        printf("%d ", list_of_nums[i]);
        if(list_of_nums[i] >= 0) {
            pos_nums[size_pos] = list_of_nums[i];
            size_pos++;
        }
        else {
            neg_nums[size_neg] = list_of_nums[i];
            size_neg++;
        };
    }
    printf("\n");

    max_pos = pos_nums[0];
    min_pos = pos_nums[0];
    for(i = 1; i < size_pos; i++) {
        if(max_pos < pos_nums[i]) max_pos = pos_nums[i];
        if(min_pos > pos_nums[i]) min_pos = pos_nums[i];
    }

    max_neg = neg_nums[0];
    min_neg = neg_nums[0];
    for(i = 1; i < size_neg; i++) {
        if(max_neg < neg_nums[i]) max_neg = neg_nums[i];
        if(min_neg > neg_nums[i]) min_neg = neg_nums[i];
    }

    printf("The maximum number of all the positives is: %d\n", max_pos);
    printf("The minimum number of all the positives is: %d\n", min_pos);
    printf("The maximum number of all the negatives is: %d\n", max_neg);
    printf("The minimum number of all the negatives is: %d\n", min_neg);

    return 0;
}
#包括
#包括
#定义最大值为100
内部主(空){
整数列表[最大值];
int pos_nums[最大数量];
整数负整数[最大数];
int size=0,size_pos=0,size_neg=0,i,max_pos,min_pos,max_neg,min_neg,neg_flag=0;
字符输入;
printf(“输入以“,”分隔的数字:\n”);
做{
input=getchar();
如果(输入=='-'){
neg_flag=1;//对于负数
input=getchar();
}
如果(输入>='0'&&input=0){
pos_nums[size_pos]=数量清单[i];
大小_pos++;
}
否则{
neg_nums[size_neg]=清单[i];
大小_neg++;
};
}
printf(“\n”);
最大位置=位置数值[0];
min_pos=pos_nums[0];
对于(i=1;ipos_nums[i])min_pos=pos_nums[i];
}
max_neg=neg_nums[0];
最小负=负数值[0];
对于(i=1;ineg_nums[i])min_neg=neg_nums[i];
}
printf(“所有正片的最大数量为:%d\n”,最大位置);
printf(“所有正片的最小数量为:%d\n”,min\u pos);
printf(“所有底片的最大数量为:%d\n”,max_neg);
printf(“所有底片的最小数量为:%d\n”,最小负片数);
返回0;
}
另外,对于未来,不要发布“家庭作业需要帮助”的问题,而是尽可能地解决任务。这样你就能提出更多的问题


请包括您已经尝试过的代码。Stack Overflow不是免费的代码编写/家庭作业服务。请求家庭作业帮助的问题必须包括您迄今为止为解决该问题所做工作的摘要,以及您解决该问题所遇到的困难的描述。--提示:您阅读用户输入的任何内容,然后才做出决定不管你是否忽略它。。。
#include <stdio.h>
#include <stdlib.h>
#define MAX_NUMBERS 100

int main(void){
    int list_of_nums[MAX_NUMBERS];
    int pos_nums[MAX_NUMBERS];
    int neg_nums[MAX_NUMBERS];
    int size = 0, size_pos = 0, size_neg = 0, i, max_pos, min_pos, max_neg, min_neg, neg_flag = 0;
    char input;

    printf("Enter numbers separated by ',':\n");

    do {
        input = getchar();
        if(input == '-') {
            neg_flag = 1;   //for negative numbers
            input = getchar();
        }
        if(input >= '0' && input <= '9') {
            if(neg_flag) {
                list_of_nums[size] = -(input - 48); //FROM ASCII CHARACTER CODE
            } else {
                list_of_nums[size] = input - 48;
            }
            neg_flag = 0;
            size++;
        } else {
            neg_flag = 0;
        }
    } while(input != '\n');

    for(i = 0; i < size; i++) {
        printf("%d ", list_of_nums[i]);
        if(list_of_nums[i] >= 0) {
            pos_nums[size_pos] = list_of_nums[i];
            size_pos++;
        }
        else {
            neg_nums[size_neg] = list_of_nums[i];
            size_neg++;
        };
    }
    printf("\n");

    max_pos = pos_nums[0];
    min_pos = pos_nums[0];
    for(i = 1; i < size_pos; i++) {
        if(max_pos < pos_nums[i]) max_pos = pos_nums[i];
        if(min_pos > pos_nums[i]) min_pos = pos_nums[i];
    }

    max_neg = neg_nums[0];
    min_neg = neg_nums[0];
    for(i = 1; i < size_neg; i++) {
        if(max_neg < neg_nums[i]) max_neg = neg_nums[i];
        if(min_neg > neg_nums[i]) min_neg = neg_nums[i];
    }

    printf("The maximum number of all the positives is: %d\n", max_pos);
    printf("The minimum number of all the positives is: %d\n", min_pos);
    printf("The maximum number of all the negatives is: %d\n", max_neg);
    printf("The minimum number of all the negatives is: %d\n", min_neg);

    return 0;
}