将输入的3位十进制正整数字符串转换为 b 进制的字符串(逆序输出)。编写程序,输入3位十进制的字符串 s ,将其转化为整数 n ,然后使用辗除法将整数 n 转换为 b 进制的字符串,并输出到屏幕。 b 为大于1小于11的任意自然数值,当 b =2时,输出字符只可能是'0'和'1';当 b =10时,输出字符串中可能含有字符为'0'-'9'。
时间: 2023-03-25 14:02:45 浏览: 103
我可以回答这个问题。以下是程序的实现:
#include <stdio.h>
#include <string.h>
int main()
{
char s[4];
int n, b, i = , j;
char ans[100];
scanf("%s %d", s, &b);
n = ;
while (s[i] != '\') {
n = n * 10 + s[i] - '';
i++;
}
i = ;
while (n > ) {
ans[i] = n % b + '';
n /= b;
i++;
}
ans[i] = '\';
for (j = strlen(ans) - 1; j >= ; j--) {
printf("%c", ans[j]);
}
printf("\n");
return ;
}
输入格式为:3位十进制正整数字符串 b(空格分隔),例如:123 2
输出为:1111011
其中,输入的字符串 s 被转化为整数 n,然后使用辗除法将整数 n 转换为 b 进制的字符串 ans。最后,逆序输出 ans。
相关问题
用C语言编写程序,将十进制正整数n转换成十六进制字符串逆序输出。只引用stdio.h
好的,这是一个关于 C 语言的编程问题。下面是一个示例程序供你参考:
```c
#include <stdio.h>
void reverse(char s[], int n);
int main() {
int n;
char s[100];
printf("请输入一个十进制正整数:");
scanf("%d", &n);
int i = 0;
while (n > 0) {
int remainder = n % 16;
if (remainder < 10) {
s[i++] = remainder + '0';
} else {
s[i++] = remainder - 10 + 'A';
}
n /= 16;
}
s[i] = '\0';
reverse(s, i);
printf("转换成十六进制字符串是:%s\n", s);
return 0;
}
void reverse(char s[], int n) {
int i, j;
char c;
for (i = 0, j = n - 1; i < j; i++, j--) {
c = s[i];
s[i] = s[j];
s[j] = c;
}
}
```
以上就是一个简单的程序,主要思路是对十进制正整数使用除 16 取余的方式计算,将余数转换为对应的十六进制字符,存储到字符数组中。然后使用逆序字符串的方法倒序输出即可。
用C语言编写程序,将十进制正整数n转换成十六进制字符串逆序输出。要求用到函数进行转换。
好的,这是一个关于C语言编程的问题。我可以用sprintf函数将十进制正整数n转换成十六进制字符串,再使用strrev函数将字符串逆序输出。代码如下:
```
#include <stdio.h>
#include <string.h>
int main() {
int n;
char hex[100];
printf("请输入一个十进制正整数n:");
scanf("%d", &n);
sprintf(hex, "%X", n);
strrev(hex);
printf("转换成十六进制字符串的结果为:%s\n", hex);
return 0;
}
```
希望对你有帮助!接下来,有什么其他问题需要我回答吗?