C语言 百炼成钢10

//题目28:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第
//3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后
//问第一个人,他说是10岁。请问第五个人多大?

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<math.h>

//分析:经过阅读,发现f(5)=f(4)+2;f(4)=f(3)+2;f(3)=f(2)+2;f(2)=f(1)+2;所以可以使用递归,也可以直接求出
//f(5)=f(4)+2=f(3)+2+2=f(3)+2*2=f(2)+2+2+2=f(2)+2*3=f(2)+2*(5-2)=f(1)+2*(5-1)=18;
//由于太过简单,此处不使用递归

void main(){
    printf("第五个人%d岁", 10 + 2 * (5 - 1));
    system("pause");
}

 

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

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<math.h>


//分析:求它是几位数,先除以10得到一个数,num-这个数,逆序将数字存到数组里递归就OK了
char str3[8] = { 0 };

void run3(int n){
    if (n==0)
    {
        printf("%c", str3[n]);
    }
    else{
        printf("%c", str3[n]);
        run3(n-1);
    }
}

void main(){
    scanf("%s", str3);
    int index = 0;
    while (str3[index] != '\0'){
        index++;
    }
    printf("这个数字是%d位数\n",index);
    printf("逆序排列\n");
    run3(index);

    system("pause");
}

 

 

//题目30:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。 

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<math.h>

//分析:很简单,分离出个十百千万位就OK了
//设计出万能获取数字各个位的方法

//获取正整数各个位的值
int * Numcount(int num){
    //定义静态数组,以便调用
    static int arr[12] = { 0 };
    if (num >= (int)pow(10.0, 9.0))
    {
        arr[9] = num / (int)pow(10.0, 9.0);
        num = num - arr[9] * (int)pow(10.0, 9.0);
        arr[8] = num / (int)pow(10.0, 8.0);
        num = num - arr[8] * (int)pow(10.0, 8.0);
        arr[7] = num / (int)pow(10.0, 7.0);
        num = num - arr[7] * (int)pow(10.0, 7.0);
        arr[6] = num / (int)pow(10.0, 6.0);
        num = num - arr[6] * (int)pow(10.0, 6.0);
        arr[5] = num / (int)pow(10.0, 5.0);
        num = num - arr[5] * (int)pow(10.0, 5.0);
        arr[4] = num / (int)pow(10.0, 4.0);
        num = num - arr[4] * (int)pow(10.0, 4.0);
        arr[3] = num / (int)pow(10.0, 3.0);
        num = num - arr[3] * (int)pow(10.0, 3.0);
        arr[2] = num / (int)pow(10.0, 2.0);
        num = num - arr[2] * (int)pow(10.0, 2.0);
        arr[1] = num / (int)pow(10.0, 1.0);
        num = num - arr[1] * (int)pow(10.0, 1.0);
        arr[0] = num;
    }
    else if (num >= (int)pow(10.0, 8.0)){
        arr[8] = num / (int)pow(10.0, 8.0);
        num = num - arr[8] * (int)pow(10.0, 8.0);
        arr[7] = num / (int)pow(10.0, 7.0);
        num = num - arr[7] * (int)pow(10.0, 7.0);
        arr[6] = num / (int)pow(10.0, 6.0);
        num = num - arr[6] * (int)pow(10.0, 6.0);
        arr[5] = num / (int)pow(10.0, 5.0);
        num = num - arr[5] * (int)pow(10.0, 5.0);
        arr[4] = num / (int)pow(10.0, 4.0);
        num = num - arr[4] * (int)pow(10.0, 4.0);
        arr[3] = num / (int)pow(10.0, 3.0);
        num = num - arr[3] * (int)pow(10.0, 3.0);
        arr[2] = num / (int)pow(10.0, 2.0);
        num = num - arr[2] * (int)pow(10.0, 2.0);
        arr[1] = num / (int)pow(10.0, 1.0);
        num = num - arr[1] * (int)pow(10.0, 1.0);
        arr[0] = num;
    }
    else if (num >= (int)pow(10.0, 7.0))
    {
        arr[7] = num / (int)pow(10.0, 7.0);
        num = num - arr[7] * (int)pow(10.0, 7.0);
        arr[6] = num / (int)pow(10.0, 6.0);
        num = num - arr[6] * (int)pow(10.0, 6.0);
        arr[5] = num / (int)pow(10.0, 5.0);
        num = num - arr[5] * (int)pow(10.0, 5.0);
        arr[4] = num / (int)pow(10.0, 4.0);
        num = num - arr[4] * (int)pow(10.0, 4.0);
        arr[3] = num / (int)pow(10.0, 3.0);
        num = num - arr[3] * (int)pow(10.0, 3.0);
        arr[2] = num / (int)pow(10.0, 2.0);
        num = num - arr[2] * (int)pow(10.0, 2.0);
        arr[1] = num / (int)pow(10.0, 1.0);
        num = num - arr[1] * (int)pow(10.0, 1.0);
        arr[0] = num;
    }
    else if (num >= (int)pow(10.0, 6.0))
    {
        arr[6] = num / (int)pow(10.0, 6.0);
        num = num - arr[6] * (int)pow(10.0, 6.0);
        arr[5] = num / (int)pow(10.0, 5.0);
        num = num - arr[5] * (int)pow(10.0, 5.0);
        arr[4] = num / (int)pow(10.0, 4.0);
        num = num - arr[4] * (int)pow(10.0, 4.0);
        arr[3] = num / (int)pow(10.0, 3.0);
        num = num - arr[3] * (int)pow(10.0, 3.0);
        arr[2] = num / (int)pow(10.0, 2.0);
        num = num - arr[2] * (int)pow(10.0, 2.0);
        arr[1] = num / (int)pow(10.0, 1.0);
        num = num - arr[1] * (int)pow(10.0, 1.0);
        arr[0] = num;
    }
    else if (num >= (int)pow(10.0, 5.0))
    {
        arr[5] = num / (int)pow(10.0, 5.0);
        num = num - arr[5] * (int)pow(10.0, 5.0);
        arr[4] = num / (int)pow(10.0, 4.0);
        num = num - arr[4] * (int)pow(10.0, 4.0);
        arr[3] = num / (int)pow(10.0, 3.0);
        num = num - arr[3] * (int)pow(10.0, 3.0);
        arr[2] = num / (int)pow(10.0, 2.0);
        num = num - arr[2] * (int)pow(10.0, 2.0);
        arr[1] = num / (int)pow(10.0, 1.0);
        num = num - arr[1] * (int)pow(10.0, 1.0);
        arr[0] = num;
    }
    else if (num >= (int)pow(10.0, 4.0))
    {
        arr[4] = num / (int)pow(10.0, 4.0);
        num = num - arr[4] * (int)pow(10.0, 4.0);
        arr[3] = num / (int)pow(10.0, 3.0);
        num = num - arr[3] * (int)pow(10.0, 3.0);
        arr[2] = num / (int)pow(10.0, 2.0);
        num = num - arr[2] * (int)pow(10.0, 2.0);
        arr[1] = num / (int)pow(10.0, 1.0);
        num = num - arr[1] * (int)pow(10.0, 1.0);
        arr[0] = num;
    }
    else if (num >= (int)pow(10.0, 3.0))
    {
        arr[3] = num / (int)pow(10.0, 3.0);
        num = num - arr[3] * (int)pow(10.0, 3.0);
        arr[2] = num / (int)pow(10.0, 2.0);
        num = num - arr[2] * (int)pow(10.0, 2.0);
        arr[1] = num / (int)pow(10.0, 1.0);
        num = num - arr[1] * (int)pow(10.0, 1.0);
        arr[0] = num;
    }
    else if (num >= (int)pow(10.0, 2.0))
    {
        arr[2] = num / (int)pow(10.0, 2.0);
        num = num - arr[2] * (int)pow(10.0, 2.0);
        arr[1] = num / (int)pow(10.0, 1.0);
        num = num - arr[1] * (int)pow(10.0, 1.0);
        arr[0] = num;
    }
    else if (num >= (int)pow(10.0, 1.0))
    {
        arr[1] = num / (int)pow(10.0, 1.0);
        num = num - arr[1] * (int)pow(10.0, 1.0);
        arr[0] = num;
    }
    else{
        arr[0] = num;
    }
    return arr;
}


void main(){
    int num = 12321;
    int *p = Numcount(num);
    if ((*(p) == *(p + 4)) && (*(p+1) == *(p + 3)))
    {
        printf("%d是回文数\n",num);
    }
    else{
        printf("%d不是回文数\n", num);
    }
    system("pause");
}

 

 

posted on 2016-01-22 17:00  寒魔影  阅读(205)  评论(0编辑  收藏  举报

导航