注册 登录
编程论坛 C++教室

分析下列程序的输出结果

realll 发布于 2010-05-17 21:12, 552 次点击
#include<iostream.h>
#define M 1.5
#define A(a) M*a
void main()
{
int x(5),y(6);
cout<<A(x+y)<<endl;
}
13.5

为啥不是 1.5*(5+6)?
请说明一下过程
本人学的比较菜···

#include<iostream.h>
void main()
{
int i,j,a[8][8];
* * a=1;
for(i=1;i<8;i++)
{
* *(a+i)=1;
*(*(a+i)+i)=1;
for(j=1;j<i;j++)
    *(*(a+i)+j)= *(*(a+i-1)+j-1)+ *(*(a+i-1)+j);
}
for(i=0;i<8;i++)
{
for(j=0;j<=i;j++)
    cout<<""<<*(*(a+i)+j);
cout<<endl;
}
}

1   
1  1
1  2  1
1  3  3  1
1  4  6  4  1
1  5  10  10  5  1
1  6  15  20  15  6  1
1  7  21  35  35  21  7  1




[ 本帖最后由 realll 于 2010-5-17 22:41 编辑 ]
3 回复
#2
最近不在2010-05-18 18:08
程序代码:
#include<iostream.h>
#define M 1.5
#define A(a) M*a
void main()
{
int x(5),y(6);
cout<<A((x+y))<<endl;   //规范写法。(x+y)替代a
}
规范格式
#3
ciweitou1632010-05-18 18:57
(1)楼上正解,A(a)相当于M*a
所以A(x+y)相当于M*x+y
**************************************
(2) *(*(a+i)+j)表示第i行 第j列;
程序代码:

#include<iostream>
using namespace std;

char CoutSpace(int i);

int main(void)
{
    int i,j,a[8][8];
    * * a=1;
    for(i=1;i<8;i++)
    {
        * *(a+i)=1;
        *(*(a+i)+i)=1;
        for(j=1;j<i;j++)
                *(*(a+i)+j)= *(*(a+i-1)+j-1)+ *(*(a+i-1)+j);
    }
    for(i=0;i<8;i++)
    {
        for(j=0;j<8-i;j++)
            cout<<" ";
        cout<<CoutSpace(i);
        for(j=0;j<=i;j++)
            cout<<" "<<*(*(a+i)+j);
        cout<<endl;
    }
    return 0;
}

**************************
输出:
         1
        1 1
       1 2 1
      1 3 3 1
     1 4 6 4 1
    1 5 10 10 5 1
   1 6 15 20 15 6 1
  1 7 21 35 35 21 7 1
#4
最近不在2010-05-18 18:58
程序代码:
#include<iostream.h>
void main()
{
int i,j,a[8][8];
* * a=1;    //第一行第一列为1
for(i=1;i<8;i++)   //控制行
{
* *(a+i)=1;     //每行第一个元素为1  
*(*(a+i)+i)=1;     //第n第n列的元素为1
for(j=1;j<i;j++)     //控制列
    *(*(a+i)+j)= *(*(a+i-1)+j-1)+ *(*(a+i-1)+j);   //坐标[i][j] = [i-1][j-1]+[i-1][j]
}       //设置元素值

for(i=0;i<8;i++)  //输出
{
for(j=0;j<=i;j++)
    cout<<""<<*(*(a+i)+j);
cout<<endl;
}
}
over
1