用C语言弹小星星

早上起来看到一个小伙伴的代码,用C语言程序播放出小星星。原理是利用Windows.h头文件里的Beep函数发出特定频率的声音。首先找到节奏所对应的频率,然后做成一个数组,根据曲子将对应的下标的元素作为参数,传到Beep函数。
然后我说,加上getch函数就可以拿来弹琴了啊。于是他实现了,我也写了一个小程序。

代码如下

#include <Windows.h>
#include <conio.h>
#include <stdio.h>
int main(int argc, char const *argv[])
{
    char c='c';
    int i,j;
    int m[] = { 0, 523, 587, 659, 698, 784, 880, 932,1046,1175};
    int s[] = { 1, 1, 5, 5, 6, 6, 5, 4, 4, 3, 3, 2, 2, 1 };
    int t[] = { 300, 300, 300, 300, 300, 300, 350, 300, 300, 300, 300, 300, 300, 300 };
    int a='1'-1;

    do{
        printf("按1播放小星星\n按2通过键盘数字发出相应的声调\n按其他任意键退出:\n");
        scanf("%d",&j);
        getchar();
        switch(j)
        {
            case 1:
                for(i=0;i<14;i++)
                {
                    Beep(m[s[i%14]], 300);
                    Sleep(270);
                    if(i==6)
                        Sleep(270);
                }
                break;
            case 2:
                printf("在弹奏时可以按0退出\n");
                while((i=getch()-a)!=0)
                {
                    Beep(m[i], 300);
                }
                break;
            default:
                c='0';
                break;
        }
        if(c=='c') printf("按c继续,任意键退出:\n");
    }while(scanf("%c",&c)&&c=='c');
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值