标题:浮点数错误
只看楼主
RecluseF
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2020-9-10
结帖率:66.67%
已结贴  问题点数:20 回复次数:7 
浮点数错误
#include <stdio.h>
#include <stdlib.h>
#include<math.h>

int main()
{   int a,b,c,d,e;
    printf("Please enter the number:\n");
    scanf("%d",&a);
    for(b=1,d=0;c!=0;++d)
    {   a=(int)fabs(a);
        c=a/b;
        b=b*10;
    }
    printf("%d: %d bits\n",a,d-1);
    int f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o,p,q=0,r;
    p=1;
    e=b/100;
    o=a;
   do { r=o%e;
        o=o/e;
        e=e/10;
        switch(o){
    case 0:
        f++;
        break;
        case 1:
        g++;
        break;
        case 2:
        h++;
        break;
        case 3:
        i++;
        break;
        case 4:
        j++;
        break;
        case 5:
        k++;
        break;
        case 6:
        l++;
        break;
        case 7:
        m++;
        break;
        case 8:
        n++;
        break;
        case 9:
        q++;
        break;
        }
      if(e==0)
      {
          p=0;
      }
      o=r;
    }while(p!=0);
    if(f!=0)
    {
     printf("0: %d\n",f);
    }
    if(g!=0)
    {
        printf("1: %d\n",g);
    }
    if(h!=0)
    {
        printf("2: %d\n",h);
    }
    if(i!=0)
    {
        printf("3: %d\n",i);
    }
    if(j!=0)
    {
        printf("4: %d\n",j);
    }
    if(k!=0)
    {
        printf("5: %d\n",k);
    }
    if(l!=0)
    {
        printf("6: %d\n",l);
    }
    if(m!=0)
    {
        printf("7: %d\n",m);
    }
    if(n!=0)
    {
        printf("8: %d\n",n);
    }
    if(q!=0)
    {
        printf("9: %d\n",q);
    }
    return 0;
}
   
这个程序在中国大学运行的时候提示浮点数错误,但输出结果没问题,单步测试中也没有发现变成了浮点数,谢谢大佬指正。
搜索更多相关主题的帖子: printf case 浮点数 break int 
2020-09-20 23:43
八画小子
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:37
帖 子:705
专家分:2043
注 册:2010-11-11
得分:7 
看代码,有变量未初始化。
至于你说的浮点数问题,不知所云。
还有,麻烦顺便解释一下什么是“在中国大学运行”?难道,程序的运行还要看地点的么?
2020-09-21 01:08
RecluseF
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2020-9-10
得分:0 
中国大学慕课是一个软件,我在上面学习C语言
2020-09-21 08:43
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:7 
吃瓜路过,好奇问一下,假如输入“0”,那么按题意应该输出什么?
2020-09-21 09:49
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
得分:7 
浮点错误看不懂是什么东西
就目前而言 你的代码有几个地方要注意
1.
对齐缩进要统一
大括号换行就全部换行 不换行就全部不换行
4个空格缩进就全部用4个空格缩进

2.
注意你的代码 输入负数的情况是错误的
比如输入 -123 你会输出 123: 3 bit 实际上应该是 -123: 3 bit

3.
论坛代码用[ c o d e ]标签包起来 效果如下
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main(){
    int a,b,c,d,e;
    printf("Please enter the number:\n");
    scanf("%d",&a);
    for(b=1,d=0;c!=0;++d){
        a=(int)fabs(a);
        c=a/b;
        b=b*10;
    }
    printf("%d: %d bits\n",a,d-1);
    int f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o,p,q=0,r;
    p=1;
    e=b/100;
    o=a;
    do { 
        r=o%e;
        o=o/e;
        e=e/10;
        switch(o){
            case 0:f++;break;
            case 1:g++;break;
            case 2:h++;break;
            case 3:i++;break;
            case 4:j++;break;
            case 5:k++;break;
            case 6:l++;break;
            case 7:m++;break;
            case 8:n++;break;
            case 9:q++;break;
        }
        if(e==0){
            p=0;
        }
        o=r;
    }while(p!=0);
    if(f!=0){
        printf("0: %d\n",f);
    }
    if(g!=0){
        printf("1: %d\n",g);
    }
    if(h!=0){
        printf("2: %d\n",h);
    }
    if(i!=0){
        printf("3: %d\n",i);
    }
    if(j!=0){
        printf("4: %d\n",j);
    }
    if(k!=0){
        printf("5: %d\n",k);
    }
    if(l!=0){
        printf("6: %d\n",l);
    }
    if(m!=0){
        printf("7: %d\n",m);
    }
    if(n!=0){
        printf("8: %d\n",n);
    }
    if(q!=0){
        printf("9: %d\n",q);
    }
    return 0;
}


https://zh.
2020-09-21 09:53
RecluseF
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2020-9-10
得分:0 
回复 5楼 lin5161678
看了整理后的代码,是整洁很多,多谢指教。
2020-09-21 10:40
RecluseF
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2020-9-10
得分:0 
回复 2楼 八画小子
根据题意应该是
1bit
0:1
但是刚刚在程序里跑了一遍,比那个没有显示这个结果,是我考虑不周。
2020-09-21 10:45
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
以下是引用RecluseF在2020-9-21 10:45:50的发言:

根据题意应该是
1bit
0:1
但是刚刚在程序里跑了一遍,比那个没有显示这个结果,是我考虑不周。



程序代码:
#include <stdio.h>

int main( void )
{
    printf("Please enter the number:\n");
    int n;
    scanf( "%d", &n );

    int bs[10]={0}, count=0;
    for( unsigned t=n<0?-n:n; t!=0||count==0; t/=10 )
    {
        ++bs[t%10];
        ++count;
    }

    printf( "%d: %d bits\n", n, count );
    for( size_t i=0; i!=10; ++i )
        if( bs[i] != 0 )
            printf( "%zu: %d\n", i, bs[i] );
}
2020-09-21 12:59



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-503215-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.117763 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved