[英]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.