网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
//循环语句部分
}
根据条件判断,当x为0 1 2 3 的时候会进行循环,所以这道题的
正确答案是4次,选C
💦第二题
以下程序的运行结果是()
#include <stdio.h>
int main(void) {
printf("%s , %5.3s\n", "computer", "computer");
return 0;
}
A. computer , puter
B. computer , com
C. computer , computer
D. computer , compu.ter
这道题是打印字符串,%s打印字符串遇到\0就会停止,第一个%s会把computer全部打印出来,而%5.3是什么意思呢?
这里来讲解一下:
%m.ns:
m:输出字符串的宽度
n:左起截取目标字符串n个字符,并且是右对齐,补空格
当字符串长度 > n > m :此时m就失效了,只受n控制。
当n > 字符串长度 时:此时和%s作用一样
所以这道题的答案是
computer , com ,所以选B
💦第三题
下列main()函数执行后的结果为()
int func(){
int i, j, k = 0;
for(i = 0, j = -1;j = 0;i++, j++)
{
k++;
}
return k;
}
int main(){
cout << (func());
return 0;
}
A. -1
B. 0
C. 1
D. 2
这道题是用main函数调用func函数,然后返回一个k值,k在for循环中会变化,这道题的本质就是看for循环循环了多少次!
初始化部分j初始化为-1,条件判断部分是j赋值为0,所以这个条件判断是恒为假的,所以不会进入到for循环中,所以k的值为0。
这道题的答案是 0 ,选B
💦第四题
下面程序输出是什么()?
#include <stdio.h>
int main()
{
int a=1,b=2,c=3,d=0;
if(a == 1 && b++==2)
if(b!=2||c--!=3)
printf("%d,%d,%d\n" ,a,b,c);
else
printf("%d,%d,%d\n" ,a,b,c);
else
printf("%d,%d,%d\n" ,a,b,c);
return 0;
}
A. 1,2,3
B. 1,3,2
C. 3,2,1
D. 1,3,3
这道题目就和有些人刚开始写代码的时候,喜欢吧if语句的括号省略掉,这就导致代码的可读性变差,这时候就需要我们来仔细寻找if和else
#include <stdio.h>
int main()
{
int a=1,b=2,c=3,d=0;
if(a == 1 && b++==2)
{
if(b!=2||c--!=3)
{
printf("%d,%d,%d\n" ,a,b,c);
}
else
{
printf("%d,%d,%d\n" ,a,b,c);
}
}
else
{
printf("%d,%d,%d\n" ,a,b,c);
}
return 0;
}
经过调整之后代码的可读性变高了,然后就可以做题了
看第一个if,当两个都为真的时候才会进下面,a初始化是等于1的,为真,b++是先用b比较再进行++,所以也是为真的,所以就会进入到第二个if语句,然后我们再进行判断
第二个if的语句是用逻辑或连接起来的,所以某一边为真即为真,前面已经b++了,所以b现在为3,所以b!=2,所以为真,逻辑或 当第一个表达式为真是不会执行第二个表达式的所以会直接打印abc的值
所以这道题只有b在初始化以后有改变,
所以这道题的答案为1 3 3 ,所以选D
💦第五题
若有定义语句: int a=10 ; double b=3.14 ; 则表达式 ‘A’+a+b 值的类型是()
A. char
B. int
C. double
D. float
这道题不同类型的表达式进行计算的时候会有类型的提升,表示范围小会自动提升到范围大的类型,char占一个字节,int占四个字节,double占八个字节,所以char类型和int类型会自动提升到double类型。
所以这道题选C
💦第六题
在int p[][4] = {{1}, {3, 2}, {4, 5, 6}, {0}};中,p[1][2]的值是()
A. 1
B. 0
C. 6
D. 2
这个题是定义了一个数组并且进行初始化,这里是个四行四列的数组,而且数组并没有完全初始化,所以没有初始化的地方默认是0,所以我们可以把数组写出来
1 0 0 0
3 2 0 0
4 5 6 0
0 0 0 0
所以p[1][2]表示第二行第三列的元素
所以这道题的答案是0 选B
💦第七题
选择表达式 11|10 的结果(本题数值均为十进制)()
A 11
B 10
C 8
D 2
这道题是计算表达式,将11 按位或 10 ,我们先要将十进制转换为二进制
11: 0000 1011
10: 0000 1010
按位或的计算方式为 有1则1,无1则0
所以
11|10 : 0000 1011
转换为十进制的话是 11
所以这道题的答案是 11 ,选A
💦第八题
int fun(int a){
a^=(1<<5)-1;
return a;
}
fun(21)运行结果是()
A 10
B 5
C 3
D 8
这里看fun函数里面的表达式,我们来分步进行分析
^= : a ^= b ; -> a = a ^ b
1 << 5 : 表示将1左移5位
0000 0001 -> 0010 0000 -> 32
所以 a ^ = (1<<5)-1 -> a ^ = 31;
所以 a = 21 ^ 31
21 : 0001 0101
31 : 0001 1111
异或的计算方式是 不同为1,相同为0
所以21 ^ 31 :0000 1010 -> 10
所以这道题的答案是10, 选A
💦第九题
若有定义语句:int year=1009,*p=&year;以下不能使变量 year 中的值增至 1010 的语句是()
A *p+=1;
B (*p)++;
C ++(*p)
D *p++
A选项的*优先级最高,所以是先对p解引用得到year的地址,然后+1,所以正确
B和C选项的区别是前置++和后置++的区别,但是他们都带了括号,所以也是先对p解引用,所以也能是year变为1010
D选项是因为后置++的优先级高于*p,但因为是后置++,所以会先对p解引用,再对p进行++,所以对year的值没有改变
所以这道题选 D
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
对p解引用,再对p进行++,所以对year的值没有改变
所以这道题选 D
[外链图片转存中…(img-BWioLRY6-1715695154507)]
[外链图片转存中…(img-yFFSProx-1715695154507)]
[外链图片转存中…(img-giCRKbqN-1715695154507)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新