第61套
1.程序填空题:
请补充函数fun,该函数的功能是:判断一个数的个位数字和百位数字之和是否等于其十位上的数字,是则返回"yes!",否则返回"no!"。
注意:部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。
试题程序:
#include
#include
#include
char *fun(int n)
{
int
g,s,b;
g=n%10;
s=n/10%10;
b=【1】;
if((g+b)==s)
return 【2】;
else
return 【3】;
}
void main()
{
int
num=0;
system("CLS");
printf("******Input data *******\n");
scanf("%d",&num);
printf("\n\n\n");
printf("****** The result *******\n");
printf("\n\n\n%s",fun(num));
}
2.程序改错题:
下列给定程序中,函数fun的功能是:传入一个整数m,计算如下公式的值。
t=1/2-1/3-…-1/m
例如,若输入5,则应输出-0.283333。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
#include
#include
double fun(int m)
{
double t=1.0;
int I;
for(I=2;I<=m;I++)
t=1.0-1/I;
;
}
void main()
{int m;
system("CLS");
printf("\nPlease enter 1 integer
numbers:\n");
scanf("%d",&m);
printf("\n\nThe result is %1f\n",
fun(m));
}
1. 程序设计题:
请编写函数fun,其功能是:计算并输出3到n之间所有素数的平方根之和。
例如,若主函数从键盘给n输入100后,则输出为sum=148.874270。
注意:n的值要大于2但不大于100。部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include
#include
double fun(int n)
{
}
main()
{int n;
double sum;
FILE *out;
printf("Input N=");
scanf("%d",&n);
sum=fun(n);
printf("\n\nsum=%f\n\n",sum);
out=fopen("out.dat","w");
fprintf(out,"%f\n",fun(180));
fclose(out);
}
【参考答案】:1. (1) n/100%10 (2)
"yes!" (3) "no!"
2.
(1)错误:t=1.0-1/i; 正确:t-=1.0/i;
(2)错误:; 正确:return t;
3. double fun(int n)
{
int
m,k,i;
double
s=0.0;
for(m=3;m<=n;m++)
{
k=sqrt(m);
for(i=2;i<=k;i++)
if(m%i==0) break;
if(i>=k+1)
s+=sqrt(m);
}
return
s;
}
第62套
1. 程序填空题:
数组xx[N]保存着一组3位数的无符号正整数,其元素的个数通过变量num传入函数fun。请补充函数fun,该函数的功能是:从数组xx中找出个位和百位的数字相等的所有无符号整数,结果保存在数组yy中,其个数由函数fun返回。
例如,当xx[8]={135,787,232,222,424,333,141,541}时,bb[6]={787,232,222,424,333,141}。
注意:部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。
试题程序:
#include
#include
#include
#define N 1000
int fun(int xx[],int bb[],int num)
{
int I,n=0;
int g,b;
for(I=0;I
{
g=【1】;
b=xx[I]/100;
if(g==b)
【2】;
}
return【3】;
}
void main()
{
int xx[8]={135,787,232,222,424,333,141,541};
int yy[N];
int num=0,n=0,i=0;
num=8;
system("CLS");
printf("***original data ***\n");
for(i=0;i
printf("%u ",xx[i]);
printf("\n\n\n");
n=fun(xx,yy,num);
printf("\nyy= ");
for(i=0;i
printf("%u ",yy[i]);
}
2. 程序改错题:
下列给定函数中,函数fun的功能是:统计字符串中各元音字母(即A、E、I、O、U)的个数。注意:字母不分大小写。例如,输入THIs
is a boot,则应输出是1 0 2 2 0。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
#include
#include
fun(char *s, int num[5])
{ int k, i=5;
for(k=0;k
num[i]=0;
for(;*s;s++)
{ i=-1;
switch(s)
{ case 'a': case'A':{i=0;break;}
case 'e ': case 'E':{i=1;break;}
case 'i': case 'I':{i=2;break;}
case 'o': case 'O':{i=3;break;}
case 'u': case 'U':{i=4;break;}
}
if(i>=0)
num[i]++;
}
}
void main()
{ char s1[81]; int num1[5], i;
system("CLS");
printf("\nPlease enter a string: ");
gets(s1);
fun(s1, num1);
for(i=0;i<5;i++) printf("%d
",num1[i]);
printf("\n");
}
3.程序设计题:
请编写一个函数void fun(int m, int k, int
xx[]),该函数的功能是:将大于整数m且紧靠m的k个素数存入所指的数组中。
例如,若输入17,5,则应输出19,23,29,31,37。
注意:部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include
#include
#include
void fun(int m,int k,int xx[])
{
}
void main()
{
FILE *wf;
int m,n,zz[1000];
system("CLS");
printf("\nPlease enter two integers: ");
scanf("%d%d",&m,&n);
fun(m, n, zz);
for(m=0;m
printf("%d ",zz[m]);
printf("\n ");
wf=fopen("out.dat","w");
fun(17,5,zz);
for(m=0;m<5;m++)
fprintf(wf,"%d ",zz[m]);
fclose(wf);
}
【参考答案】:1. (1) xx[i]%10 (2)
bb[n++]=xx[i] (3) n
2. (1)错误:fun(char *s, int num[5])
正确:void fun(char *s, int num[5])
(2)错误:num[i]=0; 正确:num[k]=0;
(3)错误:switch(s) 正确:switch(*s)
3. void fun(int m, int k, int xx[])
{
int
i,j,n;
for(i=m+1,n=0;n
{for(j=2;j
if(i%j==0) break;
if(j>=i)
xx[n++]=i;
}
}
第63套
程序填空题:
请补充函数fun,该函数的功能是:判断一个数是否为素数。该数是素数时,函数返回字符串"yes!",否则函数返回字符串"no!",并在主函数中输出。
注意:部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。
试题程序:
#include
#include
#include
【1】
{
int I, m;
m=1;
for(I=【2】;I
if (【3】)
{
m=0;
break;
}
if
(m==1&&n>1)
return("yes!");
else
return("no!");
}
void main()
{
int k=0;
system("CLS");
printf("Input:");
scanf("%d",&k);
printf("%s\n",fun(k));
}
程序改错题:
下列给定程序中,函数fun的功能是:按顺序给s所指数组中的元素赋予从2开始的偶数,然后再按顺序对每5个元素求一个平均值,并将这些值依次存放在w所指的数组中。若s所指数组中元素的个数不是5的倍数,多余部分忽略不计。例如,s所指数组有14个元素,则只对前10个元素进行处理,不对最后的4个元素求平均值。
请改正函数fun中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
#define SIZE 20
fun (double *s,double *w)
{ int k,i; double sum;
for(k=2,i=0;i
{s[i]=k;k+=2;}
sum=0.0;
for(k=0,i=0;i
{sum+=s[i];
if(i+1%5==0)
{w[k]=sum/5; sum=0;k++;}
}
return k;
}
void main()
{ double a[SIZE],b[SIZE/5];
int i, k;
k=fun(a,b);
printf("The original data:\n");
for(i=0;i
{
if(i%5==0) printf("\n");
printf("%4.0f",a[i]);
}
printf("\n\nThe result:\n");
for(i=0;i
printf("%6.2f",b[i]);
printf("\n\n");
}
程序设计题:
程序定义了 的二维数组,并在主函数中自动赋值。请编写函数fun(int
a[][N],intn),该函数的功能是:使数组左下半三角元素中的值乘以n。例如,若n的值为3,a数组中的值为:
则返回主程序后a数组中的值应为:
注意:部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include
#include
#include
#define N 5
void fun(int a[ ][N], int n)
{
}
main()
{
int a[N][N],n, i,j;
FILE *out;
printf("***** The array *****\n");
for(i=0; i
{
for(j=0; j
{
a[i][j]=rand()%10;
printf("%4d", a[i][j]);
}
printf("\n");
}
n=rand()%10;
printf("n=%4d\n",n);
fun(a, n);
printf("*****THE RESULT*****\n");
for(i=0; i
{
for (j=0; j
printf("%4d",a[i][j]);
printf("\n");
}
out=fopen("out.dat","w");
for(i=0;i
for(j=0;j
a[i][j]=i*j+1;
fun(a,9);
for(i=0;i
{
for(j=0;j
fprintf(out,"%4d",a[i][j]);
fprintf(out,"\n");
}
fclose(out);
}
【参考答案】:1. (1) char *fun(int
n) (2) 2
(3) n%i==0或!(n%i)
2. (1)错误:if(i+1%5==0) 正确:if((i+1)%5==0)
3. un(int a[][N],int n)
{
int
i,j;
for(i=0;i
for(j=0;j<=i;j++)
a[i][j]=a[i][j]*n;
}
第64套
1. 程序填空题:
给定程序中,函数fun的功能是:在形参s所指字符串中的每个数字字符之后插入一个*号。
例如,形参s所指的字符串为:def35adh3kjsdf7。执行结果为:def3*5*adh3*kjsdf7*。
注意:部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。
试题程序:
#include
void fun(char *s )
{
int i,j,n;
for(i=0;s[i]!='\0';i++)
if(s[i]>='0'【1】s[i]<='9')
{
n=0;
while(s[i+1+n]!=【2】)
n++;
for(j=i+n+1;j>i;j--)
s[j+1]=【3】;
s[j+1]='*';
i=i+1;
}
}
main()
{
char
s[60]="ba3a54cd23a";
printf("\n the original string is: %s\n",s);
fun(s);
printf("\nthe result is: %s\n",s);
}
2. 程序改错题:
下列给定程序中,函数fun的功能是:找出一个大于给定整数m且紧随m的素数,并作为函数值返回。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
#include
#include
int fun( int m)
{ int I,k;
for (I=m+1; ;I++)
{ for (k=2;k
if (I%k!=0)
break;
if (k
return(I);
}
}
void main()
{ int n;
system("CLS");
printf("\nPlease enter n:
");
scanf("%d",&n);
printf ("%d\n",fun(n));
}
3. 程序设计题:
请编写函数void fun (int x, int pp[], int
*n),它的功能是:求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。
例如,若x中的值为30,则有4个数符合要求,它们是1、3、5、15。
注意:部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include
#include
#include
void fun (int x, int pp[], int *n)
{
}
void main ()
{
FILE *wf;
int x,aa[1000], n, i ;
system("CLS");
printf("\nPlease enter an integer number : \n
") ;
scanf ("%d", &x) ;
fun (x, aa, &n) ;
for (i=0 ; i
printf ("%d ", aa [i]);
printf ("\n ") ;
wf=fopen("out.dat","w");
fun (30, aa, &n) ;
for (i=0 ; i
fprintf (wf,"%d ", aa [i]);
fclose(wf);
}
【参考答案】:1. (1)
&& (2)
0 (3) s[j]或*(s+j)
2.
(1)错误:if(i%k!=0) 正确:if(i%k==0)
(2)错误:if(k=i)
3. void fun (int x, int pp[], int *n)
{
int
i,j=0;
for(i=1;i
if(x%i==0)
pp[j++]=i;
*n=j;
}
第65套
1. 程序填空题:
请补充函数fun,该函数的功能是:依次取出字符串中所有的小写字母以形成新的字符串,并取代原字符串。
注意:部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。
试题程序:
#include
#include
#include
void fun(char *s)
{
int I=0;
char *p=s;
while(【1】)
{
if(*p>='a'&&*p<='z')
{
s[I]=*p;
【2】;
}
p++;
}
s[I]=【3】;
}
void main()
{
char str[80];
system("CLS");
printf("\nEnter a string:");
gets(str);
printf("\n\nThe string is :%s\n",str);
fun(str);
printf("\n\nThe string of changing
is:%s\n",str);
}
2. 程序改错题:
下列给定程序中,函数fun的功能是:计算并输出high以内最大的10个素数之和。high由主函数传给函数fun。例如high的值为100,则函数的值为732。
请改正程序中的错误,使程序能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
#include
#include
#include
int fun(int high)
{
int sum=0,n=0, j, yes;
while((high>=2)&&(n<10))
{
yes = 1;
for(j=2; j<=high/2; j++)
if(high%j==0)
{
yes=0;
break
}
if(yes)
{
sum+=high;
n++;
}
high--;
}
return sum;
}
void main()
{
system("CLS");
printf("%d\n",fun(100));
}
3. 程序设计题:
请编写一个函数fun,它的功能是:根据以下公式求 的值(要求满足精度0.005,即某项小于0.005时停止迭代)。
/2=1+1/3+1*2/(3*5)+1*2*3/(3*5*7)+1*2*3*4/(3*5*7*9)+…+1*2*3*…*n/(3*5*7*…*(2n+1))
程序运行后,如果输入精度0.0005,则程序输出3.14…。
注意:部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include
#include
#include
double fun(double eps)
{
}
void main()
{
double x;
FILE *wf;
printf("Input eps: ");
scanf("%lf",&x);
printf("\neps=%1f,PI=%1f\n",x,fun(x));
wf=fopen("out.dat","w");
fprintf (wf,"%lf",fun(0.0005));
fclose(wf);
}
【参考答案】:1. (1)*p
(2) i++或++i或i+=1或i=i+1
(3)'\0'
2. (1)错误:break 正确:break;
3. double fun(double eps)
{
double
s=1.0,s1=1.0;
int
n=1;
while(s1>=eps)
{ s1=s1*n/(2*n+1);
s=s+s1;
n++;
}
return
2*s;
}