高级语言课程设计报告第六次报告: 模拟

简介: 高级语言课程设计报告实习题目第六次报告: 模拟l 完成ACM俱乐部作业:2015cup实习6模拟中至少1道l 描述你的算法,注释你的程序。l 注意勿抄袭:全系统自动判定抄袭,一旦抄袭,0分。

高级语言课程设计报告

实习题目

第六次报告: 模拟

l 完成ACM俱乐部作业:2015cup实习6模拟中至少1

l 描述你的算法,注释你的程序。

l 注意勿抄袭:全系统自动判定抄袭,一旦抄袭,0分。

一、实习目的:熟练编程的算法及逻辑,了解不同题型的解法。

二、针对你的每一道题目:

李白打酒:

1.算法描述。

  确定最后两次肯定是喝酒后,进行13次循环每次循环两次分别进行两种情况,这样遍历每一种情况,然后用条件限制不行的情况,最后输出符合的情况。

2.你的代码及注释。

#include <stdio.h>

int main()

{

int a[16],b[16],c=0,d=0,e,f=0,g=0;

a[0]=2;

for(b[0]=0;b[0]<2;b[0]++)      //第一次动作

{

if(b[0]==0)

{

a[1]=a[0]*2;

c++;

}

else

{

a[1]=a[0]-1;

d++;

}

for(b[1]=0;b[1]<2;b[1]++) //第二次动作

{

if(b[1]==0)

{

a[2]=a[1]*2;

c++;

}

else

{

a[2]=a[1]-1;

d++;

if(a[2]==0) //判断酒量

break;

}

for(b[2]=0;b[2]<2;b[2]++) //第三次动作

{

if(b[2]==0)

{

a[3]=a[2]*2;

c++;

}

else

{

a[3]=a[2]-1;

d++;

if(a[3]==0) //判断酒量

  break;

}

for(b[3]=0;b[3]<2;b[3]++)  //第四次动作

{

if(b[3]==0)

{

a[4]=a[3]*2;

c++;

}

else

{

a[4]=a[3]-1;

d++;

if(a[4]==0) //依然判断酒量

  break;

}

for(b[4]=0;b[4]<2;b[4]++)    //第五次

{

if(b[4]==0)

{

a[5]=a[4]*2;

c++;

if(c==5) //总共打酒5次

  continue;

}

else

{

a[5]=a[4]-1;

d++;

if(a[5]==0) //依然判断酒量

  break;

}

for(b[5]=0;b[5]<2;b[5]++)    //第六次

{

if(b[5]==0)

{

a[6]=a[5]*2;

c++;

if(c==5) //总共打酒5次

  continue;

}

else

{

a[6]=a[5]-1;

d++;

if(a[6]==0) //依然判断酒量

  break;

}

for(b[6]=0;b[6]<2;b[6]++)    //第七次

{

if(b[6]==0)

{

a[7]=a[6]*2;

c++;

if(c==5) //总共打酒5次

  continue;

}

else

{

a[7]=a[6]-1;

d++;

if(a[7]==0) //依然判断酒量

  break;

}

for(b[7]=0;b[7]<2;b[7]++)    //第八次

{

if(b[7]==0)

{

a[8]=a[7]*2;

c++;

if(c==5) //总共打酒5次

  continue;

}

else

{

a[8]=a[7]-1;

d++;

if(a[8]==0) //依然判断酒量

  break;

}

for(b[8]=0;b[8]<2;b[8]++)    //第9次

{

if(b[8]==0)

{

a[9]=a[8]*2;

c++;

if(c==5) //总共打酒5次

  continue;

}

else

{

a[9]=a[8]-1;

d++;

if(a[9]==0) //依然判断酒量

  break;

}

for(b[9]=0;b[9]<2;b[9]++)    //第10次

{

if(b[9]==0)

{

a[10]=a[9]*2;

c++;

if(c==5) //总共打酒5次

  continue;

}

else

{

a[10]=a[9]-1;

d++;

if(d==10) //共喝了10次

  continue;

if(a==0) //依然判断酒量

  break;

}

for(b[10]=0;b[10]<2;b[10]++)    //第11次

{

if(b[10]==0)

{

a[11]=a[10]*2;          

c++;

if(c==5) //总共打酒5次

  continue;

}

else

{

a[11]=a[10]-1;  

d++;

if(d==10) //共喝了10次

  continue;

if(a==0) //依然判断酒量

  break;

}

for(b[11]=0;b[11]<2;b[11]++)    //第12次

{

if(b[11]==0)

{

a[12]=a[11]*2;

c++;

if(c==5) //总共打酒5次

  continue;

}

else

{

a[12]=a[11]-1;

d++;

if(d==10) //共喝了10次

  continue;

if(a[12]==0) //依然判断酒量

  break;

}

  for(b[12]=0;b[12]<2;b[12]++)    //第13次

  {

if(b[12]==0)

{

a[13]=a[12]*2;

c++;

if(c==5) //总共打酒5次

  continue;

}

else

{

a[13]=a[12]-1;

d++;

if(d==10) //共喝了10次

  continue;

if(a[13]==0) //依然判断酒量

  break;

}

a[14]=a[13]-1; //第14次

b[13]=1;

a[15]=a[14]-1; //第15次

b[14]=1;

for(e=0;e<15;e++) //数有几次成立

  if(b[e]==0)  g++;

if(a[15]==0&&g==5)    //成功就+1

{

  f++;

}

g=0;

}

}

}

}

}

}

}

}

}

}

}

}

}

printf("%d",f);   //输出个数

}

 

 

3. 设计及调试过程遇到的问题及解决方案。

 问题大概就是开始时如果某种情况不行要返回时出了问题,后来使用数组记录的每一步的酒量就省去了返回这一步,其次就是条件的设定总是出错,经过多次debug后终于成功。也是挺费劲的。

  1. 心得体会和自我对程序的评价

    我感觉这个完全不用我这么麻烦,直接用一个递归就行了,不用这么长,但是毕竟不习惯,就费了很大的劲复制粘贴,大的改了两次,就是因为酒量返回不了,不错的题目,相信下次在遇到我会试着用递归的方法。

十六进制转十进制:

1.算法描述。

 直接用%x输入。用%ld输出。此题bug在此。

2.你的代码及注释。

#include <stdio.h>

int main()

{

      long int a;

      scanf("%x",&a);

  printf("%ld",a);

}

 

 

3. 设计及调试过程遇到的问题及解决方案。

 此题需要long int,这是重点,不然答案错误。

4.心得体会和自我对程序的评价。

 我是不是有点太机智了。求老师放过。555555

约瑟夫:

1.算法描述。

2.你的代码及注释。

3. 设计及调试过程遇到的问题及解决方案。

4.心得体会和自我对程序的评价。

 

相关文章
|
3月前
|
SQL IDE JavaScript
"揭秘高效代码Review秘籍:如何像侦探一样挖掘隐藏错误,提升团队编程实力,你不可错过的实战指南!"
【8月更文挑战第20天】代码Review是软件开发中提升代码质量与团队协作的关键环节。本文详细介绍高效代码Review流程:从明确范围与标准开始,到逐行审查与工具辅助,再到积极沟通与闭环管理,辅以示例确保清晰易懂。通过实践这些步骤,不仅能减少错误,还能促进知识共享,为构建高质量软件打下坚实基础。
62 2
|
3月前
|
算法 C++
惊爆!KPM算法背后的秘密武器:一行代码揭秘字符串最小周期的终极奥义,让你秒变编程界周期大师!
【8月更文挑战第4天】字符串最小周期问题旨在找出字符串中最短重复子串的长度。KPM(实为KMP,Knuth-Morris-Pratt)算法,虽主要用于字符串匹配,但其生成的前缀函数(next数组)也可用于求解最小周期。核心思想是构建LPS数组,记录模式串中每个位置的最长相等前后缀长度。对于长度为n的字符串S,其最小周期T可通过公式ans = n - LPS[n-1]求得。通过分析周期字符串的特性,可证明该方法的有效性。提供的C++示例代码展示了如何计算给定字符串的最小周期,体现了KPM算法在解决此类问题上的高效性。
75 0
|
6月前
|
安全 Linux 网络安全
【答案】2023年国赛信息安全管理与评估正式赛答案-模块2
【答案】2023年国赛信息安全管理与评估正式赛答案-模块2
【答案】2023年国赛信息安全管理与评估正式赛答案-模块2
|
前端开发
实验:CSS+Div基础 - 预习报告
网页设计技术实验预习报告。
280 1
实验:CSS+Div基础 - 预习报告
|
人工智能 运维 监控
热饭的测开成果盘点第二十三期:wqrfproxy自动抓包断言库
本期介绍的是一个组件,身为python的第三方库,已经被pypi收录,且国内镜像源也早已复制。也就是说可以通过pip install 来下载。这个组件就是:wqrfproxy ,它的作用是可以在正常的unittest脚本中,对app发出的请求进行断言。
热饭的测开成果盘点第二十三期:wqrfproxy自动抓包断言库
程序人生 - 九图带你全面读懂体检报告,超实用的阅读指南,马住!
程序人生 - 九图带你全面读懂体检报告,超实用的阅读指南,马住!
121 0
程序人生 - 九图带你全面读懂体检报告,超实用的阅读指南,马住!
程序人生 - 防止熬夜的最好方法(10 个时间管理建议)(下)
程序人生 - 防止熬夜的最好方法(10 个时间管理建议)(下)
83 0
程序人生 - 防止熬夜的最好方法(10 个时间管理建议)(下)
|
存储 安全 机器人
关于机器人流程自动化 不可不知的十个秘密
机器人流程自动化工具通过添加可智能处理旧代码和有助于延长其使用期限的新图层,为遗留系统赋予了新的生命。许多机器人流程自动化工具还可以由非编程人员来部署,从而使那些使用旧工具感到苦恼的人能够通过拖放新图标来改善其工作流程。通过选择恰当的工具和实现方法,任何能够编写电子表格宏的人都可以使用机器人流程自动化来简化工作流程。但在机器人流程自动化为您的系统带来的这些好处背后,还隐藏着一些问题,随着时间的推移,这些问题可能会带来麻烦。
187 0
|
程序员
程序员究竟能干多少年?根据169万份数据进行分析来告诉你!
程序员这个职业究竟可以干多少年,在中国这片神奇的土地上,很多人都说只能干到30岁,然后就需要转型。在很多面试中,问到应聘者未来的规划都能听到好些应聘都说程序员是个青春饭。
1286 0
下一篇
无影云桌面