每日一题带你玩转C语言(牛客网)

作者:旧梦拾遗186

专栏:C语言编程----小比特成长日记

 

每日励志:

不想认命,就去拼命,我始终相信,付出就会有收获,或大或小,或迟或早,始终不会辜负你的努力。有一种落差是,你总是羡慕别人的成功,自己却不敢开始。 

题目来源点击即可进入:

牛客网 

1.矩阵转置

2.上三角矩阵判定

3.有序序列判断

目录

前言:

一.矩阵转置

1.题目:

2.事例:

3.解析: 

4.答案:

 5.效果:

二. 上三角矩阵判定

1.题目:

2.用例:

3.解析: 

4. 答案:

5.效果: 

三.有序序列判断

1.题目:

2.用例:

3.解析: 

4.答案:

5.效果: 


前言:

今天小编带大家学习,C语言相关题目的练习,做题是深入了解知识的关键,千万不可骄傲自满,要保持空卑心态,虚心学习。 包括(矩阵转置,上三角矩阵判定,有序序列判断)

一.矩阵转置

1.题目:

描述

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

输入描述:

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

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

输出描述:

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

2.事例:

输入:

2 3
1 2 3
4 5 6

输出:

1 4 
2 5 
3 6 

3.解析: 

相当于将行和列交换

 

4.答案:

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

 5.效果:

 

二. 上三角矩阵判定

1.题目:

 

描述

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

输入描述:

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

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

输出描述:

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

2.用例:

输入:

3
1 2 3
0 4 5
0 0 6

输出:

YES

3.解析: 

主对角线以下的元素满足条件列永远小于行,这样我们就可以通过判断元素是否为零,改变变量例如将flag=0变为flag=1,这样就可以确定对角线一下元素是否全为零了

 

4. 答案:

#include<stdio.h>
int main()
{
    int n=0;
    int a[10][10]={0};
    int flag=1;
    scanf("%d",&n);
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
        {
            scanf("%d",&a[i][j]);
        }
    }
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<i;j++)
        {
            if(a[i][j]!=0)
            {
                flag=0;
                goto end;
            }
        }
    }
    end:
        if(flag==1)
        {
            printf("YES\n");
        }
    else{
        printf("NO");
    }
    
    return 0;
}

5.效果: 

 

三.有序序列判断

1.题目:

描述

输入一个整数序列,判断是否是有序序列,有序,指序列中的整数从小到大排序或者从大到小排序(相同元素也视为有序)。

数据范围: 3 \le n \le 50 \3≤n≤50  序列中的值都满足 1 \le val \le 100 \1≤val≤100 

输入描述:

第一行输入一个整数N(3≤N≤50)。

第二行输入N个整数,用空格分隔N个整数。

输出描述:

输出为一行,如果序列有序输出sorted,否则输出unsorted。

 

2.用例:

输入:

5
1 6 9 22 30

输出:

sorted

3.解析: 

可以先定义两个变量flag1,flag2,为0,再将数组遍历,若出现递增则令flag1=1,若出现递减则令flag2=1,若不变则不赋值,若最后flag1+flag2<=1则说明,数组中数字有顺序。

4.答案:

#include<stdio.h>
int main()
{
    int a[100]={0};
    int n=0;
    int i=0;
    int flag1=0;
    int flag2=0;
    
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
       
        scanf("%d",&a[i]);
    }
    for(i=0;i<n-1;i++)
    {
        if(a[i+1]>a[i])
        {
            flag1=1;
        }
        else if(a[i+1]<a[i]){
            flag2=1;
        }
        else 
        {
            ;
        }
    }
    if(flag1+flag2<=1)
    {
        printf("sorted");
    }
    else{
        printf("unsorted");
        
    }
    
    return 0;
}

5.效果: 

 

 

 结语:

每个人的成长都是能力和想要得到的东西,不断匹配的过程,当你的才华和欲望不匹配时,你就该静下心来学习了,如果小编的总结能对你有所帮助,希望小伙伴们三连加关注哦,你的支持是小编创作的最大动力。 

 

  • 16
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 25
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

旧梦拾遗186

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值