早教吧 育儿知识 作业答案 考试题库 百科 知识分享

1、针对下列各题,各编写一条C++语句完成指定的任务.假设双精度的浮点数存储在8个字节中,数组在内存中的开始地址为1003600.这道练习题的每个部分应该在恰当的地方使用前面部分的结果.a)

题目详情
1、 针对下列各题,各编写一条C++语句完成指定的任务.假设双精度的浮点数存储在8个字节中,数组在内存中的开始地址为1003600.这道练习题的每个部分应该在恰当的地方使用前面部分的结果.
a)
声明一个含有10个元素的double类型的数组numbers,并把10个元素初始化为0.0,1.1,2.2…,9.9.假设符号常量SIZE已定义为10
b)
声明一个指针nPtr,指向double类型的变量
c)
利用一条for语句,用数组下标表示法打印数组numbers的10个元素.以小数点后面精度为1的格式打印每个数.
d)
编写两条不同的语句,将数组numbers的开始地址赋给指针变量nPtr.
e)
利用一条for语句,使用指针/偏移量表示法通过指针nPtr打印数组numbers的元素
f)
利用一条for语句,把数组名作为指针,用指针/偏移量表示法打印数组numbers的元素.
g)
利用一条for语句,使用指针/下标表示法通过指针nPtr打印数组numbers的元素.
h)
分别用数组下标表示法、把数组名作为指针的指针/偏移量表示法、nPtr的指针下标表示法和nPtr的指针/偏移量表示法引用数组numbers的第4个元素.
i)
假设nPtr指向数组numbers的开始位置,则nPtr+8引用的是哪个地址?该位置存储的值是什么?
j)
假设nPtr指向numbers[5],则执行nPt-=4之后nPtr引用的是哪个地址?该位置存储的值是什么?
▼优质解答
答案和解析
double number[SIZE]={0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9};
double* nPtr;
printf("c)");
for(int icnt=0;icnt!=10;++icnt)
{
printf("%.1f ",number[icnt]);
}
nPtr=number;
nPtr=&number[0];
printf("\ne)");
for(int icnt=0;icnt!=10;++icnt)
{
printf("%.1f ",*(nPtr+icnt));
}
printf("\nf)");
for(int icnt=0;icnt!=10;++icnt)
{
printf("%.1f ",*(number+icnt));
}
printf("\ng)");
for(int icnt=0;icnt!=10;++icnt)
{
printf("%.1f ",nPtr[icnt]);
}
printf("\nh) %.1f %.1f %.1f %.1f ",number[3],*(number+3),nPtr[3],*(nPtr+3));//1003664->8.8
printf("\ni) %d->%.1f",nPtr+8,*(nPtr+8));
nPtr=&number[5];
nPtr-=4;
printf("\nj) %d->%.1f",nPtr,*nPtr);//1003608->1.1