簡體   English   中英

getchar() 用於從輸入中排除字符

[英]getchar() for excluding chars from input

這是我想要做的:我的老師給了我一個作業來接收來自用戶的輸入,例如“1,2,3,4,-3,17,-9,0,5,-8,10”和用戶按下回車鍵后,程序應忽略“,”符號並打印正數和負數(每個)的最大值和最小值。 現在他說我們應該使用 getchar() 來做到這一點,但我不明白如何......我知道這個函數用於從用戶讀取單個字符(而不是用 putchar() 打印它)而不是用於忽略字符,所以我想了解我應該如何使用它在 while 循環中執行此類操作。

所以總結一下我的問題是關於有選擇地閱讀輸入(其他事情我會自己管理,盡管如果有人在代碼中看到一些東西並且可以給出提示,我會很高興但我希望理解 getchar() 函數來做相反的事情我正在閱讀它的目的),我已經編寫和刪除了數千次代碼,但無法讓它工作......這就是它現在的樣子(它不起作用):

#include <stdio.h>
#include <stdlib.h>

int main(){

char enter = "\n";
int list_of_nums[100];
char ch1[100];
int neg_num[100];
int pos_num[100];

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


while (getchar()!= enter) {
    scanf("%d" ,&list_of_nums;
    if (list_of_nums >= 0){
        getchar();
       pos_num.append(list_of_nums);
    }
    else{
                neg_num.append(list_of_nums);

        }
}



 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("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;



}

根據第一個輸入選擇下一個輸入中會發生什么。 這是負數的代碼。 只需添加帶有兩位數的案例並對其進行優化:

#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;
}

PS 對於未來,不要發布“需要幫助做功課”的問題,而是盡可能地解決任務。 這樣你就可以提出更多研究過的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM