可能不是那么的完整,先凑合看吧,如果我学会如何修改以后,我慢慢回来修改的
1.编写程序实现对两个字符串的连接功能;
法一:不使用strcat函数,写程序直接实现,记得添加结束符,不然程序访问数组时候将变得不可预测
/*1.编写程序实现对两个字符串的连接功能*/#include <stdio.h>int main(void)
{char str1[] = "hello,";char str2[] = "world!";char str[100] = {0}; //用于存储连接后的字符串printf("字符串1: %2s 字符串2: %2s\n",str1,str2);int index1 = 0; //初始化下标while(str1[index1] != '\0') //复制str1到str{str[index1] = str1[index1];index1++;}int index2 = 0;while(str2[index2] != '\0') //复制str2到str{str[index1] = str2[index2];index1++;index2++;}str[index1] = '\0'; //在连接后的字符串末尾添加字符串结束符printf("连接后的字符串: %s\n",str);return 0;
}
法二:使用strcat函数
/*1.编写程序实现对两个字符串的连接功能,使用strcat函数*/#include <stdio.h>
#include <string.h>int main(void)
{char str[32] = {0}; //存储连接后的字符串char str1[] = "hello,";char str2[] = "world!";printf("连接之前字符串1: %2s 字符串2: %2s\n",str1,str2);strcat(str,str1); //strcat函数连接字符串1和字符串2strcat(str,str2);printf("连接后的字符串是: %s\n",str);return 0;}
2.编写程序实现对字符串有效数据长度的计算;
法一:不用strlen函数
*2.编写程序实现对字符串有效数据长度的计算;*/#include <stdio.h>int main(void)
{char str[8];unsigned int len = 0;printf("请输入一个字符串:");fgets(str,sizeof(str),stdin);while(str[len] != '\0') //遇到结束符停止循环{len++; //若未遇到结束符则增加有效数据长度}//屏蔽这里为还不是很懂,fgets()函数会自动添加结束符,我想添加判断语句却不行`/*if(len > 7){printf("输入字符串太长,请重新输入。\n");}*/printf("字符串中有效数据长度为: %u\n",len - 1); //减去结束符就是长度return 0;
}
法二:strlen函数
/*strlen函数*/#include <stdio.h>
#include <string.h>int main(void)
{char str[8];unsigned int len;printf("请输入一个字符串:");fgets(str,sizeof(str),stdin);len = strlen(str) - 1;printf("输入的有效的字符串长度是: %u\n",len);return 0;}
3.编程实现随机输出多个字符串中的某个;
/*3.编程实现随机输出多个字符串中的某个;*/#include <stdio.h>
#include <time.h>
#include <string.h>
#include <stdlib.h>#define r 3
#define l 32int main(void)
{char arr[r][l] = {"hello","Spring Festival","Happy New Year"};srand(time(NULL)); //生成种子数int randow;randow = rand() % r; //随机生成选中的字符串的数字放入randow变量中printf("随机选中的字符串是: %s\n",arr[randow]);return 0;
}
思考题:
计算字符串中所有数字的和
字符串“123abd23ee1”==>123 + 23 + 1 = 147
for循环和while循环,思想是一致的,for相对要完整一些,while只是针对这一串数字,我记得老师也有讲这个题,但是我找不到了,等我找到我再放上来
#include <stdio.h>
#include <string.h>int main(void)
{char str[] = "123and23ee1";printf("字符串为: %s\n", str);int num = 0; // 初始化一个变量来存储连续数字的值int sum = 0; // 初始化一个变量来存储所有数字的和int found = 0; // 初始化一个变量来标记是否找到数字for (int i = 0; str[i] != '\0'; i++) // 循环遍历字符串中的每个字符{if (str[i] >= '0' && str[i] <= '9') // 如果字符是数字{num = num * 10 + (str[i] - '0'); // 将数字字符转换为数字并累加到numfound = 1; // 设置found为1,表示找到了数字}else // 如果字符不是数字{if (found) // 如果之前找到了数字{sum += num; // 将num加到sum中}num = 0; // 将num重置为0found = 0; // 将found重置为0}}if (num) // 如果num不为0,说明最后还有一个数字{sum += num; // 将其加到sum中}printf("字符串中数字总和为: %d\n", sum); // 打印字符串中数字的总和return 0; // 返回0,表示程序正常退出
}
#include <stdio.h>
#include <string.h> int main(void)
{char str[] = "123abd23ee1"; // 定义一个字符数组,并初始化为给定的字符串printf("字符串为: %s\n",str); // 打印输入的字符串int sum = 0; // 定义一个变量来存储数字的和int num = 0; // 定义一个变量来存储当前数字的值int i = 0; // 定义一个索引变量,用于遍历字符串while(str[i] != '\0') // 当字符串结束符之前,循环继续{if(str[i] >= '0' && str[i] <= '9') // 如果字符是数字{num = num * 10 + (str[i] - '0'); // 将当前数字乘以10,然后加上字符转换为的数字}else // 如果字符不是数字{sum += num; // 将当前数字的和加到总和中num = 0; // 将当前数字重置为0}i++; // 索引变量增加1,指向下一个字符}sum += num; // 将最后一个数字加到总和中printf("字符串中所有数字的和为: %d\n",sum); // 打印字符串中所有数字的和return 0; // 返回0,表示程序正常退出
}
这个写完就进入函数啦,嘿嘿