求大神,把把两只老虎的歌谱翻译成c语言或C++代码,图:

来自:搞笑段子    更新日期:早些时候
求程序大神帮我把这段C++翻译成C语言代码QAQ~

#include#include#include// 用于使用网络顺序显示:htons#pragma comment(lib, "WS2_32.LIB")/************************************************************************** * 计算给定数据的校验和 * * 输入参数: * pBuffer 指向需要校验的数据缓冲区 * nSize 需要校验的数据的大小,以字节为单位 * * 返回值: * 16位的校验结果 * **************************************************************************/unsigned short checksum_calculating(unsigned short *pBuffer, int nSize){ unsigned long dwCksum = 0; // 32位累加和 // 以两字节为单位反复累加 while (nSize > 1) { dwCksum += *pBuffer++; nSize -= sizeof(unsigned short); } // 如果总字节数为奇数则加上最后一个字节 if (nSize) { dwCksum += *(unsigned char*) pBuffer; } // 将32位累加和的高16位与低16位第一次相加 dwCksum = (dwCksum >> 16) + (dwCksum & 0xffff); // 将上一步可能产生的高16位进位再次与低16位累加 dwCksum += (dwCksum >> 16); // 返回16位校验和 return (unsigned short) (~dwCksum);}int main(int argc, char * argv[]) { unsigned char * pBuf; unsigned short wLen; // 创建输入文件流 指针 FILE *fInfile; // 创建输出文件流 FILE *fOutfile; // 判断输入的命令行格式是否正确 if (argc != 3) { puts( "请按以下格式输入命令行: Checksum inputfile outputfile
" ); return 1; } // 以2进制方式打开指定的输入文件 fInfile = fopen(argv[1], "rb+"); // 把文件指针移到文件末尾 fseek(fInfile,0,SEEK_END); // 取得输入文件的长度 wLen = (unsigned short)ftell(fInfile); // 文件指针位置初始化 fseek(fInfile,0, SEEK_SET); // 定义数据报缓冲区,缓冲区大小为4+wLen ,其中4为数据报类型字段、长度字段 // 以及校验和字段的长度和,wLen为数据字段长度,即输入文件长度(以字节为单位) pBuf = (unsigned char*)malloc(4 + wLen); pBuf[0] = (unsigned char)(0xab); // 给数据报类型字段赋值 pBuf[1] = (unsigned char)(wLen); // 给数据报长度字段赋值 *(unsigned short *)(pBuf + 2) = 0; // 计算校验和之前,校验和字段先置为0 fread(pBuf+4,sizeof(char), wLen, fInfile); // 根据输入文件填充数据报的数据字段 // 计算校验和并把结果填入到数据报的校验和字段 *(unsigned short *)(pBuf+2) = checksum_calculating((unsigned short *)pBuf,4+wLen); // 屏幕输出校验和计算结果 printf("校验和为:0x%X (以网络顺序显示)
" , htons( *(unsigned short *)(pBuf+2) )); // 以2进制方式打开输出文件 fOutfile= fopen(argv[2],"wb"); // 将pBuf中的数据报写入输出文件 fwrite((char *)pBuf, sizeof(char), wLen+4, fOutfile); //cout<< "数据报已成功保存在" << argv[2] << "文件中!" << endl; printf("数据报已成功保存在%s文件中!
", argv[2]); free( pBuf); // 释放数据报缓冲区 fclose(fInfile); // 关闭输入文件流 fclose(fOutfile); // 关闭输出文件流}

由上面两段C语言程序翻译成的C++程序如下
第一个C++程序 (原C语言程序有一个错误,我给改正了,改动的地方见注释)
#include using namespace std;int main(){ int x,n,m; cin>>x>>n>>m; //矩阵第一个元素为0,其后递增1 //判断x是否超出矩阵 if(x = n * m){ //这里x>n*m应该改成x>=n*m,因为矩阵元素从0开始到n*m-1 cout<<-1<<endl; }else{ cout<<"row ="<<x/m<<", col="<<x%m<<endl; } return 0;}运行结果7 3 3row =2, col=1第二个C++程序
#include using namespace std;int main(){ int n,m; cin>>n>>m; //数组第一个元素为0,其后递增1 for(int i = 0; i n ? n : m); ++i) cout<<i<<" "; return 0;}运行结果3 50 1 2

网上找的,试了一下能响,不过不能弹,可以一下多输几个来弹,不过不怎么好听。
比如你可以输入:ASDAASDADFGGDFGG(1231 1231 3455 3455)
就是:两只老虎两只老虎跑的快跑的快
主要是靠tone来发声不过直接用会出问题。

/* FILENAME: piano.c

*/
#include <conio.h>
#include <stdio.h> /* use unbuffered i/o */
#include <ctype.h>
#include <dos.h>

#define g1 198
#define C 262 /* define frequencies */
#define D 294
#define E 330
#define F 349
#define G 392
#define A 440
#define B 494
#define C2 524
#define Z 1

#define TIMERMODE 182 /* code to put timer in right mode */
#define FREQSCALE 1190000L /* basic time frequency in hertz */
#define TIMESCALE 1230L /* number of counts in 0.1 second */
#define T_MODEPORT 67 /* port controls timer mode */
#define FREQPORT 66 /* port controls tone frequency */
#define BEEPPORT 97 /* port controls speaker */
#define ON 79 /* signal to turn speaker on */

tone (freq, time)
int freq, time;
{

int hibyte, lowbyte, port;
long i, count, divisor;

divisor = FREQSCALE / freq; /* scale freq to timer units */
lowbyte = divisor % 256; /* break integer into */
hibyte = divisor >> 8; /* two bytes */
count = TIMESCALE * time; /* convert time to timer units*/

outp (T_MODEPORT, TIMERMODE); /* prepare timer for input */
outp (FREQPORT, lowbyte); /* set low byte of timer reg */
outp (FREQPORT, hibyte); /* set high byte of timer reg */

port = inp (BEEPPORT); /* save port setting */
outp (BEEPPORT, ON); /* turn speaker on */
for (i = 0; i < count; i++)
; /* mark time */
outp (BEEPPORT, port); /* turn speaker off, restore */
/* original setting */
}

main ()
{
int key, freq, tempo, time;

puts ("Please enter the basic tempo: 10 = 1 second.");
scanf ("%d", &tempo);
printf ("%d\n\r", tempo); /* echo input */
puts ("Thank you. Use the key row a-k to play notes. The\n\r");
puts ("shift key doubles the duration. A ! halts the show.");

while ( (key = getchar()) != '!')
{
time = isupper (key) ? 2 * tempo : tempo;
key = tolower (key);
switch (key)
{
case 'a': tone ( C, time);
break;
case 's': tone ( D, time);
break;
case 'd': tone ( E, time);
break;
case 'f': tone ( F, time);
break;
case 'g': tone ( G, time);
break;
case 'h': tone ( A, time);
break;
case 'j': tone ( B, time);
break;
case 'k': tone ( C2, time);
break;
default: break;
}
}
puts ("Bye bye!\n\r");
}

找到每个音的频率,在按几拍货半拍的到时间间隔通过扬声器输出就可以了,不过翻译起来比较麻烦,哆的频率好像是400哦,希望帮的上忙!

Beep?
播放设备什么配置什么喇叭?
直接把两只老虎的音乐文件嵌入一起发布,运行后自动播放可以么?

还是你只是要显示出图片?那嵌入图片资源,到时候运行后显示图片就可以了
真实自己画歌谱也行,麻烦点

什么意思?歌谱翻译成 C语言?

内个,或许是我比较孤陋寡闻,但还真没听说过直接用c输出音乐的。(滴滴声不算)

要编程调试,通过扬声器发声
据我所知,VI也就只是文本编辑器而也吧,简单说的话
编程,还需要额外的编译器来编译
当然linux gcc老大哥==
所以主要还是编程

编程,简单的话,就是类似微软的Beep函数,就是让喇叭响应某个频率的声音,多个组合起来,有变化,就是了

否则就是波形WAVE,DAC了

对的
我还真没明白 是怎么翻译的


求大神,把把两只老虎的歌谱翻译成c语言或C++代码,图:视频

相关评论:
  • 17791012848谁能帮我把两只老虎的钢琴谱翻译成简谱
    乔夏蓉答:1231,1231,345,345,565431,565431,151,151

  • 17791012848谁能把2只老虎翻译成英文?
    乔夏蓉答:two tigers

  • 17791012848求一个英文歌含有动物名字要有汉语翻译
    乔夏蓉答:两只老虎会吧?中文歌词:两只老虎 两只老虎,跑得快 跑得快, 一只没有耳朵,一只没有尾巴,真奇怪 真奇怪。英文歌词:Two tigers Two tigers,two tiger running so fast, running so fast one has no ears,one has no tail How strange!How strange!

  • 17791012848帮忙翻译。
    乔夏蓉答:two tigers,two tigers running fast,running fast one hasn't eyes,one hasn't tail so strange,so strange 说实话,我早就翻出来唱过了,今天终于碰到了同类,非常感动

  • 17791012848求卞庄子刺虎的注释及翻译
    乔夏蓉答:卞庄子想要去刺杀老虎,旅店里的童仆制止他,说:“两只老虎正在吃一头牛,当它们吃的时候一定会因为肉味甘美而互相打斗,那么打斗的结果是大虎受伤,小虎死亡,你再朝着受伤的老虎刺去,一下子必可得到杀死两只老虎的美名.”卞庄子认为他说的是对的,就站着等待它们相斗.一会儿,两只老虎果然斗起来了.大虎负...

  • 17791012848《两只老虎》原文及翻译赏析作者是谁?
    乔夏蓉答:我曾经向他求得一幅画,高二尺超过一点,宽二尺左右。画中有两只老虎,雌雄各一只。雄虎蹲在石头上,抬起头向远方望去,张开口做出咆哮的样子;雌虎趴在旁边,脚向前伸展,神情悠然的样子。旁边有三四块奇石,像给老虎助威一样。我把这幅画挂在东边的墙壁上,十分喜欢它。原文如下:予友人工画虎,...

  • 17791012848虎会应对文言文翻译
    乔夏蓉答:赵简子还给有官位的人摆酒设宴,与臣子们一起饮酒,并把虎会当成贵宾。 7. 文言文翻译 有两虎争人而斗者,管庄子将刺之④,管与止之曰:“虎者,戾虫;人者,甘饵也。今两虎诤人而斗,小者必死,大者必伤。子待伤虎而刺之,则是一举而兼两虎也。无刺一虎之劳,而有刺两虎之名。 有两只老虎因抢着吃一人...

  • 17791012848求两只老虎英文版 不要在线翻译 要真懂得英语的
    乔夏蓉答:Brother John Are you sleeping? Are you sleeping?Brother John, Brother John?Morning bells are ringing, morning bells are ringing Ding ding dong, ding ding dong.参考资料:百度文库

  • 17791012848求解《两只老虎》的真正含义
    乔夏蓉答:没有特殊含义,《北伐军歌》及《两只老虎》都是由法国童谣《雅克兄弟》改编而成的。这首童谣在世界范围内流传广泛,在德国叫《马克兄弟》,在英国叫《约翰兄弟》。《北伐军歌》的歌词创作背景如下:1902年,在废除科举制度办新学堂的背景下,新兴学堂开设了音乐课,当时把这类学校叫做“学堂”,把学校...

  • 相关主题精彩

    版权声明:本网站为非赢利性站点,内容来自于网络投稿和网络,若有相关事宜,请联系管理员

    Copyright © 喜物网