使用VC6打开考生文件夹下的源程序文件modi1.cpp,但该程序运行有问题,请改正main函数中的错误,使程序的输出结果是: 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 注意:不要改动main函

admin2018-10-23  11

问题 使用VC6打开考生文件夹下的源程序文件modi1.cpp,但该程序运行有问题,请改正main函数中的错误,使程序的输出结果是:
    1 1 2 2 3 3
    4 4 5 5 6 6
    7 7 8 8 9 9
    注意:不要改动main函数,不能增行或删行,也不能更改程序的结构,错误的语句在//******error******的下面。
1  #include<iostream.h>
2  #include<iomanip.h>
3  void main()  {
4    int  a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
5    int *p,i;
6    //********error********
7    p=a;
8    for(i=0;i<9;i++)  {
9    cout<<setw(2)<<*(p+i);
10    //********error********
11    cout<<setw(2)<<*(a+i);
12    if(i%3==2)  cout<<end1;
13    }
14  }

选项

答案(1)P=&a[0][0]; (2)cout<<setw(2)<<*(*a+i);

解析 从已给定源程序的main主函数开始入手,可以看出程序是通过数组与指针两种方法输出数组值。
    (1)打开modi1.cpp,调试程序,显示错误提示为第一标识下“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)<<*(*a+i);”。
转载请注明原文地址:https://kaotiyun.com/show/iwAp777K
0

最新回复(0)