可能不是那么的完整,先凑合看吧,如果我学会如何修改以后,我慢慢回来修改的
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和字符串2
strcat(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 32
int 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
划重点讲解:积累字符串变数组的小算法
#include <stdio.h>
#include <string.h>
int main(void)
{
char str[64] = {0};
printf("请输入一个字符串:");
scanf("%s",str);
int num = 0; // 初始化一个变量来存储连续数字的值
int sum = 0; // 初始化一个变量来存储所有数字的和
for (int i = 0; str[i] != '\0'; i++) // 循环遍历字符串中的每个字符
{
if (str[i] >= '0' && str[i] <= '9') // 如果字符是数字
{
num = num * 10 + (str[i] - '0'); // 将数字字符转换为数字并累加到num
}
else
{
sum += num;
num = 0; //num清零处理再进入循环
}
}
sum += num; //加上最后一个数字,因为最后一个为数字的话,后面空字符将无法进入for循环
printf("字符串中数字总和为: %d\n", sum); // 打印字符串中数字的总和
return 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,然后加上字符转换为的数字,也就是2个数字变十位,3个数字变百位...
}
else // 如果是字符不是数字进行存储累加
{
sum += num; // 将当前数字的和加到总和中
num = 0; // 将当前数字重置为0
}
}
sum += num; // 将最后一个数字加到总和中
printf("字符串中所有数字的和为: %d\n",sum); // 打印字符串中所有数字的和
return 0;
}
这个写完就进入函数啦,嘿嘿