首页 > 试题广场 >

数字颠倒

[编程题]数字颠倒
  • 热度指数:435214 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
输入一个整数,将这个整数以字符串的形式逆序输出

程序不考虑负数的情况,若数字含有0,则逆序形式也含有0,如输入为100,则输出为001


数据范围:

输入描述:

输入一个int整数



输出描述:

将这个整数以字符串的形式逆序输出

示例1

输入

1516000

输出

0006151
示例2

输入

0

输出

0
#include <stdio.h>
#include <string.h>
int main()
{
int a;
char str[30]={0};
scanf("%d",&a);
sprintf(str,"%d",a);
int len =strlen(str);
for(int i =len-1;i>=0;i--)
{
printf("%c",str[i]);
}
return 0;
}
编辑于 2024-03-02 23:44:44 回复(0)
这样写的话,系统会检测我是不是用字符输出吗?
#include <stdio.h>

int main() {
    int a;
    scanf("%d", &a);
    do {
        printf("%d", a%10);
        a/=10;
    }
    while(a!=0);
}
编辑于 2024-02-27 21:12:12 回复(0)
#include<stdio.h>
int Div(int n)
{
    int sum=0;
    for(int i=1;i<n;i++)
    {
        if(n%i==0)
        sum+=i;
    }
    if(sum==n)
    {
        return 1;
    }
    return 0;
}
int main()
{
    int n=0;
    int count=0;
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        if(Div(i)!=0)
        count++;
    }
    printf("%d",count);
    return 0;
}
编辑于 2024-02-24 15:39:14 回复(1)
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
    int arr[100] = { 0 };
    int a = 0;
    for (int i = 0; i < 100; i++)
    {
        scanf("%c", &arr[i]);
        if (arr[i] == '\n')
        {
            a = i;
            break;
        }
    }
    for (int i = a - 1; i >= 0; i--)
    {
        printf("%c", arr[i]);
    }
    return 0;
}
编辑于 2024-01-11 11:39:53 回复(0)
#include <stdio.h>
#include <string.h>
//在字符型与长整型之间的转换花了很长时间,但是仔细看了一下题目要求输入的是整数不是整型,设置一个11位的字符型数组逆序遍历输出就行
int main()
{
    char str[11]={0};
    gets(str);
    int len=strlen(str);
    for(int i=len-1;i>=0;i--)
    {
        printf("%c",str[i]);
    }
    return 0;
}
编辑于 2024-01-06 10:51:00 回复(0)
#include <stdio.h>
#include <string.h>

int main() {
    char InputString[30] = {0};
    scanf("%s",InputString);
    for(int i = strlen(InputString) - 1;i >=0;i-- )
    {
         printf("%c",InputString[i]);
    }   
    return 0;
}

编辑于 2024-01-05 17:42:03 回复(0)
#include <stdio.h>

int main() {
    int a, b;
    scanf("%d",&a);
    if(a>0) //排除有0存在的情况
    while(a>0)
    {
        b=a%10; //求余数
        printf("%d",b);//将余数输出
        a=a/10;//舍弃处理掉的余数位
    }
    else printf("%d",a);//若有0,则直接输出即可
      return 0;
}

发表于 2023-12-28 19:25:02 回复(0)
#include <stdio.h>
int main()
{
    int x;
    int sum=0;
    scanf("%d",&x);
    if(x==0)
    {
        printf("0");
    }
    else{
    while(x!=0) 
    { 
        sum=x%10; 
        printf("%d",sum);
        x /= 10;
    }
    } 
    return 0; 
}

发表于 2023-12-12 17:12:37 回复(0)
用结构体手撸了一个栈,结束前不free的话内存占用会少50k……如果是实际开发不free的话编译器会自行回收吗
#include <stdio.h>
#include <stdlib.h>
typedef struct stack{char a;struct stack* last;}stk;
stk* push(stk *b,char a){stk* new = malloc(sizeof(stk));new->a=a;new->last=b;return new;}
int main() {
    char a=getchar();
    stk* b;while(a<'0'||a>'9')a=getchar();b=malloc(sizeof(stk));b->a=a;b->last=0;
    while(a>='0'&&a<='9'){b=push(b,a);a=getchar();}
    while(b->last){putchar(b->a);b=b->last;}
    return 0;
}

编辑于 2023-12-07 10:17:46 回复(0)
为什么我第十个用例多了一个
有没有大佬帮我看看
用例输入为77913645
实际输出为54631977`
#include <stdio.h>
#include <string.h>

int main()
{
    int num = 0;
    scanf("%d", &num);
    char temp[100];
    int index = 0;
    if (num == 0)
    {
        printf("0");
    }
    else
    {
        while (num != 0)
        {
            temp[index] = (num % 10) + 48;
            index++;
            num = num / 10;
        }
        temp[index + 1] = '\0';
        printf("%s", temp);
    }

    return 0;
}

发表于 2023-12-05 11:30:39 回复(0)
#include <stdio.h>
int main() {
    char s[10] = {'\0'};
    gets(s);
    int i = 9;
    while (s[i] == '\0') i--;
    while (i>=0) putchar(s[i--]);
    return 0;
}

编辑于 2023-12-01 23:03:11 回复(0)
思路:
    比较容易就想到了对每个位取整和去余
发表于 2023-11-25 16:43:29 回复(0)
#include <stdio.h>


int main()
{
        long  num ;

        long  m ;


        scanf("%d",&num);

        if(num<0)
        {
            printf("Error!\n");
        
        }

        if (num == 0)
            {
        
                printf("%d",num);
            
            }

        while(num != 0)
        {
         
        
            {
                m = num%10;

                printf("%d",m);

                num = num/10;

            
            }
        }



        printf("\n");

        return 0;
}
发表于 2023-11-14 23:04:36 回复(0)
#include <stdio.h>
#include <string.h>

int main() {
    int a;
    scanf("%d",&a);
    char str[20]={0};
    sprintf(str,"%d",a);
    for(int i=strlen(str)-1;i>=0;i--)
    {
        printf("%c",str[i]);
    }
    return 0;
}
发表于 2023-08-29 23:01:11 回复(0)
#include <stdio.h>
int main() {
    long int  a,b;
    scanf("%ld",&a);
    while(a)
    {
        b=a%10;
        printf("%ld",b) ;
        a=a/10;  
    }
    return 0;
}
发表于 2023-07-28 12:32:58 回复(1)
#include <stdio.h>

int main() {
    int a, b, j;
    scanf("%d",&a);
    b=(int)('0'-(char)0);
    if(a==0){
        printf("%c",(char)a+b);
    }
    while(a!=0){
        j=a%10;
        a=a/10;
        printf("%c",(char)j+b);
    }

    return 0;
}
发表于 2023-07-17 23:28:30 回复(0)
#include <stdio.h>

int main() {
    char str[10] = { 0 };  //提前加入字符串终止符
    int len;

    scanf("%s",str);     
    len = strlen(str);    

    while(len){
        printf("%c",str[--len]);  //--len(len-1 ~ 0)
    }

    return 0;
}


发表于 2023-03-31 14:49:53 回复(0)
/**  题目:HJ11 数字颠倒
  *  思路:1、以 字符串 形式输入整数,然后逆序输出单个字符; 2、以 整数 形式输入整数,输出为 printf("%c", num % 10 + 48)
  */
#include <stdio.h>
#include <string.h>

int main() {
    char str[20];
    int len;

    gets(str);
    len = strlen(str) - 1;

    for(;len >= 0; len--) {
        printf("%c",str[len]);
    }
    printf("\n");

    return 0;
}

/*
int main() {
    int num;

    scanf("%d", &num);

    // 判断是否为0,为0则输出0;不为0进入while循环,输出为 printf("%c", num % 10 + 48),同时 num = num / 10;
    if(num == 0) {
        printf("0\n");
    }
    else {
        while(num) {
            printf("%c", num % 10 + 48);
            num /= 10;
        }
        printf("\n");
    }

    return 0;
}
*/

发表于 2023-03-28 18:44:08 回复(0)
#include <stdio.h>

int main() {
    long int  a;
    int num;
    scanf("%ld\n",&a);
    for(int i=0;i<10000;i++){
    if(a>10){
        num=a%10;
        a=a/10;
        printf("%d",num);
    }
    if(a<10){
        printf("%ld",a);
        break;
    }
    }
    return 0;
}
发表于 2023-03-26 12:23:18 回复(0)
#include <stdio.h>
#include <string.h>

int main(){
    int a,i,j,k,l;
    char b[30];
    scanf("%d",&a);
    b[0]='0';
    while(a!=0)
    {
        b[i]=a%10+48;
        a=a/10;
        i++;
    }
    puts(b);
    return 0;
}
为什么牛客网和自己编译器输出不一样
发表于 2023-03-24 11:31:01 回复(0)

问题信息

难度:
42条回答 96617浏览

热门推荐

通过挑战的用户

查看代码