📄 music.c
字号:
/*
MUSIC.C 音乐程序
运行方法:
X>MUSIC <乐谱文件名>
*/
#include "stdlib.h"
#include "stdio.h"
#include "dos.h"
#define TRUE 1
#define FALSE 0
int Freq[4][8] = {0, 131, 147, 165, 176, 196, 220, 247,
0, 262, 296, 330, 349, 392, 440, 494,
0, 523, 587, 659, 699, 784, 880, 988,
0, 1047,1174,1319,1397,1568,1760,1976}; /* 频率值 */
int main(int argc, char *argv[])
{
FILE *fp;
int Rate, Sd, i = 0, j;
char SdHg, Flg = TRUE;
float SdLg, Str[100][2];
if (argc != 2)
{
printf("命令行参数错误!"); exit (1);
}
fp = fopen(argv[1], "r");
if (fp == NULL)
{
printf("乐谱文件打不开!"); exit (1);
}
fscanf(fp, "%d", &Rate);
while (! feof(fp) && Flg)
{
fscanf(fp, " %c%d %f", &SdHg, &Sd, &SdLg); /* 读乐谱文件 */
Str[i][1] = Rate*SdLg;
switch(SdHg)
{
case 'e': Str[i++][0] = Freq[3][Sd]; /* 最高音 */
break;
case 'h': Str[i++][0] = Freq[2][Sd]; /* 高音 */
break;
case 'm': Str[i++][0] = Freq[1][Sd]; /* 中音 */
break;
case 'l': Str[i++][0] = Freq[0][Sd]; /* 低音 */
break;
case '#': Flg = FALSE; /* 结束 */
}
}
for (j = 0; j < i; j++)
{
sound(Str[j][0]); /* 音高 */
delay(Str[j][1]); /* 音长 */
}
nosound(); /* 关闭扬声器 */
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -