【_(:з)∠)_咸_(:з)∠)_鱼_(:з)∠)_本_(:з)∠)_鱼_(:з)∠)_】
【知识梳理】


【典例分析】
【第三十一题】
题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。
思路:字符判断,可switch可ifelse,略。
【第三十二题】
题目:删除一个字符串中的指定字母,如:字符串 "aca",删除其中的 a 字母。
思路:因为字符串的本质就是字符数组,所以可以遍历+删选+销毁。
1 #include <stdio.h> 2 #include<stdlib.h> 3 #include<string.h> 4 5 6 char *deletechar(char *str, char *deleted) 7 { 8 //初始化判断数组,256是因为ASCII常用字符共256个 9 char judge[256]; 10 for (int i = 0; i < 256; i++) 11 { 12 judge[i] = 1; 13 } 14 //识别待删除字符特征 15 for (int i = 0; i < strlen(deleted); i++) 16 { 17 judge[deleted[i]] = 0; 18 } 19 20 int neworder = 0; 21 //判断特征 22 for (int i = 0; i < strlen(str); i++) 23 { 24 //若str[i]值为1,说明不是待删除字符,输出 25 if (judge[str[i]]) 26 { 27 str[neworder] = str[i]; 28 neworder++; 29 } 30 //否则str[i]值为0,说明是待删除字符,不输出 31 else 32 { 33 ; 34 } 35 } 36 //结束字符串 37 str[neworder] = '\0'; 38 return str; 39 } 40 41 int main() 42 { 43 char str[10000] ; 44 45 char s[10000] ; 46 47 printf("请输入原字符串:"); 48 scanf_s("%s", str,10000); 49 50 printf("\n请输入要删除的字符们:"); 51 scanf_s("%s", s,10000); 52 53 deletechar(str, s); 54 printf("\n删除后的字符串:%s", str); 55 56 system("pause>nul"); 57 return 0; 58 }
运行结果:

做题心得:对字符数组有了更深的理解,可惜现在还不能够做到录入带空格的字符串,之后会尝试。
【第三十三题】
题目:判断一个数字是否为质数。
思路:略。
【第三十四题】
题目:练习函数调用。
思路:不练= =
【第三十五题】
题目:字符串反转,如将字符串 "www.runoob.com" 反转为 "moc.boonur.www"。
思路:将之前27题的字符反转中的预设长度i换成strlen,再对定义的字符数组做一些小修改。
1 #include <stdio.h> 2 3 char a[10000]; 4 5 void palin(n,t) 6 int n; 7 int t; 8 { 9 char next; 10 if (n <= 0) 11 { 12 next = a[t]; 13 printf("相反顺序输出结果\40:\40"); 14 putchar(next); 15 } 16 else 17 { 18 next = a[t-n]; 19 n--; 20 palin(n,t); 21 putchar(next); 22 } 23 } 24 25 int main() 26 { 27 void palin(int n); 28 printf("请输入字符串\40:\40"); 29 scanf_s("%s", a, 10000); 30 int i = strlen(a)-1; 31 palin(i,i); 32 printf("\n"); 33 34 system("pause>nul"); 35 return 0; 36 }
运行结果:

做题心得:听说c不会检查越界行为,以前scanf的时候可以超长输入,被很多黑客攻击,现在改成_s就是为了这一点?反正我现在没法越界输入了,只能把数组定义的尽可能长。
【第三十六题】
题目:求100之内的素数。
思路:没完了还???略。
浙公网安备 33010602011771号