习题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 • 1 • 2 • 3 • 4
习题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