经典c题目——T1

题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。

 

第一部分:网络上的代码

main( )

{

long a,b,c,d,e,x;

scanf("%ld",&x);

a=x/10000;/*分解出万位*/

b=x%10000/1000;/*分解出千位*/

c=x%1000/100;/*分解出百位*/

d=x%100/10;/*分解出十位*/

e=x%10;/*分解出个位*/

if (a!=0) printf("there are 5, %ld %ld %ld %ld %ld\n",e,d,c,b,a);

else if (b!=0) printf("there are 4, %ld %ld %ld %ld\n",e,d,c,b);

  else if (c!=0) printf(" there are 3,%ld %ld %ld\n",e,d,c);

    else if (d!=0) printf("there are 2, %ld %ld\n",e,d);

      else if (e!=0) printf(" there are 1,%ld\n",e);

}

 

 

第二部分:在下一些分析和代码(*经过别人的指点,改错而成,特此感谢网上那些帮助在下改错的人

 


#include <stdio.h>
int main (void)
{
 int count=0,n,i;
 int a[6];//用于存放输入的数字,a[0]作废,申请六个

 

 printf("输入一个不多于5位的正整数\n");
 scanf("%d",&n);

 //分别将各位上的数字存入数组中

 


 while(n!=0)     /*此处错点:while(n%10!=0)不好,如果输入的是100,while循环直接不执行了*/
 {
  count++;


  a[count]=n%10;//注意此处count=1,会影响下面数组的遍历起点,并且最开始存放的是个位此时的count=1,但是后来会递增。

/*

网友赐教:这句还可以这么写n=(n-a[count]) / 10;——理由:n/=10;虽然可以达到目的,整型做除法商会自动取整,但是还是不建议这样用。 一般写法是 n =( n - (n%10) ) / 10 (先把个位数减了在除10,得到的是整型)。

*/
  n/=10; }


 printf("它是%d位数\n",count);

 

 printf("它的逆序为:");
 //利用数组遍历逆序输出数字
 for(i=1;i<=count;i++)//注意此处的i=1
 {
  printf("%d",a[i]);
 }printf("\n");

 

 return 0;
}

 

 

 

 

ps:在下目前尚处于c语言学习状态,对c语言的认识更是只能算得上新手一名,很多地方考虑不周,漏洞百出现象不可避免,望各位高手多加指点、赐教,非常感谢。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值