百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 文章教程 > 正文

c语言编程题经典100例——(81~85例)

yund56 2025-04-01 16:55 15 浏览

1,写一个函数,实现字符串的拼接。

在C语言中,可以使用指针和 malloc() 函数来实现两个字符串的拼接。以下是一个简单的例子:

#include

#include


char* concatenate_strings(char* string1, char* string2) {

// 计算字符串1的长度

int len1 = 0;

while (string1[len1] != '\0') {

len1++;

}


// 计算字符串2的长度

int len2 = 0;

while (string2[len2] != '\0') {

len2++;

}


// 为新字符串分配内存,包括 '\0' 字符的空间

char* result = (char*)malloc((len1 + len2 + 1) * sizeof(char));

if (result == NULL) {

printf("Memory allocation failed\n");

exit(1);

}


// 复制字符串1到结果字符串

for (int i = 0; i < len1; i++) {

result[i] = string1[i];

}


// 复制字符串2到结果字符串

for (int i = 0; i < len2; i++) {

result[i + len1] = string2[i];

}


// 在结果字符串的末尾添加 '\0' 字符

result[len1 + len2] = '\0';


return result;

}


int main() {

char* string1 = "Hello, ";

char* string2 = "World!";

char* result = concatenate_strings(string1, string2);

printf("%s\n", result);

free(result); // 释放内存

return 0;

}

这个程序首先计算两个输入字符串的长度,然后分配足够的内存来保存这两个字符串的拼接结果,包括一个额外的字节来保存终止的空字符。然后,它把两个输入字符串复制到新的内存位置。最后,它在新字符串的末尾添加一个空字符来终止它。在 main() 函数中,我们调用 concatenate_strings() 函数,并打印结果字符串。最后,我们释放了分配给结果的内存。这里我们当然也可以使用c语言自带的库函数进行拼接,不需要写这么麻烦!

2,写一个函数,实现字符串的分割。

该函数使用strtok函数来分割字符串

#include

#include


void split_string(char* str, const char* delimiter) {

char* token = strtok(str, delimiter);

while (token != NULL) {

printf("%s\n", token);

token = strtok(NULL, delimiter);

}

}


int main() {

char str[] = "Hello, World! This is a test string.";

split_string(str, ", ");

return 0;

}

这个函数接受一个字符串和一个分隔符作为输入,然后使用strtok函数来分割字符串。strtok函数会根据指定的分隔符将字符串分割成一系列的子串,并返回指向每个子串的指针。我们可以将这些指针存储在一个数组中,或者直接打印出来。在这个例子中,我们选择打印每个子串。

3,写一个函数,实现字符串的替换。

#include

#include

#include


char* str_replace(char* str, char* old_substr, char* new_substr) {

char* result=NULL;

char* ins=NULL;

char* tmp=NULL;

int len_old=0;

int len_new=0;

int len_front=0;

int count=0;


// 检查输入字符串是否为空

if (str == NULL) {

return NULL;

}


// 计算旧子字符串的长度

len_old = strlen(old_substr);


// 如果旧子字符串为空,则返回原始字符串

if (len_old == 0) {

return str;

}


// 计算新子字符串的长度

len_new = strlen(new_substr);


// 初始化一个指向结果字符串的指针

result = NULL;


// 查找第一个匹配的旧子字符串的位置

ins = str;

for (count = 0; (tmp = strstr(ins, old_substr)); ++count) {

ins = tmp + len_old;

}


// 为每个匹配的子字符串创建一个新字符串

while (count--) {

tmp = result = malloc(strlen(str) + (len_new - len_old) * 2 + 1);

while (ins != NULL) {

len_front = ins - str;

tmp = strncpy(tmp, str, len_front) + len_front;

tmp = strcpy(tmp, new_substr) + len_new;

ins = strstr(ins + len_front, old_substr);

}

strcpy(tmp, str + (ins - str));

str = result;

}

return result;

}

这个函数接受三个参数:原始字符串、要替换的旧子字符串和用于替换的新子字符串。它返回一个指向新字符串的指针,该指针指向一个以新子字符串替换旧子字符串后的字符串。如果输入的原始字符串为空,则返回NULL。如果旧子字符串为空,则返回原始字符串。

4,写一个函数,实现字符串的比较。

#include

#include


int compare_strings(char* str1, char* str2) {

int result = strcmp(str1, str2);

if (result == 0) {

printf("The two strings are equal.\n");

} else {

printf("The two strings are not equal.\n");

}

return result;

}


int main() {

char str1[] = "Hello, world!";

char str2[] = "Hello, world!";

int result = compare_strings(str1, str2);

return 0;

}

这个函数使用了C标准库中的strcmp()函数来比较两个字符串。如果两个字符串相等,strcmp()函数返回0,否则返回一个非零值。这个函数根据strcmp()函数的返回值来输出相应的信息,并返回比较结果。在主函数中,我们声明两个字符串,并调用这个函数来比较它们。

5,写一个函数,实现字符串的排序。

#include

#include


void sort_strings(char arr[][100], int n) {

char temp[100];

int i, j;


for (i = 0; i < n-1; i++) {

for (j = i+1; j < n; j++) {

if (strcmp(arr[i], arr[j]) > 0) {

strcpy(temp, arr[i]);

strcpy(arr[i], arr[j]);

strcpy(arr[j], temp);

}

}

}

}


int main() {

char arr[5][100] = {"Apple", "Orange", "Banana", "Mango", "Peach"};

int n = 5;

sort_strings(arr, n);

int i;

for (i = 0; i < n; i++) {

printf("%s\n", arr[i]);

}

return 0;

}

这个函数使用冒泡排序算法对字符串数组进行排序。它接受一个字符串数组和数组的大小作为输入,并在原始数组上进行排序。在排序过程中,如果第i个字符串应该排在第j个字符串之前,则交换它们的位置。最终,函数输出已排序的字符串数组。

相关推荐

SM小分队Girls on Top,女神战队少了f(x)?

这次由SM娱乐公司在冬季即将开演的smtown里,将公司的所有女团成员集结成了一个小分队project。第一位这是全面ACE的大姐成员权宝儿(BoA),出道二十年,在日本单人销量过千万,韩国国内200...

韩国女团 aespa 首场 VR 演唱会或暗示 Quest 3 将于 10 月推出

AmazeVR宣布将在十月份举办一场现场VR音乐会,观众将佩戴MetaQuest3进行体验。韩国女团aespa于2020年11月出道,此后在日本推出了三张金唱片,在韩国推出了...

韩网热议!女团aespa成员Giselle在长腿爱豆中真的是legend

身高163的Giselle,长腿傲人,身材比例绝了...

假唱而被骂爆的女团:IVE、NewJeans、aespa上榜

在韩国,其实K-pop偶像并不被认为是真正的歌手,因为偶像们必须兼备舞蹈能力、也经常透过对嘴来完成舞台。由于科技的日渐发达,也有许多网友会利用消音软体来验证K-pop偶像到底有没有开麦唱歌,导致假唱这...

新女团Aespa登时尚大片 四个少女四种style

来源:环球网

韩国女团aespa新歌MV曝光 画面梦幻造型超美

12月20日,韩国女团aespa翻唱曲《DreamsComeTrue》MV公开,视频中,她们的造型超美!WINTER背后长出一双梦幻般的翅膀。柳智敏笑容甜美。宁艺卓皮肤白皙。GISELLE五官精致...

女网友向拳头维权,自称是萨勒芬妮的原型?某韩国女团抄袭KDA

女英雄萨勒芬妮(Seraphine)是拳头在2020年推出的第五位新英雄,在还没有正式上线时就备受lsp玩家的关注,因为她实在是太可爱了。和其他新英雄不同的是,萨勒芬妮在没上线时就被拳头当成虚拟偶像来...

人气TOP女团是?INS粉丝数见分晓;TWICE成员为何在演唱会落泪?

现在的人气TOP女团是?INS粉丝数见分晓!现在爱豆和粉丝之间的交流方法变得多种多样,但是Instagram依然是主要的交流手段。很多粉丝根据粉丝数评价偶像的人气,拥有数百、数千万粉丝的组合作为全球偶...

韩国女团MVaespa Drama MV_韩国女团穿超短裙子跳舞

WelcometoDrama.Pleasefollow4ruleswhilewatchingtheDrama.·1)Lookbackimmediatelywhenyoufe...

aespa师妹团今年将出道! SM职员亲口曝「新女团风格、人数」

记者刘宛欣/综合报导南韩造星工厂SM娱乐曾打造出东方神起、SUPERJUNIOR、少女时代、SHINee、EXO等传奇团体,近年推出的aespa、RIIZE更是双双成为新生代一线团体,深受大众与粉丝...

南韩最活跃的女团aespa,新专辑《Girls》即将发布,盘点昔日经典

女团aespa歌曲盘点,新专辑《Girls》即将发布,期待大火。明天也就是2022年的7月8号,aespa新专辑《Girls》即将发行。这是继首张专辑《Savage》之后,时隔19个月的第二张专辑,这...

章泽天女团aespa出席戛纳晚宴 宋康昊携新片亮相

搜狐娱乐讯(山今/文玄反影/图科明/视频)法国时间5月23日晚,女团aespa、宋康昊、章泽天等明星亮相戛纳晚宴。章泽天身姿优越。章泽天肩颈线优越。章泽天双臂纤细。章泽天仪态端正。女团aespa亮...

Aespa舞台暴露身高比例,宁艺卓脸大,柳智敏有“TOP”相

作为SM公司最新女团aespa,初舞台《BlackMamba》公开,在初舞台里,看得出来SM公司是下了大功夫的,虽然之前SM公司新出的女团都有很长的先导片,但是aespa显然是有“特殊待遇”。运用了...

AESPA女团成员柳智敏karina大美女

真队内速度最快最火达成队内首个且唯一两百万点赞五代男女团中输断层第一(图转自微博)...

对来学校演出的女团成员语言性骚扰?韩国这所男高的学生恶心透了

哕了……本月4日,景福男子高中相关人士称已经找到了在SNS中上传对aespa成员进行性骚扰文章的学生,并开始着手调查。2日,SM娱乐创始人李秀满的母校——景福高中迎来了建校101周年庆典活动。当天,S...