信息技术导论实验课内容及程序代码

实验一

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");
    }
    }

注:助教测试时考虑到大家水平,可以不考虑输入有效性检查,可使用一些已有的库函数。❤️

posted @ 2024-08-23 14:40  Losyi  阅读(11)  评论(0编辑  收藏  举报