本文主要是介绍北航上机复试13真题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
给出一个标准输入的正数(开头末尾没有多余的0),输出其科学计数法表示结果。比如:输入0.000002,输出2e-6;输入123.456,输出1.23456e2;输入123456,输出1.23456e2
解题:
首先将其放入到Char数组中,找到loc即为小数点所在位数,和first 即为第一位非零数的位置。然后分两种情况输出,大于1和小于1的两种情况;大于一是10的指数是loc - first-1;
小于一的10的指数是loc - first; 注意要判断一下是否要输出“.”,因为当first == 总长-1 不用输出“.”
#include <cstdio>
#include <string.h>
#define maxn 105int main()
{char s[maxn] ;while ( scanf("%s",s) ){int loc = 0 ;for ( int i = 0 ; i < strlen(s) ; i ++ ){if( s[i] == '.'){loc = i;break;}}int first = 0;for ( int i = 0 ; i < strlen(s) ; i++){if(s[i] != '0'&&s[i] !='.'){first = i ;break;}}if ( loc > first ){printf("%c",s[first]);if(first != strlen(s)- 1)printf(".");for( int i = first + 1 ; i < loc ; i ++ )printf("%c",s[i]);for ( int i = loc + 1 ; i < strlen(s) ; i ++ )printf("%c",s[i]);printf("e%d\n",loc - first - 1);}else {printf("%c",s[first]);if(first != strlen(s)- 1)printf(".");for ( int i = first + 1; i < strlen(s) ; i++ )printf("%c",s[i]);printf("e%d\n",loc - first);}}return 0 ;}
这篇关于北航上机复试13真题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!