第一个程序
- 冒险岛上星强化简介
- 成功率:成功星星+1,从11星开始失败则-1,最低为10星
- 花费:每次强化所需的费用
- 破坏率:从12-13开始会有爆炸率,装备爆炸则重新从12开始
- 以下完全未优化的源代码以及包括各项数据
#include<stdio.h>
#include<time.h>
int star = 10;
int tim = 0;
int cost = 0;
int main(void)
{
srand(time(NULL));
while(star<15)
{
switch (star)
{
case 10:
{
int ran = rand() % 1000;
printf("10:%d\n", ran);
if(ran<500)
{
star++;
tim++;
cost += 4448200;
}
else
{
tim++;
cost += 4448200;
printf("s10:%d\n", star);
continue;
}
}
case 11:
{
int ran = rand() % 1000;
printf("11:%d\n", ran);
if (ran < 450)
{
star++;
tim++;
cost += 5625900;
}
else
{
tim++;
cost += 5625900;
star--;
if (star <= 10)
star = 10;
printf("s11:%d\n", star);
continue;
}
}
case 12:
{
int ran = rand() % 1000;
printf("12:%d\n", ran);
if (ran <400)
{
star++;
tim++;
cost += 6982900;
}
else if (ran > 983)
{
star = 12;
tim++;
cost += 6982900;
continue;
}
else
{
tim++;
cost += 6982900;
star--;
if (star <= 10)
star = 10;
printf("s12:%d\n", star);
continue;
}
}
case 13:
{
int ran = rand() % 1000;
printf("13:%d\n", ran);
if (ran < 350)
{
star++;
tim++;
cost += 8529400;
}
else if (ran > 986)
{
star = 12;
tim++;
cost += 8529400;
continue;
}
else
{
tim++;
cost += 8529400;
star--;
if (star <= 10)
star = 10;
printf("s13:%d\n", star);
continue;
}
}
case 14:
{
int ran = rand() % 1000;
printf("14:%d\n", ran);
if (ran <300)
{
star++;
tim++;
cost += 10275700;
}
else if (ran > 985)
{
star = 12;
tim++;
cost += 10275700;
continue;
}
else
{
tim++;
cost += 10275700;
star--;
if (star <= 10)
star = 10;
printf("s14:%d\n", star);
continue;
}
}
}
}
printf("总次数:%d 总花费:%d", tim, cost);
return 0;
}
- 下面是我目前能尽量做的优化,是我学得太粗还是忘的太快?感觉还是一堆很烂的代码
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
int a = 10;
int b = 0;
int c = 0;
int d = 0;
int* star = &a;
int* tim = &b;
int* cost = &c;
int* ran = &d;
int star_up(int succ, int boom,int cos)
{
int ra = rand() % 1000;
printf(" succ:%d boom:%d 本次花费:%d\n", succ, boom, cos);
printf("star:%d rand:%d 次数:%d 已经花费:%d\n", *star,ra,*tim,*cost);
if (ra < succ)
{
*star+=1;
*tim+=1;
*cost += cos;
return 1;
}
else if (ra > boom)
{
*star = 12;
*tim+=1;
*cost += cos;
return -1;
}
else
{
*tim+=1;
*cost += cos;
*star-=1;
if (*star <= 10)
*star = 10;
return 0;
}
}
int main(void)
{
srand(time(NULL));
while (*star < 15)
{
switch (*star)
{
case 10:
{
int ret = star_up(500, 1001,4448200);
if (ret == 1)
printf("succes\n");
else if (ret == -1)
{
printf("boom\n");
continue;
}
else
{
printf("fail\n");
continue;
}
}
case 11:
{
int ret = star_up(450, 1001,5625900);
if (ret == 1)
printf("succes\n");
else if (ret == -1)
{
printf("boom\n");
continue;
}
else
{
printf("fail\n");
continue;
}
}
case 12:
{
int ret = star_up(400, 994,6982900);
if (ret == 1)
printf("succes\n");
else if (ret == -1)
{
printf("boom\n");
continue;
}
else
{
printf("fail\n");
continue;
}
}
case 13:
{
int ret = star_up(350, 987,8529400);
if (ret == 1)
printf("succes\n");
else if (ret == -1)
{
printf("boom\n");
continue;
}
else
{
printf("fail\n");
continue;
}
}
case 14:
{
int ret=star_up(300, 984,10275700);
if (ret == 1)
printf("succes\n");
else if (ret == -1)
{
printf("boom\n");
continue;
}
else
{
printf("fail\n");
continue;
}
}
}
}
printf("总次数:%d 总花费:%d", *tim, *cost);
return 0;
}