- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这就是我正在尝试做的事情:我的老师给了我一个作业,要求我接收来自用户的输入,例如“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;
}
P.S. For future, don't post "need help with homework" questions but try to go as far as possible in solving the task. That way you'll be able to present more researched question.
关于c - getchar() 用于从输入中排除字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53919282/
我很抱歉我英语不好。 让我们看看下面的代码。 main = getChar 首先,main会被求值,它的值是“getChar”,但是编译器不知道“getChar”的值,所以编译器会求值“getChar
我正在尝试比较用户插入的两个(或更多)输入。我正在为它使用 getchar() 函数,但它似乎不起作用......我需要先检查它的字母(英文),以及是否连续没有 2 个(或更多)大写或小写字母。这是我
当我想弄清楚 getchar() 到底做了什么时,这一小段 loop 确实让我感到困惑。 int i; int c; for (i = 0; i 验证您的输入。 因此,您应该在完成 getchar 后
#include int main(){ char ch; while((ch=getchar())!=EOF){ putchar(ch); } cha
我在关注《C Primer Plus》这本书,遇到这样一段代码: // echo_eof.c -- repeats input to end of file. #include int main(v
我只是编程的初学者。我正在学习 K&R 的书《C 编程语言》。我一边看一边对这个问题越来越好奇——当有一个循环从输入中一个一个地获取字符时,我在循环中放置了一个输出函数,我认为其结果就像在输入每个字符
人们通常会提到 while( getchar() != '\n' ) 当谈到清除输入缓冲区或溢出时。 fgetc 或 getc 也可以。例如: while( fgetc(stdin) != '\n'
一旦遇到'~',之后的任何内容都不会被打印出来,控制就出来了while循环 while((c = getchar()) != '~') { putchar(c); printf(" "
我有一个执行大量处理的小程序。您可以通过按回车键打印进度。 我实现它的方法是在主线程中完成处理,同时我有一个 pthread 不断循环 getchar() 以等待输入键。 问题是当我完成处理时。发生这
我试图解决 K&R 中的问题 1.6。问题是—— 验证表达式getchar() != EOF 为 0 或 1。 我找到了一个可行的解决方案: #include int main(){ int
我正在尝试开发一个(简单的)个人项目,它使用经典的“MOD 10”规则充当信用卡验证器。 我在项目的第一部分遇到了一些困难。 目标是这样的: 从用户那里获取 16 个字符,一次一个。 每输入一个字符,
对于我的一个练习,我们需要逐行阅读并仅使用 getchar 和 printf 输出。我正在关注 K&R,其中一个示例显示了使用 getchar 和 putchar。根据我的阅读,getchar() 一
我只是想知道如何 getchar() 实现了吗?是不是像下面这样?以这种方式读取单字节效率非常低。它是否使用一些缓冲? 伪代码: int getchar() { char buf[1];
在 K&R 书中的以下代码示例中,如果我将 putchar(c) 替换为 printf("%c", c),代码的工作方式相同。但是,如果我用 printf("%d", c) 替换它,它会给出乱码输出。
我想选择性地中止 getChar行动。我需要以下功能: getChar' :: (Char -> IO ()) -> IO (IO ()) 如果是abort IO ()) -> IO (IO ())
所以我知道 getchar() 在输入结束或发生错误时返回 EOF。我也知道我可以通过 ferror(stdin) 和 feof(stdin) 来检查哪些情况发生了。我想知道特别是在什么情况下会发生错
我无法忽略空格/制表符。当用户从命令提示符输入字符时,它应该只接受除空格或制表符空格之外的任何字符。 例如: $ ./a.out Character: = 那么,就是= 如果 $ ./a.out Ch
我正在使用 chrome devtools network API和下面的代码,但总是在我打开 devtool 窗口 (F12) 时启动警报窗口。有什么方法可以在不打开该窗口的情况下启动警报,例如,当
所以我知道 getchar() 在输入结束或发生错误时返回 EOF。我也知道我可以通过 ferror(stdin) 和 feof(stdin) 来检查哪些情况发生了。我想知道特别是在什么情况下会发生错
所以我一直在自学 C,并且遇到了来自“stdio.h”的“getchar()”和“putchar()”方法。据我了解,“getchar()”从文本流中获取最新的字符并将其存储到一个变量中,而“putc
我是一名优秀的程序员,十分优秀!