首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > PB >

写了一段程序,关于整数位数的,编译连接都没有异常,可是运行不起来

2012-12-14 
写了一段程序,关于求一个整数位数的,编译连接都没有错误,可是运行不起来!小程序如下:---------# include

写了一段程序,关于求一个整数位数的,编译连接都没有错误,可是运行不起来!
小程序如下:
---------
# include <stdio.h>
int main ()
{
int i/*(number)*/,place,ten_thousand,thousand,hundred,ten,individual;
printf ("please enter an integer:");
scanf ("%d",i);
while (i>99999)
{
    printf ("wrong!\nenter again:");
scanf ("%d",&i);              
}
    //if (i>10000)        //wrong!
if (i>9999)
place=5;
if (i>999)
place=4;
if (i>99)
place=3;
if (i>9)
place=2;
else
place=1;
printf("位数:%d",place);
printf("每位数字为:");
    ten_thousand=i/10000;
thousand=(i-ten_thousand*10000)/1000;
hundred=(i-ten_thousand*10000-thousand*1000)/100;
ten=(i-ten_thousand*10000-thousand*1000-hundred*100)/10;
individual=i-ten_thousand*10000-thousand*1000-hundred*100-ten*10;
switch(place)
{
case 5:printf("%d,%d,%d,%d,%d\n",ten_thousand,thousand,hundred,ten,individual);
   printf("逆序数字为:");
   printf("%d,%d,%d,%d,%d\n",individual,ten,hundred,thousand,ten_thousand);
   break;
case 4:printf("%d,%d,%d,%d\n",thousand,hundred,ten,individual);
   printf("逆序数字为:");
   printf("%d,%d,%d,%d,\n",individual,ten,hundred,thousand);
   break;
    case 3:printf("%d,%d,%d\n",hundred,ten,individual);
   printf("逆序数字为:");
   printf("%d,%d,%d\n",individual,ten,hundred);
   break;
    case 2:printf("%d,%d\n",ten,individual);
   printf("逆序数字为:");
   printf("%d,%d,\n",individual,ten);
   break;
    case 1:printf("%d\n",individual);
   printf("逆序数字为:");
   printf("%d\n",individual);
   break;


}
printf("好累啊!");
    return 0;
}
---------



这是怎么回事啊?
前面有一次也越到这种情况的!
[最优解释]
int i/*(number)*/,place,ten_thousand,thousand,hundred,ten,individual;
printf ("please enter an integer:");
scanf ("%d",i);
改成scanf ("%d",i&);
[其他解释]
#include<stdio.h>
#include<math.h>
void main(){
int a[10];//数组存放高位至低位
 int num,temp,j,i=1,data_length;//data_length表示该数字是几位数
 printf("请输入一个数\n");
 scanf("%d",&num);
 
 temp=num;
 while(temp>10){
 i++;
 temp=temp/10;
}//这是求数的位数的
 data_length=i;
 printf("该数字是%d位数\n",data_length);
 printf("逆序为\n");
for(j=0;j<data_length;j++){
    a[j]=num/(int)pow(10,i-1);
num=num-a[j]*pow(10,i-1);
i--;
}//这个是用来求各个位数的,如12345 先12345/10000=1 ,num=12345-1*10000=2345 ,再以此类推
i=data_length;
while(i>0){
printf("%d ",a[i-1]);
i--;
}
printf("\n");
}
[其他解释]
這一段
for(j=0;j<data_length;j++){
    a[j]=num/(int)pow(10,i-1);
num=num-a[j]*pow(10,i-1);
i--;
}//这个是用来求各个位数的,如12345 先12345/10000=1 ,num=12345-1*10000=2345 ,再以此类推



建議這樣做:
for(j=data_length-1;j>=0;j--) {
a[j] = num%10;
num /=10;
}

[其他解释]

引用:
int i/*(number)*/,place,ten_thousand,thousand,hundred,ten,individual;
printf ("please enter an integer:");
scanf ("%d",i);
改成scanf ("%d",i&amp;);


谢谢啦!我真粗心

热点排行