本溪化工建设质量监督站网站,万网域名查询ip,wordpress广告从哪获取,初爱ねんね免费720p前言#xff1a;每日一练系列#xff0c;每一期都包含5道选择题#xff0c;2道编程题#xff0c;博主会尽可能详细地进行讲解#xff0c;令初学者也能听的清晰。每日一练系列会持续更新#xff0c;暑假时三天之内必有一更#xff0c;到了开学之后#xff0c;将看学业情… 前言每日一练系列每一期都包含5道选择题2道编程题博主会尽可能详细地进行讲解令初学者也能听的清晰。每日一练系列会持续更新暑假时三天之内必有一更到了开学之后将看学业情况更新。 五道选择题
1、下面代码的结果是( )
#include stdio.h
int main()
{int a, b, c;a 5;//1c a;//2b c, c, a, a;//3b a c;//4printf(a %d b %d c %d\n, a, b, c);return 0;
}
A. a 8 b 23 c 8 B. a 9 b 23 c 8
C. a 9 b 25 c 8 D. a 9 b 24 c 8 解析观察代码发现目标是打印出abc对应的值我们计算出打印的时侯abc的值问题就解决了可以看出在打印之前使用了很多运算符。因此关键这题的解题关键就在于你对运算符的理解 运算符分为两种一种是前置一种是后置举个例子a就是前置a就是后置这两种的区别就在于前置是先后使用后置是先使用后。比方说 可以看出x一开始被初始化为3yxy是先等于3x再。zx是先令x再让zx #include stdio.h
int main()
{int a, b, c;a 5;//1c a;//2b c, c, a, a;//3b a c;//4printf(a %d b %d c %d\n, a, b, c);return 0;
} 我们继续做题代码1令a5代码2令a先使a6再让ca使c6。 代码3是逗号表达式根据之前所学我们知道逗号表达式从左往右计算计算结果为最后一个表达式从左往右走先是c使c1等于7再是c使c1令c等于8接着是a使a1等于7再是a使b先等于aa此时7故b7。再令a使a为8。 来到代码4代码4令ba c换种写法就是令bba c是后置先不管bbac87823最后再让a加1为9因此abc最后的值分别是9238故选B 2、如下程序的运行结果是
char c[5]{a, b, \0, c, \0};
printf(%s, c); A、a b B、ab\0c\0 C、ab c D、ab 解析这题考察的是对于字符串的理解打印字符串打印到\0就停止没遇到\0就会一直打印到遇到\0为止 代码将ab\0c\0一个一个字符放进了c这个字符数组中并用打印字符串的形式打印但刚打印完ab就遇到了\0字符串结束标志所以就会停止打印。故选D 3、在下面的字符数组定义中哪一个有语法错误 A、char a[20]abcdefg; B、char a[]xy5.;
C、char a[15]; D、char a[10]5; 解析AB选项都使用了字符串初始化数组可能你不明白为什么可以用字符串初始化数组但做这道题的时候你就应该直接排除掉AB。之所以可以用字符串来初始化数组是因为字符串的特殊性字符串本身代表首元素的地址。而C选项它没有初始化数组当然不能算错。但是D选项就出问题了它这个操作无异于char a[10]0因为字符的存储是用ASCII码值实现的可以将字符看作一种整型。所以D错 4、下列程序的输出是
#includestdio.h
int main()
{int a[12] { 1,2,3,4,5,6,7,8,9,10,11,12 }, * p[4], i;for (i 0; i 4; i)p[i] a[i * 3];printf(%d\n,p[3][2]);return 0;
} A、上述程序有错误 B、6 C、8 D、12 解析观察代码可以看出它创建了一个整型数组a和一个整型指针数组p然后通过for循环将数组a首元素的地址第4个元素的地址第7个元素的地址以及第10个元素的地址放了进去最后要打印p[3][2][3]可以找到第10个元素那么[3][0]为第10个[3][1]为第11个故[3][2]为第12个所以最后打印出12故选D 5、以下逗号表达式的值为
(x 4 * 5, x * 5,x5);
A、25 B、20 C、100 D、45 解析易错题逗号表达式从左往右计算先算x4*5故此时x20又令x*5但没有写做xx*5故x依然是20最后让x5即25所以该逗号表达式最后的值为25选A 编程题1
记负均正_牛客题霸_牛客网 思路这题很简单遇到负数计数器1遇到正数就给你创建的统计总和的变量加上最后打印出负数的个数和使用保留一位小数的方式打印出正整数的平均值即可。 #include stdio.h
int main() {int n 0;scanf(%d, n);int i 0; float sum 0;//正整数总和int a_count 0; int b_count 0;//计数器for (i 0; i n; i){int a 0;scanf(%d, a);if (a 0){a_count;//负数计数器}else if (a 0){sum a;b_count;//正数计数器}}if (b_count ! 0)//除数不能是0{sum / b_count;}printf(%d %.1f, a_count, sum);
}
编程题2
力扣LeetCode官网 - 全球极客挚爱的技术成长平台 思路由于数组1~n的数都有且只有一个重复一个缺失那么我使用1^2^3.....^n所得到的数对着数组的内容依次^一遍两个相同的数^等于0且^满足交换律那么最后得到的值就是重复的和缺失互相^的值如此我们只要求出缺失的或者重复的中的一个便可以。 对qsort函数不了解的小伙伴可以看下我之前的文章 手把手教你使用qsort函数_大海里的番茄的博客-CSDN博客
#includestdio.h
#includestdlib.h
int cmp_int(const void* p1, const void* p2)
{return(*(int*)p1 - *(int*)p2);//升序排序
}
int* findErrorNums(int* nums, int numsSize, int* returnSize)
{int i 0; int x 0;for (i 1; i numsSize; i){x ^ i;//先从头^一遍因为^满足交换律顺序不重要}for (i 0; i numsSize; i){x ^ nums[i];//再和数组内的内容^一遍得到//丢失的数和重复的数^的结果}qsort(nums, numsSize, sizeof(int), cmp_int);for (i 0; i numsSize; i){if (nums[i] nums[i 1])//找到重复的数break;}x ^ nums[i];//x为被修改的数*nums nums[i];*(nums 1) x;*returnSize 2;return nums;
} 好了今天的练习到这里就结束了感谢各位友友的来访祝各位友友前程似锦O(∩_∩)O