【求助】在运行Beep函数的时候无法发出流畅的声音

ifitsyouwant 2022-05-30 17:44:32

在运行下面代码的时候,同学运行出的是流畅的音乐,而我则只能放出有较大间隔的单个音,并且在发出前三个音之后就算等待许久也无法继续发出。求大神看看解决方法!!!

#define _CRT_SECURE_NO_WARNINGS 
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <windows.h>

int speed = 1, t;

void menu(void);
void sound1(int freq, int t);
void pause(int t);
void xueronghua(void);
void xiaoxingxing(void);
void happybirthday(void);
void display(char* qm);

int main(void)
{
    menu();
    return 0;
}

void menu(void)
{
    int sel;
    do {
        system("cls");
        printf("\n\t\t********欢迎进入歌曲点播系统********\n\n");
        printf("\t\t\t1.雪绒花\n");
        printf("\t\t\t2.小星星\n");
        printf("\t\t\t3.HAPPY BIRTHDAY\n");
        printf("\t\t\t0.退出系统\n");
        printf("\n\n\t\t************************************");
        printf("\n请选择(0-3)\n");
        scanf("%d", &sel);
        switch (sel) {
        case 1:xueronghua(); break;
        case 2:xiaoxingxing(); break;
        case 3:happybirthday(); break;
        case 0:exit(1);
        }
    } while (1);
}

void xueronghua(void)   /*雪绒花曲谱*/
{
    char* jp = (char*)"iddgwwwqqgfffddddfghhhggg ddgwwwqqgfffddgghjqqqqqwpggjhgddgqqq hhqwwqjjjgggddgwwwqqgfffddgghjqqqqqq";
    speed = 10;
    t = 4 * speed;
    //gotoxy(40,20);
    printf("\t\t\n请欣赏歌曲:雪绒花");
    printf("\n\t\t\t雪绒花,雪绒花,清晨迎着我开放。");
    printf("\n\t\t\t小而白,洁而亮,向我快乐的摇晃。");
    printf("\n\t\t\t白雪般的花儿,愿你芬芳,永远开花生长。");
    printf("\n\t\t\t雪绒花,雪绒花,永远祝福我家乡。\n");
    display(jp);
    printf("雪绒花欣赏完毕");
    printf("按任意键返回主菜单");
    _getch();
    menu();
}

void xiaoxingxing(void)    /*小星星曲谱*/
{
    char* jp = (char*)"oaagghhggffddssaaggffddssggffddssaagghhggffddssaaaagghhggffddssaaggffddssggffddssaagghhggffddssaa";
    speed = 10;
    t = 4 * speed;
    //gotoxy(40,20);
    printf("请欣赏歌曲:小星星");
    printf("\n\t\t\t一闪一闪亮晶晶,满天都是小星星,");
    printf("\n\t\t\t挂在天空放光明,好象千万小眼睛。");
    printf("\n\t\t\t太阳慢慢向西沉,乌鸦回家一群群,");
    printf("\n\t\t\t星星眨着小眼睛,闪闪烁烁到天明。\n");
    display(jp);
    printf("小星星欣赏完毕");
    printf("按任意键返回主菜单");
    _getch();
    menu();
}

void happybirthday(void)  /*生日快乐曲谱*/
{
    char* jp = (char*)"ippppbbnnbbaammmmbbnnbbssaaaabbggddaammmhfddaassaaappp";
    speed = 5;
    t = 4 * speed;
    // gotoxy(40,20);
    printf("请欣赏歌曲:HAPPY BIRTHDAY");
    printf("\n\t\t\tHAAPY BIRTHDAY TO YOU,");
    printf("\n\t\t\tHAAPY BIRTHDAY TO YOU,");
    printf("\n\t\t\tHAAPY BIRTHDAY TO YOU,");
    printf("\n\t\t\tHAAPY BIRTHDAY TO YOU.\n");
    display(jp);
    printf("HAPPY BIRTHDAY欣赏完毕");
    printf("按任意键返回主菜单");
    _getch();
    menu();
}

void display(char* qm)  /*演奏功能*/
{
    int i, freq;
    while (*qm++ != '\0') {
        i = 1;
        switch (*qm) {
        case 'k':  t = 1 * speed; i = 0; break;
        case 'l':  t = 2 * speed; i = 0; break;
        case 'i':  t = 4 * speed; i = 0; break;
        case 'o':  t = 6 * speed; i = 0; break;
        case 'p':  pause(t);  i = 0; break;
        case 'a':  freq = 523; break;
        case 's':  freq = 587; break;
        case 'd':  freq = 659; break;
        case 'f':  freq = 698; break;
        case 'g':  freq = 784; break;
        case 'h':  freq = 880; break;
        case 'j':  freq = 988; break;
        case 'z':  freq = 262; break;
        case 'x':  freq = 294; break;
        case 'c':  freq = 330; break;
        case 'v':  freq = 349; break;
        case 'b':  freq = 392; break;
        case 'n':  freq = 440; break;
        case 'm':  freq = 494; break;
        case 'q':  freq = 1047; break;
        case 'w':  freq = 1175; break;
        case 'e':  freq = 1319; break;
        case 'r':  freq = 1397; break;
        case 't':  freq = 2568; break;
        case 'y':  freq = 1760; break;
        case 'u':  freq = 1976; break;
        default:   i = 0; break;
        }
        if (i)
            sound1(freq, t);
    }
}

void sound1(int freq, int t)  /*发声函数*/
{
    int n;
    Beep(freq, 500);
    n = t + clock();
    while (n > clock());
    Beep(1, 1);
}

void pause(int t)      /*暂停函数*/
{
    int n;
    n = t + clock();
    while (n > clock())
        Beep(1, 1);
}

...全文
287 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧