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 个节点。

  • 10
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值