结构体作业等

简介: 结构体作业等

题目一


在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是( )
struct A
{
 int a;
 short b;
 int c;
 char d;
};
struct B
{
 int a;
 short b;
 char c;
 int d;
};


这里我们还是可以通过画图的方式来解决


7eb9aa460d2442febaf3a2cc67f46a13.png


其中结构体a的大小可以这样子来解决 大小是16 结构体b的大小可以参考这个解法

所以说 a的大小是16 b的大小是12


题目二


描述

老师给了小乐乐一个正整数序列,要求小乐乐把这个序列去重后按从小到大排序。但是老师给出的序列太长了,小乐乐没办法耐心的去重并排序,请你帮助他。


输入描述:

第一行包含一个正整数n,表示老师给出的序列有n个数。接下来有n行,每行一个正整数k,为序列中每一个元素的值。(1 ≤ n ≤ 105,1 ≤ k ≤ n)


输出描述:

输出一行,为去重排序后的序列,每个数后面有一个空格。

示例1

输入:

4

2

2

1

1

输出:

1 2

示例2

输入:

5

5

4

3

2

1

输出:

1 2 3 4 5


这一题的难点主要在于如何消除相同的数字 这里我一开始的解法是


将这个数组排序 这样子我们就得到了一个有序数组


例如 1 1 2 2 3 4 5


这种格式


要求我们不输出相同的数 这个时候我们只需要设置一个判断条件


如果前面一个数和后面一个数不同 就输出它


很可惜的是 这样子的时间复杂度超了


代码如下


#include <stdio.h>
int main()
{
    int n, k, i, j, tmp;
    int count;
    int arr[1000000] = { 0 };
    scanf("%d", &n);
    for (i = 0; i < n; i++)
    {
        scanf("%d", &arr[i]);
    }
    for (i = 0; i < n - 1; i++)
    {
        for (j = 0; j < n - 1 - i; j++)
        {
            if (arr[j] > arr[j + 1])
            {
                tmp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = tmp;
            }
        }
    }
    for (i = 0; i < n; i++)
    {
        if (arr[i] != arr[i + 1])
        {
            printf("%d ", arr[i]);
        }
    }
    return 0;
}


之后通过看答案得到了一种很巧妙的排法


那就是这个数字为n 那么就在将数组的第n个数字赋值为它 这样子就能避免重复数字的打印


最后打印的时候不打印0 就能得到一个完美的输出


int main()
{
  int i, j,n, tmp;
  scanf("%d", &n);
  int arr[100000] = { 0 };
  for ( i = 0; i < n; i++)
  {
    scanf("%d", &tmp);
    arr[tmp] = tmp;
  }
  for ( i = 0; i <100000; i++)
  {
    if (arr[i] != 0)
    {
      printf("%d ", arr[i]);
    }
  }
  return 0;
}


以上就是本篇博客的全部内容啦 由于博主才疏学浅 所以难免会出现纰漏 希望大佬们看到错误之后能够


不吝赐教 在评论区或者私信指正 博主一定及时修正


那么大家下期再见咯

相关文章
|
10月前
指针作业来喽~
指针作业来喽~
63 1
|
Serverless
结构体-时间的计算
结构体-时间的计算
119 0
|
5月前
简单的结构体应用实例
【10月更文挑战第16天】简单的结构体应用实例。
56 7
|
编译器 Linux C++
计算结构体的大小
计算结构体的大小
84 0
学C的第五天(初识指针,内存产生内存单元地址过程,指针函数介绍和其大小;结构体补充)-1
13*指针: 13.1 -- 内存: 内存是电脑上特别重要的存储器,计算机中程序的运行都是在内存中进行的。 【32位操作系统的内存由32根地址线产生的高低电位(1/0), 划分为2的32次方个地址(编号\指针),一个地址为一个字节, 等于8比特。】
122 0
|
C语言
指针数组等作业
指针数组等作业
118 0
指针数组等作业
|
编译器 C++
结构体的初步认识以及其内存的计算
结构体的初步认识以及其内存的计算
126 0
结构体的初步认识以及其内存的计算
|
算法 C++ iOS开发
C++初阶作业 String类作业详解
C++初阶作业 String类作业详解
169 0
C++初阶作业 String类作业详解
|
算法 C++
C++初阶作业 Vector作业详解
C++初阶作业 Vector作业详解
169 0
C++初阶作业 Vector作业详解