本篇记录了关于C语言的一些题目(puts,printf函数的返回值,getchar,跳出多重循环),和一道关于位运算的代码[整数转换]。
C语言碎片知识
如下程序的功能是( )
#include <stdio.h> int main() { char ch[80] = "123abcdEFG*&"; int j; puts(ch); for(j = 0; ch[j] != '\0'; j++) if(ch[j] >= 'A' && ch[j] <= 'Z') ch[j] = ch[j] + 'e' - 'E'; puts(ch); return 0; }
A: 测字符数组ch的长度
B: 将数字字符串ch转换成十进制数
C: 将字符数组ch中的小写字母转换成大写
D: 将字符数组ch中的大写字母转换成小写
答案:D puts(函数名)输出字符串数组
对于代码段,下面描述正确的是( )
t=0; while(printf("*")) { t++; if (t<3) break; }
A: 其中循环控制表达式与0等价 B: 其中循环控制表达式与'0'等价
C: 其中循环控制表达式是不合法的 D: 以上说法都不对
答案:B
printf函数调用的返回值是字符串的个数,所以printf("*")的返回值是1,while(1)条件恒为真。0和'0'是不一样的,'0'的ascll码值为48。while(48)也恒为真。
向一个字符数组输入字符串的方法之getchar()
char ch;
while(getchar() != "\n")
{
;
}
我们知道C语言的 break 语句只能跳出离它最近的一层循环,可是有时候我们需要跳出多层循环,下列跳出多层
循环的做法正确的是【多选】( )
A: 将程序写成函数用return结束函数,便可跳出循环
B: 修改外层循环条件例如for( int i = 0 ; i < MAX1 ; i ++ ) { for( int j = 0 ; j < MAX2 ; j ++ ) { if( condition ) { i = MAX1; break; } } }
C: 在外层循环设置判断条件例如
for( ; symbol != 1 && condition2 ; ) { for( ; symbol != 1 && condition3 ; ) { if( condition1 ) symbol = 1 ; } }
D: 在外层循环后面加入break例如
for( ; condition2 ; ) { for( ; condition3 ; ) { if( condition1 ) symbol = 1 ; } if( symbol == 1 ) break ; }
答案:ABCD 跳出多重循环的正确做法↑
每日代码
整数转换
. - 力扣(LeetCode)
int get_bin_count(int num) {
int count = 0;
for (int i = 0; i < 32; i++) {
if ((num >> i) & 1)
count++;
}
return count;
}
int convertInteger(int A, int B){
return get_bin_count(A^B);
}
关于位运算的一道题。
先把A^B(异或,不同为1)的结果传参给get_bin_count函数,通过右移和按位与运算算出有几位为1,即A和B有几位不同,由count记录和返回。
-The End-