能帮我看一下这道题用c语言怎么写吗?

谢谢

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
// 定义存储班上所有同学姓名的数组
char* students[] = {
"john",
"peter",
"jack",
"lucy",
"tom",
"jenny",
"bill",
"wang",
"leo",
"mike"
};
// 获取班上所有“wang”姓的同学的姓名
char** get_wang_students(char** students, int num_students, int* num_wang_students) {
// 定义一个字符串数组来存储“wang”姓的同学的姓名
char** wang_students = (char**)malloc(num_students * sizeof(char*));
// 定义一个变量来记录找到了多少个“wang”姓的同学
int count = 0;
// 遍历所有同学的姓名,找出姓名中包含“wang”的同学
for (int i = 0; i < num_students; i++) {
if (strstr(students[i], "wang") != NULL) {
// 如果当前同学的姓名中包含“wang”,则将他的姓名存储到wang_students数组中
wang_students[count] = students[i];
count++;
}
}
// 将找到的“wang”姓的同学的个数存储到num_wang_students变量中
*num_wang_students = count;
// 返回存储了“wang”姓的同学姓名的数组
return wang_students;
}
int main() {
// 获取班上所有同学的个数
int num_students = sizeof(students) / sizeof(char*);
// 获取班上所有“wang”姓的同学的姓名
int num_wang_students;
char** wang_students = get_wang_students(students, num_students, &num_wang_students);
// 如果存在“wang”姓的同学,则把他们的姓名按照字母顺序排序
if (num_wang_students > 0) {
// 使用qsort函数来对“wang”姓的同学的姓名进行排序
// 该函数需要传入一个比较函数,该函数用于指定如何比较两个字符串
qsort(wang_students, num_wang_students, sizeof(char*), (int()(const void, const void*))strcmp);
// 输出所有“wang”姓的同学的姓名
printf("The following students have the last name 'wang':\n");
for (int i = 0; i < num_wang_students; i++) {
printf("%s\n", wang_students[i]);
}
} else {
// 如果没有找到“wang”姓的同学,则输出提示信息
printf("There are no students with the last name 'wang' in the class.\n");
}
// 释放分配的内存
free(wang_students);
return 0;
}
上面的代码中,我们定义了一个字符串数组来存储班上所有同学的姓名,然后使用 get_wang_students 函数来遍历这
温馨提示:内容为网友见解,仅供参考
第1个回答  2022-12-15
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 5
int main() {
// 定义一个存储姓名的数组
char names[N][20] = {
"Zhang San",
"Li Si",
"Wang Wu",
"Zhao Liu",
"Qian Qi"
}
;
// 打印所有同学姓名
printf("All students:\n");
for (int i = 0; i < N; i++) {
printf("%s\n", names[i]);
}
// 打印Wang姓同学的姓名
printf("\nWang students:\n");
for (int i = 0; i < N; i++) {
if (strncmp(names[i], "Wang", 4) == 0) {
printf("%s\n", names[i]);
}
}
// 把Wang姓同学的姓名按字母顺序由a-z排序
// 定义一个指针数组,用来存储Wang姓同学的姓名
char *wang_students[N];
int k = 0;
for (int i = 0; i < N; i++) {
if (strncmp(names[i], "Wang", 4) == 0) {
wang_students[k++] = names[i];
}
}
// 比较函数,用来按字母顺序排序
int compare(const void *a, const void *b) {
return strcmp(*(char**)a, *(char**)b);
}
// 使用qsort函数按字母顺序排序
qsort(wang_students, k, sizeof(char*), compare);
// 打印排序后的Wang姓同学的姓名
printf("\nSorted Wang students:\n");
for (int i = 0; i < k; i++) {
printf("%s\n", wang_students[i]);
}
return 0;
}
第2个回答  2022-12-15
歪着脖子看很难受,你把他们放到一个数组去排列好,然后就按下标来排序

能帮我看一下这道题用c语言怎么写吗?
char** get_wang_students(char** students, int num_students, int* num_wang_students) { \/\/ 定义一个字符串数组来存储“wang”姓的同学的姓名 char** wang_students = (char**)malloc(num_students * sizeof(char*));\/\/ 定义一个变量来记录找到了多少个“wang”姓的同学 int count = 0...

请大家看看这道题用c语言怎么做?
为了实现这个问题,我们可以用一个循环来计算骑士在指定天数内获得的总金币数。根据题意,奖励规则是按天数划分的,每个阶段的天数和奖励数额都在递增。具体规则如下:第1天奖励1枚金币 第2、3天奖励2枚金币 第4、5、6天奖励3枚金币 第7、8、9、10天奖励4枚金币 以此类推…因此,可以将这些规则用...

能帮我写一下这题c语言的步骤吗?
即:y-x-1 = 5

这道题用C语言怎么编写,谢谢!不甚感激,我是大一的,望能够讲的明摆着,谢 ...
\/* 计数器 *\/ for (i = 0; i < count; i++) { if (i == 0) { \/* 第一次落地是直接落下,没有弹起,所以总路程不用乘2 *\/ sum += hight; } else { \/* 后面的落地都是先弹起,再落地,所以总路程需要弹起得高度乘2 *\/ sum += hight * 2; } hight ...

用c语言编写这道题的程序
{ k=sqrt(m); for (i=2;i<=k;i++) if (m%i==0) break; if (i>k) {printf("%5d",m); n=n+1; if (n%10==0) printf("\\n"); } } }

这一题用c语言怎么编写?
n; i++) ret += (pow *= 10); return ret;}int main(){ int a = 0, n = 0, s = 0; scanf("%d %d", &a, &n); for (int i = 1; i <= n; i++) s += num(a, i); printf("s=%d\\n", s); return 0;} ...

求解这道题 c语言的
这里代码这样写更清楚:if(a>b)c=a;a=b;b=c;if判断复合语句内只包含了一句:c=a; 判断a>b显然不成立,这一句并不会执行。之后顺序执行剩余的两句:a=b; a即为10 b=c; b即为16 所以最终结果:a = 10, b = 16, c = 16 如果改为:if(a>b){ c=a;a=b;b=c;} 这里就是if...

这两道题用C语言里该怎么写?
m=(log(p)-log(p-d*r))\/log(l+r)m=log((p\/(p-d*r))\/log(l+r)

您好,感觉您C语言应该很厉害,能不能帮我看一下这道题
用数组存储不同的英文数字 用%10来截取各位上的数字并翻译为英文 通过输入的英文与字符串数组strcmp()来读取数据

c语言这个题怎么写代码?
程序:直接x初值取n,那么B的结果肯定小于A,之后只要循环x每次增加,知道结果不小于A。按题目说法,这个x肯定不是精确值。(输出的x只要整数)。你可以通过降低常量AX的值,来调整运算精度!我下面的代码,备注“\/\/--可删除”的都是调试打印,让你看到运行过程的,你可以删掉。由于第一天是基值,所以...

相似回答
大家正在搜