“蓝桥杯”软件大赛练习题
求素数
最大公约数
和最小公倍数
连续自然数
分数比较
猜数字游戏
抓交通肇事犯
古堡算式
约瑟夫问题
捕鱼问题
出售金鱼
亲密数
完全数
加密
巧夺偶数
数字移动
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小时内删除。