6. 任意输入正整数(假定该整数小于1000000),请用C语言编写程序,输出该正整数是几位数字(比如14823是5位的整数)?再从个位到最高位逆序打印出该正整数(比如4911逆序打印的结果是1194)。
时间: 2024-05-02 13:21:47 浏览: 112
```c
#include <stdio.h>
int main()
{
int num, count = 0;
printf("请输入一个正整数:");
scanf("%d", &num);
// 计算位数
while (num > 0)
{
num /= 10;
count++;
}
printf("该正整数是%d位数字\n", count);
// 逆序输出
printf("逆序输出结果为:");
while (count > 0)
{
printf("%d", num % 10);
num /= 10;
count--;
}
return 0;
}
```
相关问题
请用C语言编写程序,实现接受两个任意大的整数,返回两个整数之积(提示:大整数用字符串表示)。
好的,我可以为您编写这个程序。以下是C语言代码:
```
#include <stdio.h>
#include <string.h>
#define MAX_LEN 10000 // 假定最大长度为10000
// 将字符串转换为整数,失败返回-1
int string_to_int(char *str) {
int len = strlen(str);
int num = 0;
for (int i = 0; i < len; i++) {
if (str[i] < '0' || str[i] > '9') {
return -1;
}
num = num * 10 + (str[i] - '0');
}
return num;
}
// 将整数转换为字符串
char *int_to_string(int num, char *str) {
int i = 0;
if (num == 0) {
str[i++] = '0';
} else {
while (num > 0) {
str[i++] = num % 10 + '0';
num /= 10;
}
}
str[i] = '\0';
int len = strlen(str);
for (int j = 0; j < len / 2; j++) {
char temp = str[j];
str[j] = str[len - j - 1];
str[len - j - 1] = temp;
}
return str;
}
// 将两个大整数相乘,结果为一个大整数字符串
char *multiply(char *num1, char *num2) {
int len1 = strlen(num1);
int len2 = strlen(num2);
int *result = new int[len1 + len2](); // 使用动态数组存储结果
for (int i = len1 - 1; i >= 0; i--) {
for (int j = len2 - 1; j >= 0; j--) {
int mul = (num1[i] - '0') * (num2[j] - '0');
int pos1 = i + j, pos2 = i + j + 1;
int sum = mul + result[pos2];
result[pos1] += sum / 10;
result[pos2] = sum % 10;
}
}
char *str = new char[len1 + len2 + 1](); // 计算结果转换为字符串
int pos = 0;
while (pos < len1 + len2 && result[pos] == 0) {
pos++; // 跳过前导0
}
if (pos == len1 + len2) {
str[0] = '0';
} else {
for (int i = pos; i < len1 + len2; i++) {
str[i - pos] = result[i] + '0';
}
}
delete[] result;
return str;
}
int main() {
char num1[MAX_LEN], num2[MAX_LEN];
printf("Please enter two large integers:\n");
scanf("%s %s", num1, num2);
int num1_int = string_to_int(num1);
int num2_int = string_to_int(num2);
if (num1_int == -1 || num2_int == -1) {
printf("Invalid input\n");
return 0;
}
int product = num1_int * num2_int;
char product_str[MAX_LEN];
printf("Product = %s\n", int_to_string(product, product_str));
return 0;
}
```
注意,此代码可以处理两个任意大小的正整数相乘,但不支持负数或浮点数。
用c语言编写:求任意两个正整数的最小公倍数(LCM)
可以使用以下代码来求任意两个正整数的最小公倍数(LCM):
```c
#include <stdio.h>
int main() {
int num1, num2, max;
printf("请输入两个正整数:\n");
scanf("%d%d", &num1, &num2);
max = (num1 > num2) ? num1 : num2;
while (1) {
if (max % num1 == 0 && max % num2 == 0) {
printf("最小公倍数为:%d\n", max);
break;
}
max++;
}
return 0;
}
```
在程序中,我们首先通过 `scanf` 函数获取了用户输入的两个正整数,然后使用 `max` 变量记录两个数中的较大值。接下来,我们使用 `while` 循环来从 `max` 开始递增,直到找到最小公倍数为止。在循环中,我们使用条件语句判断当前的 `max` 是否同时为两个数的倍数,如果是,则输出最小公倍数,并使用 `break` 语句跳出循环。
需要注意的是,上述代码假定用户输入的是两个正整数。如果需要对用户的输入进行验证,可以使用 `if` 语句判断输入的数是否为正整数,如果不是,则提示用户重新输入。
阅读全文