编写一个与strlen函数功能一样的函数,用于测试任一输入字符的长度
时间: 2023-03-24 11:03:03 浏览: 96
好的,我可以回答这个问题。以下是一个与strlen函数功能一样的函数:
```
int my_strlen(const char* str) {
int len = ;
while (*str != '\') {
len++;
str++;
}
return len;
}
```
这个函数接受一个指向字符数组的指针作为参数,并返回该数组中字符的数量。它使用一个while循环来遍历数组中的每个字符,直到遇到字符串的结尾标志'\'为止。在循环中,它递增一个计数器变量,以便在循环结束时返回字符串的长度。
相关问题
现有一字符串char str[]=”congralutiaons”,请使用冒泡排序/选择排序法对其进行升序排序,输出排序后的结果。另有一字符 char ch=’d’,请将该字符顺序插入字符串str,并输出插入后的字符串。 现有一字符串 char str1[]=”SMUComputer”,主函数中输入另一个相同长度的测试字符串str2,要求编写一个函数int Differ(char s1[],char s2[]),比较str1和str2中不同字符的个数,并在主函数中输出结果。(要求不能使用全局变量,不能使用标准库函数) 假设幸运数字为4和7。若某整数的每一位都是4或者7,那么该整数即为幸运数。请编写一函数判断键盘输入的任一整数n是不是幸运数,是的话输出“YES”,否则输出“NO”。 定义一个结构体变量Box,包含成员:长、宽、高、体积。现有两个结构体变量 Box b1,b2;编写一个函数判断这个两个箱子是不是包含关系,是的话输出“Yes”。否则输出“NO”。包含关系的定义是:b1能够完全放进b2里,或者b2能够完全放进b1里。
好的,我会逐个回答你的问题。
1. 冒泡排序/选择排序法对字符串进行升序排序,并输出排序后的结果。
冒泡排序:
```c++
char str[] = "congralutiaons";
int n = strlen(str);
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (str[j] > str[j + 1]) {
char temp = str[j];
str[j] = str[j + 1];
str[j + 1] = temp;
}
}
}
cout << str << endl;
```
选择排序:
```c++
char str[] = "congralutiaons";
int n = strlen(str);
for (int i = 0; i < n - 1; i++) {
int minIndex = i;
for (int j = i + 1; j < n; j++) {
if (str[j] < str[minIndex]) {
minIndex = j;
}
}
char temp = str[i];
str[i] = str[minIndex];
str[minIndex] = temp;
}
cout << str << endl;
```
2. 将字符顺序插入字符串,并输出插入后的字符串。
```c++
char str[] = "congralutiaons";
char ch = 'd';
int n = strlen(str);
for (int i = 0; i <= n; i++) {
if (str[i] > ch) {
for (int j = n; j > i; j--) {
str[j] = str[j - 1];
}
str[i] = ch;
break;
}
}
cout << str << endl;
```
3. 比较两个字符串中不同字符的个数。
```c++
int Differ(char s1[], char s2[]) {
int count = 0;
int n = strlen(s1);
for (int i = 0; i < n; i++) {
if (s1[i] != s2[i]) {
count++;
}
}
return count;
}
```
4. 判断一个整数是否为幸运数。
```c++
bool isLucky(int n) {
while (n > 0) {
int digit = n % 10;
if (digit != 4 && digit != 7) {
return false;
}
n /= 10;
}
return true;
}
int main() {
int n;
cin >> n;
if (isLucky(n)) {
cout << "YES" << endl;
} else {
cout << "NO" << endl;
}
return 0;
}
```
5. 判断两个箱子是否为包含关系。
```c++
struct Box {
int length;
int width;
int height;
int volume;
};
bool isContained(Box b1, Box b2) {
if (b1.volume > b2.volume) {
Box temp = b1;
b1 = b2;
b2 = temp;
}
if (b1.length <= b2.length && b1.width <= b2.width && b1.height <= b2.height) {
return true;
}
return false;
}
int main() {
Box b1, b2;
cin >> b1.length >> b1.width >> b1.height;
cin >> b2.length >> b2.width >> b2.height;
b1.volume = b1.length * b1.width * b1.height;
b2.volume = b2.length * b2.width * b2.height;
if (isContained(b1, b2)) {
cout << "Yes" << endl;
} else {
cout << "No" << endl;
}
return 0;
}
```
编写程序,对输入字符密码进行加密输出,并解密显示。加密规则:对任一字符加上整数n(n为随机整数,1<=n<=10)后所得字符即为加密后字符。用c++语言表示 点击复制后,将打开C知道体验页
抱歉,我可以回答您的问题。为了实现密码加密和解密,你可以按照如下方式编写代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
// 定义密码最大长度
#define MAX_LEN 100
// 加密函数
void encrypt(char *password, int n) {
for(int i = 0; i < strlen(password); i++) {
password[i] += n; // 对每个字符加上一个随机整数
}
}
// 解密函数
void decrypt(char *password, int n) {
for(int i = 0; i < strlen(password); i++) {
password[i] -= n; // 对每个字符减去之前加上的那个随机整数
}
}
int main() {
char password[MAX_LEN];
int n;
// 输入密码和随机整数
printf("请输入待加密的密码:");
scanf("%s", password);
printf("请输入随机整数n(1<=n<=10):");
scanf("%d", &n);
// 输出加密后的密码
encrypt(password, n);
printf("加密后密码为:%s\n", password);
// 解密并显示原始密码
decrypt(password, n);
printf("解密后密码为:%s\n", password);
return 0;
}
```
这段代码中,我们使用了一个encrypt函数和一个decrypt函数来实现密码的加密和解密。加密函数接收一个密码字符串和一个随机整数,将字符串中的每个字符都加上随机整数,从而实现加密。解密函数则接收一个加密后的密码字符串和同样的随机整数,将字符串中的每个字符都减去之前加上的随机整数,从而获得原始密码。
在主函数中,我们首先获取用户输入的密码和随机整数,然后调用encrypt函数,输出加密后的密码。接着调用decrypt函数,输出解密后的原始密码。
阅读全文