【C基础刷题】第九讲

简介: 【C基础刷题】第九讲

本系列博客为个人刷题思路分享,有需要借鉴即可。

1.目录大纲:

2.题目链接:

  1. 统计成绩 00:00:00⸺00:09:00题号:BC33 链接:https://www.nowcoder.com/practice/
    cad8d946adf64ab3b17a555d68dc0bba?tpId=290&tqId=39821&ru=/exam/oj
  2. 密码验证 00:09:00⸺00:15:11题号:(⽆)链接:https://www.nowcoder.com/question
    Terminal/df51b60733c94e6fbb0b18fbbf45d76a
  3. 矩阵计算 00:15:11⸺00:20:30题号:BC132 链接:nowcoder.com/practice/0c83231923
    c541d2aa15861571831ee5?tpId=290&tqId=39920&ru=/exam/oj
  4. 逆序输出 00:20:30⸺00:24:50 题号:BC117 链接:https://www.nowcoder.com/practic
    e/bb66c27cb7aa48f9ba7d9f88e4068285?tpId=290&tqId=39905&ru=/exam/oj
  5. 统计数据正负个数 00:24:50⸺00:29:35题号:BC62 链接:https://www.nowcoder.com/
    practice/3f33889582934a09b4e3ddd3cc976226?tpId=290&tqId=39850&ru=/exam/oj
  6. N个数之和 没讲 题号:BC118 链接:https://www.nowcoder.com/practice/b007744eb43b4f7b9
    5d9e87de01528db?tpId=290&tqId=39906&ru=/exam/oj
  7. 最低分和最⾼分之差 00:30:11⸺00:34:25题号:BC119 链接:https://www.nowcoder.co
    m/practice/e0e4f81dcd55408a8973f8033bbeb1d2?tpId=290&tqId=39907&ru=/exam/oj
  8. 有序序列判断 00:34:25⸺00 :44:50题号:BC122 链接:https://www.nowcoder.com/pra
    ctice/22e87f8a8d764a6582710f38d1b40c6e?tpId=290&tqId=39910&ru=/exam/oj
  9. 序列中删除指定数字 00:44:50⸺01:00:05 题号:BC124 链接:https://www.nowcoder.co
    m/practice/7bbcdd2177a445a9b66da79512b32dd7?tpId=290&tqId=39912&ru=/exam/oj
  10. 序列整数去重 01:00:05⸺01:17:50题号:BC125 链接:https://www.nowcoder.com/pr
    actice/6564a2f6e70f4153ad1ffd58b2b28490?tpId=290&tqId=39913&ru=/exam/oj
  11. 有序序列合并:01:17:50⸺01:34:55 题号:BC121 链接:https://www.nowcoder.com/p
    ractice/a9e943b0dab142759807d0cfb6863897?tpId=290&tqId=39909&ru=/exam/oj

3.详解思路:

T1:

#include <stdio.h>
int main()
{
    int n = 0;
    scanf("%d",&n);
    double min = 100;
    double max = 0;
    double average = 0;
    double sum = 0;
    double x = 0;
    for(int i = 0;i<n;i++)
    {
        scanf("%lf",&x);
        if(x>max)
        max = x;
        if(x<min)
        min = x;
        sum+=x;
    }
    average = sum/n;
    printf("%.2lf %.2lf %.2lf\n",max,min,average);
    return 0;
}

T2:

#include <stdio.h>
#include<string.h>
int main() {
    char ch1[20] = {0};
    char ch2[20] = {0};
    //读取
    scanf("%s",ch1);
    scanf("%s",ch2);
    //比较
    if(strcmp(ch1,ch2)==0)
    {
        printf("same\n");
    }
    else {
    {
        printf("different\n");
    }
    }
    return 0;
}

T3:

#include <stdio.h>
int main() {
    int n = 0;
    int m = 0;
    scanf("%d %d",&n,&m);
    int i = 0;
    int sum = 0;
    int data = 0;
    //读入数据
    for(i = 0;i<n*m;i++)
    {
        scanf("%d",&data);
        if(data>=0)
        {
            sum+=data;
        }
    }
    printf("%d\n",sum);
    return 0;
}

T4:

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

T5:

#include <stdio.h>
int main() 
{
    int arr[10] = {0};
    int i = 0;
    int p = 0;
    int n = 0;
    for(i = 0;i<10;i++)
    {
    scanf("%d",&arr[i]);
    if(arr[i]>0)
    p++;
    else
    n++;;
    }
    printf("positive:%d\nnegative:%d\n",p,n);
    return 0;
}

T6:

#include <stdio.h>
int main() {
    int n = 0;
    scanf("%d",&n);
    int i = 0;
    int data = 0;
    int sum = 0;
    for(i = 0;i<n;i++)
    {
        scanf("%d",&data);
        sum+=data;               
    }
    printf("%d\n",sum);
    return 0;
}

T7:

#include <stdio.h>
int main() {
    int n = 0;
    scanf("%d",&n);
    int max = 0;
    int min = 100;
    int data = 0;
    //读入
    int i = 0;
    for(i = 0;i<n;i++)
    {
        scanf("%d",&data);
        if(data>max)
        max = data;
        if(data<min)
        min = data;        
    }
    printf("%d\n",max-min);
    return 0;
}

T8:

#include <stdio.h>
int main() {
    int n = 0;
    scanf("%d",&n);
    int arr[50] = {0};
    int on = 0;//升序标识符
    int under = 0;//降序标识符
    
    int i = 0;
    for(i = 0;i<n;i++)
    {
        scanf("%d",&arr[i]);
        if(i>0)
        {
            if(arr[i]>arr[i-1])
            on = 1;
            else if(arr[i]<arr[i-1])
            under = 1;
        }
    }
    //if on+under>1 乱序
    //if on+under ==1 升序/降序
    if(on+under>1)
    printf("unsorted\n");
    else
     {
        printf("sorted\n");
     };    
    return 0;
}

T9:

#include <stdio.h>
int main() {
    int n = 0;
    scanf("%d",&n);
    //读入数据
    int i = 0;
    int arr[50] = {0};
    for(i = 0;i<n;i++)
    {
        scanf("%d",&arr[i]);
    }
    int m = 0;
    scanf("%d",&m);
    int count = n;//计数器
    //遍历数组
    for(i = 0;i<count;i++)
    {
        //遍历数组找到了要删除的数据
        if(m==arr[i])
        {
            //删除数据(后面的数据往前挪动一位)
            int j = 0;
            for(j = i+1;j<n;j++)
            {
                arr[j-1] = arr[j];
            }
            i--;
            count--;
        }
    }
        //打印
        for(i = 0;i<count;i++)
        {
            printf("%d ",arr[i]);
        }
    
    return 0;
}

T10:

#include <stdio.h>
int main() {
    int n = 0;
    scanf("%d",&n);
    int arr[n];
    //读取数据
    int i = 0;
    for(i = 0;i<n;i++)
    {
        scanf("%d",&arr[i]);
    }
    //去重
    
    for(i = 0;i<n;i++)
    {
        int j = 0;
        for(j = i+1;j<n;j++)
        {
            if(arr[i]==arr[j])
            {
                //挪动数据
                int k = 0;
                for(k = j+1;k<n;k++)
                {
                     arr[k-1] = arr[k];
                }
                n--;//防止遗漏
                j--;//计数
            }
        }
    }
        for(i = 0;i<n;i++)
        {
            printf("%d ",arr[i]);
        }
    
    return 0;
}

T11:

//思路1:存入数据,之后排序
#include<stdio.h>
int main()
{
    int n, m;
    scanf("%d %d\n", &n, &m);
    int i, j, arr[2000];
    int tmp;
    //读入两个数组的数据
    for (i = 0; i < n; i++)
    {
        scanf("%d ", &arr[i]);
    }
    for (i = n; i < n + m; i++)
    {
        scanf("%d ", &arr[i]);
    }
    //排序
    for (i = 0; i < n + m; i++)
    {
        for (j = 0; j < n + m - i - 1; j++)
        {
            if (arr[j] > arr[j + 1])
            {
                tmp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = tmp;
            }
        }
    }
    //打印
    for (i = 0; i < n + m; i++)
    {
        printf("%d ", arr[i]);
    }
}
//思路2:选择性放入一个新的数组
#include<stdio.h>
int main() {
    int n = 0;
    int m = 0;
    scanf("%d %d", &n, &m);
    int arr1[n];
    int arr2[m];
    int arr[n + m];
    //读入数据
    int i = 0;
    for (i = 0; i < n; i++) {
        scanf("%d", &arr1[i]);
    }
    for (i = 0; i < m; i++) {
        scanf("%d", &arr2[i]);
    }
    //选择性放入
    int j = 0;
    int k = 0;
    i = 0;
    while (j < n && k < m) {
        
        if (arr1[j] < arr2[k]) 
        {
            arr[i++] = arr1[j];
            j++;
        } 
        else 
        {
            arr[i++] = arr2[k];
            k++;
        }
    }
    if(j==n)
    {
        while(k!=m)
        arr[i++] = arr2[k++];
    }
    if(k==m)
    {
        while(j!=n)
        {
            arr[i++] = arr1[j++];
        }
    }
    i = 0;
    for(i = 0;i<m+n;i++)
    {
        printf("%d ",arr[i]);
    }
}

完。

相关文章
|
算法 容器
图压实算法
## 一、定义 将一个原本较为稀疏的图布局,进行压实操作,从而提高画布空间利用率,便于用户理解。 ## 二、适用场景 1. 图面积最小化:即移除多余的空间,将稀疏图变为紧密图。 1. 布局编译:从符号布局生成蒙版布局,电路板。 1. 重新设计:自动清除违反设计规则的情况。 1. 重新缩放:将蒙版级别的布局从一种技术转换到另一种。 在实际场景中,通常用于电路板的排版中。
472 0
图压实算法
|
设计模式 监控 Java
静态代理模式:代码世界的“替身演员”
静态代理是代理模式的一种**实现方式**,其特点是**代理类在编译时就已经确定**,代理类的代码是在程序编译阶段生成的,而不是运行时动态生成。
339 15
静态代理模式:代码世界的“替身演员”
|
存储 网络协议 网络安全
|
机器学习/深度学习 存储 人工智能
【python】python葡萄酒数据集—分类建模与分析(源码+数据集)【独一无二】
【python】python葡萄酒数据集—分类建模与分析(源码+数据集)【独一无二】
|
存储 编译器 C++
C++:迭代器的封装思想
C++:迭代器的封装思想
172 0
|
监控 调度 云计算
云算力租赁系统功能模块搭建(源码示例)
云算力租赁系统是一种针对云计算资源的管理系统,可以帮助用户有效地管理和调度云算力资源,提高资源利用率,降低运营成本。该系统通常包括以下功能:
|
存储 Java 数据库
【Spring Cloud Alibaba Seata 处理分布式事务】——每天一点小知识
【Spring Cloud Alibaba Seata 处理分布式事务】——每天一点小知识
487 0
|
监控 前端开发
服务器发送事件(Server-Sent Events)
服务端向客户端推送消息,其实除了可以用WebSocket这种耳熟能详的机制外,还有一种服务器发送事件(Server-Sent Events),简称 SSE。这是一种服务器端到客户端(浏览器)的单向消息推送。
984 0
|
数据库 C#
VB.NET版三层登录小例子
VB.NET版三层登录小例子
186 0
VB.NET版三层登录小例子
|
Linux 编译器 Shell
04_Linux基础-.&..-cat-tac-重定向-EOF-Shell-more-ps-less-head-tail-sed-grep-which-whereis-PATH-bash-usr-locate-find
cat-tac-重定向-EOF-Shell-more-ps-less-head-tail-sed-grep-which-whereis-PATH-bash-usr-locate-find
335 0
04_Linux基础-.&..-cat-tac-重定向-EOF-Shell-more-ps-less-head-tail-sed-grep-which-whereis-PATH-bash-usr-locate-find

热门文章

最新文章