填空题
给定程序的功能是求出能整除X且不是偶数的各整数,并放在数组PP中,这些除数的个数由N返回。
例如,若X的值为30,则有4个数符合要求,它们是1,3,5,15。
注意:部分源程序给出如下
请勿改动主函数main和其他函数中的任何内容,仅在横线上填入所编写的若干表达式或语句。
试题程序:#include
void fun(int x, int pp[], int *n)
{
int i, j = 0;
for (i=1; i<=x; i+=2)
if ((x%i) == 0)
pp[j++] = ___1___;
*n = ___2___;
}
main()
{
int x, aa[1000], n, i;
printf("\nPlease enter an integer number:\n");
scanf("%d", &x);
fun(x, ___3___);
for (i=0; i
printf("\n");
}
第1处填空:i
第2处填空:j
第3处填空:aa,
改错题
N个有序整数数列已放在一维数组中,给定下列程序中,函数FUN的功能是:利用拆半查找算法查找整数M在数组中的位置。若找到,则返回其下标值:反之,则返回-1。
拆半查找的基本算法是:每次查找前先确定数组中待查的范围:low和high(low
请改正程序中的错误,使它能得出正确结果。
注意:不要改动MAIN函数,不得增行或删行,也不要更改程序的结构!
试题程序:#include
#define N 10
/********found********/
void fun(int a[], int m)
{
int low = 0, high = N-1, mid;
while (low <= high)
{
mid = (low+high)/2;
if (m < a[mid])
high = mid-1;
/********found********/
else
if (m >= a[mid])
low = mid+1;
else
return(mid);
}
return (-1);
}
main()
{
int i, a[N] = {-3, 4, 7, 9, 13, 45, 67, 89, 100, 180}, k, m;
printf("a êy×é?Dμ?êy?Yè???:");
for (i=0; i
printf("Enter m:");
scanf("%d", &m);
k = fun(a, m);
if (k >= 0)
printf("m=%d,index=%d\n", m, k);
else
printf("Not be found!\n");
}
第1处:void fun(int a[],int m)应改为int fun(int a[],int m)
第2处:if (m>=a[mid])应改为if(m>a[mid])
编程题
编写函数int fun(int lim,int aa[MAX]),该函数的功能的求出小于或等于lim的所有素数,并放在aa数组中,该函数返回所求出的素数的个数
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include
#include
#define MAX 100
int fun( int lim, int aa[MAX])
{
}
main()
{
int limit,i,sum;
int aa[MAX] ;
FILE *out;
printf("ê?è?ò?????êy");
scanf(" %d", &limit);
sum=fun(limit, aa);
for(i=0 ; i < sum; i++)
{
if(i == 0 && i !=0)
printf("\n");
printf("]", aa[i]);
}
sum=fun(28, aa);
out = fopen("out.dat", "w");
for(i=0 ; i < sum; i++)
fprintf(out, "%d\n", aa[i]);
fclose(out);
}
答案是:
int fun (int lim,int aa[MAX])
{
int k=0,I,j;
for(i=lim;i>1;i--)
{
for(j=2;j if(i%j==0)
break;
else
continue;
if(j>=i)
{
aa[k]=i;
k++;
}
}
return k++;
}