使用标准c语言,标准C语言

发布时间:2022-12-02

本文目录一览:

  1. 用标准C语言实现Hanoi塔问题
  2. 用标准C语言编写学生信息管理系统
  3. [C51编程时,可以使用标准C语言的所有数据类型。为什么“编程时常用unsigned c](#C51编程时,可以使用标准C语言的所有数据类型。为什么“编程时常用unsigned c)
  4. 怎样用标准C语言播放音乐?
  5. 使用标准C语言,将字符数组s2中的全部字符复制到在字符数组s1中。

用标准C语言实现Hanoi塔问题

#include<stdio.h>
int count=0;
void move(char x, int n, char z);
void hanoi(int n, char x, char y, char z);
void hanoi(int n, char x, char y, char z) {
    if(n == 1)
        move(x, 1, z);
    else {
        hanoi(n-1, x, z, y);
        move(x, n, z);
        hanoi(n-1, y, x, z);
    }
}
void move(char x, int n, char z) {
    printf(" %2i. Move disk %i from %c to %c\n", ++count, n, x, z);
}
void main() {
    int n;
    char x, y, z;
    x = 'A';
    y = 'B';
    z = 'C';
    scanf("%d", &n);
    hanoi(n, x, y, z);
    printf("\n");
}

用标准C语言编写学生信息管理系统

以下是一个学生信息管理系统的示例代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "conio.h"
#define N 50 // 定义符号常量,代表学生人数最大值
int count = 0; // 全局变量,用于记录数组的当前位置
struct student { // 定义结构体类型,代表学生信息
    char name[9];
    char number[10];
    float math;
    float english;
    float physics;
    float computer;
};
void input(struct student *arr); // 函数声明,输入学生信息
void sort(struct student *arr); // 函数声明,按总分排序
void find(struct student *arr); // 函数声明,查找某位学生信息
void main() {
    char selmenu; // 定义局部变量,用于记录用户选择的功能编号
    struct student stud[N]; // 定义结构体数组,用于记录学生信息
    do { // 利用循环显示界面
        system("cls"); // 清屏函数
        printf("\n\n");
        printf("欢迎使用学生管理系统\n");
        printf("------------------------\n");
        printf("学生成绩管理系统 \n\n");
        printf("1. 输入学生信息 \n");
        printf("2. 按总分进行排榜 \n");
        printf("3. 查找相应的学生信息 \n");
        printf("4. 退出学生成绩管理系统 \n\n");
        printf("请输入功能选择编号:");
        fflush(stdin); // 清空输入缓冲区
        scanf("%c", &selmenu); // 接受用户选择的功能编号
        switch(selmenu) { // 输入不同功能编号调用相应函数来完成功能
            case '1':
                input(stud); // 调用输入学生信息函数,参数为学生信息数组名
                break;
            case '2':
                sort(stud); // 调用按总分排榜函数,参数是数组名
                break;
            case '3':
                find(stud); // 调用按学号和姓名查找学生信息函数
                break;
        }
    } while(selmenu != '4'); // 判断是否退出
    printf("*^-^* 谢谢使用 *^-^*\n"); // 输出告别词
    printf(" 任务完成 ");
    getch();
}
void input(struct student *arr) { // 定义输入学生信息函数
    char ch; // 用于接收用户指令
    do { // 利用循环,由用户控制输入学生成绩
        system("cls");
        printf("\n输入第%d个学生的信息:\n输入学生姓名:", count+1);
        scanf("%s", arr[count].name);
        printf("\n输入学生学号:");
        scanf("%s", arr[count].number);
        printf("\n输入数学成绩:");
        scanf("%f", &arr[count].math);
        printf("\n输入英语成绩:");
        scanf("%f", &arr[count].english);
        printf("\n输入物理成绩:");
        scanf("%f", &arr[count].physics);
        printf("\n输入计算机成绩:");
        scanf("%f", &arr[count].computer);
        count++; // 记录当前输入的学生资料的个数
        printf("\n是否继续输入(y/n)\n");
        fflush(stdin); // 清空输入缓冲区
        ch = getchar();
    } while(ch == 'y' || ch == 'Y'); // 判断用户指令,是否继续输入
}
void sort(struct student *arr) { // 定义按总分排榜函数
    int i, j, k; // 定义循环变量i,j,最小数位置k
    struct student t; // 定义交换临时变量
    if(count == 0) // 判断数组中学生成绩是否存在
        printf("无学生成绩,请先录入学生信息\n");
    else {
        for(i = 0; i < count - 1; i++) { // 用选择法按总分对学生成绩排序
            k = i;
            for(j = i + 1; j < count; j++) // k为arr[i]到arr[count-1]中最小数的位置
                if((arr[k].math + arr[k].english + arr[k].physics + arr[k].computer) < (arr[j].math + arr[j].english + arr[j].physics + arr[j].computer))
                    k = j;
            if(k != i) { // 如果最小数不是比较数列中第一个,对调
                t = arr[k];
                arr[k] = arr[i];
                arr[i] = t;
            }
        }
        printf("\n总分排榜版:\n\n");
        printf("\t姓名\t学号\t数学\t英语\t物理\t计算机\t总分\t名次\n");
        for(j = 0; j < count; j++) // 输出按总分排榜后的学生成绩和名次
            printf("\t%-6s\t%-4s\t%-6.1f\t%-6.1f\t%-6.1f\t%-6.1f\t%-6.1f\t%-5d\n",
                   arr[j].name, arr[j].number, arr[j].math, arr[j].english, arr[j].physics, arr[j].computer, arr[j].math + arr[j].english, j + 1);
    }
    printf("\n回车键返回主程序\n");
    fflush(stdin);
    getchar();
}
void find(struct student *arr) { // 定义查找函数
    int j;
    char name[9]; // 用于接收用户输入的学生姓名
    char number[10]; // 用于接收用户输入的学生学号
    system("cls"); // 清屏函数
    printf("\n请输入要查找的学生资料:\n");
    printf("\n学生姓名:");
    scanf("%s", name);
    printf("\n学生学号:");
    scanf("%s", number);
    for(j = 0; j < count; j++) { // 使用字符串比较函数查找并输出符合条件的学生成绩
        if((strcmp(name, arr[j].name) == 0) && (strcmp(number, arr[j].number) == 0)) {
            printf("\n\t姓名\t学号\t数学\t英语\t物理\t计算机\t总分\n");
            printf("\t%-6s\t%-4s\t%-6.1f\t%-6.1f\t%-6.1f\t%-6.1f\t%-6.1f\n",
                   arr[j].name, arr[j].number, arr[j].math, arr[j].english, arr[j].physics, arr[j].computer, arr[j].math + arr[j].english);
            break;
        }
    }
    if(j == count) // 如果没找到,会从循环条件退出
        printf("\n未找到该学生纪录,请核对后重新查找!\n");
    fflush(stdin); // 清空输入缓冲区
    printf("\n回车键返回\n");
    getchar();
}

C51编程时,可以使用标准C语言的所有数据类型。为什么“编程时常用unsigned c

这体现了嵌农和码农的价值观区别。 嵌农会精心计算一个变量的范围,而码农很少这么做,因为码农默认的数值类型一般是int32,可以满足日常范围需求,甚至像Python那样的语言自带大整数特性,根本不用考虑范围。然而嵌农呢,尤其是你说的c51,是个Intel祖传8位机,本来ram就很少,当然要精心考虑变量的大小了。像int32这样的东西太奢侈了,只能精打细算,根据现实情况精选一个范围合适的类型。鉴于大部分情况并不需要负数,所以用unsigned类型能提高0以上的数值范围。另外需要指出的是很多c51编译器里int类型是16位的。所以嵌农的悲伤就在这里,别人已经开始写算法了,你还在研究这个变量存不存得下的问题。 C51语言,由C语言继承而来的单片机编程语言。 和C语言不同的是,C51语言运行于单片机平台,而C语言则运行于普通的桌面平台。C51语言具有C语言结构清晰的优点,便于学习,同时具有汇编语言的硬件操作能力。对于具有C语言编程基础的读者,能够轻松地掌握单片机C51语言的程序设计。

怎样用标准C语言播放音乐?

用C语言播放音乐,一般需要额外的库或者调用系统的API函数。 以Windows为例,可以通过PlaySound函数播放wav格式的音乐。示例如下:

#include <stdio.h>
#include <windows.h>
#include <mmsystem.h>
#pragma comment(lib, "WINMM.LIB")
int main() {
    PlaySound(TEXT("1.wav"), 0, SND_FILENAME); // 1.wav是要播放的音乐文件
    return 0;
}

如果想播放mp3音乐可以使用如下代码。 注意:生成程序后,请在cmd中执行此程序,不要在vc/vs的IDE中运行。

#include <windows.h>
#include <mmsystem.h>
#include <stdio.h>
#pragma comment(lib, "Winmm.lib")
int main(int argc, char *argv[]) {
    // 绝对地址形式
    TCHAR fileName[] = "ganlusi.mp3";
    TCHAR shortName[MAX_PATH];
    GetShortPathName(fileName, shortName, sizeof(shortName)/sizeof(TCHAR));
    TCHAR cmd[MAX_PATH+10];
    wsprintf(cmd, "play %s", shortName);
    mciSendString(cmd, NULL, 0, NULL);
    Sleep(5 * 60 * 1000); // 这里是防止一播放就结束做的延迟
    return 0;
}

使用标准C语言,将字符数组s2中的全部字符复制到在字符数组s1中。

设计思路:

  1. 定义2个大小相等的字符数组s1[N]和s2[N]
  2. 提示输入字符数组s2,输入字符数组s2
  3. 统计字符串s2的长度k
  4. 将字符数组s2的下标为0到k的元素赋值给s1
  5. 输出字符数组s1 程序:
#include <stdio.h>
#define N 100
void main() {
    char s1[N], s2[N];
    int i, k = 0;
    printf("输入字符数组s2\n");
    scanf("%s", s2);
    for(i = 0; s2[i] != '\0'; i++) k++;
    for(i = 0; i <= k; i++) s1[i] = s2[i];
    printf("%s\n", s1);
}

结果:

输入字符数组s2
engsing
engsing
Press any key to continue