当前位置:编程学习 > C/C++ >>

C++的代码填空 请写清楚

1.以下程序的功能是:通过指针操作,找出三个整数中的最小值并输出。

请填空。

  #include "stdlib.h"

  main()

  {int *a,*b,*c,num,x,y,z;

   a=&x;b=&y;c=&z;

   cout<<"输入3个整数:"<<endl;

   cin>>x;

cin>>y;

cin>>z;

   cout<<*a<<*b<<*c;

   num=*a;

   if(*a>*b)______;

   if(num>*c)______;

   cout<<"输出最小整数:"<<num;

  }

2.以下程序将数组a中的数据按逆序存放,请填空。

  #define M 8

  main()

  {int a[M],i,j,t;

   for(i=0;i<M;i++)cin>>a+i;

   i=0;j=M-1;

   while(i<j)

    {

     t=*(a+i);________;*(_______)=t;

     i++;j--;

     }

  for(i=0;i<M;i++)cout<<*(a+i);

 }

 

3.以下程序的运行结果是_____.

  #include<stdio.h>

  main()

  {int a=1,b=2,c;

   c=max(a,b);

   cout<<"max is "<<c<<endl;

   }

  max(int x,int y)

  {int z;  

   z=(x>y)?x:y;

   return(z);

  }

4.函数gongyu的作用是求整数num1和num2的最大公约数,并返回该值。请填空。

  gongyu(int num1,int num2)

  {int temp,a,b;

   if(num1(_____) num2)

    {temp=num1;num1=num2;num2=temp;}

   a=num1;b=num2;

   while(____)

    {temp=a%b;a=b;b=temp;}

   return(a);

}

5.以下程序的运行结果是________.

   int a=5;int  b=7;

   main()

  { int a=4,b=5,c;

    c=plus(a,b);

    printf("A+B=%d\n",c);

   }

  plus(int x,int y)

   {int z;

     z=x+y;

     return(x);

   }

6.以下程序的运行结果是_______.

 main()

 {incx();

  incy();

  incx();

  incy();

  incx(); 

  incy();

 }

 incx()

  {

  int x=0;

  printf("x=%d\t",++x);

}

incy()

 {static int y=0;

  printf("\ny=%d\n",++y);

}

答案:第一题:

因为输出的是num,所以,num始终应该取被比较的两者中较小的那个

num = *b;

num = *c;

第二题:

最好理解为,以最中间的数为对称轴,依次交换两边的数组所存储的值,例如a[0] = 0,a[9] = 9,写代码来交换,需要一个中间变量,就像你要交换两个碗里的水,需要格外一个碗来腾空其中一个。中间变量int c;

c = a[0];//将a[1]里面的水倒给c,可以假设此时a[1]是空碗

a[0] = a[9];//再将a[9]里面的水倒给a[1],下面一步你应该能猜得到

a[9] = c;//将c碗里面装的原来是a[1]的水倒给a[9]

原题答案:

*(a+i) = *(a+j);//这里刚好可以理解为a+1是碗,加星号表示取碗里面的水.

*(a+j) = t;

第三题:

max内部的原理和第一题原理一样,同时结合第二题,加深认识,结构就是输出两个变量中最大的那一个,max即最大的意思。

第四题:

  gongyu(int num1,int num2)//中文拼音都不能拼对吗?

  {int temp,a,b;

   if(num1(_____) num2)         //填%,这个if语句整体表示如果num1 % num2 == 1,那么执行交换两者的值

    {temp=num1;num1=num2;num2=temp;}

   a=num1;b=num2;

   while(____)   //哲理填入temp,表示只要a%b != 0,就继续向下求余,求余的过程是用上一次的被除数对上一次的榆树求余,只要所得余数不为0,就依次向下求余。这个while()不会出现死循环

    {temp=a%b;a=b;b=temp;}

   return(a);

}

第五题:

int a=5;int  b=7;//两个全局变量,各自被初始化为5,7.

   main()

  { int a=4,b=5,c;//他们是局部变量,初始化为4,5.作用域在main()函数内有效

    c=plus(a,b);//读取a,b的和值。当变量在局部被定义时,将在该语句块的范围内覆盖外部变量,无论另外的同名变量是全局变量还是目前语句块内的“全局变量”所以求和的值为4+5 = 9.

    printf("A+B=%d\n",c);

   }

  plus(int x,int y) //对两个参数求和,返回和值。

   {int z;

     z=x+y;

     return(x);

   }

第六题:

考察两个知识点:变量的作用域与关键字static

输出为x=1,y=1,x=1,y=2,x=1,y=3

局部变量x的值始终在该语句结束后失去效用

static生命该变量为全局变量,所以它的值一直被保存,每一次调用函数都会增加y的值

main()

 {incx();

  incy();

  incx();

  incy();

  incx(); 

  incy();

 }

 incx()

  {

  int x=0;

  printf("x=%d\t",++x);

}

incy()

 {static int y=0;

  printf("\ny=%d\n",++y);

}

上一个:给我看看这个这个c++程序哪里错了
下一个:C++中返回值是什么意思

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,