开关盒中的指针

时间:2014-07-04 10:41:44

标签: c function pointers

我需要传递一个char *指针并在switch case中使用它来执行一些opertaion。例如,如果我传递'A'然后我需要得到数字的平均值,如果我通过'S'然后我需要得到数字的总和。我无法弄清楚代码中的错误。我们可以对指针执行比较操作吗?查找代码以获得进一步说明。

我只需要使用switch case来解决这个问题。

double sum_n_avg(double,double,double,char*);
int main(int argc, char const *argv[])
{
    double a;
    double b;
    double c;
    char letter;

    scanf("%lf",&a);
    scanf("%lf",&b);
    scanf("%lf",&c);
    scanf(" %c",&letter);
    printf("%c,%lf,%lf,%lf\n",letter,a,b,c );
    sum_n_avg(a,b,c,&letter);


    return 0;
}



double sum_n_avg(double x,double y,double z,char *m)
{

    printf("%c\n",*m );
    printf("%lf\n",z);
    printf("%lf\n",y);
    printf("%lf\n",z );


    int temp;
    if(*m==97 || *m==65)
    {
        temp=1;
    }
    else if(*m==115|| *m==83)
    {
        temp=2;
    }
    else{
        printf("Try again\n");
    }
    switch(temp)
    {
        case '1':
             printf("%lf\n",(x+y+z)/3.0);
            break;

        case '2':
            printf("%lf \n", x+y+z);
            break;

        default:
            printf("Enter correct input parameter..Try again\n");
    }
    return 0;
}

2 个答案:

答案 0 :(得分:2)

如果我已经正确理解你正在谈论在函数sum_n_avg中的switch语句中使用变量m。你可以写下面的方式

switch ( *m )
{
case 'A': case 'a':
   printf("%lf\n",(x+y+z)/3.0);
   break;

case 'S': case 's':
   printf("%lf \n", x+y+z);
   break;

default:
   printf("Try again\n");
   break;
}

答案 1 :(得分:-2)

使用case 1: case 2:代替case '1': case '2':

tempint'1' and '2'char