目录
一.选择题
第一题:
第二题:
第三题:
第四题:
第五题:
编辑
二.编程题
第一题:
第二题:
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
二.编程题
第一题:
算法题:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @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.暴力方法:
//暴力求解法
#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.数组法:
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;
}
感谢您的支持。