1. C语言,编写一个程序,输入若干字符串,找出其中最长的字符串并输出。要用指针数组存放这些字符串,并要
1、我们在main函数之前定义一个函数。
2、然后我们就可以开始编写,并且先输入整个框架。
3、然后我们可以用和循环开始进行输出。
4、利用普通变量也可以使用指针变量来书写。
5、在这里我们将以指针变量来书写。
6、书写完毕后,我们将可回去main函数中进行直接调用。
2. C语言,编写一个程序,输入若干字符串,找出其中最长的字符串并输出。要用指针数组存放这些字符串,并要
1、我们在main函数之前定义一个函数。
2、然后我们就可以开始编写,并且先输入整个框架。
3、然后我们可以用和循环开始进行输出。
4、利用普通变量也可以使用指针变量来书写。
5、在这里我们将以指针变量来书写。
6、书写完毕后,我们将可回去main函数中进行直接调用。
3. 请用C语言编写代码,输入10个字符串,输出其中的最大字符串以及它的长度来输出
这个问题在于没有限制字符串长度。
那么字符串的输入只能用动态数组。
考虑输入之后还需要统计字符串长度做比较。我这里直接定义数据结构(包含字符串内容及字符串长度),这样在输入的同时就记录了长度。
注意:我这里的字符串输入支持空格,你可以输入任意长度的字符串直到回车确认,但没有写退格删除功能。你按了删除键也不做处理。你想添加删除功能自己在我标注的位置加好了,我就不写了。
#include#include#include typedef struct strInfo{ int len; char *str;}SINFO;void meError(void *p);//内存申请失败SINFO *inputStr();//输入任意长度字符串,返回字符串及其长度的数据结构int main(){ int i,max=0,mIndex; SINFO *strs[10]={NULL}; for(i=0;ilen) max=strs[i]->len,mIndex=i; } printf("其中最长的字符串是:%s\n长度为:%d\n",strs[mIndex]->str,strs[mIndex]->len); return 0;}SINFO *inputStr()//输入任意长度字符串,返回字符串及其长度的数据结构{ int size=1; char inputc,*strSave=NULL; SINFO *newStr=(SINFO *)malloc(sizeof(SINFO)); meError(newStr); newStr->len=0; newStr->str=(char *)malloc(sizeof(char)*size); newStr->str[0]=0; inputc=getch(); while(inputc!='\r') { if(inputc!=8) { if(inputc!=0) printf("%c",inputc); newStr->str[size-1]=inputc; size++; strSave=(char *)realloc(newStr->str,sizeof(char)*size); meError(strSave); newStr->str=strSave; newStr->str[size-1]=0; inputc=getch(); } else inputc=0;//考虑显示刷新,这里不支持退格删除,按了也作不处理,你想添加删除,可以替换这个else内容!! } printf("\n"); newStr->len=size-1; return newStr;}void meError(void *p)//内存申请失败{ if(p==NULL) { printf("\n异常:内存申请失败!回车结束程序!\n"); while(getch()!='\r'); exit(0); }}