0
点赞
收藏
分享

微信扫一扫

每日刷题计划-2-11

少_游 2022-02-12 阅读 51

BC135 KiKi求质数个数

描述

KiKi知道了什么是质数(只能被1和他自身整除的数),他现在想知道所有三位整数中,有多少个质数。

输入描述:

输出描述:

一行,一个整数,表示所有三位整数中,有多少个质数。

#include<stdio.h>

int Prime(int n)
{
   int i = 0;
    for(i = 2; i < n; i++)
    {
        if(n % i == 0)
           return 0;
    }
        return 1;
}
int main()
{
    int i = 0;
    int count = 0;
    //所有三位数
    for(i = 100; i < 1000; i++)
    {
        if(Prime(i) == 1)
        count ++;
    }
    printf("%d\n",count);
    return 0;
}

BC136 KiKi去重整数并排序

描述

给定一个整数序列,KiKi想把其中的重复的整数去掉,并将去重后的序列从小到大排序输出。

输入描述:

第一行,输入一个整数n,表示序列有n个整数。

第二行输入n个整数(每个整数大于等于1,小于等于1000),整数之间用空格分隔。

输出描述:

去重并且从小到大排列的整数序列,整数之间用空格分隔。

示例1

输入:

6
5 3 3 4 2 2

复制

输出:

2 3 4 5

复制

#include<stdio.h>
int main(){

      int n,x,i,j;
      scanf("%d",&n);
      int a[1001]={0};
      for(i=1;i<=n;i++)
      {
        scanf("%d",&x);
           a[x]=1;
      }
     for(i=1;i<=1000;i++)
         if(a[i]==1)
             printf("%d ",i);
    //printf("\n");
        return 0;
}

BC137 KiKi判断上三角矩阵

描述

KiKi想知道一个n阶方矩是否为上三角矩阵,请帮他编程判定。上三角矩阵即主对角线以下的元素都为0的矩阵,主对角线为从矩阵的左上角至右下角的连线。

输入描述:

第一行包含一个整数n,表示一个方阵包含n行n列,用空格分隔。 (2≤n≤10)

从2到n+1行,每行输入n个整数(范围-231~231-1),用空格分隔,共输入n*n个数。

输出描述:

一行,如果输入方阵是上三角矩阵输出"YES"并换行,否则输出"NO"并换行。

示例1

输入:

3
1 2 3
0 4 5
0 0 6

复制

输出:

YES

复制

示例2

输入:

4
1 2 3 4
5 6 7 8
9 0 11 12 
13 0 0 16

复制

输出:

NO

复制

#include<stdio.h>
int main()
{
    int n = 0;
    //1.输入n的值
    scanf("%d",&n);
    int arr[n][n];//变长数组不可以初始化
    int i = 0;
    int j = 0;
    //录入数据到n*n矩阵中
    for(i = 0; i < n; i++)
    {
        for(j = 0; j < n; j++)
        {
            scanf("%d",&arr[i][j]);
        }
    }
    //判断是否为上三角矩阵
    //只需要看下三角部分即可(i > j)
      for(i = 0; i < n; i++)
    {
        for(j = 0; j < n; j++)
        {
           if(i > j)
           {
               if(arr[i][j] != 0)
               {
                   printf("NO\n");
                   break;
                   //直接return更方便,
            //也可以写成break,但跳出去还要判断i==n.j==n
                   //而且还要进行两个break,容易出错
               }
           }
        }
          //break跳到这里,并为完全跳出两层for循环!!!
          //所以若用break要判断两次
       if(i > j)
           {
               if(arr[i][j] != 0)
                   break;
            }
    }
    if(i == n && j == n)
        printf("YES\n");
    return 0;
}
举报

相关推荐

0 条评论