用C语言键盘输入一个正整数,将各位上的数字循环左移一位,最高位移出填补到最低位,形成新数并输出。
时间: 2024-04-30 13:24:01 浏览: 8
您好,这是一道关于循环左移的C语言问题,可以用以下代码实现:
```c
#include <stdio.h>
int main() {
int n, temp;
scanf("%d", &n);
temp = n / 100000; // 取出最高位
n = (n % 100000) * 10 + temp; // 左移一位并将最高位添加到最低位
printf("%d\n", n);
return 0;
}
```
输入一个6位的正整数,程序会将各位上的数字循环左移一位,并输出新数。如输入`123456`,输出`234561`。
请问还有其他需要回答的问题吗?
相关问题
用C语言键盘输入一个正整数,将各位上的数字循环左移一位,最高位移出填补到最低位,形成新数并输出。要求无论几位数都可以运行
以下是用 C 语言编写的代码:
```
#include <stdio.h>
int main() {
int n, m, digit;
printf("请输入一个正整数:");
scanf("%d", &n);
printf("请输入要循环左移的位数:");
scanf("%d", &m);
int temp = n;
int length = 0;
while (temp > 0) {
length++;
temp /= 10;
}
for (int i = 0; i < m; i++) {
digit = n / pow(10, length - 1);
n = (n % (int)pow(10, length - 1)) * 10 + digit;
}
printf("左移 %d 位后的结果为:%d", m, n);
return 0;
}
```
当然,这只是一种解法,具体实现方式可以有很多种。
用c语言写一个程序,输入任意一个正整数,按从高到低位的次序输出各位上的数字
以下是用c语言编写的程序,可以实现输入任意一个正整数,按从高到低位的次序输出各位上的数字:
```c
#include <stdio.h>
int main() {
int num, i, j, digit, temp;
int arr[10]; // 最多只有 10 位数,所以开一个长度为 10 的数组
printf("请输入一个正整数:");
scanf("%d", &num);
// 将各个位的数字存储到数组中
digit = 0;
while (num > 0) {
arr[digit++] = num % 10;
num /= 10;
}
// 冒泡排序,按从高到低位的次序输出各位上的数字
for (i = 0; i < digit - 1; i++) {
for (j = 0; j < digit - i - 1; j++) {
if (arr[j] < arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
printf("从高到低位的次序输出各位上的数字:");
for (i = 0; i < digit; i++) {
printf("%d", arr[i]);
}
return 0;
}
```
程序运行结果示例:
```
请输入一个正整数:123456789
从高到低位的次序输出各位上的数字:987654321
```