练习题
来源:互联网 发布:手机qq透明皮肤软件 编辑:程序博客网 时间:2024/04/28 17:38
1. 在一个64位的操作系统中定义如下结构体:
1
2
3
4
5
6
struct
st_task
{
uint16_t id;
uint32_t value;
uint64_t timestamp;
};
同时定义fool函数如下:
1
2
3
4
5
6
7
void
fool()
{
st_task task = {};
uint64_t a = 0x00010001;
memcpy
(&task, &a,
sizeof
(uint64_t));
printf
(
"%11u,%11u,%11u"
, task.id, task.value, task.timestamp);
}
上述fool()程序的执行结果为()
1,0,0
2,C++中32位单精度浮点数能表示的十进制有效数字是多少位?()
- 9
- 6
- 7
- 8
单精度浮点数的有效位数是7位。
双精度浮点数的有效位数是16位。
1,一个浮点数由三部分组成:符号位S、指数部分E(阶码)以及尾数部分M。
2,单精度浮点数(float)总共用32位来表示浮点数,其中尾数用23位存储,加上小数点前有一位隐藏的1(IEEE754规约数表示法),2^(23+1) = 16777216。因为 10^7 < 16777216 < 10^8,所以说单精度浮点数的有效位数是7位。考虑到第7位可能的四舍五入问题,所以单精度最少有6位有效数字(最小尺寸)。
3,同样地:双精度浮点数(double)总共用64位来表示浮点数,其中尾数用52位存储, 2^(52+1) = 9007199254740992,10^16 < 9007199254740992 < 10^17,所以双精度的有效位数是16位。同样四舍五入,最少15位。
3,下面程序的输出结果是
1
2
3
char
*p1= “123”, *p2 = “ABC”, str[50]=
"xyz"
;
strcpy
(str+2,
strcat
(p1,p2));
cout << str;
char* strcat(char *,const char*)//第一个参数所指向的内容必须可以修改,可以赋值为在栈上分配的数组
strcat(p1,p2)试图修改p1的内容,p1指向文字常量区,其指向的内容无法修改
分析:p1和p2指向的是常量存储区的字符串常量,没法连接,会有问题
strcat(p1,p2)出错,因为p1只被分配了4个字节的地址空间,将p2拼接在p1后面会引起内存溢出。
4,下列给定程序中,函数fun的功能是:有N×N矩阵,将矩阵的外围元素做顺时针旋转。操作顺序是:首先将第一行元素的值存入临时数组二,然后是第一列成为第一行,最后一行成为第一列,最后一列成为最后一行,再使临时数组中的元素成为最后一列。
例如:若N=3,有下列矩阵:
试题程序。
void fun(int (*t)[N])
{
int j ,r[N];
for(j=0; j<N; j++)
r[j]=t[0][j];
for(j=0; j<N; j++)
t[0][N-j-1]=t[j][ 1 ];
for(j=0; j<N; j++)
t[j][0]=t[N-1][j];
/**********found**********/
for(j=N-1; j>=0; 2 )
t[N-1][N-1-j]=t[j][N-1];
for(j=N-1; j>=0; j--)
/**********found**********/
t[j][N-1]=r[ 3 ];
}
main( )
{
int t[ ][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10}, i, j;
printf("\nThe original array:\n");
for(i=0; i<N; i++)
{
for(j=0; j<N; j++)
printf("%2d ",t[i][j]);
printf("\n");
}
fun(t);
printf("\nThe result is:\n");
for(i=0; i<N; i++)
{
for(j=0; j<N; j++)
printf("%2d ",t[i][j]);
printf("\n");
}
}
请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。
例如:若N=3,有下列矩阵:
1 2 3
4 5 6
7 8 9
操作后应为:7 4 1
8 5 2
9 6 3
请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。试题程序。
#include <stdio.h>
#define N 4void fun(int (*t)[N])
{
int j ,r[N];
for(j=0; j<N; j++)
r[j]=t[0][j];
for(j=0; j<N; j++)
t[0][N-j-1]=t[j][ 1 ];
for(j=0; j<N; j++)
t[j][0]=t[N-1][j];
/**********found**********/
for(j=N-1; j>=0; 2 )
t[N-1][N-1-j]=t[j][N-1];
for(j=N-1; j>=0; j--)
/**********found**********/
t[j][N-1]=r[ 3 ];
}
main( )
{
int t[ ][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10}, i, j;
printf("\nThe original array:\n");
for(i=0; i<N; i++)
{
for(j=0; j<N; j++)
printf("%2d ",t[i][j]);
printf("\n");
}
fun(t);
printf("\nThe result is:\n");
for(i=0; i<N; i++)
{
for(j=0; j<N; j++)
printf("%2d ",t[i][j]);
printf("\n");
}
}
请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。
答案:0 j-- j
1,for(j=0; j<N; j++) t[0][N-j-1]=t[j][ 0 ];
作用是将第一列的元素放在第一行,由于是第一列,所以第二个下标为0
2, for(j=N-1; j>=0; j-- ) t[N-1][N-1-j]=t[j][N-1];
作用是将最后一列的元素放在最后一行,循环变量是j,从N开始,每次减一,所以是j--
3, for(j=N-1; j>=0; j--) t[j][N-1]=r[ j ];
作用是将原来第一行保存在临时数组中的元素放在最后一列,最后一个元素放在最下面,所以是t[j][N-1]=r[j];
ref牛客
0 0
- 练习题
- 练习题
- 练习题
- 练习题
- 练习题
- 练习题
- 练习题
- 练习题
- 练习题
- 练习题
- 练习题
- 练习题
- 练习题
- 练习题
- 练习题
- 练习题
- 练习题
- 练习题
- 通过UIImagePickerController筛选视频或者照片
- SwipeRefreshLayout简单效果演示
- C语言编写规范
- 【华为 OJ】 计算字符串最后一个单词的长度,单词以空格隔开
- Maven使用手册
- 练习题
- 【计算机基础】如何判断大端小端
- Java基础知识总结(1)
- SPI_FLASH时序描述及驱动编程
- ngx_hash_combined_t,ngx_hash_keys_arrays_t
- 光栅化学习笔记(一)
- 如何在SpringMVC中获取request对象
- Spring MVC整理系列(01)————请求流程分析
- md5加密