实验6 循环结构(2)

1035 打印菱形图案

由键盘输入正数n(n<30),要求输出如下2*n+1行的菱形图案。
输出格式
菱形右边不留多余空格
输入样例
2
输出样例
  *
 ***
*****
 ***
  *
#include <stdio.h>
#include <stdlib.h>
int main()
{
    int n,line,h;
    scanf("%d",&n);
     //上半部分
    for(line=1;line<=n+1;line++)//控制换行
    {
        for(h=1;h<=n+line;h++)//控制每一行的打印,该行需要打印n+line个
        {
            if(h<=n+1-line)//打印的空格数
                printf(" ");
            else
                printf("*");
        }
        printf("\n");
    }
    //下半部分
      for(line=n;line>0;line--)//这里反过来,后面的与上半相同
    {
        for(h=1;h<=n+line;h++)
        {
            if(h<=n+1-line)
                printf(" ");
            else
                printf("*");
        }
        printf("\n");
    }
    return 0;
}
//标程
#include "stdio.h"
#define abs(x) ((x)>0?(x):-(x))//也可以直接#include<math.h>
main()
{   int n,i,j;
   scanf("%d",&n);
   for(i=-n;i<=n;i++)
   {
        for(j=1;j<=abs(i);j++)  printf(" ");
        //打印完空格后来到下一个for循环语句打印*
        for(j=1;j<=2*n+1-2*abs(i);j++)  printf("*");
        printf("\n");
   }
}

1028 求素数

输出2到200之间(包括2、200)的所有素数(注:要求1行1个素数,按由小到大的顺序输出)。
输入样例
(无)
输出样例
2
3
5
7
……
199
#include "stdio.h"
int main()
{
   int i,j;
   for(i=2;i<200;i++)
   {
       int flag=0;//记得每个数循环的时候将flag重新赋值为0!!
       for(j=2;j<i;j++)
       {
           if(i%j==0)
            flag=1;
       }
       if(flag==0)
        printf("%d\n",i);
   }
}

1137 找满足要求的数字

输出1到9999中能被7整除,而且至少有一位数字是5的所有数字
输出格式
一行一个
输出样例
35
56
105
154
......
#include <stdio.h>
#include <stdlib.h>
int main()
{
   for(int i=1;i<=9999;i++)
   {
       if(i%7==0)
       {
           if(i%10==5||i/10%10==5||i/100%10==5||i/1000==5)
            printf("%d\n",i);
            }
   }
    return 0;
}
//标程
#include "stdio.h"
main()
{ int i, j;
  for(i=7; i<=9999; i=i+7)
  { j=i;
    while(j!=0)
    { if(j%10==5) break;
      j=j/10;
    }
    if(j!=0) printf("%d\n", i);
  }
}

1038 打印图案

由键盘输入正数n(n<10),要求输出如下中间数字为n的菱形图案。
输出格式
菱形右边不留多余空格
输入样例
4
输出样例
   1
  121
 12321
1234321
 12321
  121
   1
#include "stdio.h"
#include  "math.h"
int main(){
    int h,n,i,j,k;
    scanf("%d",&n);//输入半层数,例如上图为4.
    for(i=1-n;i<=n-1;i++)//第几层
    {
        for(j=0;j<abs(i);j++)
           printf(" ");//先输入空格
        for(k=1;k<=n-abs(i);k++)
           printf("%d",k);//再输入*数
           for(h=n-abs(i)-1;h>=1;h--)
             printf("%d",h);
        printf("\n");//记得换行
    }
    return 0;
}
//标程
#include<stdio.h>
#define abs(x) ((x)>0?(x):-(x))
main()
{   int n,i,j;
    scanf("%d",&n); 
    n--;
    for(i=-n;i<=n;i++)
    {   for(j=0;j<abs(i);j++) printf(" ");
        for(j=-(n-abs(i));j<=n-abs(i);j++) printf("%d",n+1-abs(j)-abs(i));
        printf("\n");
    }
}

1  打印数字空心菱形 

由键盘输入n(n为奇数),打印如下图空心菱形
例n=7
   1
  2 2
 3   3
4     4
 3   3
  2 2
   1
输入格式
整数
输出格式
如题
输入样例
3
输出样例
 1
2 2
 1
#include<stdio.h>
int main()
{
    int n;
    scanf("%d",&n);
    int m;
    int i,j,k,t=1;
    //上半部分
      m=(n+1)/2;//上半部分的行数,包括中间那行
    for(i=1;i<=m;i++)
    {
        for(j=1;j<=m-i;j++)
        {
            printf(" ");//打印每行前面的空格
        }
        printf("%d",i);//打印每行第一个数
        if(i>=2)//分1和大于等于2的情况
        {
            for(k=0;k<t;k++)
            {
                printf(" ");
            }
            printf("%d",i);
            t=t+2;//每行中间的空格比上一行多两个空格
        }
        printf("\n");
    }
    //下半部分
    t=k-2;//先减两个空格
    n=m;
    m=m-1;//下半部分的行数,上部分-1(因为不包括中间的那行)
    for(i=m;i>0;i--)
    {
        for(j=1;j<=n-i;j++)
        {
            printf(" ");
        }
        printf("%d",i);
        for(k=1;k<=t;k++)
        {
            printf(" ");
        }
        if(i>=2)
        {
            printf("%d\n",i);
        }
        t=t-2;
    }
    return 0;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值