51 60 21
从后往前移,不然后一个元素会被覆盖
先消除前面的空格
P是开头指针
Q是最后一个
最后一个位置=开头+长度-1
如果p< q 的时候退出循环
则不是回文
同理
可以用回文的方式,两个指针,交换位置,到最后两个指针相遇,就为逆序输出
但是需要求字符串长度
编程题
输入最长字符串
---需要找一个新的和已知字符串一样大小来存储它,下面对它进行操作的时候不会改变原本字符串的大小内容
#include <stdio.h>
#include <string.h>
int main()
{
int n;
char p[81],max[81];
scanf("%d",&n);
scanf("%s",p);
strcpy(max,p);
for(int i=1; i<n; i++)
{
scanf("%s",p);
if(strlen(p)>strlen(max))
strcpy(max,p);
}
printf("The longest is: %s",max);
return 0;
}
两个数组
定义了一个字符数组-----就是一次性输入好多字符串,而上面是一次只输入一个字符串,令第一个是最大的
结构体
#include <stdio.h>
struct student
{
char num[6];
char name[11];
int a,b,c,d;
};
int main()
{
struct student stu[11],max;
int n,i;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%s%s%d%d%d",stu[i].num,stu[i].name,&stu[i].a,&stu[i].b,&stu[i].c);
stu[i].d = stu[i].a+stu[i].b+stu[i].c;
if(i==0)
{
max = stu[i];
}
else if(stu[i].d>max.d)
max = stu[i];
}
printf("%s %s %d",max.name,max.num,max.d);
}