Vossk @ 2023-10-01 11:46:33
#include <stdio.h>
int main()
{
char N[13];
int index = 0, noz = 0;
while (1) {
char ch = getchar(); /*每键入一个字符*/
if (ch == '\n') { /*若回车则跳出循环*/
break;
}
if (index < 11) { /*不超过10^9个数字*/
N[index++] = ch;
}
}
N[index] = '\0'; /*在数组结尾添加null终止符使其成为完整的标准C数组*/
if (N[0]=='-') { /*负*/
printf("%c", '-');
for (int i = index - 1; i > 0; i--) {
if (N[i] != '0') { /*第一个非零处改变状态*/
printf("%c", N[i]);
noz = 1;
}
else if (noz == 1) {
printf("%c", N[i]);
}
}
}
else if (N[0] == '0') { /*零*/
printf("%d", 0);
}
else { /*正*/
for (int i = index - 1; i >= 0; i--) {
if (N[i]!='0') {
printf("%c", N[i]);
noz = 1;
}
else if(noz==1) {
printf("%c", N[i]);
}
}
}
return 0;
}
by Pu_241 @ 2023-10-05 19:04:53
我也是用字符数组的,就最后一个点tle了,搞了半天,都快自闭了。最后给读取字符的循环加了个次数限制就过了,我也不知道为什么。
#include <stdio.h>
int main()
{
char N[13];
int index = 0, noz = 0,i=10;
while (i--) {//加了个10次的次数限制
char ch = getchar(); /*每键入一个字符*/
if (ch == '\n') { /*若回车则跳出循环*/
break;
}
if (index < 11) { /*不超过10^9个数字*/
N[index++] = ch;
}
}
N[index] = '\0'; /*在数组结尾添加null终止符使其成为完整的标准C数组*/
if (N[0]=='-') { /*负*/
printf("%c", '-');
for (int i = index - 1; i > 0; i--) {
if (N[i] != '0') { /*第一个非零处改变状态*/
printf("%c", N[i]);
noz = 1;
}
else if (noz == 1) {
printf("%c", N[i]);
}
}
}
else if (N[0] == '0') { /*零*/
printf("%d", 0);
}
else { /*正*/
for (int i = index - 1; i >= 0; i--) {
if (N[i]!='0') {
printf("%c", N[i]);
noz = 1;
}
else if(noz==1) {
printf("%c", N[i]);
}
}
}
return 0;
}