c语言每日一练(5)

前言:
每日一练系列,每一期都包含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

解析:观察代码,发现目标是打印出a,b,c对应的值,我们计算出打印的时侯a,b,c的值问题就解决了,可以看出,在打印之前,使用了很多++运算符。因此关键这题的解题关键就在于你对++运算符的理解

++运算符分为两种,一种是前置++,一种是后置++,举个例子,++a就是前置++,a++就是后置++,这两种++的区别就在于,前置++是先++后使用,后置++是先使用后++。比方说

可以看出,x一开始被初始化为3,y=x++,y是先等于3,x再++。z=++x,是先令x++再让z=x

#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令a=5,代码2令a先++使a=6,再让c=a,使c=6。

代码3是逗号表达式,根据之前所学我们知道,逗号表达式从左往右计算,计算结果为最后一个表达式,从左往右走,先是++c使c+1等于7,再是c++使c+1令c等于8,接着是++a,使a+1等于7,再是a++使b先等于a,a此时=7,故b=7。再令a++,使a为8。

来到代码4,代码4令b+=a++ +c,换种写法就是令b=b+a++ + c,是后置++,先不管,b=b+a+c=8+7+8=23,最后再让a加1为9,因此,a,b,c最后的值分别是,9,23,8,故选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'为止    代码将a,b,'\0',c,'\0'一个一个字符放进了c这个字符数组中,并用打印字符串的形式打印,但刚打印完a,b就遇到了'\0'字符串结束标志,所以就会停止打印。故选C

3、在下面的字符数组定义中,哪一个有语法错误( )

 A、char a[20]="abcdefg"; B、char a[]="x+y=5.";

C、char a[15];                   D、char a[10]='5';

解析:A,B选项都使用了字符串初始化数组,可能你不明白为什么可以用字符串初始化数组,但做这道题的时候你就应该直接排除掉A,B。之所以可以用字符串来初始化数组,是因为,字符串的特殊性,字符串本身代表首元素的地址。而C选项它没有初始化数组,当然不能算错。但是D选项就出问题了,它这个操作无异于char a[10]=0;因为字符的存储是用ASCII码值实现的,可以将字符看作一种整型。所以D错

 4、下列程序的输出是( )

#include<stdio.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,x+5);

A、25        B、20      C、100      D、45 

 解析:易错题,逗号表达式从左往右计算,先算x=4*5,故此时x=20,又令x*5,但没有写做x=x*5,故x依然是20,最后让x+5即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博客

#include<stdio.h>
#include<stdlib.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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/62388.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

腾讯云轻量应用服务器CPU配置?主频性能

腾讯云轻量应用服务器CPU型号是什么&#xff1f;处理器主频多少&#xff1f;轻量应用服务器不支持指定CPU处理器型号&#xff0c;目前腾讯云服务器网账号下的轻量应用服务器&#xff0c;CPU采用2.5GHz主频的Intel(R) Xeon(R) Gold 6133 处理器&#xff0c;睿频 3.0GHz&#xff…

电脑怎么查看连接过的WIFI密码(测试环境win11,win10也能用)

电脑怎么查看连接过的WIFI密码 方法一&#xff1a;适用于正在连接的WIFI密码的查看 打开设置 点击“网络和Internet”&#xff0c;在下面找到“高级网络设置”点进去 在下面找到 “更多网络适配器选项” 点进去 找到 WLAN &#xff0c;然后双击它 5.然后点击“无线属性” 6.…

使用go-zero快速构建微服务

本文是对 使用go-zero快速构建微服务[1]的亲手实践 编写API Gateway代码 mkdir bookstore && cd bookstorego mod init bookstore mkdir api && goctl api -o api/bookstore.api syntax "v1"info(title: "xx使用go-zero"desc: "xx用…

嵌入式Linux下LVGL的移植与配置

一.sdk源码下载路径 1.官方源码下载路径如下: ​​​​​​ https://github.com/lvgl/lvgl git下载方式 git clone https://github.com/lvgl/lvgl.git 2.个人移植好的源码8.2版本下载路径: 链接&#xff1a;https://pan.baidu.com/s/1jyqIennsQpv-RB4RyKvZyg?pwdc68e 提取…

在线Word怎么转换成PDF?Word无法转换成PDF文档原因分析

不同的文件格式使用方法是不一样的&#xff0c;而且也需要使用不同的工具才可以打开编辑内容&#xff0c;针对不同的场合用户们难免会用到各种各样的文件格式&#xff0c;要想在不修改内容的前提下提高工作效率&#xff0c;那就需要用到文件格式转换&#xff0c;那么在线Word怎…

Glide 的超时控制相关处理

作者&#xff1a;newki 前言 Glide 相信大家都不陌生&#xff0c;各种源码分析&#xff0c;使用介绍大家应该都是烂熟于心。但是设置 Glide 的超时问题大家遇到过没有。 我遇到了&#xff0c;并且掉坑里了&#xff0c;情况是这样的。 调用接口从网络拉取用户头像&#xff0c…

Shopify平台Fulfillment业务模块升级

上图是销售订单、发货单与配送之间的关系图&#xff0c;销售订单可以创建多个发货单&#xff0c;多个发货单(不同销售订单)可以合并在一个配送订单进行发货 接口请求错误记录: 1. The api_client does not have the required permission(s). 2. Required parameter missing or…

【小曾同学赠书活动】开始啦—〖测试设计思想〗

文章目录 ❤️ 赠书 —《测试设计思想》&#x1f31f; 书籍介绍&#x1f31f; 作者简介图书链接❤️ 活动介绍 — 赠送 3 本 ❤️ 赠书 —《测试设计思想》 首先提问 你知道测试设计思想有哪几类吗&#xff1f;你想奠定扎实的测试理论基础吗&#xff1f;你想改变关于你当前测试…

最短路相关思想总结

dijkstra—所有边均为正权边 1.稠密图 算法思想 将所有的点读入邻接表 外层n次循环 每次找到最近的点&#xff0c;记录这个点的访问状态&#xff0c;使用这个点对其他的点进行更新&#xff0c;最后返回最短路 为什么要记录每个点的状态&#xff1f;我不能重复搜这个点吗&…

sysstat安装与使用

官方文档 http://sebastien.godard.pagesperso-orange.fr/documentation.html sysstat安装 1.下载源码 https://github.com/sysstat/sysstat 2.编译安装 tar xvf sysstat-xxx.tar.gz ./configure make -j 16 make install3.测试 iostatsysstat使用 sysstat 包包含许多商…

【css】属性选择器

有些场景中需要在相同元素中获取具有特定属性的元素&#xff0c;比如同为input&#xff0c;type属性有text、button&#xff0c;可以通过属性选择器设置text和button的不同样式。 代码&#xff1a; <style> input[typetext] {width: 150px;display: block;margin-bottom…

大连交通大学813软件工程考研习题

1.什么是软件生存周期模型?有哪些主要模型? 生存周期模型&#xff1a;描述软件开发过程中各种活动如何执行的模型。对软件开发提供强有力的支持&#xff0c;为开发过程中的活动提供统一的政策保证&#xff0c;为参与开发的人员提供帮助和指导&#xff0c;是软件生存周期模型…