c - 加法 (+) 不想在 if/else 中运行
问题描述
#include <stdio.h>
int main(void)
{
int a;
scanf("%d", &a);
for (int i = 0; ; i++)
{
char values[2];
scanf("%c", &values[0]);
scanf("%d", &values[1]);
if (values[0] == '*')
{
a = a * values[1];
printf(" = %d\n", a);
}
else if (values[0] == '+')
{
a = a + values[1];
printf(" = %d\n", a);
}
else if (values[0] == '%')
{
a = a % values[1];
break;
}
}
printf("%d", a);
}
当我输入5 + 3 + 7 + 10 + 2 + 3 + 1 % 11
时,它会显示5
(因为5%11 = 5
)。但是+
手术没有成功。你能看出这里有什么问题吗?
解决方案
我认为values[2]
你只需要两个变量,你可以使用两个不同的变量来完成你的工作。使用一个char
类型变量和一个int
类型变量,因为您需要这两个。您的代码中还有另一个问题,getchar()
在循环内部使用 a 然后您的代码将正常工作,因为当您将整数值作为输入然后取一个字符值时,最后您输入转到该字符的新行为什么你的代码给出错误。
#include <stdio.h>
int main(void){
int a;
scanf("%d", &a);
for (int i = 0; ; i++)
{
getchar();
char ch;
int value;
scanf("%c", &ch);
scanf("%d", &value);
if (ch == '*')
{
a = a * value;
printf(" = %d\n", a);
}
else if (ch == '+')
{
a = a + value;
printf(" = %d\n", a);
}
else if (ch == '%')
{
a = a % value;
break;
}
}
printf("%d", a);
}
推荐阅读
- python - NetworkX 矩阵中的访问条目
- spring - 如何将 Spring JPA 用于 Couchbase 嵌套文档值
- parcelable - 如何将 Parcelable 对象添加到 Parcelable 对象中
- java - 在 Switch 菜单上使用 do-while 循环
- python-3.x - 如何在 Ubuntu 中升级 matplotlib python 3 版本?
- jasmine - 在选项卡中定位选项卡元素(父选项卡和子选项卡)
- javascript - 如何组合键值相同的多个 JSON 对象
- android - 我的可绘制 xml 文件显示未知字符
- reactjs - 反应变量包括另一个变量?
- ios - 身份验证后在 iOS 中使用 DynamoDB