_(:з)∠)_咸_(:з)∠)_鱼_(:з)∠)_本_(:з)∠)_鱼_(:з)∠)_】

 

【知识梳理】

 

【典例分析】

【第三十一题】

题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。

思路:字符判断,可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之内的素数。

思路:没完了还???略。