ZZULIOJ

您所在的位置:网站首页 逆转数代码 ZZULIOJ

ZZULIOJ

2024-06-28 19:01| 来源: 网络整理| 查看: 265

1167: 逆转数(指针专题) 时间限制: 1 Sec  内存限制: 128 MB 提交: 4907  解决: 3087 [状态] [讨论版] [提交] [命题人:admin]

题目描述

任意给你一个整数,这个数可能很大(最长不超过100位),你能求出它的逆转数吗? 逆转数定义如下: 1.一个末尾没有0的整数,它的逆转数就是各位数字逆序输出; 2.一个负数的逆转数仍是负数; 3.一个末尾有0的整数,它的逆转数如同下例: reverse (1200) = 2100 reverse (-56) = -65 要求定义并使用如下函数: void reverse(char *str) { //函数求出str的逆转数并存入str。 }  

输入

输入一个长整数str,不超过100位,输入的整数不含前导0。

输出

输出str的逆转数。输出占一行。

样例输入 Copy

-123456789000

样例输出 Copy

-987654321000  代码 #include #include #include #define N 100 void reverse(char *str);//函数求出str的逆转数并存入str。 int main() { char *p; p=(char*)malloc(sizeof(char)*N); gets(p);//输入字符串数 reverse(p);//反转 return 0; } void reverse(char *str) { int minus=0;//记录正负 //char *str1; int i,len,count=0,flag=0; len=strlen(str); //str1=(char *)malloc(sizeof(char)*N); if(str[0]=='-') { minus=1;//记录负号 printf("-"); } for(i=len-1; i>=1; i--) { if(str[i]=='0'&&flag==0)//记录零的的个数并判断是否出现非零的数 { count++;//记录零的个数 continue; } if(str[i]!='0'||flag!=0)//遇到非零的数时不在记录零的个数 { printf("%c",str[i]); flag=1;//尾数是否为零 } } if(minus==0) printf("%c",str[0]); for(i=1; i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3