关于C语言的一道题目 各位达人一定要进来看看 帮助一下 谢谢大家

来源:百度知道 编辑:UC知道 时间:2024/05/22 08:05:41
6. 这是一个很古老的游戏。用木棒在桌上拼出一个不成立的等式,移动且只移动一根木棒使得等式成立。现在轮到你了。从键盘读入一个式子(该式子肯定是一个不成立的等式)。
判断,是否可以移动一根木棒可以使等式成立,则输出新的等式,否则输出No。

a.式子中的数只能是正数,运算符号只会出现加号和减号,并且有且仅有一个等号,不会出现括号、乘号或除号,也不会有++,--,+-或-+出现。
b.式子中只能是整数,并且小于32767
c.你只能移动用来构成数字的木棒,不能移动构成运算符(+、-、=)的木棒,所以加号、减号、等号是不会改变的。移动前后,木棒构成的数字必须严格与计算机器中显示的效果一致。
d.从键盘读入的式子中的数不会以0开头,但允许修改后等式中的数以数字为开头。

【输入样例1】 1+1=3 【输出样例1】 1+1=2#
【输入样例2】 1+1=3+5 【输出样例2】 No
【输入样例3】 11+77=34 【输出样例3】 17+17=34

最多2边等式2个数字 就是说X +/- X = X 或者 X +/- X = X+/- X

希望大家可以帮我谢谢 有些地方比较难的话 希望可以稍微解释1下 还有思路
不写也没关系

 
 
 
可以这样写:

#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>

/****** General utils. ***/

/* Returns the number of digits in i. */
int getNumberOfDigits( unsigned i ) {
    return i ? ( int ) ceil( log10( ++i ) ) : 1;
}

/* Returns the integer represented by the first n digits in s. */
int natoi( char *s, unsigned n ) {
    char buf[ 22 ];
    strncpy( buf, s, n );
    return atoi( buf );
}

/****** End of General utils. ***/

/*
* Using standard labelling convention for sticks (segments) in all 7-segment digits:
* http://ourworld.compuserve.com/homepages/G_KNOTT/elect71.htm
*