C语言对称字符串
编程,输入若干(不多于10)个字符串,每个字符串长度不超过80个字符,输入空字符串表示输入结束,然后将其中的对称字符串按长度升序,长度相等则按大小升序输出,每个一行,如果...
编程,输入若干(不多于10 )个字符串,每个字符
串长度不超过80个字符,输入空字符串表示输入
结束,然后将其中的对称字符串按长度升序,长
度相等则按大小升序输出,每个一行,如果没有
对称字符串,则输出None.,判断字符串是否对称
时要求使用指针
#include<stdio.h>
#include<string.h>
int symmetry(char *str)
{char *p,*q;
p=str;q=str+strlen(str)-1;
for(;p<q;p++,q--)
if(*p!=*q)break;
if(p>=q) return 0;
else return 1;
}
main()
{
char s[11][81],t[81];int i,j,n;
for(n=0;n<11;n++)
{gets(s[n]);
if(s[n]=='\0') break;
if(symmetry(s[n])==1) n--;}
if(n==0)
printf("None.");
else
{for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(strlen(s[i])>strlen(s[j])||strlen(s[i])==strlen(s[j])&&strcmp(s[i],s[j])>0)
{strcpy(t,s[i]);strcpy(s[i],s[j]);strcpy(s[j],t);}
for(i=0;i<n;i++)
puts(s[i]);}
}主函数中if(s[n]=='\0') break;错了,可改成if(*s[n]=='\0') break后就对了,为什么?*s[n]表示的是什么意思? 展开
串长度不超过80个字符,输入空字符串表示输入
结束,然后将其中的对称字符串按长度升序,长
度相等则按大小升序输出,每个一行,如果没有
对称字符串,则输出None.,判断字符串是否对称
时要求使用指针
#include<stdio.h>
#include<string.h>
int symmetry(char *str)
{char *p,*q;
p=str;q=str+strlen(str)-1;
for(;p<q;p++,q--)
if(*p!=*q)break;
if(p>=q) return 0;
else return 1;
}
main()
{
char s[11][81],t[81];int i,j,n;
for(n=0;n<11;n++)
{gets(s[n]);
if(s[n]=='\0') break;
if(symmetry(s[n])==1) n--;}
if(n==0)
printf("None.");
else
{for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(strlen(s[i])>strlen(s[j])||strlen(s[i])==strlen(s[j])&&strcmp(s[i],s[j])>0)
{strcpy(t,s[i]);strcpy(s[i],s[j]);strcpy(s[j],t);}
for(i=0;i<n;i++)
puts(s[i]);}
}主函数中if(s[n]=='\0') break;错了,可改成if(*s[n]=='\0') break后就对了,为什么?*s[n]表示的是什么意思? 展开
4个回答
展开全部
指针s指向的是一个二维数组,这里s[n]相当于一个指向字符串的指针,它的值是字符串在内存中的地址,所以f(s[n]=='\0') break错了。*s[n]指向由s[n][0]到s[n][80]字符组成的字符串
追问
可是如果我定义s[3]=“abc” 我就可以写成是s[n],不需写成*s[n]啊,这个字符串一维数组和二维数组有什么区别吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
s是一个二维数组,则s[n]表示数组首地址,*s[n]取首地址里的字符值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
s[n]是地址
*s[n] 是地址里面的值(也就是内容)
*s[n] 是地址里面的值(也就是内容)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
s[n]表示的是s[n][0]的地址,*s[n]当然就表示s[n][0]这个元素了
追问
可是我定义的s[11][81]]是字符串数组啊? 什么时候s[n]表示的是地址了啊?s[n]表示的不就是内容吗?
追答
你定义的是二维数组,如果是一维的比如s[11],那s[n]就表示元素了。实际上C的二维数组就是数组的数组。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询