社区讨论

求助帮忙找bug,我已经改不出来了= =40分

P1553数字反转(升级版)参与者 2已保存回复 2

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
2 条
当前快照
1 份
快照标识符
@mi7pxp90
此快照首次捕获于
2025/11/21 01:41
4 个月前
此快照最后确认于
2025/11/21 01:41
4 个月前
查看原帖
CPP
#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
#include<string.h>
char a[100], change2[100];
int main()
{
	int change1 = 0, b = 0, c = 0, flag = 1, l = 0, m = 0, i = 0, n = 0,v=0,len=0,x=0;
	gets_s(a);
	for (i = 0; isdigit(a[i]); i++);
	switch (a[i])
	{
	case '\0':
	{
		b = atoi(a);
		for (int l = 0; l < i; l++)
		{
			c = b % 10;
			b /= 10;
			change1 = change1 * 10 + c;
		}
		printf("%d\n", change1);
	}
	break;

	case '.':
	{
		b = atoi(a);
		for (l = 0, m = 0; l < i; l++, m++)
		{
			c = b % 10;
			b /= 10;
			if (flag)
			{
				if (c == 0)
				{
					m--;
					continue;
				}
				else
				{
					change2[m] = c + '0';
					flag = 0;
				}
			}
			else
			{
				change2[m] = c + '0';
			}
		}
		flag = 1;
		for (x = l+1; a[x] == '0'; x++);
		len = strlen(a + x);
		b = atoi(a + x);
		change2[m + 1] = '0';
		if (l > m)
		{
			change2[m] = '.';
			for (x=0, v = m + 1; x<len; x++, v++)
			{
				c = b % 10;
				b /= 10;
				change2[v] = c + '0';
			}
		}
		else
		{
			change2[l] = '.';
			for (x=0, v = l + 1;x<len; x++, v++)
			{
				c = b % 10;
				b /= 10;
				if (flag)
				{
					if (c == 0)
					{
						v--;
						continue;
					}
					else
					{
						change2[v] = c + '0';
						flag = 0;
					}
				}
				else
				{
					change2[v] = c + '0';
				}
			}
		}
		puts(change2);
	}
	break;

	case '/':
	{
		b = atoi(a);
		for (l = 0, m = 0; l < i; l++, m++)
		{
			c = b % 10;
			b /= 10;
			if (flag)
			{
				if (c == 0)
				{
					m--;
					continue;
				}
				else
				{
					change2[m] = c + '0';
					flag = 0;
				}
			}
			else
			{
				change2[m] = c + '0';
			}
		}
		flag = 1;
		for (x = l + 1; a[x] == '0'; x++);
		len = strlen(a + x);
		b = atoi(a + x);
		if (l > m)
		{
			change2[m] = '/';
			for (x = 0, v = m + 1; x < len; x++, v++)
			{
				c = b % 10;
				b /= 10;
				change2[v] = c + '0';
			}
		}
		else
		{
			change2[l] = '/';
			for (x = 0, v = l + 1; x < len; x++, v++)
			{
				c = b % 10;
				b /= 10;
				if (flag)
				{
					if (c == 0)
					{
						v--;
						continue;
					}
					else
					{
						change2[v] = c + '0';
						flag = 0;
					}
				}
				else
				{
					change2[v] = c + '0';
				}
			}
		}
		puts(change2);
	}
	break;

	case '%':
	{
		b = atoi(a);
		for (int l = 0; l < i; l++)
		{
			c = b % 10;
			b /= 10;
			change1 = change1 * 10 + c;
		}
		printf("%d%%", change1);
	}
	break;
	}
	system("pause");
	return 0;
}

回复

2 条回复,欢迎继续交流。

正在加载回复...