作业帮 > 综合 > 作业

为什么要这样定义呀?if (((int)p[i] = 97) || ((int)p[i] = 65) || ((int)

来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/12 00:04:36
为什么要这样定义呀?
if (((int)p[i] = 97) || ((int)p[i] = 65) || ((int)p[i] = 48))
{
为什么要这样定义呀?if (((int)p[i] = 97) || ((int)p[i] = 65) || ((int)
其实我是使用了一个比较笨的方法,高级的可能也有
我不会,然后这里是通过字符ASCII码与字符的对应
因为p数组接收的都是字符
所以前面使用强制转换,将其转换成ASCII来使用,如(int)p[i]
(int)p[i] = 97)表示p[i]不是 a-z
((int)p[i] = 65)表示p[i]不是 A-Z
((int)p[i] = 48)表示p[i]不是 0-9(注意这里的0-9是字符)
这句主要是挑选出既非字母字符也非数字字符的东西
以便删除
再问: 那字符串是怎么样的情况下才是对称啊?
再答: int flag = 1;//表示字符串是对称的 for (int s = 0; s < j/2; s++) if (((int)q[s] != (int)q[j-s]) && ((int)q[s] != ((int)q[j-s])+32)) flag = 0; if (flag == 0) printf("字符串不对称!\n"); else printf("字符串是对称!\n"); 给你说一下这一段语句吧 首先是定义了一个标识flag表示默认应该是对称的 然后从s=0开始比较的q[s] == q[j-s]这是说q[0]==q[Max],如果不相等就标识flag为0了(max表示数组最大下标),同时对于(int)q[s] != ((int)q[j-s])+32)是判断是否大写字母对应小写字母的,原理跟上面的解释一样,都是利用了字符的ASCII flag就描述了字符串不对称,如果两者相等,继续s增加1,在比较去q[1] == q[Max-1] 一直比较下去,知道结束最后在if中看flag的值若是1说明对称,若是0表示不对称