当前位置: 首页 > news >正文

c语言每日一练(15)

前言:
每日一练系列,每一期都包含5道选择题,2道编程题,博主会尽可能详细地进行讲解,令初学者也能听的清晰。每日一练系列会持续更新,上学期间将看学业情况更新。

 五道选择题:

1、程序运行的结果为()

#include<stdio.h>
int main()
{
int pad = 0; int pAd = 0;
int sum = 5;
pad = 5;
pAd = (sum++,pAd++, ++pAd);
printf("%d %d\n", pAd,pad);
}

A、1,5      B、2,5      C、1,6     D、2,6

解析:首先定义sum和pad为5,接着是一串逗号表达式,从左往右进行,最后的值为最后一个表达式,我们可以走一下,sum++,令sum为6,pAd++,令pAd=1(注意:这里不用什么前置后置,你可以把逗号表达式之间的表达式看作一个单独的区块,计算机会执行完这个区块的内容才去执行别的),最后一步可以看作pAd=(++pAd),独立区块++pAd先执行,令pAd为2,,pad一直为5,所以最后打印出来的结果为,2,5,选B

前置后置结果一致 ,证明可以看作独立区块

 

 2、程序运行的结果为()

#include <stdio.h>
int sum(int a)
{int c = 0;static int b = 3;c += 1;b += 2;return (a + b + c);
}
int main()
{int i;int a = 2;for (i = 0; i < 5; i++) { printf("%d ", sum(a)); } 
} 

A、8 8 8 8 8 8                                                                                                                                    B、 9 11 13 15 17                                                                                                                              C、10 12 14 16 18 20                                                                                                                        D、8 10 12 14 16 18

解析:观察sum可以发现,它返回的值为a+b+c的和,而sum没有对a进行额外操作,所以每次a都是2;c每次进来都会被重定义为0,再c+=1,所以c每次都为1,再说下b,b是static类型的变量,也就是说b的生命域是全局的且它只会被定义一次,第一次b被定义为3,接着b+=2令b为5,第二次b+=2,令b为7,第三次,b为9,第四次b为11,第五次b为13,而a+c始终为3,所以最后打印的结果为8 10 12 14 16 18,选D

 

3、关于if语句说法正确是( )
A、if语句后面只能跟一条语句
B、if语句中0表示假,1表示真,其他无意义
C、if语句时一种分支语句,可以实现单分支,也可以实现多分支
D、else语句总是和它的对其的if语句匹配 

解析:A选项错误,if后面可以根很多条语句,有{}即可。B选项错误,太片面了,c语言中非0的语句均为真。C选项正确,else if就是多分支。D选项错误,没有括号的情况默认和最近的匹配。

4、程序运行的结果为()

#include<stdio.h>
int func(int a)
{int b;switch (a){case 1: b = 30;case 2: b = 20;case 3: b = 16;default: b = 0;}return b;
}
int main()
{int x=3printf("%d",func(x));
}

A、 30    B、20    C、16    D、0

解析:switch中要如果没有break中止就会顺着走下去,这道题就是这样,它的case语句中均没有break,那么它就会顺着走下去,一直走到最后的b=0,所以最后返回的值也是0,选D

 5、程序运行的结果为()

#include <stdio.h>
int main()
{int a = 0, b = 0;// for循环将a和b的初始值均设置为1for (a = 1, b = 1; a <= 100; a++){if (b >= 20) break;if (b % 3 == 1){b = b + 3;continue;}b = b-5;}printf("%d\n", a);return 0;
}

A、7   B、8   C、22   D、死循环 

解析:观察代码可以发现主体部分是个循环,目标是打印出a的值,而a的值只会在循环结束时才会++,那么不难看出,完整进行循环的次数+1(为什么+1,因为跳出循环前a先++之后才执行break)就是a的值,b>=20会跳出循环,而b若%3==1就会增3,那么b就会一直加3知道>=20,可以看出加7次3,b就会>=20,所以完整的循环进行了7次,所以最后a为8,选B 

 

编程题1:

单词分析 - 蓝桥云课 (lanqiao.cn)

思路:只需判断小写字母且一共有26个字母,所以创建一个长度为26的整型数组来储存每个字母出现的次数,接着比较得出最大即可,需要注意的一点就是记得储存对应的下标 

int main(int argc, char *argv[])
//这个参数不用看它,你就把它当作没有即可
{
int count[26]={0};
//分别储存26个字母的出现次数
char ch=0;
while((ch=getchar())!='\n')
{count[ch-'a']++;//对应字母-'a'可以得到对应的下标
}
int i=0;int max=0;int max_i=0;
for(i=0;i<26;i++)
{if(count[i]>max){max=count[i];//储存最多出现次数max_i=i;//下标也储存}
}
printf("%c\n%d",max_i+'a',max);
}

编程题2: 

门牌制作 - 蓝桥云课 (lanqiao.cn)

 

提示:%10操作可以将数的最后一位取出,/10操作可以把数的最后一位删除 

#include <stdio.h>
int main()
{int i=0;int count=0;for(i=1;i<=2020;i++){int number=i;while(number){if(number%10==2){count++;}number/=10;}}printf("%d",count);return 0;
}

http://www.lryc.cn/news/166734.html

相关文章:

  • 如何利用软文推广进行SEO优化(打造优质软文,提升网站排名)
  • Java线程池ExecutorService和Executors应用(Spring Boot微服务)
  • 机器学习笔记之最优化理论与方法(八)无约束优化问题——常用求解方法(中)
  • Django系列:Django简介与MTV架构体系概述
  • 锐捷交换机WEB管理系统EXCU_SHELL密码信息泄漏漏洞
  • 线性代数(六) 线性变换
  • Python基础运算分享
  • 【MySQL】mysql中有哪几种类型的备份技术?它们各自有什么优缺点?
  • 5基于pytorch的多目标粒子群算法,MOPSO,引导种群逼近真实Pareto前沿,算法运行结束后将外部存档中粒子作为获得的Pareto最优解近似。
  • 002 Linux 权限
  • 【Java 基础篇】Java可变参数:灵活处理不定数量的方法参数
  • “网站建设流程详解:从概念到上线的每个细节“
  • DC/DC开关电源学习笔记(七)低压大电流DC/DC变换技术
  • XUbuntu22.04之查找进程号pidof、pgrep总结(一百九十)
  • BI与数据治理以及数据仓库有什么区别
  • java---jar详解
  • uni-app 新增 微信小程序之新版隐私协议
  • nbcio-boot移植到若依ruoyi-nbcio平台里一formdesigner部分(四)
  • 公交查询系统
  • opencv 轮廓顶点重新排序----四边形
  • 【项目实战】【已开源】USB2.0 HUB 集线器的制作教程(详细步骤以及电路图解释)
  • 分布式运用之rsync远程同步
  • 誉天在线项目~ElementPlus实现浏览页面注意点
  • 神经网络-pytorch版本
  • uniapp vue 页面传参问题encodeURIComponent
  • 【GDAL】tif影像拼接和目标截取
  • ARM核心时间线
  • 【Redis】深入探索 Redis 的数据类型 —— 列表 List
  • 高精度乘除法(超详细)
  • List 获取前N条数据