《C语言假期作业学习笔记》—Day01

2023-11-02 19:20

本文主要是介绍《C语言假期作业学习笔记》—Day01,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

请乘理想之马
挥鞭从此起程
路上春色正好
天上太阳正晴
                                                                          ——希望疫情早日结束,所有美好如约而至!

Day01

一、选择题

1、执行下面程序,正确的输出是( )
 
#include<stdio.h>
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
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} ;
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

4、 若给定条件表达式 (M)?(a++):(a--) ,则其中表达式 M ( )
A: (M==0) 等价
B: (M==1) 等价
C: (M!=0) 等价
D: (M!=1) 等价
5、有如下定义语句,则正确的输入语句是【多选】( )
A: scanf("%d%s",&b,&c) ;   
B: scanf("%d%s",&b,c) ;
C: scanf("%d%s",b,c) ;       
D: scanf("%d%s",b,&c) ;

二、编程题

T1:JZ17 打印从1到最大的n位数

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

描述

输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。

1. 用返回一个整数列表来代替打印
2. n 为正整数

示例1

输入:1

返回值:[1,2,3,4,5,6,7,8,9]

T2:HJ73 计算日期到天数转换

题目链接:计算日期到天数转换_牛客题霸_牛客网

描述

根据输入的日期,计算是这一年的第几天。

保证年份为4位数且日期合法。

进阶:时间复杂度:O(n),空间复杂度:O(1);

输入描述:

输入一行,每行空格分割,分别是年,月,日

输出描述:

输出是这一年的第几天

示例1

输入:2012 12 31

输出:366

示例2

输入:1982 3 4

输出:63

题解:

一、选择题

1、
答案解析:
正确答案: C
swap 函数调用时用的是全局变量,主函数中定义的变量只在主函数中有效,因为主函数也是一个函数,它与其他函数是平行关系;输出语句这里,考虑局部优先的原则,故选C
2、
答案解析:
正确答案: B
本题 B 选项考查转义字符,有如下格式,但八进制数字是 0-7 ,没有 8 ,故 B 选项中 '\8' 是错误的
\ddd ddd 表示 1 3 个八进制数 如: \130 转义为 字符 X
\xhh hh 表示 1 2 位十六进制数 如: \x30 转义为 字符 0
3、
答案解析:
正确答案: ACD
因为 #define 是宏定义,仅仅是直接替换 ,INT_PTR a, b; 进行宏替换后代码是这样的: int *a, b; 这里的 int * a 的类型,b 的类型是 int ,故此次 b 只是 int 类型。而 typedef 是把该类型定义一个别名,别名是一个独立的类型了,使用这个类型创建的变量都是这个类型的。所以 a c d 才是指针类型
4、
答案解析:
正确答案: 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++; 符合题意,选 C
5、
答案解析:
正确答案: AB
&c c 两个地址值是一样的,程序的效果相同,也没错,但同时也必须把变量 b 的地址给 scanf, CD 错误, AB 正确

二、编程题

1 、【答案解析】:
这里首先要清楚 n 位数中最大的数字,实际上就是 10^n - 1 。 比如:
这个清楚后动态申请空间,将数值填入就可以了,需要注意的是数组下标从 0 开始,而数值从 1 开始
int* printNumbers(int n, int* returnSize) 
{*returnSize = pow(10, n) - 1; //确定最大的数字int* arr = (int*)malloc(sizeof(int) * (*returnSize));//申请足够大小的空间for (int i = 0; i < *returnSize; i++) {arr[i] = i + 1;//下标从0开始,而数值从1开始}return arr;
}

2、【答案解析】: 这道题简单解法其实将每个月的天数枚举出来,然后根据当前月份向前累加满月的天数,然后再加上当前月所在的天 数。最终考虑平闰年的 2 月份区别是否增加一天。 其中需要注意的是平年和闰年的判断,而且是闰年的月份大于 2 的时候,也就是 2 月走完,总天数才能加 1 (比如 2000年2月18日 ,虽然是闰年,但是 2月 都没走完那是不能加上闰年多出的一天的).

#include <stdio.h>
int is_leap_year(int year) 
{if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0){return 1;}return 0;
}
int main()
{int month_day[] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };int year, month, day;while (~scanf("%d %d %d", &year, &month, &day)) {int total_day = day;//先把当前月份天数加上if (is_leap_year(year) && month > 2) { //若闰年,且月份大于2月,则在平年基础上+1total_day += 1;}for (int i = month - 1; i > 0; i--) {total_day += month_day[i];//向前累加每月的天数即可}printf("%d\n", total_day);}return 0;
}

后记:
●由于作者水平有限,文章难免存在谬误之处,敬请读者斧正,俚语成篇,恳望指教!

                                                                ——By 作者:新晓·故知

《C语言假期作业学习笔记》之内容采用动态管理即若学习到多解、优解等将会进行更新,敬请读者斧正!

这篇关于《C语言假期作业学习笔记》—Day01的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/332758

相关文章

使用SQL语言查询多个Excel表格的操作方法

《使用SQL语言查询多个Excel表格的操作方法》本文介绍了如何使用SQL语言查询多个Excel表格,通过将所有Excel表格放入一个.xlsx文件中,并使用pandas和pandasql库进行读取和... 目录如何用SQL语言查询多个Excel表格如何使用sql查询excel内容1. 简介2. 实现思路3

Go语言实现将中文转化为拼音功能

《Go语言实现将中文转化为拼音功能》这篇文章主要为大家详细介绍了Go语言中如何实现将中文转化为拼音功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 有这么一个需求:新用户入职 创建一系列账号比较麻烦,打算通过接口传入姓名进行初始化。想把姓名转化成拼音。因为有些账号即需要中文也需要英

Go语言使用Buffer实现高性能处理字节和字符

《Go语言使用Buffer实现高性能处理字节和字符》在Go中,bytes.Buffer是一个非常高效的类型,用于处理字节数据的读写操作,本文将详细介绍一下如何使用Buffer实现高性能处理字节和... 目录1. bytes.Buffer 的基本用法1.1. 创建和初始化 Buffer1.2. 使用 Writ

深入理解C语言的void*

《深入理解C语言的void*》本文主要介绍了C语言的void*,包括它的任意性、编译器对void*的类型检查以及需要显式类型转换的规则,具有一定的参考价值,感兴趣的可以了解一下... 目录一、void* 的类型任意性二、编译器对 void* 的类型检查三、需要显式类型转换占用的字节四、总结一、void* 的

C语言线程池的常见实现方式详解

《C语言线程池的常见实现方式详解》本文介绍了如何使用C语言实现一个基本的线程池,线程池的实现包括工作线程、任务队列、任务调度、线程池的初始化、任务添加、销毁等步骤,感兴趣的朋友跟随小编一起看看吧... 目录1. 线程池的基本结构2. 线程池的实现步骤3. 线程池的核心数据结构4. 线程池的详细实现4.1 初

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]