C語言經典習題100例(七)31-35


頭條號 cuter科利

今天喜提頭條號黃V,有興趣的朋友可以關注一波,主寫IT領域。

習題31

請輸入星期幾的第一個字母來判斷一下是星期幾,如果第一個字母一樣,則繼續判斷第二個字母。

實現思路:
使用switch語句,如果第1個字母一樣,則判斷用情況語句或if語句判斷第2個字母。
也可以使用條件判斷語句,實現相近。

代碼如下:

#include<stdio.h>

int main(){
	char i, j;
	printf("請輸入一個字母:\n");
	i = getchar();
	getchar();
	switch(i){
		case 'M':
			printf("今天是星期一");
			break;
		case 'T':
			printf("請輸入第二個字母:\n");
			j = getchar();
			switch(j){
				case 'u':
					printf("今天是星期二");
					break;
				case 'h':
					printf("今天是星期四");
				default:
					printf("輸入錯誤");
					break;  
			}
			break;
		case 'W':
			printf("今天是星期三");
			break;
		case 'F':
			printf("今天是星期五");
			break;
		case 'S':
			printf("請輸入第二個字母:\n");
			j = getchar();
			switch(j){
				case 'a':
					printf("今天是星期六");
					break;
				case 'u':
					printf("今天是星期天");
				break;
				default:
					printf("輸入錯誤");
					break;
			}
			break;
		default:
			printf("輸入錯誤");
			break;
	}
    
    return 0;
}

打印:

請輸入一個字母:
S
請輸入第二個字母:
a
今天是星期六

輸入第一個字母之後,又輸入了回車,所以需要有一個getchar()函數來接收輸入的換行符,後面才能接收到新輸入的字符。

習題32

刪除一個字符串中的指定字母,如:字符串ACA,刪除其中的一個字母。

實現思路:
逐個遍歷字符並判斷。

代碼如下:

#include<stdio.h>
#include <string.h>

int main(){
	char originStr[256];
	char ch;
	int i = 0, j = 0;
	printf("Please input a string:\n");
	ch = getchar();
	while(ch != '\n'){
		originStr[i++] = ch;
		ch = getchar();
	}
	printf("Please input the character to delete:\n");
	ch = getchar();
	for(i = 0; i < strlen(originStr); i++){
		if(ch != originStr[i]){
			originStr[j++] = originStr[i];
		}
	}
	originStr[j] = '\0';
	printf("New String is:\n%s\n", originStr);
    
    return 0;
}

打印:

Please input a string:
I like programming!!
Please input the character to delete:
i
New String is:
I lke programmng!!

習題33

判斷一個數是否爲質數。

實現思路:
抽離用函數實現。

代碼如下:

#include <stdio.h>
#include <math.h>

int main(){
	int isPrime(int n);
	int num;
	printf("Please input a number:\n");
	scanf("%d", &num);
	int result = isPrime(num);
	if(result){
		printf("%d is a prime number\n", num);
	}
	else{
		printf("%d is not a prime number\n", num);
	}
    
    return 0;
}

int isPrime(int n){
	int i, prime = 1;
	for(i = 2; i <= sqrt(n); i++){
		if(n % i == 0){
			prime = 0;
		}
	}
	
	return prime;
}

打印:

Please input a number:
125
125 is not a prime number

習題34

實現函數的多層調用。

實現思路:
多層調用即可。

代碼如下:

#include <stdio.h>

int main(){
	void hello_3();
	hello_3();
    
    return 0;
}

void hello_3(){
	void hello(int n);
	int i;
	for(i = 0; i < 10; i++){
		hello(i);
	}
}

void hello(int n){
	printf("%d.Hello World!!!\n", n);
}

打印:

0.Hello World!!!
1.Hello World!!!
2.Hello World!!!
3.Hello World!!!
4.Hello World!!!
5.Hello World!!!
6.Hello World!!!
7.Hello World!!!
8.Hello World!!!
9.Hello World!!!

習題35

字符串反轉,如將字符串blog.csdn.net/CUFEECR反轉爲RCEEFUC/ten.ndsc.golb

實現思路:
使用指針實現,即交換字符串中字符的指針。

代碼如下:

#include <stdio.h>
 
 int main(){
	void reverse(char* s);
    char s[] = "I love C";
    printf("%s =>\n", s);
    reverse(s);
    printf("%s\n", s);
    return 0;
}

void reverse(char* s){
    int len = 0;
    char* p = s;
    while (*p != 0){
        len++;
        p++;
    }
    
    int i = 0;
    char c;
    while (i <= len / 2 - 1){
        c = *(s + i);
        *(s + i) = *(s + len - 1 - i);
        *(s + len - 1 - i) = c;
        i++;
    }
}

打印:

I love C =>
C evol I

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章