【函数2.1说明】
有1、2、3、4四个数字,输出由这些数字组成的互不相同且无重、复数字的三位数。
【函数2.1】
main()
int i,j,k;
printf("\n");
for( (1) )/*以下为三重循环*/
for(j=1; j<5;j++)
for (k=1;k<5;k++)
if ( (2) ) /*确保i, j, k 三位互不相同*/
printf("%d,%d,%d\n",i,j,k);
【函数2.2说明】
计算并输出100之内的素数,每行输出10个,超过10个则换行。
【函数2.2】
#include <stdio.h>
#include "math.h"
#define N 101
main()
int i,j,line,a[N];
for(i=2;i<N;i++) (3) ;
for(i=2;i<sqrt(N);i++)
for(j=i+1;j<N;j++)
if(a[i]!=0&&a[j]!=0)
if(a[j]%a[i]==0)
(4) ;
printfC\n");
for(i=2,line=0;i<N;i++)
if(a[i]!=0)
prinff("%5d",a[i]);
(5) ;
if(line==10)
prinff("\n");
line=0;
参考答案:(1)i=1;i<5;i++
(2)i!=k&&i!=j&&j!=k
(3)a[i]=I
(4)a[j]=0
(5)line++
解析:
[分析]:
本题考查用C语言程序对组合数和素数的求解。
在函数2.1中,要求输出由1、2、3、4这些数字组成的互不相同且无重复数字的三位数。程序中是用三重循环来实现的。
第(1)空是三重循环中第一重循环的循环条件,三位数的最高位可以取题目给出的任意一个数,那么应该和其他循环的条件一样,结合程序中变量的应用情况,不难知道这重循环是用变量i,因此,此空答案为i=1;i<5;i++。
第(2)空是条件判断语句的条件,此条件判断语句的作用注释中已经给出,是用来确保i,j,k三位互不相同的,即所组成的三位数中无重复数字。因此,此空答案为i!=k&&i!=j&&j!=k。
在函数2.2中,题目要求计算并输出100之内的素数,且每行只能输出10个数,从试题一中我们应该很清楚素数的定义了,最小的素数是2。下面我们来分析程序。
第(3)空是第一个循环下面的执行语句,此循环是从2开始一直到100,结合程序不难发现程序中用了一个数组来存放要参加运算的100个数,但是并没有对数组进行赋初值操作,那么此空的作用应该就是对数组进行赋初值,因此,此空答案为a[i]=i。
第(4)空是在循环中的两个条件判断语句下面,从条件判断语句if(a[j]%a[i]==0)不难推断出此循环是用来求当前最小素数的倍数的,此空是对当前最小素数倍数的处理,结合后面的程序可以知道,如果是素数的倍数,那么在数组中的值要被变为0,因此,此空答案为a[j]=0。
第(5)空是在循环输出语句下面,从条件判断语句if(line==10)及下面的操作可以推断出变量line是用来记录一行中输出素数的个数的,在此空的上面一行程序是输出一个素数,那么接下来应该是将变量line加1,因此,此空答案为line++。