编程实战——编程初学者入门101~110

编程实战——编程初学者入门91~100

  • 101. 反斜线形图案
  • 102. 正斜线形图案
  • 103. X形图案
  • 104. 空心正方形图案
  • 105. 空心三角形图案
  • 106. 包含数字9个数
  • 107. 矩阵计算
  • 108. 有序序列插入一个数
  • 109. 序列中整数去重
  • 110. 矩阵相等判定


101. 反斜线形图案

题目描述:

KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的反斜线形图案。

输入描述:

多组输入,一个整数(2~20),表示输出的行数,也表示组成反斜线的“*”的数量。

输出描述:

针对每行输入,输出用“*”组成的反斜线。

示例:

示例1
输入:4
输出:
*   
 *  
  * 
   *
   
示例 2
输入:5
输出:
*    
 *   
  *  
   * 
    *

c语言版本:

// 坑,吃一堑长一智,输出空格
#include

int     main(void){
        int n;
        while(scanf("%d", &n)!=EOF){
                for(int i=0;i<n;++i){
                        for(int j=0;j<i;++j)printf(" ");
                        printf("*");
                        for(int l=n-i;l>0;l--)printf(" ");
                        printf("\n");
                }
        }
}

c++版本:

java版本:

python版本:


102. 正斜线形图案

题目描述:

KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的正斜线形图案。

输入描述:

多组输入,一个整数(2~20),表示输出的行数,也表示组成正斜线的“*”的数量。

输出描述:

针对每行输入,输出用“*”组成的正斜线。

示例:

示例1
输入:4
输出:
   *
  * 
 *  
*   

示例 2
输入:5
输出:
    *
   * 
  *  
 *   
* 

c语言版本:

// 坑,吃一堑长一智,输出空格
#include

int     main(void){
        int n;
        while(scanf("%d", &n)!=EOF){
                for(int i=0;i<n;++i){
                        for(int l=n-i;l>1;l--)printf(" ");
                        printf("*");
                        for(int j=0;j<i;++j)printf(" ");
                        printf("\n");
                }
        }
}

c++版本:

java版本:

python版本:


103. X形图案

题目描述:

KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的X形图案。

输入描述:

多组输入,一个整数(2~20),表示输出的行数,也表示组成“X”的反斜线和正斜线的长度。

输出描述:

针对每行输入,输出用“*”组成的X形图案。

示例:

示例 1
输入:5
输出:
*   *
 * * 
  *  
 * * 
*   *
示例 2
输入:6
输出:
*    *
 *  * 
  **  
  **  
 *  * 
*    *

c语言版本:

#include 

int     main(void){
        int n;
        while (scanf("%d",&n)!=EOF) {
                for (int i = 0; i < n; ++i) {
                        for(int j=0;j<n;j++){
                                if(i==j || j==n-i-1) printf("*");
                                else printf(" ");
                        }
                        printf("\n");
                }
        }
        return 0;
}

c++版本:

java版本:

python版本:


104. 空心正方形图案

题目描述:

KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的“空心”正方形图案。

输入描述:

多组输入,一个整数(3~20),表示输出的行数,也表示组成正方形边的“*”的数量。

输出描述:

针对每行输入,输出用“*”组成的“空心”正方形,每个“*”后面有一个空格。

示例:

示例1
输入:4
输出:
* * * * 
*     * 
*     * 
* * * * 

c语言版本:

#include

int main(void ) {
    int n;
    while (scanf("%d", &n)!=EOF) {
        for(int i=0;i<n;i++)printf("* ");
        printf("\n");
        for(int i=1;i<n-1;i++){
            printf("* ");
            for(int i=1;i<n-1;++i)printf("  ");
            printf("* \n");
        }
        for(int i=0;i<n;i++)printf("* ");
        printf("\n");
    }
    return 0;
}

c++版本:

java版本:

python版本:


105. 空心三角形图案

题目描述:

KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的“空心”三角形图案。

输入描述:

多组输入,一个整数(3~20),表示输出的行数,也表示组成三角形边的“*”的数量。

输出描述:

针对每行输入,输出用“*”组成的“空心”三角形,每个“*”后面有一个空格。

示例:

示例1
输入:4
输出:
*       
* *     
*   *   
* * * * 

c语言版本:

#include

int main(void ) {
    int n;
    while (scanf("%d", &n)!=EOF) {
        printf("* ");
        for(int i=1;i<n;++i)printf("  ");
        printf("\n");
        for(int i=1;i<n-1;i++){
            printf("* ");
            for(int j=1;j<i;j++)printf("  ");
            printf("* ");
            for(int j=1;j<n-i;++j)printf("  ");
            printf("\n");
        }
        for(int j=0;j<n;j++) printf("* ");
        printf("\n");
    }
    return 0;
}

c++版本:

java版本:

python版本:


106. 包含数字9个数

题目描述:

今年是2019年,KiKi想知道1~2019中有多少个包含数字9的数。包含数字的数是指有某一位是“9”的数,例如“2019”、“199”等。

输入描述:

输出描述:

一行,一个整数,表示1~2019中共有多少个数包含数字9。

c语言版本:

#include 

int main(void ) {
    int n=0;
    int m;
    for(int i=1;i<2020;++i){
        m = i;
        while(m){
            if(m%10 == 9){
                n++;
                break;
            }
            m /=10;
        }
    }
    printf("%d\n",n);
    return 0;
}

c++版本:

java版本:

python版本:


107. 矩阵计算

题目描述:

输入NxM矩阵,矩阵元素均为整数,计算其中大于零的元素之和。

输入描述:

第一行为N M(N: 矩阵行数;M: 矩阵列数,且M,N<=10),接下来的N行为矩阵各行。

输出描述:

一行,其中大于零的元素之和

示例:

示例1
输入:
3 3
2 3 4
-5 -9 -7
0 8 -4
输出:17

c语言版本:

#include 

int main(void ) {
    int m,n;
    int num,sum=0;
    scanf("%d %d", &m,&n);
    getchar();

    for(int i=0;i<m;++i){
        for(int j=0;j<n;++j){
            scanf("%d", &num);
            if(num>0)sum+=num;
        }
        getchar();
    }

    printf("%d\n",sum);
    return 0;
}

c++版本:

java版本:

python版本:


108. 有序序列插入一个数

题目描述:

有一个有序数字序列,从小到大排序,将一个新输入的数插入到序列中,保证插入新数后,序列仍然是升序。

输入描述:

共三行,
第一行输入一个整数(0≤N≤50)。
第二行输入N个升序排列的整数,输入用空格分隔的N个整数。
第三行输入想要进行插入的一个整数。

输出描述:

输出为一行,N+1个有序排列的整数。

示例:

示例1
输入:
7 
5 30 40 50 60 70 90
20
输出:5 20 30 40 50 60 70 90

c语言版本:

#include 
#include 

int main(void ) {
        int m;
        int num;
        scanf("%d", &m);
        getchar();

        int* a=(int*)malloc(sizeof(int)*8);
        for(int i=0;i<m;++i) scanf("%d", a+i);
        getchar();

        scanf("%d",&num);

        int id=-1;
        if(num<a[0]){
                printf("%d ", num);
                for(int i=0;i<m;++i)printf("%d ",a[i]);
        }else  if(num>a[m-1]){
                for(int i=0;i<m;++i)printf("%d ",a[i]);
                printf("%d ", num);
        }else{
                for(int i=0;i<m;++i){
                        if(a[i]<num)printf("%d ",a[i]);
                        else{
                                id = i;
                                break;
                        }
                }
                printf("%d ",num);
                for(int i=id;i<m;++i)printf("%d ",a[i]);
        }

        printf("\n");
        free(a);
        return 0;
}

c++版本:

java版本:

python版本:


109. 序列中整数去重

题目描述:

输入n个整数的序列,要求对这个序列进行去重操作。所谓去重,是指对这个序列中每个重复出现的整数,只保留该数第一次
出现的位置,删除其余位置。

输入描述:

输入包含两行,第一行包含一个正整数n(1 ≤ n ≤ 1000),表示第二行序列中数字的个数;第二行包含n个整数
(范围1~5000),用空格分隔。

输出描述:

输出为一行,按照输入的顺序输出去重之后的数字,用空格分隔。

示例:

示例1
输入:
5
10 12 93 12 75
输出:
10 12 93 75

c语言版本:

#include 
#include 

int main(void ) {
        int m;
        scanf("%d", &m);
        getchar();

        int* a=(int*)malloc(sizeof(int)*8);
        int* b=(int*)malloc(sizeof(int)*8);
        int id=1;
        for(int i=0;i<m;++i) scanf("%d", a+i);
        b[0]=a[0];
        getchar();
        int flag=0;
        for(int i=0;i<m;i++){
                for(int j =0;j<id;j++){
                        if(a[i]==a[j]){
                                flag = 1;
                                break;
                        }
                }
                if(flag)flag = 0;
                else b[id++]=a[i];
        }
        for(int i=0;i<id;++i)printf("%d ",b[i]);
        printf("\n");
        free(b);
        free(a);
        return 0;
}

c++版本:

java版本:

python版本:


110. 矩阵相等判定

题目描述:

KiKi得到了两个n行m列的矩阵,他想知道两个矩阵是否相等,请你回答他。(当两个矩阵对应数组元素都相等时两个矩阵相等)。

输入描述:

第一行包含两个整数n和m,表示两个矩阵包含n行m列,用空格分隔。

从2到n+1行,每行输入m个整数(范围-231~231-1),用空格分隔,共输入n*m个数,表示第一个矩阵中的元素。

从n+2行到2n+1,每行输入m个整数(范围-231~231-1),用空格分隔,共输入n*m个数,表示第二个矩阵中的元素。
1 < n,m < 10

输出描述:

一行,如果两个矩阵相等输出"Yes"并换行,否则输出"No"并换行。

示例:

示例1
输入:
2 2
1 2
3 4
1 2
3 4
输出:Yes

c语言版本:

#include 
#include 

int main(void ) {
        int m,n;
        scanf("%d %d", &m,&n);
        getchar();

        int** a=(int**)malloc(sizeof(int*)*m);
        for(int i=0;i<m;++i)a[i]=(int*)malloc(sizeof(int)*n);
        for(int i=0;i<m;++i) {
                for(int j=0;j<n;++j) scanf("%d",a[i]+j);
                getchar();
        }

        int flag=0;
        int num;
        for(int i=0;i<m;++i) {
                for(int j=0;j<n;++j){
                        scanf("%d", &num);
                        if(num != a[i][j]){
                                flag = 1;
                                break;
                        }
                }
                if(flag)break;
                getchar();
        }
        if(!flag) printf("Yes\n");
        else printf("No\n");
        for(int i=0;i<m;++i)free(a[i]);
        free(a);
        return 0;
}

c++版本:

java版本:

python版本:


本题目全部来自牛客网,如果侵权,请留言删除

你可能感兴趣的:(编程实战)