#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
int main()
{
int n,x,y;
char ss[10],ans[50],k;
scanf("%n", &n);
for(int i = 0; i < n; i++){
scanf("%s", ss);
if(isalpha(ss)){
k = ss;
scanf("%d%d", &x, &y);
}else{
x = ss - '0';
scanf("%d", &y);
}
swtich(k){
case 'a':
sprintf(ans, '%d+%d=%d', x, y, x+y);
printf("\n%d\n",strlen(ans));
break;
case 'b':
sprintf(ans, '%d-%d=%d', x, y, x-y);
printf("\n%d\n",strlen(ans));
break;
case 'c':
sprintf(ans, '%d*%d=%d', x, y, x*y);
printf("\n%d\n",strlen(ans));
break;
}
}
return 0;
}
修改如下,供参考:
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
int main()
{
int n, x, y;
char ss[10], ans[50], k;
//scanf("%n", &n);
scanf("%s", ss);
for (int i = 0; ss[i]; i++) { //for (int i = 0; i < n; i++)
if (isalpha(ss[i])) {
k = ss[i];
scanf("%d%d", &x, &y);
}
else {
x = ss[i] - '0';
scanf("%d", &y);
}
switch(k) { //swtich(k) {
case 'a':
sprintf(ans, " % d + % d = % d", x, y, x + y); //sprintf(ans, '%d+%d=%d', x, y, x+y);
printf("\n%d,%s\n", strlen(ans),ans); //printf("\n%d\n",strlen(ans));
break;
case 'b':
sprintf(ans, " % d - % d = % d", x, y, x - y); // sprintf(ans, '%d-%d=%d', x, y, x-y);
printf("\n%d,%s\n", strlen(ans),ans); //printf("\n%d\n",strlen(ans));
break;
case 'c':
sprintf(ans, " % d * %d = % d", x, y, x * y); // sprintf(ans, '%d*%d=%d', x, y, x*y);
printf("\n%d,%s\n", strlen(ans),ans); //printf("\n%d\n",strlen(ans));
break;
default:break; //修改
}
}
return 0;
}
有没有一种可能,是你的switch拼错了?
而且你的代码问题好像还不止这个。 isalpha
这个函数我还没学,但是VS提示它接收的参数是int类型的,你传入的是一个char数组,肯定是不得行的。
然后k
是char类型,并不是指针,无法把数组名赋值给k