五道选择题:
1、执行下面的程序段,语句3的执行次数为( )
for(i = 0; i <= n-1; i++) // (1)
for(j = n; j > i; j--) // (2)
state// (3)
A.n(n+2)/2 B.(n-1)(n+2)/2 C.n(n+1)/2 D.(n-1)(n+2)
2、对于代码段,下面描述正确的是( )
t=0;
while(printf("*"))
{
t++;
if (t<3)
break;
}
A. 其中循环控制表达式与0等价 B. 其中循环控制表达式与'0'等价
C. 其中循环控制表达式是不合法的 D. 以上说法都不对
3、如下函数是求两个int数字最大公约数的,指出其中存在的问题【多选】( )
int gcd(char x,char y)
{
int min = x < y ? x : y;
for (min = 0; min > 0; min--)
if (x % min = 0 && y % min = 0)
return min;
}
A. 参数类型不对 B.循环变量min初值不对 C.判断等于的符号不对 D.返回类型不对
4、下列条件语句中,功能与其他语句不同的是( )
A. if(a) printf("%d\n",x); else printf("%d\n",y);
B. if(a==0) printf("%d\n",y); else printf("%d\n",x);
C. if (a!=0) printf("%d\n",x); else printf("%d\n",y);
D. if(a==0) printf("%d\n",x); else printf("%d\n",y);
5、我们知道C语言的 break 语句只能跳出离它最近的一层循环,可是有时候我们需要跳出多层循环,下列跳出多层循环的做法正确的是【多选】( )
A. 将程序写成函数用return结束函数,便可跳出循环
B. 修改外层循环条件例如
for (int i = 0; i < MAX1; i++)
{
for (int j = 0; j < MAX2; j++)
{
if (condition)
{
i = MAX1;//1
break;//2
}
}
//3
}
C. 在外层循环设置判断条件例如
for (; symbol != 1 && condition2; )
{
for (; symbol != 1 && condition3; )
{
if (condition1)
symbol = 1;
}
}
D. 在外层循环后面加入break例如
for ( ;symbol; )
{
for ( ;symbol!=1; )
{
if (condition)
symbol = 1;//1
}
if (symbol == 1)//2
break;
}
编程题1:
数字在升序数组中出现的次数_牛客题霸_牛客网
int GetNumberOfK(int* nums, int numsLen, int k) {
int i = 0; int count = 0;
for (i = 0; i < numsLen; i++)
//遍历一遍数组
{
if (nums[i] == k)
//k是目标,当等于时计数器+1
{
count++;
}
}
return count;//返回统计结果
}
编程题2:
面试题 05.06. 整数转换 - 力扣(LeetCode)
int convertInteger(int A, int B) {
unsigned int x = A ^ B; int count = 0;
//异或(^)可以将A和B的两个值相同的位变为0,不同的位变为1
//因此此时的x的位上的1的数量为A和B不同的位的个数
while(x)
{
if(x&1==1)
//与1进行且运算,1只有最后一位为1,其他位为0
//可以将x最后一位的值剥离出来
//当剥离的结果为1意味着,找到了1个A和B不同的位
{
count++;
}
x>>=1;
//将x右移1位,如此可以遍历x上的所有位
}
return count;
//返回计数结果
}
好了,今天的练习到这里就结束了,感谢各位友友的来访,祝各位友友前程似锦O(∩_∩)O