C语言经典编程题.doc
《C语言经典编程题.doc》由会员分享,可在线阅读,更多相关《C语言经典编程题.doc(14页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、“蓝桥杯”软件大赛练习题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、求最大公约数和最小公倍数#include int zdgxs(int x,int y) int t; if(xy) t=x;x=y;y=t; t=x%y; while(t)
2、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和%d的最小公倍数是%dn,a,b, gbs);3、请找出十个最小的连续自然数,它们个个都是合数(非素数)#include #include int
3、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); else if(a1c1) printf(%d/%d%d/%dn,a,b,c,d); else printf(%d/%d=%d/%dn,a,b,c,d)
4、;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 printf(太小了,重猜!); 一辆卡车违反交通规则,撞人后逃跑。现场有三人目击事件,但都没有记住车号,只记下车号的一些特征。甲说:牌照的前两位数字是相同的
5、;乙说:牌照的后两位数字是相同的,但与前两位不同; 丙是数学家,他说:四位的车号刚好是一个整数的平方。请根据以上线索求出车号。*问题分析与算法设计按照题目的要求造出一个前两位数相同、后两位数相同且相互间又不同的整数,然后判断该整数是否是另一个整数的平方。#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*1000+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个同学排
6、成一排, 由前向后按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 node *head,*p,*q; int i; head=(struct node *)malloc(sizeof(struct node); head-data1=1;
7、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=head;while(q-next!=p)q=q-next;q-next=p-next; free(p); return (head);main() struct node *
8、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-data1=i;i+; p=p-next; printf(最后剩下的人原来的位置是%dn,head-data2);8、古堡算式福尔摩斯到某古堡探险,看到门上写着一个奇怪的算式:ABCDE*
9、?=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;i4;i+) for(j=i+1;j5;j+) if (numi=numj) return 0; n1=n*m; i=4; while(n1) if(n1%10!=numi-) retur
10、n 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个人围成一个圆圈,从第一个人开始报数,每数到第九个人就将他扔入大海,如此循环进行直到仅余15个人为止。问教徒怎么站,才能使每次投入大海的都是非教徒。#include #include # define M 15# define
11、 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; for(i=2;idata1=i; /q-data2=i; p-next=q; p=q; p-next=head; return(head);struct node * delete_
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 经典 编程
限制150内