帮忙解析3个考试题,谢谢!
本帖最后由 imiles 于 2013-01-05 22:24:53 编辑 第一个:
#include <iostream>
using namespace std;
float fun(float x, float *y, float *z)
{*y=x+2;
*z=*z+*y;
return *z; }
int main()
{float a=1.1,b=3.3;
int c;
c=fun(a+b,&a,&b);
cout<<”a=”<<a<<”; b=”<<b<<”; c=”<<c<<endl;
}
第二个:
#include <iostream>
using namespace std;
int main()
{int x[5]={1,2,3,4,5},i=0;
int *p=x;
for (i=0;i<5;i++)
*(p+i)= *(p+i)+2;
for (i=0;i<5;i++)
cout<<*(p+i);
}
输出结果为:
第三个:
若二维数组y有m列,则位于y[i][j]之前的元素个数有( )个
(A)j*m+i (B)i*m+j (C)i*m+j-1 (D)i*m+j+1
[解决办法]
1.输出:a=6.4;b=9.7;c=9
#include <iostream>
using namespace std;
float fun(float x, float *y, float *z)//x是4.4
{*y=x+2;//即a=x+2是6.4
*z=*z+*y;//即b=b+a是9.7
return *z; }
int main()
{float a=1.1,b=3.3;
int c;
c=fun(a+b,&a,&b);//返回9.7,转换为int是9
cout<<"a="<<a<<";b="<<b<<";c="<<c<<endl;
}
[解决办法]
2.输出34567
#include <iostream>
using namespace std;
int main()
{int x[5]={1,2,3,4,5},i=0;
int *p=x;//p是指向数组首地址的指针
for (i=0;i<5;i++)
*(p+i)= *(p+i)+2;//相当于x[i]=x[i]+2
for (i=0;i<5;i++)
cout<<*(p+i);//相当于cout<<x[i]
}
[解决办法]
3.B i*m+j
y[0][0]到y[i][0]的上一个是i*m个
y[i][0]到y[i][j-1]是j个