#include <stdio.h> #include <string.h> #define MAX 100 void fun(char (*a)[81],int num,char **max) { int i=0; *max=a[0]; for(i=0;i<num;i++) if(strlen(*max)<strlen(a[i])) *max=a[i]; } int main() { char ss[10][81],*ps; int n,i=0; printf("输入若干各字符串:"); gets(ss[i]); puts(ss[i]); while(!strcmp(ss[i],"****")==0) { i++; gets(ss[i]); puts(ss[i]); } n=i; fun(ss,n,&ps); printf("\nmax=%s\n",ps); printf("\n"); }
时间: 2024-04-20 08:27:06 浏览: 78
这段代码是一个求字符串数组中最长字符串的程序,使用的是指针和函数传参的方式。
函数 fun 的参数为 char (*a)[81],表示一个长度为 81 的字符数组的指针,即指向一个字符串数组的指针;int num,表示字符串数组中字符串的个数;char **max,表示一个指向字符指针的指针,即指向最长字符串的指针。
在函数中,首先将最长字符串指针指向第一个字符串,然后依次遍历字符串数组,如果发现有比当前最长字符串更长的字符串,就将最长字符串指针指向该字符串。最后返回最长字符串指针。
在主函数中,先定义一个字符数组 ss,用于存储输入的字符串。然后使用 gets 函数逐个读取字符串,遇到字符串 "****" 时结束输入。接着调用函数 fun,传入字符串数组和最长字符串指针的地址,得到最长字符串的指针。最后输出最长字符串即可。
需要注意的是,该程序存在一些问题,gets 函数不安全,容易导致缓冲区溢出,应该使用 fgets 函数代替。另外,如果输入的字符串个数超过了 10 个,程序就会出现数组越界的错误。
相关问题
#include <stdio.h> #include <string.h> #define MAX 100 void fun(char *str) { int i,j=0; for(i=0;str[i]!='\0';i++) if(str[i]!=' ') str[j++]=str[i]; str[j]='\0'; } int main() { char str[81]; printf("input a string:"); gets(str); puts(str); fun(str); printf("*** str:%s\n",str); printf("\n"); }流程图
以下是该程序的流程图:
```
┌───────────────┐
│ 开始程序 │
└───────────────┘
│
▼
┌───────────────┐
│ 定义常量 MAX │
│ 定义函数 fun │
│ 定义主函数 │
└───────────────┘
│
▼
┌───────────────┐
│ 输出提示语 │
│ 输入字符串 │
│ 输出字符串 │
│ 调用函数fun │
│ 输出处理后的字符串│
└───────────────┘
│
▼
┌───────────────┐
│ 结束程序 │
└───────────────┘
```
在流程图中,方框表示程序中的操作步骤,箭头表示程序执行的顺序,箭头指向的方向表示程序执行的方向。程序从开始处进入,按照箭头指示的顺序执行,最终结束程序。
用c语言写出定义一个类型struct student, 他有下列三个数据项:姓名(name)char类型【10】学号(number)char类型【10】成绩(score)现有如下数据zhangliang 19040301 87 lihong 18040302 92 yanfeng 20040303 83将他们存入struct student数组中请编写函数fun2(),函数的功能是输出n个同学的3个数据项
以下是用C语言编写的定义struct student类型并存储数据的示例代码:
```c
#include <stdio.h>
#include <string.h>
#define MAX_STUDENTS 100
struct student {
char name[10];
char number[10];
int score;
};
void fun2(struct student* students, int n) {
for (int i = 0; i < n; i++) {
printf("姓名:%s 学号:%s 成绩:%d\n", students[i].name, students[i].number, students[i].score);
}
}
int main() {
struct student students[MAX_STUDENTS] = {
{"zhangliang", "19040301", 87},
{"lihong", "18040302", 92},
{"yanfeng", "20040303", 83}
};
int n = 3;
fun2(students, n);
return 0;
}
```
fun2函数接收一个指向struct student类型的指针和一个整数n,表示有n个同学的数据需要输出。通过循环遍历students数组,输出每个同学的姓名、学号和成绩。在main函数中定义了一个包含三个元素的students数组,并调用fun2函数进行输出。
阅读全文