用c语言实现给定一个整数n(-100,000,000≤n≤100,000,000),输出按位逆序的数字。比如输入1234,输出4321,输入-2589,输出-9852。如果末尾为0,则逆序输出的时候不应带前导的0。比如60500,逆序输出为506;-120300,逆序输出为-3021。
时间: 2024-02-13 19:04:45 浏览: 21
好的,以下是用 C 语言实现的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char n[50]; // 定义字符数组存储整数n的字符串形式
scanf("%s", n); // 读入整数n
if (n[0] == '-') // 判断n的正负性
{
printf("-"); // 如果n为负数,则先输出负号
memmove(n, n + 1, strlen(n)); // 去掉负号,方便后续操作
}
int i = 0;
while (n[i] == '0') // 去除n末尾的0
{
i++;
}
int len = strlen(n); // 获取n的长度
for (int j = len - 1; j >= i; j--) // 逆序输出n
{
printf("%c", n[j]);
}
return 0;
}
```
这段代码中,首先定义字符数组存储整数n的字符串形式,然后判断输入的整数n是否为负数,如果是,则输出负号,并将n的负号去掉,方便后续操作。接着使用 while 循环去除n末尾的0,然后使用 for 循环逆序输出n的每一位数字。注意要使用 memmove() 函数去掉负号,并使用 strlen() 函数获取n的长度。
相关问题
用c语言给定一个不多于5位的正整数判断它是几位数并逆序输出
#include <stdio.h>
int main() {
int n;
printf("请输入一个不多于5位的正整数:");
scanf("%d", &n);
if (n < 10) {
printf("这是一个一位数,逆序输出为:%d\n", n);
} else if (n < 100) {
printf("这是一个两位数,逆序输出为:%d%d\n", n % 10, n / 10);
} else if (n < 1000) {
printf("这是一个三位数,逆序输出为:%d%d%d\n", n % 10, (n / 10) % 10, n / 100);
} else if (n < 10000) {
printf("这是一个四位数,逆序输出为:%d%d%d%d\n", n % 10, (n / 10) % 10, (n / 100) % 10, n / 1000);
} else {
printf("这是一个五位数,逆序输出为:%d%d%d%d%d\n", n % 10, (n / 10) % 10, (n / 100) % 10, (n / 1000) % 10, n / 10000);
}
return 0;
}
c语言:将给定n个整数存入数组,将这n个数逆序存放然后按顺序输出数组中的元素
下面是使用C语言实现该功能的代码:
```c
#include <stdio.h>
#define MAX 100 // 数组最大长度
int main() {
int n, i;
int arr[MAX];
// 输入数组长度n和n个整数
printf("请输入数组长度n(不超过%d):", MAX);
scanf("%d", &n);
printf("请输入%d个整数:", n);
for (i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
// 将数组逆序存放
int tmp;
for (i = 0; i < n / 2; i++) {
tmp = arr[i];
arr[i] = arr[n - i - 1];
arr[n - i - 1] = tmp;
}
// 按顺序输出数组元素
printf("逆序存放后的数组元素为:");
for (i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
代码的思路是先输入数组长度和数组元素,然后使用一个循环将数组逆序存放,最后再使用另一个循环按顺序输出数组元素。