暑假第十六天之每天一些题系列
Posted 小赵小赵福星高照~
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了暑假第十六天之每天一些题系列相关的知识,希望对你有一定的参考价值。
暑假第十六天之每天一些题系列
一、选择题
- 在 C 语言中,表示静态存储类别的关键字是
A. auto B. register C. static D. extern
答案解析:
static是静态存储类别的关键字
- C 语言中函数返回值的类型是由决定的
A. 函数定义时指定的类型
B. return语句中的表达式类型
C. 调用该函数时的实参的数据类型
D. 形参的数据类型
答案解析:
C 语言中函数返回值的类型是由return语句中的表达式类型决定的
- 对二维数组的正确定义是
A. int a[][] = {1,2,3,4,5,6};
B. int a[2][] = {1,2,3,4,5,6};
C. int a[][3] = {1,2,3,4,5,6};
D. int a[2,3] = {1,2,3,4,5,6};
答案解析:
二维数组列能省略,但是行不能省略
- 若定义数组: int a[12] = {1,4,7,10,2,5,8,11,3,6,9,12}; , 则 i = 10;a[a[i]] 元素数值是____
A. 10 B. 9 C. 6 D. 5
答案解析:
a[10]等于9,a[9]等于6,故答案为6
- 以下能对一维数组 a 进行初始化的语句是
A. int a[5] = (0,1,2,3,4,)
B. int a(5) = {}
C. int a[3] = {0,1,2}
D. int a{5} = {10*1}
答案解析:
数组是用[]表示的,初始化需要用{}。
二、填空题
- 下列代码段打印结果是
int main()
{
int arr[] = {1,2,3,4,5};
int *ptr = (int *)(&arr+1);
printf("%d %d\\n",*(arr+1),*(ptr - 1));
return 0;
}
答案解析:
arr是数组名,数组名是数组首元素的地址,+1为第二个元素地址,对它解引用拿到第二个元素,故第一个打印2,&数组名是整个数组的地址,+1是数组最后一个元素的下一个地址,ptr指向这里,ptr-1指向数组最后一个元素,解引用拿到最后一个元素,故打印5
- 下面程序运行结果是____
int main()
{
unsigned short sht = 0;
sht--;
printf("%d",sht);
return 0;
}
答案解析:
sht–,sht减为-1,但是sht是无符号的short,-1在内存中的存储为11111111 11111111,它会被看成无符号的short,无符号数的补码就是原码,在打印时,会发生整型提升,它是无符号数,无符号数提升高位补0,即00000000 00000000 11111111 11111111,最终打印为65535
- 有表达式 ch =‘B’+‘8’-‘3’ ,则 ch 表示的字符是
答案解析:
字符8-字符3的值为5,字符B+5为G,故表示的字符为’G’
三、算法题
题目描述:
模拟实现函数 pow(x,y) , 即实现运算x^y(x的y次方), 这里x和y都为整数。
思路:
递归思想:2^3等价于2*2^2等价于2*2*2^1,故代码如下
代码如下:
#include<stdio.h>
double my_pow(int x, int y)
{
if (y > 0)
{
return x * my_pow(x, y - 1);
}
else if (y == 0)
{
return 1.0;
}
else
{
return 1.0/ my_pow(x, -y);
}
}
int main()
{
my_pow(2, 3);
double ret = my_pow(2, -3);
printf("%lf\\n",ret);
return 0;
}
优化版本:
#include<stdio.h>
double my_pow(int x, int y)
{
if (y > 0)
{
double temp = my_pow(x, y / 2);
//如果为偶数
if (y % 2 == 0)
{
return temp * temp;
}
//如果为奇数
else
{
return x * temp * temp;
}
}
else if (y == 0)
{
return 1.0;
}
else
{
return 1.0 / my_pow(x, -y);
}
}
int main()
{
my_pow(2, 3);
double ret = my_pow(2, 4);
printf("%lf\\n", ret);
return 0;
}
以上是关于暑假第十六天之每天一些题系列的主要内容,如果未能解决你的问题,请参考以下文章