信息技术导论实验课内容及程序代码
实验一
1 开机进入固件查看(BIOS)
2 键盘指法练习
金山打字通,启动!
测试时会从书上找一句话让你打字。
实验二
1 windos常用命令操作
2 网络的兴起(视频)
3 程序作业
1 简述
用某种编程语言,实现一段程序,实现进制转换。
2 程序功能需求说明
2.1 基本功能要求
输入:一串字符 功能:将字符串转为十六进制整数;并根据用户要求,分别将输入转为 3~12 进 制数,并输出转换结果。 输出范例: 输入(十六进制):0x1234 输出(十进制):4660
2.2 补充说明
其他补充说明如下:
(1)应根据进制转换的 原理自行编写对应代码,严禁直接调用高级语言已有的库函数来实现进制转换功能;
(2)程序应具备基本的有效性校验功能,应能识别不合理的十六进制数,并给出错误提示,例如,0xG 是个错误的输入;
(3)字母不区分大小写;
(4)输出结果中的“十进制”字样,应根据不同进制转换,对应显示数制,如
“三”、“八”、“十二”; (5)程序应能自动识别输入中多余的空格,例如,0x 6 应视为 0x6,即程序自动删除输入中多余的空格;
(6)编程语言不限(可优先考虑 C 语言),其他常用编程语言包括:C++、Java、Python 。 (7)不要求实现图形用户界面,控制台程序即可;
(8)要求用户从键盘输入,不应将输入直接写死在程序中 。
(9)没有本地开发环境的,可使用如下的在线开发环境,支持 C/C++/Java/Python 等开发语言: https://lightly.teamcode.com/c?bd_vid=11680563935503538366
3 现场检查要求
现场检查内容包括:
(1)现场运行程序,观察运行结果;
(2)针对教师提问进行回答,讲解程序实现主要思路;(并不会)
(3)根据教师要求,改变输入条件,重新运行程序,观察运行结果(并不会)
解:
/代码/
#include <stdio.h>
#include <stdlib.h>
// 函数声明,将十六进制数转换为指定进制并打印
void convertAndPrint(char* hexadecimal, int Base);
int main() {
char input[20];
int Base;
// 用户输入十六进制数
printf("输入(16进制):");
if (scanf_s("%19s", input, sizeof(input)) != 1) {
printf("输入错误\n");
return 1;
}
char input2[30]; // 删除空格后的字符串
for (int i = 0; input[i] != '\0'; i++) {
if (input[i] != ' ') {
input2[i] = input[i];
}
else {
i--;
}
}
// 用户输入目标进制
printf("输入目标进制(2-12):");
if (scanf_s("%d", &Base) != 1 || Base < 2 || Base > 12) {
printf("目标进制不在范围内\n");
return 1;
}
// 调用函数进行转换并打印结果
convertAndPrint(input, Base);
return 0;
}
// 十六进制数转换为指定进制并打印
void convertAndPrint(char* hexadecimal, int Base) {
long int d;
// 将十六进制数转换为十进制数字
if (sscanf_s(hexadecimal, "%lx", &d) == 1) {
printf("输出(%d进制): ", Base);
if (Base == 10) {
printf("%ld\n", d);
}
else if (Base >= 2 && Base <= 12) {
long int quo = d;
int i = 0;
char result[100];
// 反复相除,将余数保存在result数组中
while (quo > 0) {
int r = quo % Base;
result[i] = (r < 10) ? ('0' + r) : ('A' + r - 10);
i++;
quo /= Base;
}
// 打印结果
for (int j = i - 1; j >= 0; j--) {
printf("%c", result[j]);
}
printf("\n");
}
}
else {
printf("输入错误\n");
}
}
注:助教测试时考虑到大家水平,可以不考虑输入有效性检查,可使用一些已有的库函数。❤️