重要算法一览

#include "stdio.h"
#include "stdio.h"
void main()
{
int a,b,c,i,n;
int x,y,z,count;
int day=,num=; //day表示天数从第十天逆推 num表示当天桃子的数量
float h=0.0005;
int ci=;
while()
{
printf("\t\t==========经典算法==============\n");
printf("\t\t1、穷举法:百钱买百鸡\n");
printf("\t\t2、递推法:猴子吃桃子\n");
printf("\t\t3、迭代法:斐波那契数列非递归求法\n");
printf("\t\t4、迭代法:折纸超珠峰问题\n");
printf("\t\t0、退出\n");
printf("\t\t================================\n");
printf("请输入您的选择:");
scanf("%d",&n);
switch(n)
{
case :
count=;
printf("\n某人有100元钱,要买100只鸡。公鸡5元钱一只,母鸡3元钱一只,小鸡一元钱3只。\n问可买到公鸡,母鸡,小鸡各为多少只?\n\n");
for(x=;x<=;x++)
{
//
for(y=;y<=;y++)
{
for(z=;z<=;z++)
{
if(x+y+z== && *x+*y+z/==&& z%==)
{
count++;
printf("第%d种情况:公鸡%d只,母鸡%d只,小鸡%d只\n",count,x,y,z);
}
}
}
}
break;
case :
printf("有数量未知的桃子,猴子第一天吃了总数量的一半又多吃一个,\n第二天又吃了剩下的一半有多吃一个,依次类推,到第十天桃子的数量仅剩1个,\n问最初桃子的数量有多少?\n");
while(day>)
{
num=(num+)*;
day--;
}
printf("桃子的数量是:%d个\n",num); break;
case :
a=b=;
printf("有一对兔子不吃不喝不会死,第三个月成熟,从成熟开始每月繁殖生下一对兔子,\n新生的每对兔子仍是第三个月成熟开始每月生一对兔子,那么每个月兔子的对数如何计算。\n其实这就是著名数列斐波那契数列如下:1 1 2 3 5 8 13 21 34 ......\n");
printf("打印前20项的值:\n");
printf("%d\t%d\t",a,b);
for(i=;i<=;i++)
{
c=a+b;
printf("%d\t",c);
a=b;
b=c;
if(i%==)
{
printf("\n");
}
}
printf("\n");
break;
case :
printf("一张纸厚度是0.5mm厚,珠峰的高度为8848.43米,\n问这张纸对折多少次后会超过珠峰的高度?\n");
while(h<8848.43)
{
h=h*;
printf("%.3f\t",h);
ci++;
if(ci%==)
{
printf("\n");
} }
printf("总计需要%d次后折纸超过珠峰的高度\n",ci);
break;
case :return;break;
default:printf("输入有误\n");break;
}
}
}

希尔法排序

/* Note:Your choice is C IDE */
#include "stdio.h"
void main()
{
int i,tem,j;
int arr[]={,,,,,,,,,,,,};
int num,n;//
num=sizeof(arr)/sizeof(arr[]); for(i=;i<num;i++)
{
printf("%d ",arr[i]);
}
printf("\n");
for(n=num/;n>=;n/=){
for(i=n;i<num;i++)//从第一个到长度-1
{
tem=arr[i];
for(j=i-n;arr[j]>tem&&j>=;j=j-n){
arr[j+n]=arr[j];
}
arr[j+n]=tem;
} }
for(i=;i<num;i++)
{
printf("%d ",arr[i]);
}
}

递归

#include <stdio.h>

/* 交换两个数据 */
void swap(char* a, char* b)
{
char c = *a;
*a = *b;
*b = c;
} void perm(char str[], int index, int str_size)
{
int i = ,j = ; if(index == str_size)
{
/* 输出当前的排列 */
for(i = ; i < str_size; i++)
{
printf("%c ",str[i]);
}
printf("\n");
}
else
{
for(j = index;j < str_size; j++)//每次进行自增后经过递归输出一次结果
{
printf("%d %d\n",j,index);
swap(&str[j],&str[index]);
perm(str,index+,str_size);//递归指导index=str_size
swap(&str[j],&str[index]);//将交换后的给交换回来,避免重复
}
}
}
void main()
{
char a[] = "abc";
perm(a,,);
}

披萨订购

/* Note:Your choice is C IDE */
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
char name[];
int p;//代表票数
float Allprice=0.0;//总价
void menu();
void tickts();
void groupby();
void main()
{
int bh;
for(;;){
menu();
printf("请输入功能编号:");
scanf("%d",&bh);
switch(bh){
case :tickts();break;
case :groupby();break;
case :exit();
default :printf("您输入的编号有误!");break;
}
} }
void menu(){
printf("\t\t\t==== 比格披萨 ===\n");
printf("\t\t\t 1.普通票订购\n");
printf("\t\t\t 2.团购票订购\n");
printf("\t\t\t 0.退出\n");
}
void tickts(){
int i;//购票类型
int p,p1,p2[],p3;//张数 char arr[];
printf("\n\n\t\t\t===票务类型===\n");
printf("\t\t\t1.成人票(65元/位)\n");
printf("\t\t\t2.老人票(45元/位)\n");
printf("\t\t\t3.儿童票(30元/位)\n");
/*票价*/
p2[]=;
p2[]=;
p2[]=;
p2[]=;
printf("请输入订票您的姓名:");
gets(name);gets(name);
for(;;){ printf("请选择票务类型:");
scanf("%d",&i);
printf("请选择票数:");
scanf("%d",&p);
if(i==){
strcpy(arr,"成人票");
}else if(i==){
strcpy(arr,"老人票");
}else if(i==){
strcpy(arr,"儿童票");
}
printf("顾客%s您好,您选择了:票务类型:%s 购票张数%d\n",name,arr,p);
Allprice+=Allprice;
Allprice=(float)p2[i]*p; printf("信息确认请按:0/1");
scanf("%d",&p1);
if(p1==){
printf("核实信息后请支付票款%.2f元\n",Allprice);
printf("是否继续订票0/1:");
scanf("%d",&p3);
if(p3==){
Allprice=;
continue;
}else if(p3==){
break;
}else{
printf("输入数字错误!");
}
}else if(p1==){
Allprice=;
continue;
}else{
printf("输入数字错误!");
}
}//循环
}//最后
void groupby(){
float a,b;
printf("输入团购票数");
scanf("%d",&p);
if(p<){
printf("两张起订\n");
}else if(p>){
Allprice=(float)p*;
printf("您需要支付%.2f",Allprice);
a=Allprice-(int)Allprice%+;
b=-(int)Allprice%;
printf("如果您支付%.2f元,那么我找给你%.2f元\n",a,b); }
}

斐波那契代码

/*使用链表的方式来储存 */
//标准的输出库
#include "stdio.h"
//字符串的操作类
#include "string.h"
//
#include "stdlib.h"
//定义全局步数
int step=;
//m为盘子数,a,b,c分别为盘子名
void move(int m,char a,char b,char c){
if(m==)
{
//第一步从a-c
printf("第%d步move 1 from %c To %c\n",step,a,c);
step++;
}else{
//(1)Move(n-1,A,B,C),理解为将上面的n-1纸盘子作为一个整体从A经C移至B
move(m-,a,c,b);
//此时的a和c并不是()里的a和c
printf("第%d步move %d from %c To %c\n",step,m,a,c);
step++; move(m-,b,a,c);
}
}
void main()
{
char arr[]="hello world";
//s->String d->int c->char最好在前面加上一个空格 f->浮点型
move(,'A','B','C');
}

c语言进阶11-经典算法代码的更多相关文章

  1. C语言100个经典算法

    POJ上做做ACM的题 语言的学习基础,100个经典的算法C语言的学习要从基础开始,这里是100个经典的算法-1C语言的学习要从基础开始,这里是100个经典的算法 题目:古典问题:有一对兔子,从出生后 ...

  2. C语言100道经典算法

    经典的100个c算法 C语言的学习要从基础,100个经典的算法真不知道关于语言的应该发在那里,所以就在这里发了,发贴的原因有2个,第一个,这东西非常值得学习,第二个,想..........嘿嘿,大家应 ...

  3. c语言中的经典算法

    c语言经典排序以及查找方法 冒泡排序 #include <stdio.h> int main() { int i, j, t, a[11]; /*定义变量及数组为基本整型*/ printf ...

  4. c语言进阶5-递归算法

    一.  什么是递归 程序调用自身的编程技巧称为递归( recursion). 递归做为一种算法在程序设计语言中广泛应用. 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型 ...

  5. C语言经典算法 - 多维矩阵转一维矩阵的代码

    下边内容内容是关于C语言经典算法 - 多维矩阵转一维矩阵的内容,应该能对码农也有好处. #include <stdio.h>#include <stdlib.h>int mai ...

  6. java经典算法40题-附带解决代码

    前一段时间工作比较闲,每天没有代码敲的日子有点无聊,于是为了保证自己的编程逻辑力的日常清醒,故百度了一些经典的java算法,然后自己思考编程解决问题,虽然那些东西比较基础了,但是有些题目小编看到了也是 ...

  7. 深度实战玩转算法, Java语言7个经典应用诠释算法精髓

    深度实战玩转算法,以Java语言主讲,通过7款经典好玩游戏,真正将算法用于实际开发,由算法大牛ACM亚洲区奖牌获得者liuyubobobo主讲,看得见的算法,带领你进入一个不一样的算法世界,本套课程共 ...

  8. 数据挖掘领域十大经典算法之—C4.5算法(超详细附代码)

    https://blog.csdn.net/fuqiuai/article/details/79456971 相关文章: 数据挖掘领域十大经典算法之—K-Means算法(超详细附代码)        ...

  9. C语言8大经典排序算法(1)

    算法一直是编程的基础,而排序算法是学习算法的开始,排序也是数据处理的重要内容.所谓排序是指将一个无序列整理成按非递减顺序排列的有序序列.排列的方法有很多,根据待排序序列的规模以及对数据的处理的要求,可 ...

随机推荐

  1. OpenDJ Roadmap

    Roadmap https://wikis.forgerock.org/confluence/display/OPENDJ/OpenDJ+Roadmap Forum https://forum.for ...

  2. 瑞芯微RK3399宣布系统开源,进入百余种行业市场!

    集微网消息,2月24日瑞芯微官方突然宣布, Rockchip RK3399Linux系统开源!作为Rockchip旗舰级芯片,RK3399具有高性能.高扩展.全能型应用特性. 这一重磅消息立马刷爆朋友 ...

  3. RapidJSON 1.0 正式版发布,C++的JSON开发包

    分享 <关于我> 分享  [中文纪录片]互联网时代                 http://pan.baidu.com/s/1qWkJfcS 分享 <HTML开发MacOSAp ...

  4. 做了一个浏览指定文件格式的 TreeView(方便查看Source目录下的源码)

    unit DirTreeView; interface uses   SysUtils, Classes, Controls, Forms, ComCtrls; type   TDirTreeView ...

  5. 基于ASP.NET的新闻管理系统(一)

    1. 项目简介 1.1设计内容 (1)可以在首页查看各类新闻,可以点击新闻查看具体内容:可以查看不同类型的新闻,并了解热点新闻,可以在搜索框里输入要查找的内容. (2)在后台界面中,管理员可以修改密码 ...

  6. 【数据结构】31、hashmap=》resize 扩容,不测不知道,一测吓一跳

    来来来,今天就跟hashmap杠到底... 不要叫我杠精了,主要是还是被问到hashmap的时候,我并不能很清晰明了得告知这种数据结构到底是一个什么构造,里面细节并不了解 既然这样,我们就把他解析一波 ...

  7. chrome浏览器开发者工具F12中某网站的sources下的源码如何批量保存?

    目录 chrome浏览器 开发者工具F12中某网站的sources下的源码如何批量保存 1. 常用保存Sources源码的两种方法 1.1单个文件 1.2 单个页面 2. 问题 3.解决方案 chro ...

  8. WebRTC开发者必备 | 《WebRTC1.0: 浏览器间实时通讯》中文版免费下载

    随着移动互联网的崛起与完善,WebRTC的应用场景相较于它刚诞生时已经有了极大的变化,以图片和视频为代表的流媒体技术走向普及,交互式网站也逐渐成为互联网的新常态,因此WebRTC API应该把当前以及 ...

  9. spring cloud 系列第2篇 —— eureka 高可用注册中心的搭建 (F版本)

    源码仓库地址:https://github.com/heibaiying/spring-samples-for-all 一.项目结构 eureka-server为服务注册中心,负责服务的管理: eur ...

  10. 如何成长为一名合格的web架构师?

    写代码要经历下面几个阶段.  一 .你必须学习面向对象的基础知识,如果连这个都忘了,那你的编程之路注定是在做原始初级的重复! 很多程序员都知道类.方法.抽象类.接口等概念,但是为什么要面向对象,好处在 ...