c++ - 如何使用linux接受多个输入进行操作
问题描述
我需要帮助理解为什么代码不起作用。我不完全了解如何使用 argc 和 argv。我需要进行可以有多个输入的加法、减法、乘法和除法运算。加法是将它们加在一起,我能够得到那个。对于其他人,它采用第一个输入并减去/除/乘以其余部分。我正在使用Linux。要输入数字,我会 (./.a.out 1 2 3 4) 输入整数。谢谢
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main( int argc, const char * argv[])
{
float sum=0.0;
float sub=0.0;
float div=0.0;
float mult=0.0;
char ch;
printf("Pick a function \n");
scanf("%c", &ch);
int x,y;
switch(ch)
{
case ('A'):
{
x = argc -1;
for(y=0;y<x;y++)
{
sum = sum + atoi(argv[y+1]);
}
printf("The result of addition is %f\n",sum);
break;
}
case ('S'):
{
x = argc -1;
for(y=0;y<x;y++)
{
sub = sub - atoi(argv[y+1]);
}
printf("The result of subtraction is %f\n",sub);
break;
}
case ('M'):
{
x = argc -1;
for(y=0;y<x;y++)
{
mult = mult * atoi(argv[y+1]);
}
printf("The result of multiplication is %f\n",mult);
break;
}
case ('D'):
{
x = argc -1;
for(y=0;y<x;y++)
{
div = div / atoi(argv[y+1]);
}
printf("The result of division is %f\n",div);
break;
}
}
}
解决方案
这是您需要修复的蓝图:
#include <iostream>
// etc..
using namespace std;
float mult = 1.0;
float div = 1.0;
case ('M'):
{
x = argc - 1;
for (int y = 0; y < x; ++y)
{
mult = mult * atoi(argv[y+1]);
}
cout << "The result of multiplication is" << mult << endl;
break;
}
对于减法和除法,只需将sub = atoi(argv[1]);
/div = atoi(argv[1]);
放在循环之外,并将循环控制变量设置int y = 1
为两者。
推荐阅读
- mysql - Convert mySQL queries to Laravel
- python - 如何在 IDLE 中运行与 Python 安装位置不同的文件夹中的 .py 文件?
- salt-stack - 根据发行版本安装包
- java - 读取配置文件的最佳方式
- ios - 如何在iOS swift中的单个Apple帐户中处理多个用户非消耗性IAP
- javascript - chartjs混合类型显示想为某些栏设置显示无
- r - 如果在集合中找到数字,如何“加入”数据框?
- typescript - TypeScript:创建具有可写属性的子类
- php - 当 PHP 下拉列表中有多个同名选项时,如何仅显示一个选项?
- angular5 - 如何检测补丁值后,angular6中的表单数据是否已更改?