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

C语言好题解析(一)

目录

  • 选择题1
  • 选择题2
  • 选择题3
  • 选择题4
  • 编程题一

选择题1

执行下面程序,正确的输出是( )
int x = 5, y = 7;
void swap()
{int z;z = x;x = y;y = z;
} int main()
{int x = 3, y = 8;swap();printf("%d,%d\n",x, y);return 0;
}
A: 5,7    B: 7,5    C: 3,8    D: 8,3

【答案】 C
【分析】 首先我们可以看到x和y有两个不同的值,为x=5和3,y=7和8,其中x=5和y=7的范围比x=3和y=8的范围更大(即作用域更大),而printf函数有一个就近原则,即输出与它最近的x和y,swap函数则是将x=5和y=7进行交换(因为swap函数没有就近原则,而x=5和y=7作用域更大

选择题2

以下不正确的定义语句是( )
A double x[5] = {2.0, 4.0, 6.0, 8.0, 10.0};
B char c2[] = {'\x10', '\xa', '\8'};
C char c1[] = {'1','2','3','4','5'};
D int y[5+3]={0, 1, 3, 5, 7, 9};

【答案】 B
【分析】\8表示8进制的8,而8进制的数字表示为0~7,因此\8表示错误

选择题3

若给定条件表达式 (M)?(a++):(a--) ,则其中表达式 M ()
A: 和(M==0)等价 B: 和(M==1)等价 C: 和(M!=0)等价 D: 和(M!=1)等价

【答案】 C
【分析】(M)?(a++):(a–)的含义为判断表达式M是否为真(M!=0)(因为为表达式,所以只要非0就为真),如果为真就a++,反之则a–

选择题4

有如下定义语句,则正确的输入语句是【多选】( )
int b;
char c[10];
A: scanf("%d%s",&b,&c); B: scanf("%d%s",&b,c);
C: scanf("%d%s",b,c); D: scanf("%d%s",b,&c);

【答案】 AB
【分析】这里可能会有人认为scanf后面都应该要有&,其实&只是为了储存数据地址,而数组可以省略&。
我们举一个例子

#include<stdio.h>
void jack( int *arr)
{for (int i = 0; i <= 5; i++){arr[i] = i;}
}
int main()
{int arr[6] = { 0 };jack(arr);for (int i = 0; i <= 5; i++){printf("%d ", arr[i]);}return 0;
}

这个代码运行结果如图
在这里插入图片描述
而加上&后

#include<stdio.h>
void jack( int *arr)
{for (int i = 0; i <= 5; i++){arr[i] = i;}
}
int main()
{int arr[6] = { 0 };jack(&arr);for (int i = 0; i <= 5; i++){printf("%d ", arr[i]);}return 0;
}

在这里插入图片描述
我们可以看出结果并没有变,所以&可加可不加。

编程题一

根据输入的日期,计算是这一年的第几天。输入保证年份为4位数且日期合法。
输入描述:输入一行,每行空格分割,分别是年,月,日。
输出描述:输出是这一年的第几天
示例:
输入:2012 12 31 输入:1982 3 4
输出:366 输出:63

牛客网题目链接
【题目分析】
1:由于每个月的天数都不一定相同,如果我们不用数组的话是非常难搞定这问题的(我去试了),因此我们需要定义一个数组,以每个月的天数为元素,按顺序输入进数组,又因为闰年的二月和非闰年的二月天数不同,因此我们要定义两个数组分别代表闰年和非闰年。
2:因为我们最后输入的日不一定是这个月的最后一天,因此我们需要少计算一个月,然后将前面月的天数相加,再加上输入的天数,即可得到最终结果

【代码】

#include <stdio.h>
int main()
{int year, month, day,sum=0;scanf("%d %d %d", &year, &month, &day);int run[12] = { 31,29,31,30,31,30,31,31,30,31,30,31 };int notrun[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0){for (int i = 0; i <= month - 2; i++){sum = sum+run[i];}sum += day;}else{for (int i = 0; i <= month - 2; i++){sum =sum+ notrun[i];}sum += day;}printf("%d", sum);return 0;
}
http://www.lryc.cn/news/126602.html

相关文章:

  • uniapp微信小程序区分正式版,开发版,体验版
  • 更多openEuler镜像加入AWS Marketplace!
  • 【BASH】回顾与知识点梳理(二十四)
  • CSRF
  • pyscenic分析:视频教程
  • 可视化绘图技巧100篇进阶篇(九)-三维百分比堆积条形图(3D Stacked Percentage Bar Chart)
  • js实现将文本转PDF格式并下载到本地
  • Servlet+JDBC实战开发书店项目讲解第四篇:登录实现
  • HarmonyOS NEXT新能力,一站式高效开发HarmonyOS应用
  • 【Java从0到1学习】09 正则表达式
  • log4j:WARN No appenders could be found for logger问题
  • 【Java】批量生成条形码-itextpdf
  • SpringBoot登录、退出、获取用户信息的session处理
  • 【软件测试】随笔系统测试报告
  • vue中使用html2canvas+jsPDF实现pdf的导出
  • Linux学习之firewallD
  • 【JS学习】Object.assign 用法介绍
  • 【uni-app报错】获取用户收货地址uni.chooseAddress()报错问题
  • 机器学习、cv、nlp的一些前置知识
  • Steam 灵感的游戏卡悬停效果
  • [Openwrt]一步一步搭建MT7981A uboot、atf、openwrt-21.02开发环境操作说明
  • Unity C# 之 Azure 微软SSML语音合成TTS流式获取音频数据以及表情嘴型 Animation 的简单整理
  • 安全学习DAY16_信息打点-CDN绕过
  • genism word2vec方法
  • vue3自定义样式-路由-axios拦截器
  • 【mysql】事务的四种特性的理解
  • C++中List的实现
  • ElementUI 树形表格的使用以及表单嵌套树形表格的校验问题等汇总
  • 解决“Unable to start embedded Tomcat“错误的完整指南
  • JVS开源基础框架:平台基本信息介绍