今天喜提頭條號黃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