高级语言程序设计--实验6 循环结构(二)

1028 求素数

/*输出2到200之间(包括2、200)的所有素数
(注:要求1行1个素数,按由小到大的顺序输出)。

输出样例
2
3
5
7
……
199
*/

#include<stdio.h>
int is_ss(int x)//构造函数判断是否为素数
{
    int j,a=sqrt(x);
    for(j=2;j<=a;j++)
    {
        if(x%j==0)
            return 0;
    }
    return 1;
}


int main()
{
    int i;
    for(i=2;i<=200;i++)//打印2-200所有素数
    {
        if(is_ss(i)==1)
            printf("%d\n",i);
    }
    return 0;
}

拓展题:

/*输入一个数,求一个大于等于它且和它的差最小的素数*/
#include <stdio.h>
#include <math.h>

int sushu(int n)
{
	for(int i=2;i<n;i++)//判断是否是素数 
	{
		if(n%i==0)
			return 0;
	}
	return 1;
}
int main()
{
	int n,i,m;
	scanf("%d",&n);
	
	while(m!=1){
		m=sushu(n);//m是return回来的值
		if(m==0)/*m=0说明n不是素数,
		依次找下一个数,直到找到为止。 */
			n++; 
	}
	printf("%d",n);
	return 0;	
}

1035 打印菱形

/*Description
由键盘输入正数n(n<30),要求输出如下2*n+1行的菱形图案

输出格式
菱形右边不留多余空格
输入样例
2
输出样例
  *
 ***
*****
 ***
  *
*/
#include<stdio.h>
#include<math.h>
int main()
{
    int i,j,n;//i,j是循环次数
    scanf("%d",&n);
    /*中间*最多那一行为0轴,
    向上依次i为-1,-2...向下i为1,2..
    因此从第一行开始就为-n*/
    for(i=-n;i<=n;i++)
    { 
        for(j=1;j<=abs(i);j++)
            printf(" ");//找每一行的规律,空格数
        for(j=1;j<=2*n+1-2*abs(i);j++)
            printf("*");//找每一行的规律,*数
        printf("\n");
    }
    return 0;
}

1038 打印数字菱形

/*Description
由键盘输入正数n(n<10),
要求输出如下中间数字为n的菱形图案。

输出格式
菱形右边不留多余空格

输入样例
4

输出样例
   1
  121
 12321
1234321
 12321
  121
   1
*/
#include<stdio.h>
#include<math.h>
int main()
{
    int i,j,n;//i,j是循环次数
    scanf("%d",&n);
    for(i=-n+1;i<=n-1;i++)
    {   
        for(j=1;j<=abs(i);j++)
            printf(" ");//找每一行的规律,空格数
        for(j=1;j<=n-abs(i);j++)
            printf("%d",j);//找每一行的规律,递增
        for(j=n-1-abs(i);j>=1;j--)
            printf("%d",j);//递减
        printf("\n");
    }
    return 0;

}

拓展题:

/*
7
*******
*** ***
**   **
*     *
**   **
*** ***
*******
*/

#include <stdio.h>
int main()
{
  int n,i,j,k;
  scanf("%d",&n);
  for(i=1;i<=n/2+1;i++)
  {
      for(j=n/2+1;j>=1&&j<=n/2+1;j--)
      {
          if(j>=i)
             printf("*");
          else
             printf(" ");

      }
      for(k=1;k<=n/2;k++)
      {
          if(k<=i-2)
             printf(" ");
          else
             printf("*");
      }
      printf("\n");
  }
  for(i=1;i<=n/2;i++)
  {
      for(j=1;j<=n/2+1;j++)
      {
          if(j<=i+1)
             printf("*");
          else
             printf(" ");
      }
      for(k=n/2;k>=1&&k<=n/2;k--)
      {
          if(k>=i+2)
             printf(" ");
          else
             printf("*");
      }
      printf("\n");
  }
  return 0;
}

1137 找满足要求的数字

输出19999中能被7整除,而且至少有一位数字是5的所有数字

输出格式
一行一个

输出样例
35
56
105
154
#include<stdio.h>
int main()
{
    int i;
    for(i=1;i<=9999;i++)
    {
        if(i%7==0)//能被7整除的
        {
            if(i>10&&i<99)//两位数字(例如25、52)
            {
                int a = i % 10; //个位
                int b = i / 10; //十位
                if(a == 5 || b == 5)
                 printf("%d\n",i);
            }
            else if (i>100&&i<999)
            {  
            //三位数字(例如125、253、532)
            //一定要记住要分别把个位,十位,百位用字母表示出来
                 int c = i % 10;  //个位
                 int e = i / 100;  //百位
                 int d = i / 10 % 10; //十位
                 if(c ==5 || d == 5 || e == 5)
                     printf("%d\n",i);
             }


            else if( (i>1000&&i<9999))//四位数字
            {
                int w = i % 10; //个位
                int z = i / 1000;//千位
                int y = i / 100 % 10;//百位
                int x = i / 10  %10;//十位
                if(w == 5 || x == 5 || y == 5 || z == 5)
                     printf("%d\n",i);
            }
        }
    }
    return 0;
}

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值