C语言:求大佬解决getchar被直接跳过的问题
  • 板块学术版
  • 楼主C_vegetable
  • 当前回复0
  • 已保存回复0
  • 发布时间2020/11/26 16:35
  • 上次更新2023/11/5 07:18:34
查看原帖
C语言:求大佬解决getchar被直接跳过的问题
436687
C_vegetable楼主2020/11/26 16:35

编译没报错,运行的时候就直接把输入环节给跳了,这是为啥啊?

小明给出一堆整数和运算要求(+、-、*、/、%),小丽要找出这些整数中的最大值和最小值,然后按照小明的要求算出最大数与最小数进行算术运算的结果。

输入: 用逗号分隔的整数序列,及其运算符和等号

输出: 最大数 op 最小数=结果

#include <stdio.h>
#include <stdlib.h> 
int main()
{
	int i,j,min,max,i1;
	char ch[100][100]={'\0'};//定义字符二维数组,便于存入每个数字型的字符串 
	for(i=0;ch[i-1][0]!='\0';i++)//循环变量i控制一下行数变化,记得在前面定义一下
	{
		for(j=0;;j++)
		{
			ch[i][j]=getchar();//回显不回车 ,读入一个字符 
			if(ch[i][j]==',')
			{
				ch[i][j]='\0';
				break;
			}
			else if(ch[i][j]=='\n')
			{
				ch[i][j-1]=ch[i][j]=0;
				i1=i;//记录这个i,会用到的,用来找加减乘除符号的 
				break;
			}
		}
	}//把所有的数字字符串读进来,储存在数组里
	min=atoi(ch[0]);
	max=atoi(ch[0]);//先读取第一个数字并存起来,待会要冲掉 
	for(i=1;i<i1-1;i++)//读数字,直到运算符号 
	{
		min=(min<=atoi(ch[i]))?min:atoi(ch[i]);
		max=(max>=atoi(ch[i]))?max:atoi(ch[i]);//存储最大值与最小值 
	}
	switch(ch[i1-1][0])
	{
		case '+':printf("%d",max+min);break;
		case '-':printf("%d",max-min);break;
		case '*':printf("%d",max*min);break;
		case '/':printf("%d",max/min);//可能需要改数据类型 
	}
}
2020/11/26 16:35
加载中...