“蓝桥杯”软件大赛练习题
求素数 | 最大公约数 和最小公倍数 | 连续自然数 |
分数比较 | 猜数字游戏 | 抓交通肇事犯 |
古堡算式 | 约瑟夫问题 | 捕鱼问题 |
出售金鱼 | 亲密数 | 完全数 |
加密 | 巧夺偶数 | 数字移动 |
1、求101~200之间一共有多少个素数
#include <stdio.h>
#include <math.h>
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("101~200之间素数个数是%d",num);
}
2、求最大公约数和最小公倍数
#include <stdio.h>
int zdgxs(int x,int y)
{
int t;
if(x<y)
{
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的最大公约数是%d\n",a,b, gxs);
printf("%d和%d的最小公倍数是%d\n",a,b, gbs);
}
3、请出十个最小的连续自然数,它们个个都是合数(非素数)
#include <stdio.h>
#include <math.h>
int su(long m)
{
int i,n=1;
for(i=2;i<=sqrt(m);i++)
if (m%i==0)
{
n=0; break;
}
return n;
}
main()
{
int num=0;
long i,a[10];
for(i=1;;i++)
{
if(!su(i))
a[num++]=i;
else
num=0;
if(num>=10) break;
}
for(i=0;i<num;i++)
printf("%ld\n",a[i]);
}
4、分数比较
比较两个分数的大小。
*问题分析与算法设计
人工方式下比较分数大小最常用的方法是:进行分数的通分后比较分子的大小。可以编程模拟手式方式。
人工方式下比较分数大小最常用的方法是:进行分数的通分后比较分子的大小。可以编程模拟手式方式。
#include <stdio.h>
int zdgxs(int x,int y)
{
int t;
if(x<y)
{
t=x;x=y;y=t;
}
t=x%y;
while(t)
{
x=y;
y=t;
t=x%y;
}
c语言游戏编程题经典100例 return y;
}
int zxgbs(int x,int y)
{
return (x*y/zdgxs(x,y));
}
main()
{
int a,b,c,d,gbs,a1,c1;
printf("请输入第一个数的分子和分母:");
scanf("%d%d",&a,&b);
printf("请输入第二个数的分子和分母:");
scanf("%d%d",&c,&d);
printf("你所输入的两个分数是%d/%d,%d/%d\n",a,b,c,d);
gbs=zxgbs(b,d);
a1=gbs/b*a;
c1=gbs/d*c;
if(a1>c1) printf("%d/%d>%d/%d\n",a,b,c,d);
else if(a1<c1) printf("%d/%d<%d/%d\n",a,b,c,d);
else printf("%d/%d=%d/%d\n",a,b,c,d);
}
5、猜数字游戏
#include <stdio.h>
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(num1<num2) printf("猜大了,重猜!");
else printf("太小了,重猜!");
}
}
}
6、抓交通肇事犯
一辆卡车违反交通规则,撞人后逃跑。现场有三人目击事件,但都没有记住车号,只记下车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同; 丙是数学家,他说:四位的车号刚好是一个整数的平方。请根据以上线索求出车号。
*问题分析与算法设计
按照题目的要求造出一个前两位数相同、后两位数相同且相互间又不同的整数,然后判断该整数是否是另一个整数的平方。
按照题目的要求造出一个前两位数相同、后两位数相同且相互间又不同的整数,然后判断该整数是否是另一个整数的平方。
#include <stdio.h>
#include <math.h>
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=%d\n",num,k);
}
}
7、排队
把N个同学排成一排, 由前向后按1,2,报数, 报单数的走出队伍, 报双数的向前靠拢重新组成一排, 然后再1,2,报数, 报单数的走出队伍, 问剩下最后一个人时, 这个人原来在哪个位置.(N由键盘输入)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论