1:C
计算j循环了多少次,分析:只有i==0的时候循环才能停止; 最开始从7->4->1->-2;但是我们知道是不会产生-2这样的数字的所以依据图二得到的是254,254/3=84...2;就是84次,减了84次后得到2;再减得到-1也就是255;255/3=85...0;所以总共85+84+3+1=173;
2:C
分析:第一次1%2=0;跳出if到a++,a==1,打印1;第二次a==1,1%2!=0且满足后面条件进入if语句从而转换成大写A,a==2,打印A;第三次a==2,2%2==0;跳出if语句到a++,a==3,打印b;依次分析
3:A
分析:
分析: -3
10000000000000000000000000000011原码
11111111111111111111111111111100反码
11111111111111111111111111111101补码
2
00000000000000000000000000000010原反补码
补码相加之后得到
11111111111111111111111111111111补码
11111111111111111111111111111110反码
10000000000000000000000000000001原码
就是-1
4:B
分析:首先我们来看A选项;*p[1]指向1的首元素地址的元素B,然后加3得到E;B选项p[1]是指1的整个元素 在加3解引用指向j。
5: B
分析:p[1][2]就是第一行第二列就是0;
6:编程题1:
题目:
实现:
#include <stdio.h>
#include <math.h>
//库函数 abs()
int main()
{
int n = 0;
scanf("%d", &n);
int f1 = 0;
int f2 = 1;
int f3 = f1 + f2;
while (1)
{
if (n == f2)
{
printf("0\n");
break;
}
else if (n < f2)
{
if (abs(f1 - n) < abs(f2 - n))
{
printf("%d\n", abs(f1 - n));
}
else
{
printf("%d\n", abs(f2 - n));
}
break;
}
f1 = f2;
f2 = f3;
f3 = f1 + f2;
}
return 0;
}
运行结果:
7:编程2
题目:
实现:
class Solution {
public:
void replace(char* str, int length)
{
//统计空格的个数
int space_count = 0;
char* cur = str;
while (*cur)
{
if (*cur == ' ')
space_count++;
cur++;
}
//计算end1,end2;
char* end1 = str + length- 1;
char* end2 = str + length - 1 + 2 * space_count;
while (end1 != end2)
{
if (*end1 == ' ')
{
*end2-- = *end1--;
}
else
{
*end2-- = '0';
*end2-- = '2';
*end2-- = '%';
end1--;
}
}
}
};