网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
3、以下程序的输出结果为( )
#include <stdio.h>
int i;
void prt()
{
for (i = 5; i < 8; i++)
printf("%c", '*');
printf("\t");
}
int main()
{
for (i = 5; i <= 8; i++)
prt();
return 0;
}
A: *** B: *** *** *** *** C: *** *** D: * * *
这道题目需要注意的一点就是:变量i 为全局变量,在函数prt 中改变了变量 i 的值,所以 main 函数里面的循环只进行一次。所以这道题选 D
第四题
4、下面代码段的输出是( )
int main()
{
int a=3;
printf("%d\n",(a+=a-=a*a));
return 0;
}
A: -6 B: 12 C: 0 D: -12
此题考查的是赋值运算符的右结合性,即先算右边的。a+=a-=a*a 可以转化为a=a+(a-=a*a),a-=a*a的值为 -6,并且 a 的值也变为了 -6,所以 a+=-6 就等于 -12,所以选 D
第五题
5、下列不能实现死循环的是( )
A: while(1){ } B: for(;1;){ } C: do{}while(1); D: for(;0;){ }
while 循环括号里的表达式为真,则循环进行;for 循环的第二个表达式,也是 for 循环是否进行的判断条件;do…while循环中括号里的表达式也是循环是否进行的条件。
1 为真,0为假,所以 D 不能实现死循环,所以选 D
记负均正
首先输入要输入的整数个数n,然后输入n个整数。输出为n个整数中负数的个数,和所有正整数的平均值,结果保留一位小数。
0即不是正整数,也不是负数,不计入计算。如果没有正数,则平均值为0。
输入描述:首先输入一个正整数n,然后输入n个整数;输出描述:输出负数的个数,和所有正整数的平均值。
示例
输入:11 1 2 3 4 5 6 7 8 9 0 -1 输出:1 5.0
输入:3 0 0 0 输出:0 0.0
#include <stdio.h>
#include<stdlib.h>
int main() {
int n = 0, count1 = 0, count2 = 0, i = 0;
double ave = 0, sum = 0;
scanf("%d", &n);
int* arr = (int*)malloc(sizeof(int) * n);
if (arr == NULL)
perror("malloc fail");
for (i = 0; i < n; i++) {
scanf("%d", &arr[i]);
if (arr[i] < 0)
count1++;
else if (arr[i] == 0)
count2++;
else
sum += arr[i];
}
if (count2 == n || count1 == n)
ave = 0;
else
ave = sum * 1.0 / (n - count1 - count2);
printf("%d %.1lf", count1, ave);
return 0;
}
此题需要注意的点是要好好读题,0不算正数,在判断的时候要单独考虑,并且不参与计算平均值。当全是0或者全是负数的时候还要单独考虑一下输出结果,否则就会出现除数为 0 而得不到运算结果。
旋转数组的最小数字
有一个长度为 n 的非降序数组,比如 [1,2,3,4,5] ,将它进行旋转,即把一个数组最开始的若干个元素搬到数组的末尾,变成一个旋转数组,比如变成了 [3,4,5,1,2] ,或者 [4,5,1,2,3] 这样的。请问,给定这样一个旋转数组,求数组中的最小值。
要求:空间复杂度:O(1) ,时间复杂度:O(logn)
示例
输入:[3,4,5,1,2] 返回 -1
输入:[3,100,200,3] 返回 3
这道题如果要求最小数字确实不难,难就难在要求时间复杂度 O(logN) ,而二分查找的时间复杂度就是 O(logN),所以这道题采用二分查找的方法。
这个题主要分析三种旋转情况 [1, 2, 3, 4, 5],使用中间值与右端进行比较。
- 中间大于右边 [3, 4, 5, 1, 2],这种情况下,最小数一定在右边;则left = mid + 1。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
深入研究,那么很难做到真正的技术提升。**
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!