程序填空
1.下面程序的功能是输入2个整数,输出它们的最小公倍数和最大公约数。请填空使程序完整、正确。
#include <stdio.h>
int main()
{
int m, n, gbs, gys;
scanf( "%d%d", &m, &n );
gbs = ___;
while ( gbs % n != 0 )
gbs = gbs + m;
gys = ___ ;
printf( "最小公倍数=%d,最大公约数=%d", gbs, gys );
return(0);
}
参考答案: m 、 m*n/gbs
2. 下面程序的功能是输出1至100之间每位数的乘积大于每位数的和的数。请填空使程序完整、正确。
#include <stdio.h>
int main()
{
int n, k = 1, s = 0, m;
for ( n = 1; n <= 100; n++ )
{
k = 1; s = 0; ___;
while ( ___ )
{
k *= m % 10; s += m % 10; ___;
}
if ( k > s )
printf( "%d ", n );
}
return(0);
}
参考答案: m=n 、 m 、 m/=10
3. 下面程序的功能是输入一个无符号整数后求出它的各位数之和并输出。例如若输入123,则将各位之和6(即1+2+3)输出。请填空使程序完整、正确。
#include <stdio.h>
___f( unsigned int num )
{
unsigned int k = 0;
do
{
k += ___;
num = num / 10;
}
while ( num );
___;
}
int main()
{
unsigned int n;
scanf( "%d", &n );
printf( "%u", f( n ) );
return(0);
}
参考答案: unsigned int 、 num%10 、 return k
4.一个三位整数(100~999),若各位数的立方和等于该数自身,则称其为“水仙花数”(如:153=13+53+33),下面程序的功能是找出所有的这种数。请填空使程序完整、正确。
#include <stdio.h>
int main()
{
int n, a, b, c; /*n、a、b和c分别为三位数及其个位、十位和百位*/
for ( c = 1; c <= 9; c++ )
for ( b = 0; b <= 9; b++ )
for ( a = 0; ______; a++ )
{
n = ______;
if ( a * a * a + b * b * b + c * c * c == ______ )
printf( "%d\n", n );
}
return(0);
}
参考答案: a<=9 、 c*100+b*10+a 、 n
5.下面程序的功能是通过函数求f(x)的累加和,其中f(x)=x2+1。请填空使程序完整、正确。
#include <stdio.h>
int F( int x )
{
return(___);
}
int SunFun( int n )
{
int x, s = 0;
for ( x = 0; x <= n; x++ )
s += F( ___ );
return(s);
}
int main()
{
printf( "sum=%d", SunFun( 10 ) );
return(0);
}
参考答案: x*x+1 、x
7. 补充以下程序,使sort()函数用选择法对数组a中n个元素按从大到小排序。
注:在每对“/**/”之间的空白处补充程序。
#include <stdio.h>
#include <math.h>
void sort(int a[], int n)
{
int i, j, k, temp;
for( i = 0; i < n-1; i++ )
{ k = i;
for(______; j< n; j++)
if(______) k=j;
if( k != i )
{
temp=______;
a[k]=a[i];
a[i]=temp;
}
}
}
参考答案: j=i+1 、a[j]>a[k] 、 a[k]
8.下面程序的功能是向数组输入数据,逆序置换后输出。逆序置换是指数组的首元素和末元素置换,第二个元素和倒数第二个元素置换,………。请填空使程序完整、正确。
#include <stdio.h>
#define N 8
int main()
{
int i, j, t, a[N];
for ( i = 0; i < N; i++ )
scanf( "%d", &a[i] );
i = 0; j = N - 1;
while ( i < j )
{
t = a[i], ______ , a[j] = t;
i++,______ ;
}
for ( i = 0; i < N; i++ )
printf( "%5d", a[i] );
return(0);
}
参考答案: a[i]=a[j] 、j--
9.下面程序的功能是利用二维数组形成一个五行的杨辉三角形。请填空使程序完整、正确。
1↙
1 1↙
1 2 1↙
1 3 3 1↙
1 4 6 4 1