C语言之——入门必刷题(3)

简介: C语言之——入门必刷题(3)

前言

大佬就可以撤退了!!(当然也可以温故而知新呀!!)

本次为C语言入门刷题!重在扎实基础,温习学过的基础知识!!!

夯实基础,走得更远!

一、数据进行比大小或者求最大(小)数

示例:

1.   可能当我们看到求最大值或者最小值的时候,首先想到的是冒泡排序(详情点击),将整个数组元素排序之后输出第一或者最后一个来输出最大值或者最小值。

2.   但今天我们用不同的方法来实现!

代码如下:

#include<stdio.h>
int main()
{
    int n=0,m=0;
    scanf("%d %d",&n,&m);   //几行几列
    int arr[10][10]={0};
    int i=0,j=0;
    int max=arr[0][0];       //最大值先定为数组的第一个元素
    int x=0,y=0;             //输出的坐标x,y
    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
        {
            scanf("%d",&arr[i][j]);        //每输入一个元素,就与最大值max比较
            if(arr[i][j]>max)              //比max大的话,就赋值于max
            {
                max=arr[i][j];
                x=i+1;
                y=j+1;               //题目要求输出x和y,不是数组的下标,而是下标加1
            }
        }
    }
    printf("%d %d",x,y);
    return 0;
}

注意:这里为什么一开始我们不将0作为最大值呢?

因为当数组元素中有负数时,或者都为负数,如果我们将0作为最大值,则输出结果会永远是0.

所以将最大值作为数组中的任意一个元素,就不会影响到正常的比较了。(max=arr[0],只是个人习惯)

二、桶排序应用

1.去重整数并排序

1.  首先,看到这道题的第一瞬间,我会想到最传统的方法:


     先将输入的数组元素进行去重,arr[i]  和 arr[i+1]进行比较,如果两个数相等,则将第一个数(arr[i])置为0,然后继续循环比较数组中的剩下元素,之后利用排序方法排序后,输出不为0的数组元素。


代码如下:

#include<stdio.h>
void bubble(int arr[], int n)            //冒泡排序
{
    int i = 0;
    int j = 0;
    for (i = 0; i < n - 1; i++)
    {
        for (j = 0; j < n- 1 - i; j++)
        {
            if (arr[j] > arr[j + 1])
            {
                int temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
}
int main()
{
    int n = 0;
    scanf("%d", &n);
    int arr[100] = { 0 };
    int i = 0;
    for (i = 0; i < n; i++)
    {
        scanf("%d", &arr[i]);
    }
    int sz = sizeof(arr) / sizeof(arr[0]);  //数组元素个数
    bubble(arr, n);                        // 先排序再判断或者  先判断再排序都行
  for (i = 0; i < n; i++)
    {
        if (arr[i] == arr[i + 1])
        {
            arr[i] = 0;
        }
    }
   for (i = 0; i < n; i++)
    {
        if (arr[i] != 0)
        {
            printf("%d", arr[i]);
        }
    }
}

2.桶排序的方法!

#include<stdio.h>
int main()
{
    int n=0;          
    int temp=0;         //给桶标号
    scanf("%d",&n);
    int arr[1001]={0};  //数组的个数即 桶的个数
    for(int i=0;i<n;i++)
    {
                         // 举例:
      scanf("%d",&temp); // 给桶标号(输入5,则标号5号桶)
      arr[temp]=temp;    // 将5放入五号桶
                         // 所以这里我们就明白,输入n个数,即为n个桶标号,然后放入对应的值
    }                    // 第一次n=5,放入5号桶,若第二次n=5,也放入5号桶,这样就做到了去重
                         // 的效果!而且桶是有顺序的,输出时,无需排序!
    for(int i=0;i<1001;i++) 
    {
        if(arr[i]!=0)
        {
            printf("%d ",arr[i]);        //没有标号的桶初始化为0,无需输出。
        }
    }
    return 0;
}

觉得怎么样?学会了吗?

2.查找数字出现的次数


1.  第一种传统的方法就是直接遍历数组元素,遇到查找元素就个数加一。

2. 桶排序方法!!

   代码如下:

#include<stdio.h>
int main()
{
    int n=0;            //元素个数
    scanf("%d",&n);
    int arr[100]={0};   //桶的总数100,并且每个桶初始化为0
    int temp = 0;       //为桶标号 
    for(int i=0;i<n;i++)
    {
        scanf("%d",&temp); //每次输入一个数,即 给桶标号
        arr[temp]++;       //标号后,并且该桶元素加一.每用一次,元素加一(第一次用桶也要加一)
    }
    int k=0;               //输出要查找的数字
    scanf("%d",&k);        //举例:
    printf("%d",arr[k]);   //输入5,即看标号为5的桶用了几次。
    return 0;
}

做到这里,我相信你也学会了吧!可以再去反复琢磨琢磨,思考解题的过程和思路哦!

总结

相信大家看完以后,也看懂了!

那么这期的C语言入门刷题基础知识点就到这里啦!!

是不是觉得不够,内容太少?

那么就期待下期我们再见吧!!记得三连哦,别到时候找不到俺!

目录
相关文章
|
3月前
|
安全 编译器 C语言
C++入门1——从C语言到C++的过渡
C++入门1——从C语言到C++的过渡
75 2
|
1月前
|
存储 NoSQL 编译器
【C语言】指针的神秘探险:从入门到精通的奇幻之旅 !
指针是一个变量,它存储另一个变量的内存地址。换句话说,指针“指向”存储在内存中的某个数据。
86 3
【C语言】指针的神秘探险:从入门到精通的奇幻之旅 !
|
3月前
|
存储 Java 编译器
初识C语言1——C语言入门介绍
初识C语言1——C语言入门介绍
42 1
|
3月前
|
C语言
回溯入门题,数据所有排列方式(c语言)
回溯入门题,数据所有排列方式(c语言)
|
5月前
|
C语言
C语言------程设设计入门
这篇文章是C语言程序设计的入门教程,涵盖了C程序的实现过程、VC集成开发环境的使用、基本数据类型的使用、格式控制字符的作用,以及通过示例代码演示了如何使用printf()函数输出不同类型的数据。
C语言------程设设计入门
|
6月前
|
存储 Java C语言
【C语言入门】初识C语言:掌握编程的基石
【C语言入门】初识C语言:掌握编程的基石
80 4
【C语言入门】初识C语言:掌握编程的基石
|
5月前
|
NoSQL Java 编译器
C语言从入门到精通该怎样学?
持续学习与实践:编程是一门需要不断学习和实践的技能,要保持对新技术和新知识的敏感性,并持续进行编程实践。
70 1
|
6月前
|
存储 Java 程序员
【C语言入门】C语言入门:探索编程世界的基础概念
【C语言入门】C语言入门:探索编程世界的基础概念
136 2
|
6月前
|
前端开发 C语言 C++
C语言入门02---环境搭建
C语言入门02---环境搭建
|
6月前
|
编译器 C语言 C++
C++从遗忘到入门问题之C++持从C语言的过渡问题如何解决
C++从遗忘到入门问题之C++持从C语言的过渡问题如何解决