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++中返回值是什么意思