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

C语言基础练习——Day01

目录

选择题

编程题

打印从1到最大的n位数

计算日期到天数转换


选择题

1、执行下面程序,正确的输出是

int x=5,y=7;
void swap(int x, int y)
{int z;z=x;x=y;y=z;
}
int main()
{  int x=3,y=8;  swap(int x, int y);printf("%d,%d\n",x, y);return 0;
}
  • A 5, 7
  • B 7, 5
  • C 3, 8
  • D 8, 3
答案:C
💡

解析:

本题涉及到传值调用和传址调用的问题,在本题中,swap函数的形参只是接收到了xy空间的值,而不是xy所在空间的地址,所以在swap函数中交换xy的数据不影响main函数中的xy,最后输出依旧是38

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
💡

解析:

在八进制表示中,最大的数值为7,没有8的存在,故'\8'不存在,注意D是正确答案

3、(多选题)test.c文件中包括如下语句,文件中定义的四个变量中,是指针类型的变量为

#define INT_PTR int*
typedef int* int_ptr;
INT_PTR a, b;
int_ptr c, d;
  • A a
  • B b
  • C c
  • D d
答案:ACD
💡

解析:

不论是用#define定义INT_PTRint*,在代码预处理阶段会被替换为int*,每一个*只对紧随着的变量有效,即int* a, b,但是用typedef更名int*int_ptr时并不存在这个问题 ,tydedef本质是将每一个变量都初始化为更名的类型的变量,即int_ptr cint_ptr d,要使b都成为指针类型,则写成int *a, *b;

4、 若给定条件表达式(M)?(a++):(a--),则其中表达式 M

  • A 和(M==0)等价
  • B 和(M==1)等价
  • C 和(M!=0)等价
  • D 和(M!=1)等价
答案:C
💡

解析:

给定条件表达式(M)?(a++):(a--) (表达式1)? (表达式2): (表达式3)为三目运算符。

计算规则为:先判断表达式1是否为真,若为真,则计算表达式2,并将表达式2的结果作为整个表达式最终的结果,表达式3不计算;否则,表达式3的结果为最终结果,表达式2不计算。 在此表达式中,若M = 0,为假,计算a--; 若M != 0,为真,计算a++; 若要求与M等价,则要满足M取0时为假,取非0数值时为真。 C选项中:假定M取0,则M表示假,当M是0时,表达式M != 0不成立,为假,计算a--; 当M取非0数值时,M为真,表达式M != 0成立,为真,计算a++

5、(多选题)有如下定义语句,则正确的输入语句是

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
💡

解析:

&c本质是&c[0],和c的地址值是一样的,而%s占位符期望一个指向字符数组的指针作为参数,以便将输入的字符串存储到该数组中,程序的效果相同,也没错,但同时也必须把变量b的地址给scanf

编程题

打印从1到最大的n位数

题目链接:打印从1到最大的n位数_牛客题霸_牛客网 (nowcoder.com)

描述
输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。
1. 用返回一个整数列表来代替打印
2. n 为正整数,0 < n <= 5

思路解析:

本题的关键就是解决位权,当输入3时最大打印999,故可以知道3可以用于作为以10为底数的位权,那么此时最大数即为小于103的数值,依次生成数值存入数组中返回即可

参考代码

/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可*** @param n int整型 最大位数* @return int整型一维数组* @return int* returnSize 返回数组行数*/
int* printNumbers(int n, int* returnSize ) {int num = (int)pow(10, n);int* p = (int*)malloc(num * sizeof(int));for (int i = 1; i < num; i++) {p[i - 1] = i;}*returnSize = num - 1;return p;
}

计算日期到天数转换

题目链接:计算日期到天数转换_牛客题霸_牛客网 (nowcoder.com)

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

思路解析:

本题需要处理好闰年和非闰年的天数,注意是否要包括某个月整月的天数,其余直接加和即可

参考代码

#include <stdio.h>
int main() {int days[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};int day = 0;int month = 0;int year = 0;int sum = 0;scanf("%d%d%d", &year, &month, &day);//判断是否是闰年if (year % 400 == 0 || year % 4 == 0 && year % 100 != 0) {//是闰年,一年共366天,二月29天for (int i = 1; i <= month; i++) {sum += days[i - 1];}sum += day;//当输入的月份大于2月份时,需要算二月份的总数if (month > 2) {sum++;}} else {//不是闰年,一年共365天,二月28天for (int i = 1; i <= month; i++) {//month = 4sum += days[i - 1];}sum += day;}printf("%d", sum);return 0;
}

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

相关文章:

  • 用云手机进行舆情监测有什么作用?
  • 神经网络(neural network)
  • 微信小程序用户登陆和获取用户信息功能实现
  • 2024年3月8日 晨会汇报
  • 去电脑维修店修电脑需要注意什么呢?装机之家晓龙
  • 国家妇女节放假是法定的假日
  • Pytorch线性回归实现(Pycharm实现)
  • 2024新疆专升本考试报名教程详解
  • unicloud 云数据库概念及创建一个云数据库表并添加记录(数据)
  • 想交易盈利?Anzo Capital昂首资本发现了一本畅销书
  • 美国站群服务器租用需要考虑哪些关键点
  • 如何构建Hive数据仓库Hive 、数据仓库的存储方式 以及hive数据的导入导出
  • 【Linux】软件管理器yum和编辑器vim
  • 怎么才能确定螺栓是拧紧了——SunTorque智能扭矩系统
  • 西门子S120故障报警F30003的解决办法总结
  • 探索vue框架的世界: 内部、外部样式和内联样式动态绑定的方法
  • 代码随想录算法训练营第三十八天|动态规划|理论基础、509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯
  • 运维知识点-JBoss
  • HarmonyOS—配置编译构建信息
  • Chrome浏览器好用的几个扩展程序
  • Enzo Life Sciences Cortisol(皮质醇) ELISA kit
  • 面试经典150题 -- 二分查找 (总结)
  • 蓝牙耳机怎么选择比较好?2024年热门机型推荐大揭秘!
  • 强制Unity崩溃的两个方法
  • 中间件 | Redis - [big-key hot-key]
  • STM32基础--自己构建库函数
  • 网站被插入虚假恶意链接怎么办?
  • ThreeJs限制模型拖动的范围
  • 关于JVM的小总结(待补充)
  • day37 贪心算法part6