#include<stdio.h>int main()
{char c = 'A';//65if ('0' <= c <= '9') printf("YES");else printf("NO");return 0;
}
‘0’<=c<=‘9’ 并非判断x大于等于字符0,小于等于字符9,而是先执行’0’<=c,使用这个表达式的结果再和’9’比较,‘0’的ASCII码值是48,‘A’的ASCII码值是’65’,故’0’<c是真值1,1无疑是小于字符’9’的,最终是真
#include<stdio.h>int main()
{unsigned short x = 65530;//16//2的16次方是65536// 65530//0000 0000 0000 0000 1111 1111 1111 1010//65530unsigned int y = x;//32//unsigned short类型的x变量2个字节保存了65530//十六进制形式为0xFFFA//x给y赋值时会整型提升,而无符号数在提升时高位补0,其实就相当于把x的值放在了y的低2个字节的空间中return 0;
}
#include<stdio.h>int main()
{int n = 1001;int ans = 0;for (int i = 1; i <= n; ++i){ans ^= i % 3;//1 2//}printf("%d", ans);return 0;
}
i % 3 的值按1、2、0循环,可推算出ans按1、3、3、2、0、0循环,循环进行1001次,而1001%6=5,也就是ans按规律得到的第5个数为最终结果,故ans=0
C 语言中,下列运算符优先级最高的是
A: ! B: % C: >> D: ==
单目运算符的优先级通常都比较高
要使 a 的低四位翻转,需要进行操作是:a^0xF
十六进制数0xF是4位1,参与运算时整型提升,高位都是0。
低四位和1异或,0^1是1,1^1是0;高位和0异或,0^0是0,1^0是1。
故而可以通过异或F使得a的低四位翻转,并保持高位不变
数字颠倒
输入一个整数,将这个整数以字符串的形式逆序输出
程序不考虑负数的情况,若数字含有0,则逆序形式也含有0,如输入为100,则输出为001
#include <stdio.h>int main() {int n = 0;scanf("%d", &n);char arr[1111] = "0";int brr[1111] = { 0 };int m = 0;int k = 0;while (n != 0) {int temp = n % 10;brr[k++] = temp;//储存数字的每一位(从低位到高位储存)n = n / 10;m = m + 1;//记录数字的位数}int i = 0;for (i = 0; i < m; i++) {arr[i] = (char)brr[i]+'0';}printf("%s\n", arr);return 0;
}
#include <stdio.h>int main() {int num;while (~scanf("%d", &num)) {if (num ==0) {//0的情况特殊处理,因为0不会进入while循环计算余数,因此不会被打印printf("%d", num % 10);continue;}while (num > 0) {printf("%d", num % 10);//打印一个数字的个位数 129 % 10 得到9num /= 10;//通过除以10的方式去掉个位数 例如:129/10 得到12}printf("\n");}return 0;
}
单词倒排
对字符串中的所有单词进行倒排。
说明:
1、构成单词的字符只有26个大写或小写英文字母;
2、非构成单词的字符均视为单词间隔符;
3、要求倒排后的单词间隔符以一个空格表示;如果原字符串中相邻单词间有多个间隔符时,倒排转换后也只允许出现一个空格间隔符;
4、每个单词最长20个字母;