有关发声的一个c语言程序
发布网友
发布时间:2024-05-28 17:26
我来回答
共1个回答
热心网友
时间:2024-06-15 12:34
#include<dos.h>
main()
{
int i;
int m;
int z;
int freq1[]={330,392,587,587,392,349,330,330,330,349,392,440,392}; /*int freq1[] 用于存储第一小节音符的频率*/
int freq2[]={330,392,587,587,392,349,330,392,392,440,494,523,523} ; /* freq2[]用于存储第二小节频率 */
int freq3[]={294,392,392,494,440,392,330,392,523,440,523,587,523,494,494,392}; /* freq3[]存储第三小节频率*/
for(i=0;i<13;i++) /*该for循环控制第一小节发声 */
{
int dur; /*dur存储发声的时间长度 */
int n;
if(i==0||i==3||i==6) /*数组中0,3,6号单元发声时常为12ms*/
dur=12;
else
if(i==2||i==5||i==11||i==12)
dur=24;
else
dur=6;
sound(freq1[i]); /*发出声音*/
n=dur+clock(); /*用clock()控制发声的时间*/
while(n>clock());
nosound();
}
for(m=0;m<13;m++) /*该for循环控制第二小节发声*/
{
int dur;
int n;
if(m==0||m==3||m==6)
dur=12;
else
if(m==2||m==5||m==11||m==12)
dur=24;
else
dur=6;
sound(freq2[m]);
n=dur+clock();
while(n>clock());
nosound();
}
for(z=0;z<16;z++) /*该for循环控制第三小节发声*/
{
int dur;
int n;
if(z==0||z==9||z==6||z==11||z==13)
dur=12;
else
if(z==8||z==15)
dur=24;
else
dur=6;
sound(freq3[z]);
n=dur+clock();
while(n>clock());
nosound();
}
}