我需要传递一个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;
}
答案 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':
temp
是int
而'1' and '2'
是char