问答题 使用VC6打开 下的源程序文件modi1.cpp,但该程序运行有问题,请改正main函数中的错误,使程序的输出结果是:
1 1 2 2 3 3
4 4 5 5 6 6
7 7 8 8 9 9
注意:不要改动main函数,不能增行或删行,也不能更改程序的结构,错误的语句在//********error********的下面。
#include<iostream.h>
#include<iomanip.h>
void main() {
int a[3] [3]={{1,2,3}, {4,5,6}, {7,8,9}};
int *p, i;
//********error********
p = a;
for(i=0;i<9;i++) {
cout setw(2) *(p+i);
//********error********
cout setw(2) *(a+i);
if(i%3==2) cout
【正确答案】
【答案解析】(1)p=&a[0][0];
(2)cout setw(2) *(*a+i);
答案考生文件夹 [解析] 从已给定源程序的main主函数开始入手,可以看出程序是通过数组与指针两种方法输出数组值。
(1)打开modi1.epp,调试程序,显示错误提示为第一标识下“modi1.cpp(7):error C2440:"=":cannot convert from"int[3][3]"to"int*"”,a为二维数组型变量,将其值赋值给p,应该是p指向数组a的起始位置,即“p=&a[0][0];”。
(2)程序中第2个标识下的“cout setw(2) *(a+i);”语句应该是输出数组a中元素的值,而该语句是*(a+i)指向数组第i个位置,要指向其值应该是*(*a+i),所以第2个标识下的语句改为“cout setw(2)