c语言输入两个非负10进制整数A和B(<=230-1),输出A+B的D (1 < D <= 10)进制数。 输入描述:输入在一行中依次给出3个整数A、B和D。
时间: 2023-06-06 15:04:19 浏览: 61
我可以回答这个问题。以下是C语言代码:
```
#include <stdio.h>
int main() {
int A, B, D, result[31], i = 0, j;
scanf("%d %d %d", &A, &B, &D);
int sum = A + B;
do {
result[i++] = sum % D;
sum /= D;
} while (sum != 0);
for (j = i - 1; j >= 0; j--)
printf("%d", result[j]);
return 0;
}
```
解释:首先从输入中读取A、B和D三个整数。然后将A和B相加得到一个十进制数sum。接下来将sum转换为D进制数,存储在数组result中。最后反向输出result数组中的每个元素,即为所求的答案。
相关问题
C语言编写:将从键盘输入十进制整数n(0<=n<=255)转化为八位编码的二进制数。
以下是C语言代码实现:
```c
#include <stdio.h>
int main()
{
int n, i, j, bin[8];
printf("请输入一个十进制整数n(0<=n<=255):");
scanf("%d", &n);
if (n < 0 || n > 255) {
printf("输入的数不在规定范围内!\n");
return 1;
}
for (i = 7; i >= 0; i--) {
bin[i] = n % 2;
n /= 2;
}
printf("n的二进制编码为:");
for (i = 0; i < 8; i++) {
printf("%d", bin[i]);
}
printf("\n");
return 0;
}
```
运行结果如下:
```
请输入一个十进制整数n(0<=n<=255):123
n的二进制编码为:01111011
```
解释一下代码实现:
1. 首先读入一个十进制整数n,然后判断它是否在规定范围内(0<=n<=255),若不在则输出错误信息并结束程序。
2. 接着用一个数组bin来存储n的二进制编码,从右往左依次计算每一位的值,并存储到数组中。
3. 最后输出数组中存储的二进制编码即可。
用C语言栈输入一个非负十进制整数转换成八进制
下面是用C语言栈实现将一个非负十进制整数转换成八进制的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
typedef struct {
int top;
int data[MAX_SIZE];
} Stack;
void initStack(Stack *s) {
s->top = -1;
}
void push(Stack *s, int x) {
if (s->top == MAX_SIZE - 1) {
printf("Stack overflow\n");
exit(1);
}
s->data[++s->top] = x;
}
int pop(Stack *s) {
if (s->top == -1) {
printf("Stack underflow\n");
exit(1);
}
return s->data[s->top--];
}
int main() {
int num, rem;
Stack s;
initStack(&s);
printf("Enter a non-negative decimal integer: ");
scanf("%d", &num);
if (num == 0) {
printf("Octal equivalent: 0\n");
return 0;
}
while (num != 0) {
rem = num % 8;
push(&s, rem);
num /= 8;
}
printf("Octal equivalent: ");
while (s.top != -1) {
printf("%d", pop(&s));
}
printf("\n");
return 0;
}
```
首先定义了一个栈结构体,其中包含栈顶指针和一个数组用于存储栈中的元素。然后定义了一些栈操作函数,包括初始化栈、入栈和出栈。在主函数中,首先读入一个非负十进制整数,然后将其转换成八进制并依次入栈,最后从栈中依次出栈并输出八进制数。特别地,如果输入的十进制整数为0,则直接输出0。
假设输入的十进制整数为`67`,则程序的输出为:
```
Enter a non-negative decimal integer: 67
Octal equivalent: 103
```