c语言正序和倒序输出数

Python013

c语言正序和倒序输出数,第1张

错误的地方太多了。

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

}