编程练习:数字反转
程序员文章站
2022-06-09 20:16:47
...
给定一个数,请将该数各个位上数字反转得到一个新数。
这次与NOIp2011普及组第一题不同的是:这个数可以是小数,分数,百分数,整数。整数反转是将所有数位对调;小数反转是把整数部分的数反转,再将小数部分的数反转,不交换整数部分与小数部分;分数反转是把分母的数反转,再把分子的数反转,不交换分子与分母;百分数的分子一定是整数,百分数只改变数字部分。整数新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零;小数新数的末尾不为0(除非小数部分除了0没有别的数,那么只保留1个0);分数不约分,分子和分母都不是小数(约分滴童鞋抱歉了,不能过哦。输入数据保证分母不为0),本次没有负数。
题目描述
给定一个数,请将该数各个位上数字反转得到一个新数。
这次与NOIp2011普及组第一题不同的是:这个数可以是小数,分数,百分数,整数。
- 整数反转是将所有数位对调。
- 小数反转是把整数部分的数反转,再将小数部分的数反转,不交换整数部分与小数部分。
- 分数反转是把分母的数反转,再把分子的数反转,不交换分子与分母。
- 百分数的分子一定是整数,百分数只改变数字部分。
输入格式
一个数 sss
输出格式
一个数,即 sss 的反转数
说明/提示
所有数据:25%s是整数,不大于20位
25%s是小数,整数部分和小数部分均不大于10位
25%s是分数,分子和分母均不大于10位
25%s是百分数,分子不大于19位
(20个数据)
数据保证:
- 对于整数翻转而言,整数原数和整数新数满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数和原来的数字的最高位数字不应为零。
- 对于小数翻转而言,其小数点前面部分同上,小数点后面部分的形式,保证满足小数的常见形式,也就是末尾没有多余的 000(小数部分除了 000 没有别的数,那么只保留 111 个 000。若反转之后末尾数字出现 000,请省略多余的 000)
- 对于分数翻转而言,分数不约分,分子和分母都不是小数。输入的分母不为0。与整数翻转相关规定见上。
- 对于百分数翻转而言,见与整数翻转相关内容。
数据不存在负数。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main() {
char *str;
char flag;
str=(char *)malloc(sizeof(char));
scanf("%s",str);//输入字符
int len,i=0,j=0,k=0,l=0,lena=0,lenb=0;
int counta=0,countb=0;//统计a b中0的个数
len=strlen(str);
char a[len],b[len];
for(i=0; i<len; i++) {
if((*str=='/')||(*str=='%')||(*str=='.')) { //记录后面的数字到另一个数组中
flag=*str;//记录下特殊符号
str++;
break;
} else if(*str>='0'&&*str<='9') {
if(*str=='0') counta++;
a[i]=*str;
str++;
} else {
printf("输入违法");
return 0;
}
}
lena=i;
if(i<(len-1)) { //字符串中有 / . 不是%
for(j=0; j<(len-i-1); j++) { //字符串剩余的字符个数为减去前半部分和特殊符号
if(*str=='0') countb++;
b[j]=*str;
str++;
}
}
lenb=j;//b中元素个数
if(lena>0) {
if(counta==lena) {
printf("0");
} else {
i=lena-1;
while(a[i]=='0') {
i--;
}
for(k=i; k>=0; k--) {
printf("%c",a[k]);
}
}
}
printf("%c",flag);//输出特殊字符
if(lenb>0) {
if(countb==lenb) {
printf("0");
} else {
j=0;
while(b[j]=='0') {
j++;
}
l=lenb-1;
while(b[l]=='0'){
l--;
}
for(k=l; k>=j; k--) {
printf("%c",b[k]);
}
}
}
return 0;
}
上一篇: 递归算法1——简单递归之求n的阶乘
下一篇: textview 实现文字拼接 样式
推荐阅读
-
Python语言编程(计算旋转数组的最小数字)
-
JAVA编程实现随机生成指定长度的密码功能【大小写和数字组合】
-
5个Shell脚本编程入门练习例子
-
《PHP编程最快明白》第二讲 数字、浮点、布尔型、字符串和数组
-
测试代码的练习——python编程从入门到实践
-
C语言 编程练习22
-
Python编程 从入门到实践 练习6-1~练习6-3
-
1.java小作业-计算1到100的整合-指定输入多少行输出就打印多少行-打印24小时60分钟每一分钟-重载基础练习-面向java编程初学者
-
Python学习笔记【第十五篇】:Python网络编程三ftp案例练习--断点续传
-
Python编程小练习 | 算法题:津巴布韦的鸡蛋价格