【稽音のC语言】周刊虚拟歌手中文曲排行榜(中V周刊)得点计算器的C语言程序编写
最近大学刚好开始了C语言的学习,因为高中信息技术课上也学过一点最基础的C语言知识
所以写起来比较轻松,除了最后隐式转化为浮点运算没学过,问了下我们课程老师,基本没什么问题。
中V周刊计算的程序


首先我们有了基础变量:播放量(章节数默认为1),评论,弹幕,收藏,点赞,硬币
接着我们有了计算逻辑。
对于播放得点,我们继续设置中间变量,因为最后还要结合修正B算最终得点。
修正C同理。
此时,我们可以通过一系列if和else的简单嵌套来实现。
当修正B>50或修正C>20时,可以使用goto语句(少用为好)返回输入变量的环节。
最后,计算修正A和最终得点
然后我们让系统输出几个数据,执行完成。
2.程序设计实例(欢迎提出改进建议)
#include <stdio.h>
#include <math.h>
int main()
{int playnumber,danmakunumber,coinnumber,likenumber,collectionnumber,commentnumber,midplay,midlike,finalplay,finallike;
//构建变量存储播放,弹幕,硬币,点赞,收藏,评论,以及两个得点的数据
float fixA,fixB,fixC;
//构建变量存储修正数值
L1:printf("请输入播放数\n");
scanf("%d",&playnumber);
printf("请输入弹幕数\n");
scanf("%d",&danmakunumber);
printf("请输入硬币数\n");
scanf("%d",&coinnumber);
printf("请输入点赞数\n");
scanf("%d",&likenumber);
printf("请输入收藏数\n");
scanf("%d",&collectionnumber);
printf("请输入评论数\n");
scanf("%d",&commentnumber);
//导入曲目在b站的各项数据
if (playnumber>10000)
midplay=playnumber/2+5000;
else
midplay=playnumber;
//基础播放>10000时,播放得点=播放量/2+5000
if (likenumber>2000)
midlike=likenumber*2+4000;
else
midlike=likenumber*4;
//基础播放>2000时,点赞得点计算
fixB=(collectionnumber*1.0/playnumber)*250.0;
//利用隐式转化进行浮点运算,得到修正B
if (fixB>50.0)
{printf("修正B数值大于50,请重新输入数据 \n");
goto L1;}
//修正B上限为50的情况
else
fixC=(coinnumber*1.0/playnumber)*150.0;
//利用隐式转化进行浮点运算,得到修正B
if (fixC>20.0)
{printf("修正C数值大于20,请重新输入数据 \n");
goto L1;}
//修正C上限为20的情况
else
if (fixB<10.0)
finalplay=midplay*fixB*0.1;
else
finalplay=midplay;
//最终播放得点计算
if (fixC<5.0)
finallike=midlike*fixC*0.2;
else
finallike=midlike;
//最终点赞得点计算
fixA=pow((finalplay+collectionnumber)/(finalplay+collectionnumber+danmakunumber*10.0+commentnumber*20.0),2.0);
//修正A计算
printf("修正A:%f\n",fixA);
printf("修正B:%f\n",fixB);
printf("修正C:%f\n",fixC);
//输出三项修正值
float score=finalplay+(commentnumber*25.0+danmakunumber)*fixA+collectionnumber*fixB+finallike+coinnumber*fixC;
//最终得分计算
printf("您的最终得点是:%f\n",score);
//输出最终得点
return 0;
}
3.程序运行实测

用周刊551期,我的27位作品《匿名L》进行计算

结果如下:
得点29844分(四舍五入保留整数)
修正A 0.74
修正B 9.69
修正C 1.83

周刊显示结果:得点29865分
修正A 0.70
修正B 9.69
修正C 1.83

结果误差
得点相差21分
修正A相差0.04
修正BC几乎没有任何误差
可以看出还是相对比较准确的。
各位P主可以用来计算自己的VOCALOID得点~从而推断在周刊中的位置!
下载链接:
链接:https://pan.baidu.com/s/1WAtkuvcFjgel3U6SsIDabQ
提取码:CNVC
感谢各位支持!