首页 > 其他分享 >初学指针,刷题(hznu【C系列5.6】指针专题之翻译)

初学指针,刷题(hznu【C系列5.6】指针专题之翻译)

时间:2023-12-11 14:34:13浏览次数:41  
标签:字符 word 5.6 sentence hznu char result cleanedWord 指针

题目如下

Description

 (本人学艺不精,写了很久才写出了一个臃肿的代码,malloc也不咋会用,只能向ai请教了T_T)

Alex在朋友们都去生猴子了的日子里,日复一日、年复一年地敲代码,终于,在经年累月的摧残下,她的手指变得不那么利索了,比如“how are you”她会哆嗦着打成“hhoow areee youuu”,如果两个及以上的字母同时出现,则被认为是多打出来的,她想请你帮忙做的事情就是正确翻译出她想要表达的语句。

 

Input

 

输入多组数据。

每组一行包含空格的字符串,长度不超过10000。

 

Output

 

Alex想要表达的语句。

 

Samples

 

input  I wwantt apple. output  I want aple.

 

    下附ai写的ac代码
 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <string.h>
 4 
 5 // 函数声明,用于去除字符串中相邻且重复的字符
 6 void translateSentence(char *sentence);
 7 
 8 int main() {
 9 char sentence[10000];
10 
11 // 多组数据输入
12 while (1) {
13 // 从标准输入获取一行字符串
14 if (fgets(sentence, sizeof(sentence), stdin) == NULL || sentence[0] == '\n') {
15 break; // 如果输入为空行或者遇到 EOF(Ctrl+D),结束循环
16 }
17 
18 // 调用函数去除相邻重复字符并打印结果
19 translateSentence(sentence);
20 }
21 
22 return 0;
23 }
24 
25 // 函数定义,去除字符串中相邻且重复的字符
26 void translateSentence(char *sentence) {
27 // 初始化一个指针,用于动态存储处理后的字符串
28 char *result = NULL;
29 size_t resultSize = 0; // 存储已分配内存的大小
30 
31 // 使用strtok函数分割字符串,获取每个单词
32 char *word = strtok(sentence, " ");
33 while (word != NULL) {
34 // 初始化一个字符数组,用于存储处理后的单词
35 char cleanedWord[strlen(word) + 1];
36 int cleanedIndex = 0; // 记录处理后的单词长度
37 char prevChar = '\0'; // 记录前一个字符
38 
39 // 遍历单词中的每个字符
40 for (int i = 0; i < strlen(word); i++) {
41 // 如果当前字符和前一个字符不相同,则加入cleanedWord
42 if (word[i] != prevChar) {
43 cleanedWord[cleanedIndex++] = word[i];
44 prevChar = word[i];
45 }
46 }
47 
48 cleanedWord[cleanedIndex] = '\0'; // 结尾添加空字符
49 
50 // 计算新的内存大小并重新分配内存
51 resultSize += strlen(cleanedWord) + 1;
52 result = (char *)realloc(result, resultSize);
53 if (result == NULL) {
54 fprintf(stderr, "内存分配失败\n");
55 exit(EXIT_FAILURE);
56 }
57 
58 // 将处理后的单词加入result中,并加入空格
59 strcat(result, cleanedWord);
60 strcat(result, " ");
61 
62 word = strtok(NULL, " "); // 获取下一个单词
63 }
64 
65 if (resultSize > 0) {
66 result[resultSize - 1] = '\0'; // 移除最后一个空格
67 }
68 
69 // 打印处理后的结果
70 printf("%s\n", result);
71 
72 // 释放动态分配的内存
73 free(result);
74 }

 

标签:字符,word,5.6,sentence,hznu,char,result,cleanedWord,指针
From: https://www.cnblogs.com/Blizzard1900/p/17894325.html

相关文章

  • liunx二进制包安装5.6MySQL数据库
    官网下载对应的二进制版本安装包https://downloads.mysql.com/archives/community/#解压二进制压缩包[root@localhost~]#wgethttps://cdn.mysql.com/archives/mysql-5.6/mysql-5.6.20-linux-glibc2.5-x86_64.tar.gz[root@localhost~]#tarxfmysql-5.5.32-linux2.......
  • ENVI 5.6安装教程及安装包下载
    下载: http://dt1.8tupian.net/2/29913a31b1000.pg3软件介绍目前ENVI5.6版本推出了许多有用的新功能,比如深度学习、cropscience等。如果是遥感专业人士,还是建议安装功能更强大的5.6版本(5.6和5.3版本可以共存)。安装主程序安装包总目录:(1)打开软件目录,点击envi56-win.exe......
  • c语言指针
    【C语言】中的指针说明:只是学习中的一些感悟,如有错误,欢迎指正一、指向指针的指针指向指针的指针是C语言中的一种数据类型,通常简称为"指针的指针",使用两个星号('**')表示。指向指针的指针是一个变量,其值是另一个指针的地址。|1.用法:1>如下定义了一个指向指针的指针char**......
  • php 5.6
    返回值(语法)Nginx、php5.6+中打开⽹网站⾸首⻚页,显示:APHPErrorwasencounteredSeverity:NoticeMessage:OnlyvariablereferencesshouldbereturnedbyreferenceFilename:core/Common.phpLineNumber:257解决⽅方法:打开system/core/Common.php//将return$_c......
  • 计算机初级选手的成长历程——指针(2)
    初阶指针导言大家好,很高兴又和大家见面了!!!在上一个篇章中,我们介绍了指针、指针变量以及野指针的相关知识点。在今天的篇章中,我们将探讨一下指针是如何进行运算的。五、指针运算对于指针的运算,共有三种运算方式:指针+-整数指针-指针指针的关系运算5.1指针+-整数对于不同类型的指针加/......
  • C++(智能指针)
    在C++中,智能指针是一种用于管理动态分配内存的智能化工具。它们提供了对动态分配资源的自动管理,以减少内存泄漏和资源泄漏的风险。C++标准库提供了两种主要的智能指针类型:std::shared_ptr和std::unique_ptr。以下是这两种智能指针的基本解释:1.std::shared_ptr:std::shared_......
  • 两种方法求字符串个数(函数递归和指针)
    前言:我先想讲一个关于指针的问题,由于我一开始学习指针的时候很困惑,现在分享给大家。假设我们定义一个指针p,我们首先要区分p、&p与*p的区别(对于初学者应该和我一开始一样迷茫)p:p是一个指针变量的名字,表示此指针变量指向的内存地址,如果用%p输出的话它将是一个16进制位的数。*p:*是解引......
  • 字符指针及其函数的使用
    字符指针一、字符指针的有关内容首先需要明确的是,字符串实际就是字符数组。比如说:charp="helloworld";实际上应该是:p={'h','e','l','l','o','','w','o','r','l','d','\0'......
  • 指针(2)指针基本了解及其应用
    <1>指针(1)指针基本概念1)引入:提出问题:如果能够将取得的变量的地址传递给一个函数,能否通过这个地址在那个函数内访问这个变量2)回顾scanf函数功能格式:scanf("%d",&i)深入探讨:scanf()的原型应该是怎样的?我们需要一个参数能保存别的变量的地址,如何表达能够保存地址的变量?......
  • 面试高频:双指针---6题14图一次搞懂
    使用双指针是降低算法复杂度的一个有效途径,有些问题的暴力解法时间复杂度是O(n^2),但使用双指针可以大幅度降低算法复杂度。如果面试者能将求解过程从暴力法优化到双指针,说明面试者的基础知识、代码能力、逻辑思维都是十分扎实的。同贪心算法一样,双指针的难点在于自己想不出、别人......