📅  最后修改于: 2023-12-03 14:40:26.343000             🧑  作者: Mango
本题所涉及的题目为C语言编写的题目,主要考察程序员对于C语言中数组、指针等知识的掌握程度。
给定一个字符串数组,要求将其中所有长度小于等于3的字符串删除,结果返回新的字符串数组。
char *strArr[] = {"hello", "world", "c", "is", "awesome"};
char *result[] = {"hello", "world", "awesome"};
本题主要考查程序员在C语言中如何操作字符串数组,可以使用指针和循环遍历的方法。一种解题思路为:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char** removeSmallString(char** strArr, int strArrSize, int* retSize){
char **res=malloc(sizeof(char *)*strArrSize);
*retSize = 0; // 初始化新数组下标为0
for(int i=0;i<strArrSize;i++){ // 循环遍历原数组
if(strlen(strArr[i]) > 3){ // 判断字符串长度是否大于3
res[(*retSize)++]=strArr[i]; // 如果大于3,加入新数组
}
}
return res; // 返回新的字符串数组
}
int main(){
char *strArr[] = {"hello", "world", "c", "is", "awesome"};
int strArrSize = sizeof(strArr) / sizeof(strArr[0]);
int retSize;
char **result = removeSmallString(strArr, strArrSize, &retSize);
printf("{");
for(int i=0;i<retSize;i++){
printf("\"%s\"",result[i]); // 输出结果
if(i!=retSize-1){
printf(",");
}
}
printf("}\n");
free(result);
return 0;
}
char** removeSmallString(char** strArr, int strArrSize, int* retSize)
: 删除长度小于等于3的字符串后的新字符串数组,retSize为新数组长度*res=malloc(sizeof(char *)*strArrSize)
: 初始化新数组为原数组大小if(strlen(strArr[i]) > 3)
: 判断字符串长度是否大于3res[(*retSize)++]=strArr[i]
: 如果大于3,加入新数组char **result = removeSmallString(strArr, strArrSize, &retSize)
: 调用函数,得到结果数组printf("\"%s\"",result[i])
: 输出结果数组free(result)
: 释放动态内存