编程练习(1)

目录

一.选择题

第一题:

第二题:

第三题:

第四题:

第五题:

​编辑

二.编程题

第一题:

第二题:

1.暴力方法:

2.数组法:


一.选择题

第一题:

解析:

**首先在main函数中定义了一个新的局部变量x和y,分别赋值为3和8。然后调用了swap()函数,该函数通过交换两个全局变量x和y的值来实现交换。但是,在swap()函数中,交换的是全局变量x和y的值,而不是main函数中的局部变量x和y。因此,在swap()函数执行完毕后,全局变量x和y的值仍然保持原来的值,即5和7。最后,在main()函数中输出全局变量x和y的值,所以结果是3和8。**答案选择C

第二题:

答案选择B

第三题:

在C语言中,typedef是用于给复杂声明定义别名的关键字。它可以用来定义自己习惯的数据类型名称,来替代系统默认的基本类型名称、数组类型名称、指针类型名称与用户自定义的结构型名称、共用型名称、枚举型名称等。该题给int*类型定义了一个别名叫做 int_ptr 因此本题答案为:C,D

第四题:

C语言中三目运算(M)?:(a++):(b--)中与(M!=0)?:(a++):(b--)等价,因此答案为C

第五题:

输入函数中int类型变量b要用&符号,而数组名本身是数组首地址不需要用&符号,因此本题答案为B

二.编程题

第一题:

算法题:

cpp 复制代码
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 *
 * @param n int整型 最大位数
 * @return int整型一维数组
 * @return int* returnSize 返回数组行数
 */
#include <stdio.h>
    static int arr[100000];

int* printNumbers(int n, int* returnSize) 
{
	
	int j = 0;
	int i = 1;

	if (n > 0 && n <= 5)
	{
		if (n == 1)
		{
			for (i = 1; i <= 9; i++)
			{
				arr[j++] = i;
			}
		}

		if (n == 2)
		{
			for (i = 1; i <= 99; i++)
			{
				arr[j++] = i;
			}
		}

		if (n == 3)
		{
			for (i = 1; i <= 999; i++)
			{
				arr[j++] = i;
			}
		}

		if (n == 4)
		{
			for (i = 1; i <= 9999; i++)
			{
				arr[j++] = i;
			}
		}

		if (n == 5)
		{
			for (i = 1; i <= 99999; i++)
			{
				arr[j++] = i;
			}
		}

	}
	*returnSize = i - 1;//得到数组最终元素个数
	return arr;//返回数组首元素地址
}

第二题:

一道华为机试题:

1.暴力方法:

cpp 复制代码
//暴力求解法
#define  _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
	int year;
	int month;
	int day;
	scanf("%d %d %d", &year, &month, &day);
	int sum = 0;
	//1 3 5 7 8 10 12 ------31天
	//4 6 9 11        ------30天
	//闰年2月         ------29天
	//平年2月         ------28天
	//如果year是闰年 2000 11 15
	if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
	{
		switch (month)
		{
		case 1:
			sum = day;
			break;
		case 2:
			sum = 31 + day;
			break;
		case 3:
			sum = 31 + 29 + day;
			break;
		case 4:
			sum = 31 + 29 + 31 + day;
			break;
		case 5:
			sum = 31 + 29 + 31 + 30 + day;
			break;
		case 6:
			sum = 31 + 29 + 31 + 30 + 31 + day;
			break;
		case 7:
			sum = 31 + 29 + 31 + 30 + 31 + 30 + day;
			break;
		case 8:
			sum = 31 + 29 + 31 + 30 + 31 + 30 + 31 + day;
			break;
		case 9:
			sum = 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + day;
			break;
		case 10:
			sum = 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + day;
			break;
		case 11:
			sum = 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + day;
			break;
		case 12:
			sum = 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30 + day;
			break;
		}
	}
	else
	{
		switch (month)
		{
		case 1:
			sum = day;
			break;
		case 2:
			sum = 31 + day;
			break;
		case 3:
			sum = 31 + 28 + day;
			break;
		case 4:
			sum = 31 + 28 + 31 + day;
			break;
		case 5:
			sum = 31 + 28 + 31 + 30 + day;
			break;
		case 6:
			sum = 31 + 28 + 31 + 30 + 31 + day;
			break;
		case 7:
			sum = 31 + 28 + 31 + 30 + 31 + 30 + day;
			break;
		case 8:
			sum = 31 + 28 + 31 + 30 + 31 + 30 + 31 + day;
			break;
		case 9:
			sum = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + day;
			break;
		case 10:
			sum = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + day;
			break;
		case 11:
			sum = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + day;
			break;
		case 12:
			sum = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30 + day;
			break;
		}
	}
	printf("%d", sum);
	return 0;
}

2.数组法:

cpp 复制代码
int main()
{
	int year;
	int month;
	int day;
	scanf("%d %d %d", &year, &month, &day);
	int sum = day;

//闰年数组:
	int leap_year[12] = { 31,29,31,30,31,30,31,31,30,31,30,31 };
	                 //   1  2  3  4  5  6  7  8  9  10  11 12

//平年数组:
	int common_year[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
	                //       1  2  3  4  5  6  7  8  9 10 11 12
//闰年情况:
	if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
	{
		if (month == 1)
		{
			sum = day;
		}
		else
		{
			int j = 0;

			for (int i = 1; i < month; i++)
			{
				sum = sum + leap_year[j++];
			}
		}

	}
//平年情况:
	else
	{
		if (month == 1)
		{
			sum = day;
		}
		else
		{
			int j = 0;

			for (int i = 1; i < month; i++)
			{
				sum = sum + common_year[j++];
			}
		}

	}
	printf("%d", sum);
	return 0;
}

感谢您的支持。

相关推荐
longlongzihan1 分钟前
从LeetCode 19. 删除链表的倒数第 N 个结点深入理解“哨兵节点”
c++·算法·leetcode·链表
Gigavision14 分钟前
CAS(ME)²数据集 感知图卷积网络算法 CAS(ME)²数据集下载
网络·算法
爱吃提升26 分钟前
Dev-C++ 5.11 完整版快捷键大全(信奥/初学适用)
c语言·c++
杜 硕32 分钟前
快速排序02
算法·排序算法
careathers39 分钟前
【数据结构】二叉树拓展
数据结构·算法
java_nnnn1 小时前
LeetCode刷题滑动窗口(长度最小的子数组)
算法·leetcode·职场和发展
@atweiwei1 小时前
训练 AI 大模型系列之 LoRA:不动模型本体,靠一条低秩旁路改专长(附完整手算算例)
人工智能·算法·ai·语言模型·rag
小小龙学IT1 小时前
FFmpeg 开源多媒体处理框架深度解析:从命令行到 libav* 全家桶
c语言·ffmpeg·开源
yi0111 小时前
DAY27: LeetCode 110. 平衡二叉树 | 在递归中判断是否平衡
人工智能·笔记·python·算法·leetcode·二叉树·递归
9624561 小时前
餐饮 SaaS 优惠券系统架构演进(七)营销定价引擎设计:活动、会员价、优惠券、买赠如何在同一 PriceQuote 中可解释地组合
java·运维·算法