ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:22.58KB ,
资源ID:4179318      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4179318.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C语言经典编程题.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C语言经典编程题.docx

1、C语言经典编程题“蓝桥杯”软件大赛练习题求素数最大公约数和最小公倍数连续自然数分数比较猜数字游戏抓交通肇事犯古堡算式约瑟夫问题捕鱼问题出售金鱼亲密数完全数加密巧夺偶数数字移动1、求101200之间一共有多少个素数#include #include int su(int m) int i,n=1; for(i=2;i=sqrt(m);i+) if (m%i=0) n=0; break; return n;main() int i,num=0; for(i=101;i=200;i+) if(su(i) num+; printf(101200之间素数个数是%d,num);2、求最大公约数和最小公倍数

2、#include int zdgxs(int x,int y) int t; if(xy) t=x;x=y;y=t; t=x%y; while(t) x=y; y=t; t=x%y; return y;int zxgbs(int x,int y) return (x*y/zdgxs(x,y);main() int a,b,gxs,gbs; printf(please input two numbers:); scanf(%d%d,&a,&b); gxs=zdgxs(a,b); gbs=zxgbs(a,b); printf(%d和%d的最大公约数是%dn,a,b, gxs); printf(%d

3、和%d的最小公倍数是%dn,a,b, gbs);3、请找出十个最小的连续自然数,它们个个都是合数(非素数)#include #include int su(long m) int i,n=1; for(i=2;i=10) break; for(i=0;inum;i+) printf(%ldn,ai);4、分数比较比较两个分数的大小。*问题分析与算法设计人工方式下比较分数大小最常用的方法是:进行分数的通分后比较分子的大小。可以编程模拟手式方式。#include int zdgxs(int x,int y) int t; if(xc1) printf(%d/%d%d/%dn,a,b,c,d); e

4、lse if(a1c1) printf(%d/%d%d/%dn,a,b,c,d); else printf(%d/%d=%d/%dn,a,b,c,d);5、猜数字游戏#include main() int num1,num2; srand(time(NULL); num1=rand()%100; printf(请输入一个0到100之间的整数:); scanf(%d,&num2); while(1) scanf(%d,&num2); if(num1=num2) printf(你真棒,猜对了!); break; else if(num1num2) printf(猜大了,重猜!); else pri

5、ntf(太小了,重猜!); 6、抓交通肇事犯一辆卡车违反交通规则,撞人后逃跑。现场有三人目击事件,但都没有记住车号,只记下车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同; 丙是数学家,他说:四位的车号刚好是一个整数的平方。请根据以上线索求出车号。*问题分析与算法设计按照题目的要求造出一个前两位数相同、后两位数相同且相互间又不同的整数,然后判断该整数是否是另一个整数的平方。#include #include main() int num,i,j,k; for(i=1;i=9;i+) for(j=0;j=9;j+) if(i!=j) num=i*10

6、00+i*100+j*10+j; for(k=1;k*k=num;k+) if(k*k=num) printf(num=%d,k=%dn,num,k); 7、排队把N个同学排成一排, 由前向后按1,2,1,2.报数, 报单数的走出队伍, 报双数的向前靠拢重新组成一排, 然后再1,2,1,2.报数, 报单数的走出队伍, 问剩下最后一个人时, 这个人原来在哪个位置.(N由键盘输入)#include #include struct node int data1; int data2; struct node *next;struct node * create_list(int n) struct

7、node *head,*p,*q; int i; head=(struct node *)malloc(sizeof(struct node); head-data1=1; head-data2=1; p=head; for(i=2;idata1=i; q-data2=i; p-next=q; p=q; p-next=NULL; return(head);struct node * delete_node(struct node *head,struct node *p) struct node *q; if(p=head) head=p-next; p-next=NULL; else q=h

8、ead; while(q-next!=p) q=q-next; q-next=p-next; free(p); return (head);main() struct node *head,*p,*q; int num,i; printf(请输入人数:); scanf(%d,&num); head=create_list(num); while(num1) p=head; while(p) if(p-data1)%2) q=p; p=p-next; head=delete_node(head,q); num-; else p=p-next; p=head; i=1; while(p) p-da

9、ta1=i; i+; p=p-next; printf(最后剩下的人原来的位置是%dn,head-data2);8、古堡算式福尔摩斯到某古堡探险,看到门上写着一个奇怪的算式:ABCDE*?=EDCBA他对华生说:ABCDE应该代表不同的数字,问号也代表某个数字!华生:“我猜也是!于是,两人沉默了好久,还是没有算出合适的结果来。请你利用计算机的优势,找到破解的答案。把ABCDE所代表的数字写出来。#include int func(long n,int m) int num5,i=0,j; long n1=n; while(n1) numi+=n1%10; n1=n1/10; for(i=0;i

10、4;i+) for(j=i+1;j5;j+) if (numi=numj) return 0; n1=n*m; i=4; while(n1) if(n1%10!=numi-) return 0; n1=n1/10; return 1;main() long i; int j; for(i=10000;i100000;i+) for(j=2;j10;j+) if(func(i,j) printf(%ld*%d=%dn,i,j,i*j); 9、约瑟夫问题15个教徒和15个非教徒在深海上遇险,必须将一半的人投入海中,其余的人才能幸免于难,于是想了一个办法:30个人围成一个圆圈,从第一个人开始报数,每

11、数到第九个人就将他扔入大海,如此循环进行直到仅余15个人为止。问教徒怎么站,才能使每次投入大海的都是非教徒。#include #include # define M 15# define N 15struct node int data1; /int data2; struct node *next;struct node * create_list(int n) struct node *head,*p,*q; int i; head=(struct node *)malloc(sizeof(struct node); head-data1=1; /head-data2=1; p=head;

12、 for(i=2;idata1=i; /q-data2=i; p-next=q; p=q; p-next=head; return(head);struct node * delete_node(struct node *head,struct node *p) struct node *q; if(p=head) head=p-next; p-next=NULL; else q=head; while(q-next!=p) q=q-next; q-next=p-next; free(p); return (head);void print_list(struct node *head) st

13、ruct node *p; printf(%5d,head-data1); p=head-next; while(p!=head) printf(%5d,p-data1); p=p-next; main() struct node *head,*p,*q; int num=M+N,n; head=create_list(M+N); p=head; while(numN) n=1; while(nnext; n+; q=p; p=p-next; head=delete_node(head,q); num-; print_list(head);10、捕鱼问题A、B、C、D、E五个人在某天夜里合伙去

14、捕鱼,到第二天凌晨时都疲惫不堪,于是各自找地方睡觉。日上三杆,A第一个醒来,他将鱼分为五份,把多余的一条鱼扔掉,拿走自己的一份。B第二个醒来,也将鱼分为五份,把多余的一条鱼扔掉,保持走自己的一份。C、D、E依次醒来,也按同样的方法拿走鱼。问他们合伙至少捕了多少条鱼?#include main() int i;long num=1; for(i=1;i=5;i+) num=(num*5)+1; printf(num=%dn,num);11、出售金鱼买卖提将养的一缸金鱼分五次出售系统上一次卖出全部的一半加二分之一条;第二次卖出余下的三分之一加三分之一条;第三次卖出余下的四分之一加四分之一条;第四次

15、卖出余下的五分之一加五分之一条;最后卖出余下的11条。问原来的鱼缸中共有几条金鱼?*问题分析与算法设计题目中所有的鱼是分五次出售的,每次卖出的策略相同;第j次卖剩下的(j+1)分之一再加1/(j+1)条。第五次将第四次余下的11条全卖了。假定第j次鱼的总数为X,则第j次留下:x-(x+1)/(j+1)当第四次出售完毕时,应该剩下11条。若X满足上述要求,则X就是题目的解。应当注意的是:(x+1)/(j+1)应满足整除条件。试探X的初值可以从23开始,试探的步长为2,因为X的值一定为奇数。*程序说明与注释#includeint main()int i,j,n=0,x; /*n为标志变量*/for

16、(i=23;n=0;i+=2) /*控制试探的步长和过程*/for(j=1,x=i;j=11;j+) /*完成出售四次的操作*/if(x+1)%(j+1)=0) /*若满足整除条件则进行实际的出售操作*/x-=(x+1)/(j+1);else x=0;break; /*否则停止计算过程*/if(j=5&x=11) /*若第四次余下11条则满足题意*/printf(There are %d fishes at first.n,i); /*输出结果*/n=1; /*控制退出试探过程*/12、亲密数如果整数A的全部因子(包括1,不包括A本身)之和等于B;且整数B的全部因子(包括1,不包括B本身)之和

17、等于A,则将整数A和B称为亲密数。求3000以内的全部亲密数。*问题分析与算法设计按照亲密数定义,要判断数a是否有亲密数,只要计算出a的全部因子的累加和为b,再计算b的全部因子的累加和为n,若n等于a则可判定a和b是亲密数。计算数a的各因子的算法:用a依次对i(i=1a/2)进行模运算,若模运算结果等于0,则i为a的一个因子;否则i就不是a的因子。*程序说明与注释#includeint main()int a,i,b,n;printf(There are following friendlynumbers pair smaller than 3000:n);for(a=1;a3000;a+)

18、/*穷举1000以内的全部整数*/ for(b=0,i=1;i=a/2;i+) /*计算数a的各因子,各因子之和存放于b*/if(!(a%i)b+=i; /*计算b的各因子,各因子之和存于n*/for(n=0,i=1;i=b/2;i+)if(!(b%i)n+=i;if(n=a&ab)printf(%4d.%4d ,a,b); /*若n=a,则a和b是一对亲密数,输出*/13.完全数如果一个数恰好等于它的因子之和,则称该数为“完全数”。*问题分析与算法设计根据完全数的定义,先计算所选取的整数a(a的取值11000)的因子,将各因子累加于m,若m等于a,则可确认a为完全数。*程序说明与注释#inc

19、ludeint main()int a,i,m;printf(There are following perfect numbers smaller than 1000:n);for(a=1;a1000;a+) /*循环控制选取11000中的各数进行判断*/for(m=0,i=1;i=a/2;i+) /*计算a的因子,并将各因子之和m=a,则a是完全数输出*/if(!(a%i)m+=i;if(m=a)printf(%4d ,a);printf(n);14、加密题目:某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后除以10,用余数代替该数

20、字,再将第一位和第四位交换,第二位和第三位交换。编程实现输入一个电话号码,得到加密后的数字。1.程序分析:2.程序源代码:#include main()int a,i,aa4,t;scanf(%d,&a);aa0=a%10;aa1=a%100/10;aa2=a%1000/100;aa3=a/1000;for(i=0;i=3;i+)aai+=5;aai%=10;for(i=0;i=0;i-)printf(%d,aai);15、巧夺偶数桌子上有25颗棋子,游戏双方轮流取子,每人每次最少取走一颗棋子,最多可取走3颗棋子。双方照这样取下去,直到取光所有的棋子。于是双方手中必然一方为偶数,一方为奇数,偶

21、数方为胜者。请编程实现人机游戏。#include stdio.hmain() int a, s, w, i; a = 25; s = 0; w = 0; while( a != 0) i= rand()%3 + 1; printf(这次机器取的粒数是:%dn,i); if( a i) s = s + i; a = a - i; else s = s + a; a = 0; while(1) printf(请输入你这次要取的粒数:); scanf(%d,&i); if(i=1) break; else printf(输入不正确,请重新输入13之间的数:n); if( a i) w = w + i

22、; a = a - i; else w = w + a; a = 0; printf(你一共取的粒数是:%d,机器一共取的粒数是:%d,w,s); if( w%2=0 ) printf(所以你赢了n); else printf(所以你输了n);16数字移动在图中的九个点上,空出中间的点,其余的点上任意填入数字1到8;1的位置固定不动,然后移动其余的数字,使1到8顺时针从小到大排列.移动的规律是:只能将数字沿线移向空白的点.请编程显示数字移动过程。#includeint a8=0,1,2,5,8,7,6,3; int b9; int c8; int count=0; void show_scre

23、en() int i; printf(第%2d次移动n,count+); for(i=0;i9;i+) if(i%3=2) printf(%2dn,bi); else printf(%2d,bi);int main() int i,j,k,t;void show_screen();printf(请输入8个18之间的数字:n);for(i=0;i8;i+) scanf(%d,&bai);show_screen();t=-1;for(j=0;j8;j+) if(baj=1) t=j;break; for(j=0;j8;j+) cj=a(j+t)%8;for(i=2;i9;i+) /i:正在处理的数字, for(j=i-1;j8;j+) if(bcj=i&j!=i-1) b4=i; bcj=0;show_screen(); for(k=j;k!=i-1;k-) bck=bck-1; bck-1=0; show_screen(); bck=i; b4=0; show_screen(); else if(bcj=i) break; /数字i在正确的位置

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1