Day30
那在上一篇我們教完了字串所有的語法
那今天就來做個綜合練習吧
範例1:編碼和解碼程式
#include<stdio.h>
#include<stdlib.h>
char *encode(char *);
char *decode(char *);
int main(void){
char ch,str[80];
printf("請輸入字串:");
gets(str);
printf("你要 1) encode 2)decode :");
scanf("%c",&ch);
if(ch=='1'){
puts("After encode :");
puts(encode (str));
}else if(ch=='2'){
puts("After decode :");
puts(decode (str));
}else
puts("Unknown input");
system("pause");
return 0;
}
char* encode(char *str){
char *r=str;
while(*str){
*str=*str +13;
str++;
}
return r;
}
char *decode (char *str){
char *r=str;
while (*str){
*str =*str-13;
str++;
}
return r;
}
印出:
編碼
解碼
解釋:兩個自訂函式encode()和decode(),分別接受一個字串
範例2: 去除字串
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void exclude(char*,char*);
int main(void){
char str1[]="What a wonderful world!";
char str2[]="wonderful";
exclude(str1,str2);
puts(str1);
system("pause");
return 0;
}
void exclude(char *s1,char* s2){
int i,s2_len=strlen(s2);
for(i=0;i<(int)strlen(s1)-s2_len;i++){
if(!strncmp(s1+i,s2,s2_len)){
strcpy(s1+i,s1+i+s2_len);
i--;
}
}
}
印出
解釋:
請注意到strlen()函式回傳的值之型態size_t,不同於int,所以需經過(int )的轉型
自訂函式exclude()接受兩字串引數,此函式會從字串1中尋找字串2
範例3: 回文(palindrome)判斷
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(void){
int i,len;
char str[80];
while(1){
gets(str);
len=strlen(str);
for(i=0;i<len/2;i++){
if(str[i] !=str[len -i -1]){
printf("%s 不是回文\n",str);
break;
}
}
if(i>=len/2)
printf("%s是回文\n",str);
break;
}
system("pause");
return 0;
}
印出:
是回文
不是回文
那我們就結束這30天的挑戰
非常謝謝大家這30天閱讀我的文章