C语言习题~day33

简介: C语言习题~day33

1.以下程序运行时,若输入1abcedf2df输出结果是()

#include <stdio.h> 
int main() { 
    char a = 0, ch; 
    while ((ch = getchar()) != '\n') { 
        if (a % 2 != 0 && (ch >= 'a' && ch <= 'z')) 
            ch = ch - 'a' + 'A'; 
        a++; 
        putchar(ch); 
    } 
    printf("\n"); 
    return 0; 
}

A.1abcedf2df

B. 1ABCEDF2DF

C.1AbCeDf2dF

D.1abceDF2DF

输入“1abcedf2df”,分析如下:

首先读入“1”,不满足条件,直接输出“1”,此时 a 变为 1。

然后读入“a”,满足 a 为奇数且是小写字母,将“a”转换为“A”输出,此时 a 变为 2。

接着读入“b”,不满足条件,输出“b”,a 变为 3。

读入“c”,满足条件,输出“C”,a 变为 4。

读入“e”,不满足条件,输出“e”,a 变为 5。

读入“d”,满足条件,转换为“D”输出,此时 a 变为 6。

读入“f”,不满足条件,转换为“f”输出,a 变为 7。

读入“2”,输出“2”,a 变为 8。

读入“d”,不满足条件,输出“d”,a 变为 9。

读入“f”,满足条件,输出“F”。

所以最终输出结果为:1AbCeDf2dF。

2.下面两个结构体

struct One{ 
 double d; 
 char c; 
 int i; 
} 
struct Two{ 
 char c; 
 double d; 
 int i; 
}

在#pragma pack(4)和#pragma pack(8)的情况下,结构体的大小分别是()

A.16 24,16 24

B. 16 20,16 20

C.16 16,16 24

D.16 16,24 24

C

在#pragma pack(4)的情况下,结构体One和结构体Two的大小均为16字节;在#pragma pack(8)的情况下,结构体One的大小为16字节,结构体Two的大小为24字节。

3.实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。

示例:

输入: 1->2->3->4->5 和 k = 2

输出: 4

int kthToLast(struct ListNode* head, int k){
    struct ListNode* fast=head,*slow=head;
    while(k--)
    {
        fast=fast->next;
    }
    while(fast!=NULL)
    {
        fast=fast->next;
        slow=slow->next;
    }
    return slow->val;
}

定义两个指针 fast 和 slow,让 fast 先向前移动 k 步。然后同时移动 fast 和 slow指针,当 fast 到达链表末尾时,slow就正好指向倒数第 k 个节点。

目录
相关文章
TU^
|
8天前
|
存储 C语言
C语言习题~day35
C语言习题~day35
TU^
11 1
TU^
|
8天前
|
编译器 C语言
C语言习题~day31
C语言习题~day31
TU^
8 2
TU^
|
8天前
|
算法 程序员 C语言
C语言习题~day36
C语言习题~day36
TU^
14 1
TU^
|
8天前
|
存储 C语言
C语言习题~day34
C语言习题~day34
TU^
8 1
TU^
|
8天前
|
C语言
C语言习题~day32
C语言习题~day32
TU^
8 1
TU^
|
8天前
|
C语言
C语言习题~day30
C语言习题~day30
TU^
7 1
TU^
|
8天前
|
自然语言处理 C语言 C++
C语言习题~day29
C语言习题~day29
TU^
7 1
TU^
|
8天前
|
存储 C语言
C语言习题~day28
C语言习题~day28
TU^
7 1
TU^
|
8天前
|
C语言
C语言习题~day27
C语言习题~day27
TU^
8 1
TU^
|
8天前
|
存储 C语言
C语言习题~day26
C语言习题~day26
TU^
6 1