#include <stdio.h>
#include <string.h>
int main()
{
int i,a,b[4],sum=0;char c[120];
for(i=0;i<4;i++)
scanf("%d",&b[i]);
scanf("%s",c);
for(i=0;i<strlen(c);i++)
if(c[i]==1)
sum=sum+b[0];
else if(c[i]==2)
sum=sum+b[1];
else if(c[i]==3)
sum=sum+b[2];
else
sum=sum+b[3];
printf("%d",sum);
}
我输入的值:
1 2 3 4
123214
调试的时候我发现i=0时,进入不到c[i]==1这个循环里面
求解这是为什么?
if(c[i]==1)
->
if(c[i]=='1')
别的类似
#include <stdio.h>
#include <string.h>
int main()
{
int i,a,b[4],sum=0;char c[120];
for(i=0;i<4;i++)
scanf("%d",&b[i]);
scanf("%s",c);
for(i=0;i<strlen(c);i++)
if(c[i]=='1')
sum=sum+b[0];
else if(c[i]=='2')
sum=sum+b[1];
else if(c[i]=='3')
sum=sum+b[2];
else
sum=sum+b[3];
printf("%d",sum);
}
另外for循环代码可以简化为
for(i=0;i<strlen(c);i++)
sum=sum+b[c[i] - '0' + 1];
你的数组c是char型,c中的元素是字符,所以要比较相等也应该用字符,而不是数字。
正确代码如下:
int main()
{
int i,a,b[4],sum=0;char c[120];
for(i=0;i<4;i++)
scanf("%d",&b[i]);
scanf("%s",c);
for(i=0;i<strlen(c);i++){
if(c[i]=='1')
sum=sum+b[0];
else if(c[i]=='2')
sum=sum+b[1];
else if(c[i]=='3')
sum=sum+b[2];
else
sum=sum+b[3];
}
printf("%d",sum);
return 0;
}