C语言习题~day34

简介: C语言习题~day34

1.在上下文和头文件均正常情况下,以下程序的输出结果是()

int x = 1; 
do{  
    printf("%2d\n",x++); 
}while(x--)

A.1

B.无任何输出

C.2

D.陷入死循环

第一次进入循环,输出 1,然后 x 自增为 2,接着在 while 条件判断中,先使用 x 的值 2 进行判断,条件成立进入下一次循环,输出 2,此时 x 自减为 1,又会进入下一次循环,如此反复,就会形成死循环。

2.下列C程序执行后c输出结果为()(32位)

#include<stdio.h> 
#include<stdlib.h> 
void main() 
{ 
  int a = -3; 
  unsigned int b = 2; 
  long c = a + b; 
  printf("%ld\n", c); 
}

A.-1

B. 4294967295

C.0x7FFFFFFF

D.0xFFFFFFFF

在这个程序中,我们定义了两个变量a和b,分别被初始化为-3和2。然后,我们将这两个变量相加,并将结果存储在变量c中。由于a是一个有符号整数,而b是一个无符号整数,所以在进行加法运算时,a会被转换为无符号整数。在32位系统中,-3的二进制表示为11111111111111111111111111111101,将其转换为无符号整数后为4294967293。然后,我们将4294967293和2相加,得到4294967295,将其存储在变量c中。最后,我们使用printf函数将c的值打印出来。由于c是一个长整型变量,所以我们使用%ld作为格式说明符。因此,程序的输出结果为-1。

3.给你两个按 非递减顺序 排列的整数数组 nums1 nums2,另有两个整数 mn ,分别表示 nums1nums2 中的元素数目。

请你 合并 nums2 nums1 中,使合并后的数组同样按 非递减顺序 排列。

注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n

示例 1:

输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3

输出:[1,2,2,3,5,6]



示例 2:

输入:nums1 = [1], m = 1, nums2 = [], n = 0

输出:[1]



 

解题思路:

     1. 从后往前遍历数组,将nums1和nums2中的元素逐个比较

        将较大的元素往nums1末尾进行搬移

     2. 第一步结束后,nums2中可能会有数据没有搬移完,将nums2中剩余的元素逐个搬移到nums1

 



void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n) {
    int l1=m-1;
    int l2=n-1;
    int l3=(m+n)-1;
    while(l1>=0&&l2>=0)
    {
        if(nums1[l1]>nums2[l2])
            nums1[l3--]=nums1[l1--];
        else
            nums1[l3--]=nums2[l2--];
    }
    while(l1>=0)
        nums1[l3--]=nums1[l1--];
     while(l2>=0)
        nums1[l3--]=nums2[l2--];
}


目录
相关文章
TU^
|
6月前
|
存储 C语言
C语言习题~day35
C语言习题~day35
TU^
34 1
|
4月前
|
机器学习/深度学习 C语言
【C语言篇】递归详细介绍(基础概念习题及汉诺塔等进阶问题)
要保持最小的步数,每一次汉诺塔问题(无论是最初还是递归过程中的),如果此时初始柱盘子数为偶数,我们第一步是把最上面的盘子移动到中转柱,如果为奇数,我们第一步则是将其移动到目标柱。
103 0
【C语言篇】递归详细介绍(基础概念习题及汉诺塔等进阶问题)
TU^
|
6月前
|
编译器 C语言
C语言习题~day31
C语言习题~day31
TU^
27 2
TU^
|
6月前
|
算法 程序员 C语言
C语言习题~day36
C语言习题~day36
TU^
44 1
TU^
|
6月前
|
算法 C语言
C语言习题~day33
C语言习题~day33
TU^
31 1
TU^
|
6月前
|
C语言
C语言习题~day32
C语言习题~day32
TU^
19 1
TU^
|
6月前
|
C语言
C语言习题~day30
C语言习题~day30
TU^
26 1
TU^
|
6月前
|
自然语言处理 C语言 C++
C语言习题~day29
C语言习题~day29
TU^
25 1
TU^
|
6月前
|
存储 C语言
C语言习题~day28
C语言习题~day28
TU^
22 1
TU^
|
6月前
|
C语言
C语言习题~day27
C语言习题~day27
TU^
27 1