pta(浙大第四版)五道经典练习题③

news/2025/1/15 14:57:37/

目录

①7-4 IP地址转换

②、查找日期

③藏头词

四、IP地址转换

五、删除链表值为偶数的节点


①7-4 IP地址转换

题述:IP地址转换:一个IP地址是用四个字节(每个字节8个位)的二进制码组成。输入32位二进制字符串,输出十进制格式的IP地址。所输出的十进制IP地址由4个十进制数组成(分别对应4个8位的二进制数),中间用圆点分隔开。

②、查找日期

题述:查找星期:定义一个指针数组将下表的星期信息组织起来,输入一个字符串,在表中查找,若存在,输出该字符串在表中的序号,否则输出-1

思路:定义指针数组,再调用strcmp就很好做了

#include <stdio.h>
#include <string.h>#define MAXS 80int getindex(char* s)
{char* week[7] ={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};int i = 0;for (i = 0; i < 7; i++){if (strcmp(s, week[i]) == 0)return i;}return -1;
}int main()
{int n;char s[MAXS];scanf("%s", s);n = getindex(s);if (n == -1) printf("wrong input!\n");else printf("%d\n", n);return 0;
}

③藏头词

题述:输入一组英文单词(不超过8个),要求按输人顺序取出每个单词的第一个字母并连接在一起形成一个 字符串开输出。

思路:我们可以先定一个n,说明想输入多少个单词。单词总数不超过8个,而每个单词的长度我们还可以假定,所以这里可以用二维数组

#include<stdio.h>int main()
{char word[8][20];//最多有8个单词,每个单词长度最大为20char str[9];//要多出一个空间来存'\0'int n = 0;scanf("%d", &n);for (int i = 0; i < n; i++){scanf("%s", word[i]);str[i] = word[i][0];}str[n] = '\0';//字符数组要转为字符串printf("藏头词为%s\n", str);return 0;
}

四、IP地址转换

题述:一个IP地址是用四个字节(每个字节8个位)的二进制码组成。输入32位二进制字符进制数),中间用圆点分隔开。试编写相应程序。

了解IP地址结构:

每个IP地址有4组8位二进制组成,8位二进制从左边算起的第一位是2的7次方=64,第二位是2的6次方=64,第三位是2的5次方=32......第八位是2的0次方=1

以1100000000 10101000 01010000 01000110的二进制地址为例

11000000 = 128*1+64*1=192

10101000=128*1+32*1+8*1=168

01010000=64*1+16*1=80

01000110=64*1+4*1+2*1=70

最后得出此IP地址的十进制为192.168.80.70

这正是本题所考察的,中间要有圆点相分隔。

思路:

注意:你输入的二进制位是数字字符,必须转换为对应的数字

1、本质就是考察二进制如何转换为十进制,我们以四组为划分每组每组算一下,每组都是8个二进制位,每组的8个二进制位都要转换为1个十进制数字。

2、数字字符转换为数字的方法:因为'0'的ASC2码为48,这里'0'是字符,48-48就是数字0,比如'1'的ASC2码为49,这里'1'是字符,49-48就是数字1,所以数字字符转换为数字就直接-48即可

#include<stdio.h>
#include<math.h>int main()
{int i = 0, j = 0;char s[40];gets(s);for (i = 0; i < 4; i++){int ret = 0;for (j = 0; j < 8; j++){//计算每一组对应的十进制数,每一组都有8个二进制位ret += (s[8 * i + j] - '0') * pow(2, 8 - j - 1);//下一个就从s[8]开始}if (i == 0){printf("%d", ret);}else{printf(".%d", ret);}}return 0;
}

运行代码如下:

五、删除链表值为偶数的节点

题述:删除单向链表偶数(值域为偶数的)节点:输入若干个正整数(输人-1为结束标志),建立一个单向链表,将其中的值域为偶数的节点删除后输出。

思路:跟我之前写的链表面试题①删除链表中的重复元素的思路大同小异!我敢说你只要看懂我那篇博客,这道题就完全没问题,不懂代码的请看那篇

#include <stdio.h>
#include <stdlib.h>struct ListNode {int data;struct ListNode* next;
};struct ListNode* createlist()
{int x = 0;struct ListNode* head = NULL, * tail = NULL;while (scanf("%d", &x), x != -1){struct ListNode* p = (struct ListNode*)malloc(sizeof(struct ListNode));if (p == NULL){perror("malloc");exit(-1);}p->data = x;p->next = NULL;if (head == NULL){head = p;}else{tail->next = p;}tail = p;}return head;
}
struct ListNode* deleteeven(struct ListNode* head)
{struct ListNode* prev = NULL, * cur = head;while (cur){if (cur->data % 2 == 0){if (head == cur){head = cur->next;free(cur);cur = head;}else{prev->next = cur->next;free(cur);cur = prev->next;}}else{prev = cur;cur = cur->next;}}return head;
}
void printlist(struct ListNode* head)
{struct ListNode* p = head;while (p) {printf("%d ", p->data);p = p->next;}printf("\n");
}int main()
{struct ListNode* head;head = createlist();head = deleteeven(head);printlist(head);return 0;
}


http://www.ppmy.cn/news/95838.html

相关文章

Apache Kafka - 高性能原因探究

文章目录 概述图解 概述 Kafka 的高性能主要依赖于以下几个关键因素: 分布式架构:Kafka 采用分布式集群架构,可以水平扩展到上万个节点,支持每秒处理百万级消息。持久化存储:Kafka 使用文件系统持久化存储消息,避免了数据库成为性能瓶颈,大大提高了吞吐量。顺序读写:Kafka 的…

基于STM32的DHT11温湿度测量

目录 1.简介 2.主要参数 3.引脚说明 4.注意事项 5.单总线协议 6.数据格式 7.工作时序 8.分模块编写程序 1.简介 DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术&#xff0c;确保产品具有极高的可靠…

Unity包围盒

序 比如&#xff0c;目前导入了一个obj文件&#xff0c;想知道它的AABB包围盒是什么。 官方文档 Unity - Scripting API: Bounds (unity3d.com) 可以看到&#xff0c;包围盒有三个类别的&#xff1a; Mesh.bounds Unity - Scripting API: Mesh.bounds (unity3d.com) 不随…

Mysql中的not in和null

MySQL中的not in和null 当我们在MySQL中使用not in时&#xff0c;例如 select id from user when id not in(...)如果not in(…)数据中有null时&#xff0c;返回的结果是空表。 错误在于判断 a not in B的方法的本质是a 使用 ! 与B中的每一条进行判断 比如 3 not in (null…

catia距离测量

选无限 如果有限几何&#xff0c;即默认的情况的话 这距离很多时候可不是我们想要的。

SpringCloudAlibaba中篇(Sentinel,Seata)(超级无敌认真好用,万字收藏篇!!!!)

文章目录 SpringCloudAlibaba中篇(Sentinel,Seata)1 Sentinel&#xff08;流量处理&#xff09;1.1 分布式系统遇到的问题1.2 服务雪崩1.3 容错机制1.4 什么是Sentinel1.5 初步使用Sentinel-流控规则1.6 Sentinel- SentinelResource1.7 初步使用Sentinel-降级规则1.8 控制台部署…

6.2:荷兰国旗问题

文章目录 实现key前面的数都小于等key&#xff0c;key后面的数都大于等于key1&#xff1a;前后指针法&#xff1a;2&#xff1a;挖坑法3&#xff1a;单指针法&#xff08;左神&#xff09; 辗转相除法求最大公约数 实现key前面的数都小于等key&#xff0c;key后面的数都大于等于…

99年表示真干不过,部门新来的00后测试员已把我卷崩溃,想离职了...

在程序员职场上&#xff0c;什么样的人最让人反感呢? 是技术不好的人吗?并不是。技术不好的同事&#xff0c;我们可以帮他。 是技术太强的人吗?也不是。技术很强的同事&#xff0c;可遇不可求&#xff0c;向他学习还来不及呢。 真正让人反感的&#xff0c;是技术平平&#x…