五道选择题:
1、如果 x=2014 ,下面函数的返回值是( )
int fun(unsigned int x)
{
int n = 0;
while(x + 1)
{
n++;
x = x | (x + 1);
}
return n;
}
A、20 B、21 C、23 D、25
2、如下函数 fun 计算 prod=1*2*3*…*n ,并返回计算结果值。但当 n>12 时,返回值不正确。要找出该程序的错误,正确的调试方法是( )
int fun(int n)
{
int prod = 1 , i = 0;
for(i = 1;i <= n;i++)
{
prod *= i;
}
return prod;
}
A、监视变量prod的值,在prod *= i;行处设置断点,然后单步运行,直到发现错误原因
B、监视变量prod的值,在return prod;行处设置断点,程序中断后,即可发现错误原因
C、在prod=1;处设置断点,然后在函数调用堆栈中即可发现错误原因
D、监视变量i的值,在for (i=1; i<=n; i++)行处设置断点,然后单步运行,直到发现错误原因
3、请问下列代码的输出结果有可能是哪些【多选】( )
#include <stdio.h>
typedef union
{
int a;
struct
{
short b;
short c;
};
}X;
int main()
{
X x;
x.a = 0x20150810;
printf("%x,%x\n", x.b, x.c);
return 0;
}
A、2015,810 B、50810,201 C、810,2015 D、20150,810
4、运行以下程序后,如果从键盘上输入 65 14<回车> ,则输出结果为( )
#include<stdio.h
int main()
{
int m, n;
printf("Enter m,n\n");
scanf("%d %d", &m,&n);
while (m!=n) //1
{
while(m>n) m=m-n; //2
while(n>m) n=n-m; //3
}
printf("m=%d\n",m);
return 0;
}
A、3 B、2 C、1 D、0
5、若运行以下程序时,从键盘输入ADescriptor<回车> ,则下面程序的运行结果是( )
#include <stdio.h>
int main()
{
char c;
int v0 = 0, v1 = 0, v2 = 0;
do
{
switch (c = getchar())
{
case'a':case'A':
case'e':case'E':
case'i':case'I':
case'o':case'O':
case'u':case'U':v1 += 1;
default: v0 += 1; v2 += 1;
}
} while (c != '\n');
printf("v0=%d,v1=%d,v2=%d\n", v0, v1, v2);
return 0;
}
A、v0=7,v1=4,v2=7 B、v0=8,v1=4,V2=8 C、v0=11,v1=4,v2=11 D、v0=12,v1=4,v2=12
编程题1:
bool isPalindrome(int x) {
if (x < 0)
//当x为-1时,倒过来为1-,可看出,负数不可能为回文数
{
return false;
}
long long int sum = 0; long long int x1 = x;
while (x1)
{
sum = sum * 10 + x1 % 10;
x1 /= 10;
}
if (sum == x)
{
return true;
}
else
return false;
}
编程题2:
力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
bool lemonadeChange(int* bills, int billsSize) {
//一开始我们是穷光蛋,一块钱都找不出
if (bills[0] != 5)
return false;
int five = 0; int ten = 0;
//只需要计算5块钱和10块钱的数目即可,因为找钱不可能拿20找
int i = 0;
for (i = 0; i < billsSize; i++)
{
if (bills[i] == 5)
//给我们5美元的时候,直接收就行
{
five += 1;
}
if (bills[i] == 10)
//10美元就一种情况,找5美元,收10美元
{
five -= 1;
if (five < 0)
{
return false;
}
ten += 1;
}
if (bills[i] == 20)
//两种情况,找3张5或1张10和1张5
{
if (five >= 3 && ten < 1)
//确实没有办法了,就找3张5出去,可以找的时候找1张5和1张10
//因为5相比10适用范围更大
{
five -= 3;
}
else
{
five -= 1;
ten -= 1;
}
if (five < 0 || ten < 0)
{
return false;
}
}
}
return true;
}
好了,今天的练习到这里就结束了,感谢各位友友的来访,祝各位友友前程似锦O(∩_∩)O