不用指针和数组,只用条件语句和循环语句怎么写
时间: 2024-03-21 22:38:29 浏览: 39
可以使用`char`类型的变量来存储等式左边的整数,使用一个while循环和两个for循环来枚举加号位置和复制整数的前半部分和后半部分。具体实现如下:
```c
#include <stdio.h>
#include <stdlib.h>
int main()
{
char eq[100];
scanf("%s", eq);
int i = 1;
while (eq[i] != '=') {
i++;
}
eq[i] = '\0'; // 将等式分成左边和右边两个部分
int right = atoi(eq + i + 1); // 右边的整数
int len = i;
i = 1;
int j;
while (i < len) {
char left1 = eq[0];
char left2 = eq[i];
char left3 = eq[len - 1];
int value;
if (i == 1) {
value = (left1 - '0') * 10 + (left2 - '0') + atoi(eq + i);
} else {
value = (left1 - '0') * 100 + (left2 - '0') * 10 + (left3 - '0') + atoi(eq + i);
}
if (value == right) {
printf("%c", left1);
for (j = 1; j < i; j++) {
printf("%c", eq[j]);
}
printf("+");
for (j = i; j < len; j++) {
printf("%c", eq[j]);
}
printf("=%d\n", right);
break;
}
i++;
}
if (i == len) {
printf("Impossible\n");
}
return 0;
}
```
在枚举加号位置时,使用了三个`char`类型的变量来存储整数的前三位,使用`atoi`函数将剩余部分转化为整数,然后计算新表达式的值。在输出结果时,使用了多个`printf`函数来输出各个部分。
阅读全文