c语言 用数组 输入一个不多于的八位数,输出各个位数上的数 并且输出数字从大到小排列 在线等

如题所述

#include<stdio.h>
#include<string.h>
void main()
{
char ch[8];/*修改数组大小,可以修改所处理数的大小*/
int i,j,n,t;
printf("请输入一个整数:(不大于8位数)");
gets(ch);
n=strlen(ch);
for(i=0;i<n;i++)
printf("第%d位数是:%d\n",i+1,ch[i]-'0');
for(i=0;i<n-1;i++)/*冒泡法排序*/
for(j=i;j<n;j++)
if(ch[i]<ch[j])
{ t=ch[i];ch[i]=ch[j];ch[j]=t;}
printf("各位数从大到小顺序排列后为:");
puts(ch);/**按字符串输出/
}

参考资料:/

温馨提示:内容为网友见解,仅供参考
第1个回答  2011-01-02
楼上的我测试过了有问题

#include <stdio.h>
void main()
{
long num;
int a[8],i,j,n=1,k;
do
{
if(!n)printf("输入数据不符合要求\n");
scanf("%d",&num);
n=0;
} while(num>99999999||num<1);
for (i=0;i<8;i++)
{
a[i]=num%10;
num=num/10;
}
for (i=7;i>=0;i--)
{
if (a[i]==0&&n==0)continue;
else{
if (n==0)
{
k=i;
}
n=1;
printf("%2d",a[i]);
}
}
printf("\n");
for (i=0;i<=k-1;i++)
for (j=i+1;j<=k;j++)
if (a[i]<a[j])
{
n=a[i];
a[i]=a[j];
a[j]=n;
}

for (i=0;i<=k;i++)printf("%2d",a[i]);
printf("\n");
}
第2个回答  2011-01-02
用字符串输入可以任意长的数都可以,程序如下
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{ int i,a[10]={0};
char s[100]={0};
gets(s);
for(i=0;s[i]!='\0';i++)a[s[i]-'0']=a[s[i]-'0']+1;
for(i=0;i<10;i++)if(a[i]!=0)printf("%d %d\n12",i,a[i]);

system("PAUSE");
return 0;

}本回答被网友采纳

...输入一个不多于的八位数,输出各个位数上的数 并且输出数字从大到小...
include<string.h> void main(){ char ch[8];\/*修改数组大小,可以修改所处理数的大小*\/ int i,j,n,t;printf("请输入一个整数:(不大于8位数)");gets(ch);n=strlen(ch);for(i=0;i<n;i++)printf("第%d位数是:%d\\n",i+1,ch[i]-'0');for(i=0;i<n-1;i++)\/*冒泡法排序...

c语言中输入数组的问题
可以观察到,arr[0]并未存入字符,t的数值比预期少1 原因:这种情况通常发生在前面已经有了输入语句,而当前的scanf是在接收字符(即用%c控制输入)时。由于前面的输入语句(不一定是scanf)把最后输入的'\\n'遗留在了输入缓冲区,而当前的scanf(“%c”,...);又会把'\\n'当一个字符接收,又...

编程 给出一个不多于6位的正整数,求它是几位数,并分别打印出各位上的...
编程 给出一个不多于6位的正整数,求它是几位数,并分别打印出各位上的数字一、系统菜单的主要功能 (1)输入若干条记录 (2)显示所有记录 (3)按学号排序 (4)插入一条记录 (5)按姓名查找,删除一条记录 (6)

C语言 输入4个整数,按要求从小到大的顺序输出 ,我写的程序哪里有问题...
亲,哪有你这样比较的。首先是输入4个整数,您直接定义成float浮点型,这就不对。最好是把这些数装入一个数组内,再排序。int main(){ int a[4]; int tmp,count,i_count; scanf("%d,%d,%d,%d", &a[0], &a[1], &a[2], &a[3]); for(count = 0, count < 3, ...

用C语言编程:给一个不多于5位的正整数,要求如下:
int a, b, c, d, e, f, w;printf("输入一个不多于五位的整数:");scanf("%d",&a);\/\/第一问,求出它是几位数 b = 10000 - a;c = 1000 - a;d = 100 - a;e = 10 - a;f = 0 - a;while (a < 0 || a > 99999)printf("输入错误,请重新输入\\n");if (b < 0...

编写程序,输入一个不多于5位的正整数,要求: 输出它是几位数; 分别输出...
你上面这个代码并不符合题目要求,首先一般算长度是依次除10直到0来算的,二是题目要分别输出每一位,并不是要逆序输出。至于你这上面的逆序本身也写错了,按你上面的就是 for(i=lax; i>=0; printf("%c ",ax[--i]));逆序的原理就是itoa(n,ax,10)将整数n转成了字符数组,存在ax中,比如...

2.给一个不多于5位的正整数,要求: ①求出它是几位数; ②分别输出每一位...
先定义一个整型变量a,键盘输入赋值给a,a对10求余,再a除以10,循环操作,直到a等于0,用一个数组依次储存余数,就是a各位上的数。\/\/参考代码 #include<stdio.h>int main(){int i=0,j,a,n[6];scanf("%d",&a);while(a){n[i++]=a%10;a\/=10;}printf("它是%d位数\\n",i);...

c语言编程序 给一个不多于5位数的正整数,要求: 1:求出它是几位数; 2...
先 定义一个数组 a[5]初值 a[5]的各个数都等于-1;然后 对于你输入的数num;p=num;i=0;\/\/主要程序 while(p>0){ a=[i]=p%10; \/\/对p取余 p=p\/10;i++;} 输出 几位数:printf("%d",i);逆序输出 数字:for(int j =0;j...

c程编程解答:给一个不多于五位的正整数,求他是几位数,分别输出每一个数...
include<stdio.h>int main(){int n, count = 0;scanf("%d", &n);if (!n){printf("%d\\n位数:1\\n", n);}else{while (n){printf("%d", n % 10);n \/= 10;++count;}putchar('\\n');printf("位数:%d\\n", count);}return 0;} ...

给出一个不多于5位的正整数,求出它的各位数,并转换成字符串输出。
;由个位向前输出;若想由高位向低位输出的话,弄个数组存起来在输出就好了,如下:int a;\/\/不多于5位的数 int tmp;char ch[5];int i=0;do{ tmp=a%10;\/\/printf(“%2d",tmp);ch[i++]='0'+tmp;a\/=10;\/\/(a=a\/10)}while(a!=0);for(;i>=0;i--)printf("%2c",ch[i]);

相似回答
大家正在搜