iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 30
1
自我挑戰組

從0開始,一起學C語言吧!系列 第 30

從0開始,一起學C語言吧!(Day30)

  • 分享至 

  • xImage
  •  

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;
}

印出:
編碼
https://ithelp.ithome.com.tw/upload/images/20191001/20119958RmXiKCJ2RA.png
解碼
https://ithelp.ithome.com.tw/upload/images/20191001/20119958iS2o0cOJU5.png
解釋:兩個自訂函式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--;
		}
	}
}

印出
https://ithelp.ithome.com.tw/upload/images/20191001/201199583EOgSeSZm3.png
解釋:
請注意到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;
}

印出:
是回文
https://ithelp.ithome.com.tw/upload/images/20191001/20119958gufdtud1fe.png
不是回文
https://ithelp.ithome.com.tw/upload/images/20191001/20119958S3qeBfUJ9q.png
那我們就結束這30天的挑戰
非常謝謝大家這30天閱讀我的文章


上一篇
從0開始,一起學C語言吧!(Day29)
系列文
從0開始,一起學C語言吧!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言