【实例5.7】编写程序,输入1个字符串并判断该字符串是不是回文。所谓回文是顺序读和倒序读完全一样的字符串。例如,字符串“eye”是回文。
【实例5.8】编写程序,输入3个国家的国名,并输出字符串最大的国家国名。
【实例5.9】编写程序,将已有的3个国家的国名按字符串大到小的顺序排序。
【实例5.10】编写程序,输入2个字符串,并将它们按长的字符串在前、短的字符串在后的原则连接起来。
【实例5.7】编写程序,输入1个字符串并判断该字符串是不是回文。所谓回文是顺序读和倒序读完全一样的字符串。例如,字符串“eye”是回文。
【编程思路】
定义2个指针p、q,p指向第1个字符,q指向最后一个有效字符。比较这2个字符,如果相等,p指向下一个,q指向前一个,重复以上操作,直至p≥q为止。在比较的过程中如果某2个字符不相等,应立即停止比较。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | #include <stdio.h> int main(int argc, char *argv[]) { char a[80]= {'\0'},*p=a,*q=a; printf("Input a string:\n"); gets(p); while(*q!='\0') q++; q--; while(p<q) if(*p!=*q) break; else { p++; q--; } if(p<q) printf("\"%s\" is not a huiwen string.\n",a); else printf("\"%s\" is a huiwei string.\n",a); return 0; } |
【实例5.8】编写程序,输入3个国家的国名,并输出字符串最大的国家国名。
【编程思路】
比较2个字符串的方法是,从左起比较2个字符串中第1个对应字符不相等的字符ASCII码值大小。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char a[80]= {'\0'},b[80]= {'\0'},c[80]= {'\0'}; char *p=a,*q=b,*w=c,*t=NULL; printf("Input 3 country names:\n"); gets(p); gets(q); gets(w); t=p; if(strcmp(t,q)<0) t=q; if(strcmp(t,w)<0) t=w; printf("Maximum country name is:\n"); puts(t); return 0; } |
【实例5.9】编写程序,将已有的3个国家的国名按字符串大到小的顺序排序。
【编程思路】
比a和b,若b比a大,交换a、b比a和c,若c比a大,交换a、c比b和c,若c比b大,交换b、c
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char a[80]="MeiGuo",b[80]="ZhongGuo",c[80]="YingGuo",t[80]= {'\0'}; char *p=a,*q=b,*w=c; if(strcmp(p,q)<0) { strcpy(t,p); strcpy(p,q); strcpy(q,t); } if(strcmp(p,w)<0) { strcpy(t,p); strcpy(p,w); strcpy(w,t); } if(strcmp(q,w)<0) { strcpy(t,q); strcpy(q,w); strcpy(w,t); } printf("Final order:\n"); puts(p); puts(q); puts(w); return 0; } |
【实例5.10】编写程序,输入2个字符串,并将它们按长的字符串在前、短的字符串在后的原则连接起来。
【编程思路】
用strlen计算2个字符串长度,根据其比较结果连接字符串。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char a[80],b[80],*p=a,*q=b; printf("Input 2 strings:(two lines)\n"); gets(p); gets(q); printf("Final string is:\n"); if(strlen(p)>strlen(q)) { strcat(p,q); puts(p); } else { strcat(q,p); puts(q); } return 0; } |