1:数组的下标是从0开始的
int number[10],
定义一个10元素的数组,则下标只能是从0-9,不会出现 number[10]=??这种情况,出现就越界了。
2:printf("you entered %d \n",number[i])
你输入用了循环输入10个数,你输出一个数组,就想一次输出??也需要循环一个一个输出啊!!
3:逆序的问题
while (i<=10)
{
number[i]=number[11-i]
i=i+1
}
先不管下标的问题对不对,你这样以后 :假设number就三个元素
1 2 3
则number[0] = number[2] = 3了。number[1]=number[1]=2 number[2]=number[0]=3 这样还对吗??你把number[0]的值给弄丢了。
#include<stdio.h>#include<math.h>
main()
{
printf("please input a number below 6 numbers:")
int n
scanf("%d",&n)
int a=10,b=1
while((n/a)>=1)
{
a=a*10
b++
}
if(b>5)printf("below 6 numbers!")
else printf("This is a %d numbers number\n",b)
//加一个int m=n
for(n>0)
{
printf("%d ",n%10)
n = n/ 10
} // 这个for循环改成
for(m>0)
{
printf("%d ",m%10)
m = m/ 10
}
printf("\n")
for(n>0,b>0)
{
printf("%d ",n/pow(10,b))
n=n-pow(10,b)
b--
}
printf("\n")
}
先试试?
一、问题分析:
要把整数逐位输出,无论正序还是反序,都需要将各个位分离。
在C中的做法就是,通过对10取余,取出个位,然后通过除以10,起到“移位”的效果。
二、算法设计:
1、输入要处理的整数;
2、取出各位;
3、递归调用,以当前值除以10为参数;
4、当值为0时退出。
正序和反序输出,取决于递归调用和输出的位置关系。
三、参考代码:
正序:
#include <stdio.h>void func(int n)
{
int v
if(n==0) return//到0结束。
v=n%10//取出个位。
func(n/10)//递归调用
printf("%d ", v)//输出。
}
int main()
{
int n
scanf("%d",&n)//输入。
func(n)//调用函数,正序输出各个位。
return 0
}
反序:
#include <stdio.h>void func(int n)
{
int v
if(n==0) return//到0结束。
v=n%10//取出个位。
printf("%d ", v)//输出。
func(n/10)//递归调用
}
int main()
{
int n
scanf("%d",&n)//输入。
func(n)//调用函数,正序输出各个位。
return 0
}