编程题:
20.编写函数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] ;
clrscr() ;
printf(“输入一个整数”);
scanf(” %d”, &limit);
sum=fun(limit, aa);
for(i=0 ; i < sum; i++)
{
if(i%10 == 0 && i !=0)
printf(“\n”);
printf(“%5d”, aa[i]);
}
}
22.N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。请编写函数fun,它的功能是:找出学生的最高分,由函数值返回。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
#include
#include
#define N 8
struct slist
{
double s;
struct slist *next;
};
typedef struct slist STREC;
double fun( STREC *h )
{
}
STREC *creat( double *s)
{
STREC *h,*p,*q;
int i=0;
h=p=(STREC*)malloc(sizeof(STREC));
p->s=0;
while(i
{
q=(STREC*)malloc(sizeof(STREC));
q->s=s[i];
i++;
p->next=q;
p=q;
}
p->next=0;
return h;
}
outlist(STREC *h)
{
STREC *p;
p=h->next;
printf(“head”);
do
{
printf(“->%2.0f”,p->s);
p=p->next;
}
while(p!=0);
printf(“\n\n”);
}
main()
{
double s[N]={85,76,69,85,91,72,64,87}, max;
STREC *h;
h=creat(s);
outlist(h);
max=fun(h);
printf(“max=%6.1f\n”,max);
}
改错题:
76.下列给定程序中函数fun的功能是:将长整型数中每一位上为偶数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。例如,当s中的数为87653142时,t中的数为8642。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或则行,也不得更改程序的结构!
试题程序:
#include
#include
void fun(long s,long *t)
{
/********found********/
int d;
long s1=1;
*t=0;
while(s>0)
{
d=s%10;
if (d%2==0)
{
*t=d* s1+*t;
s1*=10;
}
/********found********/
s \=10;
}
}
main()
{
long s, t;
clrscr();
printf(“\nPlease enter s:”);
scanf(“%ld”, &s);
fun(s, &t);
printf(“The result is :%ld\n”, t);
}
78.下列给定程序中函数fun的功能是:判断一个整数m是否是素数,若是返回1,否
则返回0。在main()函数中,若fun返回1则输出YES,若fun返回0则输出NO!。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include
#include
int fun(int m)
{
int k=2;
while(k<=m&&(m%k))
/********found********/
k++
/********found********/
if(m=k)
return 1;
else
return 0;
}
main( )
{
int n;
clrscr( );
printf( “\nPlease enter n:” );
scanf( “%d”,&n );
if( fun ( n ) )
printf( “YES\n” );
else
printf(“NO!\n”);
}