精华内容
下载资源
问答
  • 现以科学计数法的格式给出实数 A,请编写程序按普通数字表示法输出 A,并保证所有有效位都被保留。 输入格式: 每个输入包含 1 个测试用例,即一个以科学计数法表示的实数 A。该数字的存储长度不超过 9999 字节,且...

    1024 科学计数法 (20 分)
    科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [±][1-9].[0-9]+E[±][0-9]+,即数字的整数部分只有 1 位,小数部分至少有 1 位,该数字及其指数部分的正负号即使对正数也必定明确给出。

    现以科学计数法的格式给出实数 A,请编写程序按普通数字表示法输出 A,并保证所有有效位都被保留。

    输入格式:
    每个输入包含 1 个测试用例,即一个以科学计数法表示的实数 A。该数字的存储长度不超过 9999 字节,且其指数的绝对值不超过 9999。

    输出格式:
    对每个测试用例,在一行中按普通数字表示法输出 A,并保证所有有效位都被保留,包括末尾的 0。

    输入样例 1:
    +1.23400E-03
    输出样例 1:
    0.00123400
    输入样例 2:
    -1.2E+10
    输出样例 2:
    -12000000000

    #include<stdio.h>
    int main()
    {
        char s[10001];
        char d[10001];
        gets(s);
    
    
        int i,num=0,sum=0;
        for(i=1;s[i]!='E';i++)//先计算底的长度。
        {
            if(s[i]!='.')//排除小数点。
            {
                 d[num++]=s[i];//num正好是低的长度。
                 if(s[i]=='0')
                 sum++;
            }
    
        }
        d[num]='\0';
        i++;
        char f;
        f=s[i];//指数的正负
         int z=0;//计算指数。
        for(i++;s[i]!='\0';i++)
            z=z*10+s[i]-'0';
        if(z==0)
        {
            for(i=0;i<num;i++)
           {
            if(i==1)
                printf(".");
            printf("0");
           }
        }
        else if(sum==num)
        {
             for(i=0;i<num;i++)
           {
            if(i==1)
                printf(".");
            printf("0");
           }
        }
        else if(f=='-')
        {
            if(s[0]=='-')
            printf("-");
            for(i=0;i<z;i++)
           {
            if(i==1)
                printf(".");
            printf("0");
           }//底数前面z个零。
           puts(d);
        }
        else if(f=='+')
        {
            if(s[0]=='-')
            printf("-");
            if(z<num-1)//确定小数点是否还存在
            {
                for(i=z+1;i<num;i++)
                d[i+1]=d[i];
                d[z+1]='.';
                d[num+1]='\0';
                puts(d);
            }
            else
            {for(i=num;i<=z;i++)
              d[i]='0';
              d[i]='\0';
              puts(d);}
    
        }
    
        return 0;
    }
    
    
    
    展开全文
  • 要求输入科学计数法进行两者之间的加减乘除运算 并以科学计数法的形式输出 如: Values input: 0.25000e3 0.20000el Sum: 0.25200e3 Difference: 0.24800e3 Product: 0.50000e3 Quotient: 0.12500e3
  • 现以科学计数法的格式给出实数 A,请编写程序按普通数字表示法输出 A,并保证所有有效位都被保留。 输入格式: 每个输入包含 1 个测试用例,即一个以科学计数法表示的实数 A。该数字的存储长度不超过 9999 字节,且...

    1024 科学计数法 (20 分)

    科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [±][1-9].[0-9]+E[±][0-9]+,即数字的整数部分只有 1 位,小数部分至少有 1 位,该数字及其指数部分的正负号即使对正数也必定明确给出。

    现以科学计数法的格式给出实数 A,请编写程序按普通数字表示法输出 A,并保证所有有效位都被保留。

    输入格式:
    每个输入包含 1 个测试用例,即一个以科学计数法表示的实数 A。该数字的存储长度不超过 9999 字节,且其指数的绝对值不超过 9999。

    输出格式:
    对每个测试用例,在一行中按普通数字表示法输出 A,并保证所有有效位都被保留,包括末尾的 0。

    输入样例 1:

    +1.23400E-03
    

    输出样例 1:

    0.00123400
    

    输入样例 2:

    -1.2E+10
    

    输出样例 2:

    -12000000000
    

    思路为移动小数点:
    当指数为正,小数点向右移;指数为负小数点向左移
    指数为正时,需要比较指数和有效位数:
    指数大于有效位数则在后面补若干个0;指数小于有效位数则要在对应位置加小数点;若二者相等则既不补零也不加小数点
    指数为负时先输出“0.”,接若干0和有效数

    #include<stdio.h>
    #define MAX 9999
    int main()
    {
        //数据初始化
        char sgn1,sgn2;
        int a[MAX],d,i=0,index=0,k=0;
        //输入
        sgn1 = getchar();
        if(sgn1=='-') printf("-");
        d = getchar();
        a[0] = d-'0';
        getchar();//dot
        d = getchar();
        while(d!='E')
        {
            i++;
            a[i] = d-'0';
            d = getchar();
        }
        sgn2 = getchar();
        d = getchar();//得到index
        index+=d-'0';
        d = getchar();
    	while(d!='\n')
        {
        	k++;
        	index*=10;
        	index+=d-'0';
        	d = getchar();
        }
        //输出
        if(sgn2=='-')
        {
            printf("0.");
            for(int j=1;j<index;j++)
            {
                printf("0");
            }
            for(int j=0;j<=i;j++)
            {
                printf("%d",a[j]);
            }
        }
        else{
            for(int j=0;j<=i;j++)
            {
                printf("%d",a[j]);
                if(j == index&&j!=i) printf(".");
            }
            if(index>i)
            {
                for(int j=1;j<=index-i;j++) printf("0");
            }
        }
        printf("\n");
        return 0;
    }
    
    展开全文
  • PAT乙级1024 科学计数法C语言科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [±][1-9].[0-9]+E[±][0-9]+,即数字的整数部分只有 1 位,小数部分至少有 1 位,该数字及其...

    PAT乙级1024 科学计数法(C语言)

    科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [±][1-9].[0-9]+E[±][0-9]+,即数字的整数部分只有 1 位,小数部分至少有 1 位,该数字及其指数部分的正负号即使对正数也必定明确给出。

    现以科学计数法的格式给出实数 A,请编写程序按普通数字表示法输出 A,并保证所有有效位都被保留。

    输入格式:
    每个输入包含 1 个测试用例,即一个以科学计数法表示的实数 A。该数字的存储长度不超过 9999 字节,且其指数的绝对值不超过 9999。

    输出格式:
    对每个测试用例,在一行中按普通数字表示法输出 A,并保证所有有效位都被保留,包括末尾的 0。

    输入样例 1:
    +1.23400E-03
    输出样例 1:
    0.00123400
    输入样例 2:
    -1.2E+10
    输出样例 2:
    -12000000000

    分析

    在这里插入图片描述
    此处便在提醒我们使用字符数组来存储数据;
    首先,根据首位字符来判断需不需要输出符号
    其次,算出指数的大小
    然后根据指数的正负来对小数部分进行处理在这里插入图片描述
    由此知道输出时要控制输出的位数

    代码

    #include<stdio.h>
    int main()
    {
        char a[10005];
        gets(a);//读取科学计数
        if(a[0]=='-')//首位为符号输出,正号不管
            printf("-");
        int i,key;//key记录E的位置
        for(i=3;a[i]!='\0';i++)//从小数点后一位开始查找
        {
            if(a[i]=='E')
            {
                key=i;
                break;
            }
        }
        int sum=0;//求指数的大小
        for(i=key+2;a[i]!='\0';i++)
        {
            sum=sum*10+a[i]-'0';
        }
        int j=3;
        if(a[key+1]=='+')//指数为正时
        {
            a[0]=a[1];
            i=1;
            while(sum--)
            {
                if(j<key)//小数部分
                {
                    a[i++]=a[j++];
                }
                else//小数部分没有了
                {
                    a[i++]='0';
                }
            }
            if(j<key)//表示小数部分还存在
            {
                 a[i++]='.';
                 while(j<key)
                {
                  a[i++]=a[j++];
                } 
           }
            for(j=0;j<i;j++)
                printf("%c",a[j]);
        }
        else if(a[key+1]=='-')//指数为负时
        {
            if(sum>=1)
            {
               printf("0.");
               sum=sum-1;
               while(sum--)
               printf("0");
               printf("%c",a[1]);
               for(i=3;i<key;i++)
               printf("%c",a[i]);
             }
             else if(sum==0)
             {
               for(i=1;i<key;i++)
               {
                  printf("%c",a[i]);
               }
            }
         }
        printf("\n");
    }
    
    
    展开全文
  • 科学计数法是科学家用来表示很大或很小的数字的一种方便的...现以科学计数法的格式给出实数A,请编写程序按普通数字表示法输出A,并保证所有有效位都被保留。 输入格式: 每个输入包含 1 个测试用例,即一个以科学...

    科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [+-][1-9].[0-9]+E[+-][0-9]+,即数字的整数部分只有 1 位,小数部分至少有 1 位,该数字及其指数部分的正负号即使对正数也必定明确给出。

    现以科学计数法的格式给出实数 A,请编写程序按普通数字表示法输出 A,并保证所有有效位都被保留。

    输入格式:

    每个输入包含 1 个测试用例,即一个以科学计数法表示的实数 A。该数字的存储长度不超过 9999 字节,且其指数的绝对值不超过 9999。

    输出格式:

    对每个测试用例,在一行中按普通数字表示法输出 A,并保证所有有效位都被保留,包括末尾的 0。

    输入样例 1:

    +1.23400E-03
    

    输出样例 1:

    0.00123400
    

    输入样例 2:

    -1.2E+10

     

    输出样例 2:

    -12000000000
    #include<stdio.h>
    #include<string.h>
    
    int main()
    {
    	char ch[50000] = {};
    	scanf("%s",ch);
    	
    	int count = 0;
    	int len =strlen(ch);
    	int move = 0;						//需移动
    	int mark1 = 0;
    	for(int i = len-1 ; i >= 0; i--)	//计算E后面的位数	
    	{
    		if('+' == ch[i])
    			mark1 = 1;
    		if('-' != ch[i] && '+' != ch[i])
    		{
    			count++;
    			if(1 == count)
    				move += ch[i] - '0';
    			else
    			{	
    				int n = 1;
    				for(int j = 1 ; j < count ; j++)
    				{
    					n *= 10;
    				}
    				move += (ch[i]-'0') * n;
    			}
    		}
    		else
    			break;
    	}	
    	char ch1[50000] = {};	//不带小数点
    	char ch2[50000] = {};	//带小数点
    	int n1 = 0,n2 = 0;
    	for(int i = 1; i < len ; i++)	//提取值
    	{
    		ch2[n2++] = ch[i];
    		if('.' != ch[i])
    		{
    			if('E' == ch[i])
    			{
    				ch2[n2-1] = '\0';
    				ch1[n1] = '\0';
    				break;
    			}
    			else
    				ch1[n1++] = ch[i];
    		}
    
    	}
    	int zero = 0;	//为0时直接输出0
    	for(int i = 0 ; '\0' != ch1[i] ; i++)
    	{
    		if('0' != ch1[i])
    			zero++;
    	}
    	if(0 == zero)
    	{
    		printf("0\n");
    		return 0;
    	}
    
    	if('-' == ch[0])
    		printf("-");
    	char resu[50000] = {};
    	if(0 == move)	//当指数为0
    	{
    		printf("%s",ch2);
    		return 0;
    	}
    	else if(mark1)	//当指数为正
    	{
    		int l = strlen(ch1) - 1;
    		if(move >= l)
    		{
    			int n = l+1;
    			strcpy(resu,ch1);
    			for(int i = 0 ; i < move - l ; i++)
    			{
    				resu[n++] = '0';
    			}
    			resu[n] = '\0';
    		}
    		else
    		{
    			for(int i = 0 ; move > 0 ; i++)
    			{
    				char temp = 0;
    				if('.' == ch2[i])
    				{
    					temp = ch2[i];
    					ch2[i] = ch2[i+1];
    					ch2[i+1] = temp;
    					move--;
    				}
    			}
    			strcpy(resu,ch2);
    		}
    		int n = 0;
    		for(int i = 0 ; '\0' != resu[i] ; i++)
    		{
    			if('0' == resu[i])
    			{
    				if('.' == resu[i+1] || '0' != resu[i])
    					break;
    				else
    					n++;
    			}
    			else
    				break;
    		}
    		for(int i = n ; '\0' != resu[i] ; i++)
    			printf("%c",resu[i]);
    	}
    	else		//当指数为负
    	{
    		int n = 2;
    		resu[0] = '0';
    		resu[1] = '.';
    		for(int i = 1 ; i < move ; i++)
    		{
    			resu[n++] = '0';
    		}
    		for(int i = 0 ; '\0' != ch1[i];i++)
    		{
    			resu[n++] = ch1[i];	
    		}
    		resu[n] = '\0';	
    		printf("%s",resu);
    		return 0;
    	}
    	return 0;	
    }
    
    
    

     

    展开全文
  • 1024 科学计数法C语言详解)

    千次阅读 2020-03-20 22:27:36
    前言 这个题目要考虑好多小细节啊,我尽力了。。。 正文 题目 科学计数法是科学家用来表示很大或很小的数字的...现以科学计数法的格式给出实数 A,请编写程序按普通数字表示法输出 A,并保证所有有效位都被保留。 输...
  • 题目 科学计数法是科学家用来表示很大或很小的数字的...现以科学计数法的格式给出实数 A,请编写程序按普通数字表示法输出 A,并保证所有有效位都被保留。 输入格式: 每个输入包含 1 个测试用例,即一个以科学计数...
  • 科学计数法是科学家用来表示很大或很小的数字的一种方便...现以科学计数法的格式给出实数A,请编写程序按普通数字表示法输出A,并保证所有有效位都被保留。 输入格式: 每个输入包含1个测试用例,即一个以科学计
  • 题目: 科学计数法是科学家用来表示很大或很小的数字的...现以科学计数法的格式给出实数 A,请编写程序按普通数字表示法输出 A,并保证所有有效位都被保留。 输入格式: 每个输入包含 1 个测试用例,即一个以科学计...
  • 现以科学计数法的格式给出实数 A,请编写程序按普通数字表示法输出 A,并保证所有有效位都被保留。 输入格式: 每个输入包含 1 个测试用例,即一个以科学计数法表示的实数 A。该数字的存储长度不超过 9999 字节,且...
  • 1024. 科学计数法 (20)题目: 科学计数法是科学家用来表示很大或很小的数字的一种方便的...现以科学计数法的格式给出实数A,请编写程序按普通数字表示法输出A,并保证所有有效位都被保留。 输入格式: 每个输入包
  • 小数的输出 %ede upngfa %e是printf的格式控制字符,用于指定浮点类型数据使用指数形式输出 浮点类型分为整数部分和小数部分,它们由点号.分隔,例如 0.0、75.0、4...C语言同时支持以上两种形式的小数。但是在书写时,C
  • 1024 科学计数法C语言

    千次阅读 2019-03-03 22:20:00
    设计思路: 1.数字的正负号决定输出普通数字的正负 2.指数的正负号决定小数点的移动
  • B1024/A1073 科学计数法 (20分)【C语言】 原题链接 晴神… 题目描述: 科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [±][1-9].[0-9]+E[±][0-9]+,即数字的整数部分只有 1 位,...
  • 读取科学计数 —— 利用正则表达式,分开读取 数字部分 和 指数部分 * 2. 判断正负,负数输出 负号 * 3. 判断指数正负: * 3.1 指数 &lt; 0:整数部分必然为 0 * 3.2 指数 &gt;= 0: * - 仍有小数点,...
  • 一、题目 科学计数法是科学家用来表示很大或很小的数字的一种方便的...现以科学计数法的格式给出实数A,请编写程序按普通数字表示法输出A,并保证所有有效位都被保留。 输入格式: 每个输入包含 1 个测试用例,...
  • 一、题目 科学计数法是科学家用来表示很大或很小的数字...现以科学计数法的格式给出实数 A,请编写程序按普通数字表示法输出 A,并保证所有有效位都被保留。 输入格式: 每个输入包含 1 个测试用例,即一个以科学...
  • 题目 科学计数法是科学家用来表示很大或很小的数字的...现以科学计数法的格式给出实数A,请编写程序按普通数字表示法输出A,并保证所有有效位都被保留。 输入格式: 每个输入包含1个测试用例,即一个以科学计数法...
  • 1024 科学计数法 (20 分) 科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,...现以科学计数法的格式给出实数 A,请编写程序按普通数字表示法输出 A,并保证所有有效位都被保留。 输入格式: 每个...
  • 要保留所有有效数字,若是正数,前面的正号不输出。 #include <stdio.h> #define MAX_A 10000 char A[MAX_A]; int pos_E; /* E的位置,也是数字A除了指数部分外的末尾 */ int e; /* 指数exponent ...
  • 总结:(具体思路来自米狗GO的博客) 题目分析:题目规定数值最长可以是9999个字节,而指数绝对值不超过...* if(符号’-‘) 输出 ‘-’ //输出符号 * * if(指数是0) 直接输出整数 .小数 * else if(指数符号’+’) ...
  • C语言printf格式化输出修饰符 printf()的格式符 转换说明 输出 %a,%A 浮点数、十六进制数和p-计数法(C99) %c 一个字符 %d 有符号十进制数 %e,%E 浮点数,e计数法 %f 浮点数,十进制计数法 %g,%G ...
  • 北航13年机试题:给出一个标准输入的正数(开头末尾没有多余的0),输出科学计数法表示结果。 Example: 输入0.000002,输出2e-6 输入123.456,输出1.23456e2 输入123456,输出1.23456e2 #include #include #...
  • timestamp=1608975458&ver=2790&signature=yyqyxpmtmy33R9J7OExoHd-3YNaYn9TM0FWkkkcydp2Z5XIJPNS5kkKGJT2FBDP8OT2C8u-PIEyOvbXQSY7N8b9vTp1cYs8LzSLUvBTiy4...C语言浮点型有三个类型:float、double
  • 1024. 科学计数法 (20) 科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足...现以科学计数法的格式给出实数A,请编写程序按普通数字表示法输出A,并保证所有有效位都被保留。 输入格式: 每个
  • c语言输出控制符

    2017-07-20 21:18:00
    c语言格式输出 %d 10进制 %f 浮点型输出 %lf 长浮点型输出 ...%e 科学计数法输出 %m 输出错误,errno的输出控制 printf("%m"); 输出出错原因 转载于:https://www.cnblogs.com/yddeboke/p/7214531.html...
  • 科学计数法,保留两位小数。 输入 无 输出 无 样例输入 无 样例输出 无 分析:题目本身不是很难,只是需要思考需要如何循环。明白两点即可,一是循环,一个数的阶乘结果是建立在前一个数的阶乘结果之上的,...
  • C语言输入输出函数

    2017-11-17 17:10:39
    1. putchar 字符输出函数 2. getchar 字符输入函数 3. printf 格式化输出函数  printf用到的格式字符...e: 科学计数法输出浮点数 c: 一个字符 s: 一个字符串 4. scanf 格式化输入函数 输入函数的格式字符同上。 #incl
  • c语言里怎样输出%符号?

    万次阅读 2019-06-18 23:25:45
    printf("%%");就可以了 ,平时用的时候多试验几次。...%e 科学计数法, 使用小写"e" %E 科学计数法, 使用大写"E" %f 浮点数 %g 使用%e或%f中较短的一个 %G 使用%E或%f中较短的一个 %o 八进制 %s 一串字符 %u 无符号...
  • %d---输出一个整型数;...%e---输出一个浮点数,科学计数法; %s---输出一个字符串; %c---输出一个字符; %#x---输出一个十六进制的数; %m.nf---输出的数据占m列,其中小数位数为n位。如果加负号则左对齐。 ...

空空如也

空空如也

1 2 3 4 5
收藏数 90
精华内容 36
关键字:

c语言科学计数法输出

c语言 订阅