首页 > 解决方案 > 如何使用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;
        }
    }
}

标签: c++linuxfunction

解决方案


这是您需要修复的蓝图:

    #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为两者。


推荐阅读