求用C语言写的播放背景音乐的代码。
# include & ltstdio.h & gt
# include & ltstdlib.h & gt
# include & ltstring.h & gt
# include & ltconio.h & gt
无符号频率[100];
char height[100];
无符号时间[100];
无符号率;
void main()
{
void set(unsigned f[],char h[],unsigned t[],int r,int num);
void music(无符号f[],无符号t[],int num);
int flag = 0;
FILE * f 1;
int i,n,menu
字符文件名[30];
while(1)
{ f 1 = NULL;
I = n = 0;
Printf("这个程序以编码的形式播放音乐。\ n ");
printf(" \ n用记事本编辑乐谱,然后输入文件名播放音乐\ n ");
Printf("乐谱文件可以自己创建,也可以复制别人的\ n ");
printf(" \ n现在可以先输入数字,然后按enter播放音乐:\ n ");
Printf("1播放指定的音乐1 \ n ");
Printf("2播放指定的音乐\ n ");
Printf("3通过程序文件名播放音乐\ n ");
printf(" 4 exit \ n ");
while(1)
{
printf(" menu = ");scanf("%d ",& amp菜单);
if(menu==1)
{
strcpy(文件名,“music 1 . txt”);
打破;
}
if(menu==2)
{
strcpy(文件名,“music 2 . txt”);
打破;
}
if(menu==3)
{
scanf("%s ",文件名);
打破;
}
if(menu==4)
退出(0);
}
printf(" \ n此文件的音乐编码如下:\ n ");
if((f1=fopen(FileName," r"))==NULL)
{
Printf("无法打开文件!\ n ");
退出(1);
}
fscanf(f1," %d ",& amp率);
而(!feof(f1)和amp& amp旗帜!=1)
{
fscanf(f1," %d%c%d ",& amp频率[i],& amp高[i],& amptime[I]);
printf(" %d%c%d ",频率[i],高度[i],时间[I]);
如果(时间[我]!=-1)
{
i++;n++;
}
其他
flag = 1;
}
printf(" \ n ");
set(频率、高度、时间、速率、n);
音乐(频率,时间,n);
fclose(f 1);
}
getch();
}
void set(无符号f[],char h[],无符号t[],int r,int num)
{
int i,k;
for(I = 0;我& ltnumi++)
{
t[I]= t[I]* r;
开关(h[i])
{
情况‘H’:k = 4;打破;
情况“M”:k = 2;打破;
案例“L”:k = 1;
}
开关(f[i])
{
案例1:f[I]= 262 * k;打破;
情况二:f[I]= 296 * k;打破;
情况三:f[I]= 330 * k;打破;
情况四:f[I]= 349 * k;打破;
情况5:f[I]= 392 * k;打破;
情况6:f[I]= 440 * k;打破;
情况7:f[I]= 494 * k;打破;
}
}
}
无效音乐(无符号f[],无符号t[],int num)
{
int I;
for(I = 0;我& ltnumi++)
{
Beep(f[i],t[I]);
}
}