C语言习题~day9

简介: C语言习题

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

输入描述:

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

输出描述:

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

#include <stdio.h>
 
int main() {
    int a;
    while (scanf("%d", &a) != EOF) { // 注意 while 处理多个 case
        // 64 位输出请用 printf("%lld") to 
        //printf("%d\n", a + b);
        for(int i =0;i<a;i++)
        {
            for(int j=0;j<a;j++)
            {
                if(i==j ||(i+j)==a-1)
                {
                    printf("*");
                }
                else {
                printf(" ");
                }
            }
            printf("\n");
        }
    }
    return 0;
}

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

输入描述:

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

输出描述:

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

#include <stdio.h>
 
int main() {
    int a;
    while (scanf("%d", &a) != EOF) { // 注意 while 处理多个 case
        // 64 位输出请用 printf("%lld") to 
        //printf("%d\n", a + b);
        for(int i =0;i<a;i++)
        {
            for(int j=0;j<a;j++)
            {
                if(i==0||i==a-1)
                {
                    printf("* ");
 
                }
                else if(j==0||j==a-1)
                {
                    printf("* ");
 
                }
                else
                printf("  ");
 
            }
            printf("\n");
        }
    }
    return 0;
}

3.KiKi有一个矩阵,他想知道转置后的矩阵(将矩阵的行列互换得到的新矩阵称为转置矩阵),请编程帮他解答。

输入描述:


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


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


输出描述:


输出m行n列,为矩阵转置后的结果。每个数后面有一个空格。

#include <stdio.h>
 
int main() {
   int n ,m;
    scanf("%d %d",&n,&m);
    int arr [n][m];
    for (int i= 0;i<n ;i++)
    {
        for(int j =0;j<m; j++)
        {  
        scanf("%d",&arr[i][j]);
        }
    }
    for (int i = 0; i<m ;i++)
    {
        for(int j= 0; j<n ;j++)
        {
        printf("%d ",arr[j][i]);
        }
        //printf("%d",arr[j][i]);
        printf("\n");
    }
    
    return 0;
}

4.输入10个整数,要求按输入时的逆序把这10个数打印出来。逆序输出,就是按照输入相反的顺序打印这10个数。

输入描述:

一行,输入10个整数(范围-231~231-1),用空格分隔。

输出描述:

一行,逆序输出输入的10个整数,用空格分隔。

#include <stdio.h>
 
int main() {
    int arr[10]={0};
    for(int i = 9; i>=0;i--)
    {
        scanf("%d",&arr[i]);
 
    }
    for(int j= 0;j<10;j++)
    {
        printf("%d ",arr[j]);
    }
 
    return 0;
}

5.输入两个升序排列的序列,将两个序列合并为一个有序序列并输出。


数据范围: 1≤𝑛,𝑚≤1000 1≤n,m≤1000  , 序列中的值满足 0≤𝑣𝑎𝑙≤30000 0≤val≤30000


输入描述:


输入包含三行,

第一行包含两个正整数n, m,用空格分隔。n表示第二行第一个升序序列中数字的个数,m表示第三行第二个升序序列中数字的个数。


第二行包含n个整数,用空格分隔。


第三行包含m个整数,用空格分隔。


输出描述:


输出为一行,输出长度为n+m的升序序列,即长度为n的升序序列和长度为m的升序序列中的元素重新进行升序序列排列合并。

#include <stdio.h>
 
int main() {
    int n, m;
    int arr1[1000] = {0};
    int arr2[1000] = {0};
    scanf("%d %d", &n, &m);
    int i, j;
    for (i = 0; i < n; i++) {
        scanf("%d ", &arr1[i]);
    }
    for (j = 0; j < m; j++) {
        scanf("%d", &arr2[j]);
    }
    i=0;
    j=0;
    while (i < n && j < m) {
        if (arr1[i] < arr2[j]) {
 
            printf("%d ", arr1[i]);
            i++;
        } else {
            printf("%d ", arr2[j]);
            j++;
        }
    }
    while (i < n) {
        printf("%d ", arr1[i]);
        i++;
    }
    while (j < m) {
        printf("%d ", arr2[j]);
        j++;
    }
 
 
 
 
    return 0;
}


目录
相关文章
TU^
|
1天前
|
C语言
C语言习题~day39
C语言习题~day39
TU^
4 0
C语言习题~day39
TU^
|
1天前
|
存储 C语言
C语言习题~day38
C语言习题~day38
TU^
2 0
TU^
|
1天前
|
C语言
C语言习题~day37
C语言习题~day37
TU^
3 0
TU^
|
1天前
|
算法 程序员 C语言
C语言习题~day36
C语言习题~day36
TU^
7 1
TU^
|
1天前
|
存储 C语言
C语言习题~day35
C语言习题~day35
TU^
7 1
TU^
|
1天前
|
存储 C语言
C语言习题~day34
C语言习题~day34
TU^
6 1
TU^
|
1天前
|
算法 C语言
C语言习题~day33
C语言习题~day33
TU^
7 1
TU^
|
1天前
|
C语言
C语言习题~day32
C语言习题~day32
TU^
7 1
TU^
|
1天前
|
编译器 C语言
C语言习题~day31
C语言习题~day31
TU^
6 2
TU^
|
1天前
|
C语言
C语言习题~day30
C语言习题~day30
TU^
5 1