本文主要是介绍每日一题:C语言经典例题之实数的整数部分,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述
输入一个实数,输出实数的整数部分。注意该实数的位数不超过100位。输入的整数部分可能含有不必要的前导0,输出时应去掉,当然,若整数部分为0,则该0不能去掉。如输入0023.56732,输出应为23,而不是0023;0.123对应的输出应为0。当然输入也可能不含小数部分。
输入
输入一个实数。
输出
输出实数的整数部分。
样例输入:
0023.56732
样例输出:
23
代码:
#include <stdio.h>
char a[1000];
int main()
{scanf("%s",a);// 第一种情况:输入一个整数666// 第二种情况:输入一个小数:0.0026 0// 第三种情况:输入一个小数:8.654 8// flag// 一旦扫描到.字符的话,证明是小数// 若是没有扫描到.这个字符的话,证明是整数// 如果是一个整数的话,我们直接输出字符串即可// 如果是一个小数的话,我们只需在忽略前导零的情况下,输出小数部分 int idx = 0;int flag = 0;for(int i = 0;a[i];i ++ ){if(a[i] == '.'){flag = 1;//输入的数字是整数 idx = i;break;}}//flag=1 -> 整数 flag=0 ->小数if(flag == 0){int flag2 = 0;for(int i = 0;a[i];i ++ ){if(flag2 && a[i] != '0')printf("%c",a[i]);else if(a[i] != '0'){flag2 = 1;printf("%c",a[i]);}}} else{int cnt = 0;for(int i = 0;i < idx;i ++ ){if(a[i] != '0')cnt ++ ;}if(cnt == 0)printf("0");else{int flag2 = 0;for(int i = 0;i < idx;i ++ ){if(flag2 && a[i] != 0)printf("%c",a[i]);else if(a[i] != '0'){flag2 = 1;printf("%c",a[i]);}}} }return 0;
}
这篇关于每日一题:C语言经典例题之实数的整数部分的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!