| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 389 人关注过本帖
标题:求看代码,找错,谢谢大神
只看楼主 加入收藏
轻风无言
Rank: 2
等 级:论坛游民
帖 子:27
专家分:25
注 册:2012-12-19
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:6 
求看代码,找错,谢谢大神
#include<stdio.h>
#include<math.h>

int quzhen( int a, int b ); // a被b除取整数部分
int quyu( int a, int b );  // a被b除取余数部分

int main( void )
{
    double a[6] = {0};        
    int i;
    double num;
    int j;

    printf( "输入一个0到32767之间的整数: " );
    scanf( "%d", &num );
    for( i = 5; i >= 1; i-- ){
        a[i] = quzhen( num, ( int )pow( 10, i ) );//抽出最高位
        num = quyu( num, ( int )pow( 10, i ) );//num重新赋值次高位到最后
    }
    j = 5;
    while( a[j--] == 0 );//确定最高不为零位
   
    for( j ; j > 0; j-- ){        //分别打印不为零的各位
        printf( "%d  ", a[j] );
    }
   
    return 0;
}

int quzhen( int a, int b )//取最高位
{
    return ( a / b );
}

int quyu( int a, int b )//求余
{
    return ( a % b );
}
//代码的意思就是要从最高位开始分别打印各位,但是又打印不出,郁闷
搜索更多相关主题的帖子: double include 
2012-12-22 21:13
wkz2012
Rank: 4
等 级:业余侠客
帖 子:123
专家分:253
注 册:2012-12-13
收藏
得分:20 
你的程序问题很多,在函数中,形参是int型,可赋实参时,又把double赋值进去了,就是num这个变量,这是问题一,当然,你的程序中关于数据类型的转换还有其他的问题,比如数组声明是double,但把int赋值进去等,自己好好找找,尽量统一,这些小问题可能引起许多的错误;
你的while循环到底是什么意思,里面没有任何循环体,我不知到有什么用;
for循环中,你说打印出不为0的各个元素,可并没有判断是否为0啊,我猜你是想把for循环嵌套在while循环里,所以程序还是要好好改动一下,注意变量j的变化

我了个去的编程!
2012-12-22 21:29
轻风无言
Rank: 2
等 级:论坛游民
帖 子:27
专家分:25
注 册:2012-12-19
收藏
得分:0 
回复 2楼 wkz2012
谢谢提醒啊,恩恩,刚刚看了,是有很多小细节要细心的,再帮我看下好不,打印的结果怎么老是少了位啊,找不出来原因
#include<stdio.h>
#include<math.h>

int quzhen( int a, int b ); // a被b除取整数部分
int quyu( int a, int b );  // a被b除取余数部分

int main( void )
{
    int a[6] = {0};        
    int i;
    int num;
    int j;

    printf( "输入一个0到32767之间的整数: " );
    scanf( "%d", &num );
    for( i = 5; i >= 1; i-- ){
        a[i] = quzhen( num, ( int )pow( 10.0, i ) );//抽出最高位
        num = quyu( num, ( int )pow( 10.0, i ) );//num重新赋值次高位到最后
    }
    j = 5;
    while( a[j] == 0 )
        j--;//确定最高不为零位
   
    for( i = j ; i > 0; i-- ){        //分别打印不为零的各位
        printf( "%d  ", a[i] );
    }
   
    return 0;
}

int quzhen( int a, int b )//取最高位
{
    return (int)( a / b );
}

int quyu( int a, int b )//求余
{
    return  (int)( a % b );
}
2012-12-22 22:18
wkz2012
Rank: 4
等 级:业余侠客
帖 子:123
专家分:253
注 册:2012-12-13
收藏
得分:0 
这个应该是你否循环的问题,你的最后一位是除以10取整,所以只能打印到十位,而不能打印到个位,因为你的i只到1就不循环了,你把数组的存储改成从a[0]开始存储,不要用a[1]开始存,应该就行了

我了个去的编程!
2012-12-22 22:24
wkz2012
Rank: 4
等 级:业余侠客
帖 子:123
专家分:253
注 册:2012-12-13
收藏
得分:0 
   for( i = 4; i >= 0; i-- ){
        a[i] = quzhen( num, ( int )pow( 10.0, i ) );//抽出最高位
        num = quyu( num, ( int )pow( 10.0, i ) );//num重新赋值次高位到最后
    }
    j = 4;
    while( a[j] == 0 )
        j--;//确定最高不为零位
   
    for( i = j ; i > = 0; i-- ){        //分别打印不为零的各位
        printf( "%d  ", a[i] );
    }
   
    return 0;
}


我了个去的编程!
2012-12-22 22:26
轻风无言
Rank: 2
等 级:论坛游民
帖 子:27
专家分:25
注 册:2012-12-19
收藏
得分:0 
回复 5楼 wkz2012
谢谢了啊,你看得很仔细,刚刚仔细分析了下,是那么回事,旁观者清啊, 有时候不以为然就犯错了,呵呵
2012-12-22 22:41
wkz2012
Rank: 4
等 级:业余侠客
帖 子:123
专家分:253
注 册:2012-12-13
收藏
得分:0 
回复 6楼 轻风无言
没事,有时候的确有这种当局者迷的情况

我了个去的编程!
2012-12-22 22:43
快速回复:求看代码,找错,谢谢大神
数据加载中...
 
   



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

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