C++连续连个scanf,第二个scanf无效的原因及解决方法

C++连续连个scanf,第二个scanf无效的原因及解决方法

1. 现象

今天写代码解决问题的时候,发现代码无法停止,首先想着是可能逻辑有错误,代码无限循环了,后面发现循环根本没执行。

从头开始debug发现输入根本没有被接收,简单代码如下:

int main(){
    int n;
    scanf("%d",&n);
    vector<course> vec(n);
    
    int a ,b;
    scanf("[%d,%d]",&a,&b);
    printf("[%d,%d]",a,b)
}

在这里插入图片描述
当运行项目刚输入完第一个scanf时,输入的是1,就直接运行成下面的printf了。

解决方案

最后发现,可能是输入了第一个变量之后,按的回车键,被错误读入了,导致程序无法执行,所以在第一个scan后面加上\n即可
在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 好的,下面是一个使用 C 语言实现的简单计算器代码: ``` #include <stdio.h> int main() { double num1, num2; char operation; ### 回答2: 实现一个计算器的程序主要包括以下几个步骤: 1. 需要定义一个主函数,作为程序入口,用来接受用户输入和调用其他函数进行计算。 2. 定义一个函数用来输入运算表达式,并返回一个字符串作为表达式的存储。 3. 实现一个函数用来解析表达式字符串,将其转换为适合计算的形式,例如将"1 + 2"转换为1+2。 4. 创建一个函数用于实际计算表达式的结果。 5. 在主函数中调用输入函数,将用户输入的表达式存储起来。 6. 调用解析函数对表达式进行解析。 7. 调用计算函数计算表达式的结果,并将结果打印输出。 下面是一个简单的用C语言实现的计算器程序示例: ``` #include <stdio.h> #include <stdlib.h> // 输入表达式函数 char* input_expression() { char* expression = (char*)malloc(100 * sizeof(char)); printf("请输入要计算的表达式:"); scanf("%s", expression); return expression; } // 解析表达式函数 int parse_expression(char* expression) { // 这里省略了解析过程,简化为直接返回表达式的结果 return atoi(expression); } // 计算函数 int calculate_expression(int num1, int num2, char operator) { int result; switch (operator) { case '+': result = num1 + num2; break; case '-': result = num1 - num2; break; case '*': result = num1 * num2; break; case '/': result = num1 / num2; break; default: printf("无效的操作符"); result = 0; break; } return result; } // 主函数 int main() { char* expression; int result; expression = input_expression(); // 输入表达式 result = parse_expression(expression); // 解析表达式 printf("计算结果:%d\n", result); // 打印结果 return 0; } ``` 这个简单的计算器程序仅支持输入两个整数和"+", "-", "*", "/"四种操作符,并直接调用相应的函数进行计算。如果需要支持更多的操作符和复杂的表达式,需要进一步扩展代码实现。 ### 回答3: 使用C语言可以实现一个基础的计算器程序。以下是一个简单的计算器示例代码: ```c #include <stdio.h> int main() { float num1, num2, result; char operator; // 用户输入第一个数字 printf("请输入第一个数字: "); scanf("%f", &num1); // 用户输入操作符 printf("请输入操作符(+, -, *, /): "); scanf(" %c", &operator); // 注意添加一个空格 // 用户输入第二个数字 printf("请输入第二个数字: "); scanf("%f", &num2); // 进行计算 switch(operator) { case '+': result = num1 + num2; break; case '-': result = num1 - num2; break; case '*': result = num1 * num2; break; case '/': if(num2 != 0) { result = num1 / num2; } else { printf("错误:除数不能为0!\n"); return 1; // 程序终止 } break; default: printf("错误:未知的操作符!\n"); return 1; // 程序终止 } // 输出结果 printf("计算结果为: %.2f\n", result); return 0; } ``` 用户可以依次输入第一个数字,操作符(加、减、乘、除)和第二个数字,程序会根据操作符进行对应的计算,并输出结果。需要注意的是,除法运算时需要判断除数是否为0,以避免出现错误。 这只是一个简单的计算器程序示例,实际上还可以进行更多的优化和功能增强,比如添加更多的操作符,实现连续运算等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值