




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C程序设计经典程序举例1、 判断素数(循环、利用算法减少运算次数)例:1159:质因数分解正整数n是两个不同质数的乘积,试求出其中较大的。#include<stdio.h> #include<math.h> int main() long long n,big; int small; int root,i,j; scanf("%lld",&n); for(small=2;small<=(int)sqrt(n);) /素数判断过程,从最小素数开始 root=(int)sqrt(small); for(i=2;i<=root+1;i+
2、) if(small%i=0)break; if(i<=root) if(small=2)small+;else small+=2;/只判断2和奇数,减少运算次数 continue; if(n%small=0) big=n/small; root=(int)sqrt(big); for(i=2;i<=root+1;i+) if(big%i=0)break; if(i<=root) if(small=2)small+;else small+=2; continue; else break; /得到最大质因数,跳出循环 printf("%d %lld",sma
3、ll,big); return 0; 2、 递归与回溯算法(解决尝试性问题,每一级都对下一级有影响)例:1085:0/1迷宫问题给定一个由0(表示墙壁)和1(表示道路)的迷宫,请你判断进入迷宫后,仅通过横向和纵向的行走是否能从迷宫中走出来,即能否从坐标(1,1)走到(n,m)。#include<stdio.h> #include<stdlib.h> int starti,startj; int endi,endj;/定义迷宫起止点 int success=0; /用于判断是否成功通路 int main() int visit(int i,int j,int maze10
4、); int i,j; int n,m; int maze1010; scanf("%d %d",&n,&m); for(i=1;i<=n;i+) for(j=1;j<=m;j+) scanf("%d",&mazeij); starti=1,startj=1,endi=n,endj=m; if(visit(starti,startj,maze)=0) printf("NO"); else printf("YES"); return 0; int visit(int i,int j
5、,int maze10) mazeij=-1; /安全性判断已经经过的路 if(i=endi&&j=endj) success=1; /成功到达终点 /进行 四个方向的尝试 if(success!=1&&mazeij+1=1) visit(i,j+1,maze); if(success!=1&&mazei+1j=1) visit(i+1,j,maze); if(success!=1&&mazei-1j=1) visit(i-1,j,maze); if(success!=1&&mazeij-1=1) visit(i,
6、j-1,maze); mazeij=0;/尝试失败返回0,尝试成功返回1 return success; 例:全排列问题输入一个正整数n,按字典序打印其全排列#include<stdio.h>int used16=0;/是否使用判断 int result16=0;/打印结果 void proc(int step,int n)/按步进行数组赋值 int i;if(step>n)for(i=1;i<=n;i+)printf("%d ",resulti);printf("n"); elsefor(i=1;i<=n;i+)if(us
7、edi=0)resultstep=i;usedi=1;proc(step+1,n);usedi=0;/回溯 int main()int n;scanf("%d",&n);proc(1,n);return 0;例:二分查找#include <stdio.h>int bisearch( int ary, int left, int right, int num ) printf("search %d from %d to %dn", num, left, right ); int mid;/设置二分点进行比较 if(left>rig
8、ht) return -1; /未找到需查找的点 mid=(left+right)/2; if(arymid=num) return mid; else /与二分点进行大小比较后进入递归 if(arymid>num) bisearch(ary, left, mid-1, num); else if(arymid<num) bisearch(ary, mid+1,right,num);int main() int n, array10000, i, num; scanf("%d", &n); scanf("%d", &num);
9、 for (i=0;i<n; i + ) scanf("%d",&arrayi); /数组需有序,若无序数组先进行排序 printf( "%d",bisearch(array,0,n-1,num); return 0;3、 排序问题 冒泡排序快排函数4、 字符串处理例:判断回文#include<stdio.h>#include<string.h>#include<stdlib.h>int main()char *s=(char*)malloc(sizeof(char)*256);char change25
10、6="0"gets(s);int len=strlen(s);int i;for(i=0;i<len;i+)changelen-1-i=*(s+i);if(strcmp(change,s)=0)printf("是"); elseprintf("否");return 0;例:将原字符串中的字符串1替换为字符串2,替换后新出现的字符串不包括在内,仅保留子函数。char* replace(char *stence,char pstr1,char pstr2) if(strcmp(stence,pstr1)=0)return pstr2
11、;/如果原字符串与字符串1相同直接替换elseif(strstr(stence,pstr1)=NULL)return stence;/找不到字符串1else char *find=stence; char final400="0"; while(strlen(find)>strlen(pstr1)&&find!=NULL)/循环在剩余字符串中能寻找到字符串1时继续进行 char change400="0" char *use=find; find=strstr(find,pstr1);/寻找字符串1 for(int i=0;i<(find-use);i+) changei=*(use+i);find=find+strlen(pstr1);/直接跳过字符串1strcat(final,change);/将出现字符串1之前的部分
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年医学基础知识考试试题及答案
- 2025年园艺专业田间管理考试试题及答案
- 2025年房地产经纪人职业资格考试试题及答案
- 2025年统计师资格考试试卷及答案详细
- 2025年会计从业资格考试试题及答案示例
- 智能化物流园区资源共享与综合运营合作协议
- 网络直播设备远程维护与现场支持服务协议
- 资产收益权转让补充协议
- 证券交易法律审查补充协议
- 创新商标授权及产业链整合合作协议
- 农村留守儿童教育支持体系构建研究
- 人教版(2024)七年级下册Unit 3 Keep fit 素养检测(含解析)
- 2025年四川省成都市成华区中考二诊英语试题(含笔试答案无听力音频及原文)
- 绥化绥化市2025年度“市委书记进校园”事业单位引才287人笔试历年参考题库附带答案详解
- 历史七年级历史下册期中复习知识点梳理课件 2024-2025学年七年级历史下册(统编版2024)
- 管道试压吹扫方案
- Unit 4 Clothes 单元整体(教学设计)-2024-2025学年人教精通版(2024)英语三年级下册
- TCECA-G 0344-2025《零碳园区评价技术规范》团体标准
- 金融市场学知到智慧树章节测试课后答案2024年秋齐鲁师范学院
- 肾上腺皮质功能减退症的护理
- 《腹泻的临床思维》课件
评论
0/150
提交评论