1、判断输入的字符串是否为“回文”(顺读和倒读都一样)字符串
#include <stdio.h> #include <string.h> #define N 100 int palindrome(char *s, int n) { char *head, *tail; head = s; tail = s + n -1; int i; for(i = 0; i < n / 2; head++, tail--, i++) { if(*head != *tail) return 0; } return 1; } int main(void) { char str[N]; printf("input a string:"); scanf("%s", str); if(palindrome(str, strlen(str))) printf("is palindrome\n"); else printf("is not palindrome\n"); return 0; }
#include <stdio.h> #include <string.h> #define N 100 char *sort_del(char *p, int len) { char tmp; int i, j; for(i = 0; i < len; i++) { for(j = i+1; j < len; j++) { if(p[i] > p[j]) { tmp = p[i]; p[i] = p[j]; p[j] = tmp; } } } j = 0; for(i = 0; i < len; i++) { if(p[i] != p[i + 1]) p[j++] = p[i]; } p[j] = '\0'; return p; } int main(void) { char str[N]; int i; printf("please input a string:"); scanf("%s", str); sort_del(str, strlen(str)); printf("%s\n", str); return 0; }
#include <stdio.h> #include <stdlib.h> #include <string.h> #define N 100 int word_num(char *s) { int cnt = 0; while(*s) { if((*s != ' ') && ((*(s + 1) == ' ') || (*(s + 1) == '\0'))) cnt++; s++; } return cnt; } int word_len(char *s) { int a[N]; int max = 0, i = 0; int j = 0; while(*s) { if(*s != ' ') a[i] = ++j; else { a[++i] = 0; j = 0; } s++; } for(i = 0; i < 5; i++) if(a[i] > max) max = a[i]; return max; } int main(void) { char str[N]; printf("please input words:\n"); fgets(str, N, stdin); printf("%d\n", word_num(str)); printf("%d\n", word_len(str)); return 0; }
#include <stdio.h> #include <string.h> #define N 100 char *fun(char *s, int len) { char b[N]; int i; int j = 0, k = 0; char *p = s; for(i = 0; i < len; i++, p++) { if((*p >= 'a' && *p <= 'z') || (*p >= 'A' && *p <= 'Z')) s[j++] = *p; else b[k++] = *p; } s[j] = '\0'; b[k] = '\0'; strcat(s, b); return s; } int main(void) { char str[N]; printf("input a string:"); scanf("%s", str); puts(fun(str, strlen(str))); return 0; }