编写一个与strlen函数功能一样的函数,用于测试任一输入字符的长度
时间: 2023-03-24 14:03:03 浏览: 116
好的,我可以回答这个问题。以下是一个与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里。
好的,我会逐个回答你的问题。
- 冒泡排序/选择排序法对字符串进行升序排序,并输出排序后的结果。
冒泡排序:
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;
选择排序:
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;
- 将字符顺序插入字符串,并输出插入后的字符串。
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;
- 比较两个字符串中不同字符的个数。
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;
}
- 判断一个整数是否为幸运数。
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;
}
- 判断两个箱子是否为包含关系。
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;
}
“回文”是一种无论正读和反读都一样的字符串,例如:“121”、“abcba”、“ABCCBA”。编写程序,判断任一字符串是否为回文。(要求用函数实现) 输入示例: 12321 输出示例: yes
要编写一个C语言函数来判断一个字符串是否为回文,你可以使用两个指针,一个从前往后遍历,另一个从后往前遍历,比较对应位置的字符是否相等。如果所有字符匹配,则字符串是回文。
以下是一个C语言函数实现的例子:
#include <stdbool.h>
#include <string.h>
// 函数声明
bool isPalindrome(char *str);
// 主函数演示如何调用
int main() {
char input[] = "12321";
if (isPalindrome(input)) {
printf("yes\n");
} else {
printf("no\n");
}
return 0;
}
// 判断回文的函数实现
bool isPalindrome(char *str) {
int start = 0; // 前指针
int end = strlen(str) - 1; // 后指针
while (start < end) { // 当前指针指向不超出范围
if (str[start] != str[end]) { // 如果当前字符不等于对应的反向字符
return false; // 不是回文,直接返回
}
start++; // 前指针向右移动
end--; // 后指针向左移动
}
return true; // 所有字符都匹配,说明是回文
}
在这个例子中,isPalindrome
函数接收一个字符串 str
作为参数,通过不断比较首尾字符直到两个指针相遇或交叉,判断字符串是否是回文。如果是回文,函数返回 true
,否则返回 false
。
相关推荐
















