C 语言教程 在线

1765c-exercise-example30

利用字符串实现的方法:

#include <stdio.h>
#include<string.h>

int main()
{
    char str[5];
    printf("请输入五位数:");
    scanf("%s",str);

    if(str[0]==str[4]&&str[1]==str[3])
        printf("这是一个回文数。\n");
    else
        printf("这不是回文数。\n");
    return 0;
}

1764c-exercise-example30

其他参考解法:

#include <stdio.h>

int main()
{
    int n;
    printf("请输入 5 位数字:");
    scanf("%d",&n);
    int x[1000];
    int i=0;
    while(n!=0)
    {
        x[i]=n%10;
        n=n/10;
        i++;
    }
    int z=i;
    int flag=1;
    for(i=0;i<z;i++) {
        if(x[i]!=x[z-1-i]){
            flag= 0;
              printf("这不是回文数\n");
            break;
        }
    }
    if(flag==1) {
         printf("这是回文数\n");
    }
}

1763c-exercise-example29

利用递归:

#include <stdio.h>

int digits(int k);
void reverseprintNum(int g);

int main()
{
    int num;
    printf("输入一个数:");
    scanf("%d", &num);
    printf("位数:%d\n", digits(num));
    printf("逆序输出:");
    reverseprintNum(num);
    return 0;
}

int digits(int k)
{
    if (k / 10 == 0) return 1;
    else return digits(k / 10) + 1;
}

void reverseprintNum(int g)
    {
    if (g / 10 == 0) printf("%d", g);
    else
    {
        printf("%d", g % 10);     // 最后一个数字作为第一个数字输出
        reverseprintNum(g / 10);  // 删除最后一个数字
    }
}

1762c-exercise-example29

参考方法:

#include <stdio.h>

int main(){
    int k,n,count=0;
    printf("请输入一个正整数:\n");
    scanf("%d",&n);
    while(n){
        k=n%10;
        printf("%d ",k);
        count++;
        n/=10;
    }
    printf("\n%d",count);
    return 0;
}

1761c-exercise-example29

参考方法:

#include<stdio.h>
#include<string.h>
int reverse(int num, char* buf)
{
    int head = 0, tail = num - 1;
    int counter = num / 2;
    if(counter == 0)
        return 0;
    *(buf + head) ^= *(buf + tail);
    *(buf + tail) ^= *(buf + head);
    *(buf + head) ^= *(buf + tail);
    return reverse(num - 2, buf + 1);
}
int main()
{
    char buf[6] = {0};
    int length = 5;
    printf("请输入 5 位数字:");
    fgets(buf, 6, stdin);
    if(buf[4] != '\n' && strlen(buf) == 5)
    {
        scanf("%*[^\n]");
        scanf("%*c");
    }
    else if(buf[4] == '\n' && strlen(buf) == 5)
        length = 4;
    else length = strlen(buf) - 1;
    reverse(strlen(buf), buf);
    printf("这个%d位数倒序输出为:%s\n",length, buf);

    return 0;
}