用c语言二维数组写一个十进制转十六进制的代码
时间: 2023-11-17 15:07:40 浏览: 83
以下是一个用C语言二维数组写的十进制转十六进制的代码:
#include <stdio.h>
int main() {
int decimal, quotient, remainder;
char hex[100];
int i, j = 0;
printf("请输入一个十进制数:");
scanf("%d", &decimal);
quotient = decimal;
while (quotient != 0) {
remainder = quotient % 16;
if (remainder < 10)
hex[j++] = remainder + 48;
else
hex[j++] = remainder + 55;
quotient /= 16;
}
printf("转换成十六进制为:");
for (i = j - 1; i >= 0; i--)
printf("%c", hex[i]);
return 0;
}
该程序首先从用户输入一个十进制数,然后使用while循环将其转换为十六进制,并将结果存储在一个字符数组中。最后,使用for循环将该字符数组中的字符输出到屏幕上,以显示十六进制值。
相关问题
c语言中读取文件中的数据,将十六进制转换十进制并制成表格
假设文件中每一行都是一个十六进制数,可以按照以下步骤实现读取文件并将数据转换为十进制数并制成表格:
1. 打开文件,使用fopen()函数,打开文件时需要指定文件名和打开方式,以只读方式打开文件可以使用"r"参数。
2. 读取文件中的每一行数据,可以使用fgets()函数读取。
3. 将读取的十六进制数转换成十进制数,可以使用strtol()函数。
4. 将十进制数存储到一个二维数组中。
5. 制作表格,可以使用printf()函数输出。
以下是一个示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_ROWS 100
#define MAX_COLUMNS 2
int main() {
FILE *fp;
char filename[] = "data.txt";
char line[100];
long int decimal;
int table[MAX_ROWS][MAX_COLUMNS];
int row = 0, col = 0;
fp = fopen(filename, "r");
if (fp == NULL) {
printf("Failed to open file %s\n", filename);
return 1;
}
printf("| Hexadecimal | Decimal |\n");
printf("|-------------|---------|\n");
while (fgets(line, sizeof(line), fp)) {
decimal = strtol(line, NULL, 16);
table[row][col] = decimal;
col++;
if (col == MAX_COLUMNS) {
printf("| %11X | %7d |\n", table[row][0], table[row][1]);
row++;
col = 0;
}
}
fclose(fp);
return 0;
}
```
在该示例代码中,我们定义了一个`MAX_ROWS`和`MAX_COLUMNS`常量,分别表示数据表格的最大行数和列数。程序首先打开了一个名为"data.txt"的文件,然后逐行读取文件内容,将每一行的十六进制数转换成十进制数,存储到二维数组`table`中。当读取到一个完整的一行数据后,就将该行数据输出成表格的一行。最后关闭文件并返回0表示程序运行成功。
注意,这里假设文件中的数据都是十六进制数,如果文件中的数据格式不正确,可能会导致程序出错。另外,程序中只考虑了数据表格的输出,没有对数据进行排序等其他处理。
阅读全文