第76套
1.程序填空题
给定程序中 ,函数fun的功能是:找出100~999之间(含100和999)所有整数中各位上数字之和为x(x为一正整数)的整数 ,然后输出;符合条件的整数个数作为函数值返回 。
例如 ,若x=5时 ,100~999之间各位上数字之和为5的整数有:104 、113 、122 、131 、140 、203 、212 、230 、302 、311 、320 、401 、410、500 。共有15个 。
请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果 。
注意:不得增行或删行 ,也不得更改程序的结构!
2.程序修改题
给定程序中 ,函数fun的功能是:从整数10至55之间 ,选出能被3整除且有一个位上的数是5的那些数 ,并把这些数放在b所指的数组中 ,这些数的个数作为函数值返回 。规定 ,函数中a1存放个位数 ,a2存放十位数 。
请改正函数fun中指定部位的错误 ,使它能得出正确的结果 。
注意:不要改动main函数,不得增行或删行 ,也不得更改程序的结构 。
#include <stdio.h>
int fun (int *b)
{
int k,a1,a2,i=0;
for (k=10;k<=55;k++)
{
/************found************/
a2=k%10;
a1=k-a2*10;
if((k%3==0 && a2==5)||(k%3==0 && a1==5))
{ b[i]=k; i++; }
}
/************found************/
return k;
}
int main()
{
int a[100],k,m;
m=fun(a);
printf("The result is:\n");
for (k=0;k<m;k++) printf("%4d",a[k]);
printf("\n");
return 0;
}
3.程序设计题
假定输入的字符串中只包含字母和*号 。编写函数fun ,它的功能是:将字符串尾部的*号全部删除,前面和中间的*号不删除 。
例如 ,字符串中的内容为:*****A*BC*DEF*G*** ,删除后 ,字符串的内容应当为:*****A*BC*DEF*G 。
注意:请勿改动主函数main和其他函数中的任何内容 ,仅在函数fun的花括号中填入你编写的若干语句 。
#include <stdio.h>
#include <string.h>
void NONO(void);
void fun( char *a )
{
}
int main()
{
char s[81];
printf("Enter a string:\n");
gets(s);
fun( s );
printf("The string after deleted:\n");
puts(s);
NONO();
return 0;
}
void NONO(void)
{/* 本函数用于打开文件 ,输入数据 ,调用函数 ,输出数据 ,关闭文件。 */
FILE *in, *out ;
int i ;
char s[81] ;
in = fopen("in.dat","r") ;
out = fopen("out.dat","w") ;
for(i = 0 ; i < 10 ; i++)
{
fscanf(in, "%s", s) ;
fun(s) ;
fprintf(out, "%s\n", s) ;
}
fclose(in) ;
fclose(out) ;
}
1.(1)999 (2)t/10 (3)x
2. a2=k/10;
return i;
3. void fun( char *a )
{
int i,j;
for (i=0,j=0;a[i]!=\0;i++)
if (a[i]!=*) j=0;
else j++;
a[i-j]=\0;
}
第76套参考答案
第77套
1.程序填空题
给定程序中 ,函数fun的功能是:计算
直到||<=10-3 ,并把计算结果作为函数值返回 。
例如 ,若形参e的值为1e-3 ,函数的返回值为2.985678 。
请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。
注意:不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
double fun(double e)
{
int i;
double s, x;
/**********found**********/
s=0; i=__1__;
x=1.0;
while(x>e)
{
/**********found**********/
__2__;
/**********found**********/
x=(2.0*i-1)/((__3__)*(2.0*i));
s=s+x;
}
return s;
}
int main()
{
double e=1e-3;
printf("\nThe result is: %f\n",fun(e));
}
2.程序修改题
给定程序中 ,函数fun的功能是:将s所指字符串的正序和反序进行连接 ,形成一个新串放在t所指的数组中 。
例如,当s所指字符串为“ABCD ”时 ,则t所指字符串中的内容应为“ABCDDCBA ” 。
请改正函数fun中指定部位的错误 ,使它能得出正确的结果 。
注意:不要改动main函数 ,不得增行或删行 ,也不得更改程序的结构 。
#include <stdio.h>
#include <string.h>
/************found************/
void fun (char s, char t)
{
int i, d;
d = strlen(s);
for (i = 0; i<d; i++) t[i] = s[i];
for (i = 0; i<d; i++) t[d+i] = s[d-1-i];
/************found************/
t[2*d-1] = \0;
}
int main()
{
char s[100], t[100];
printf("\nPlease enter string S:");
scanf("%s", s);
fun(s, t);
printf("\nThe result is: %s\n", t);
return 0;
}
3.程序设计题
编写函数fun ,它的功能是:将s所指字符串中除了下标为奇数 ,同时ASCII码值也为奇数的字符外 ,其余的字符全部删除;串中剩余字符所形成的一个新串放在t所指的数组中 。
例如 ,若s所指字符串中的内容为:ABCDEFG12345 ,则t所指数组中的内容应为:135 。
注意:请勿改动主函数main和其他函数中的任何内容 ,仅在函数fun的花括号中填入你编写的若干语句 。
#include <stdio.h>
#include <string.h>
void NONO(void);
void fun(char *s, char t[])
{
}
int main()
{
char s[100], t[100];
printf("\nPlease enter string S:");
scanf("%s", s);
fun(s, t);
printf("\nThe result is: %s\n", t);
NONO();
return 0;
}
void NONO(void)
{/* 本函数用于打开文件 ,输入数据 ,调用函数,输出数据 ,关闭文件 。 */
char s[100], t[100] ;
FILE *rf, *wf ;
int i ;
rf = fopen("in.dat","r") ;
wf = fopen("out.dat","w") ;
for(i = 0 ; i < 10 ; i++)
{
fscanf(rf, "%s", s) ;
fun(s, t) ;
fprintf(wf, "%s\n", t) ;
}
fclose(rf) ;
fclose(wf) ;
}
1.(1)0 (2)i++ (3)2.0*i
2. void fun (char *s, char *t)
t[2*d] = \0;
3. void fun(char *s, char t[])
{
int i,j=0;
for (i=0;s[i]!=\0;i++)
if (i%2==1 && s[i]%2==1)
t[j++]=s[i];
t[j]=\0;
}
第77套参考答案
第78套
1.程序填空题
给定程序中 ,函数fun的功能是:逆置数组元素中的值 。
例如,若a所指数组中的数据依次为:1 、2 、3、4 、5 、6 、7 、8 、9 ,则逆置后依次为:9 、8 、7 、6 、5 、4 、3 、2、1 。
请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果 。
注意:不得增行或删行 ,也不得更改程序的结构!
#include <stdio.h>
void fun(int a[], int n)
{
int i,t;
/**********found**********/
for (i=0; i<___1___; i++)
{
t=a[i];
/**********found**********/
a[i] = a[n-1-___2___];
/**********found**********/
___3___ = t;
}
}
int main()
{
int b[9]={1,2,3,4,5,6,7,8,9}, i;
printf("\nThe original data :\n");
for (i=0; i<9; i++)
printf("%4d ", b[i]);
printf("\n");
fun(b, 9);
printf("\nThe data after invert :\n");
for (i=0; i<9; i++)
printf("%4d ", b[i]);
printf("\n");
}
2.程序修改题
给定程序中 ,函数fun的功能是:计算num的各位上的数字之积 。
例如 ,若输入252 ,则输出应为20;若输入202 ,则输出应为0。
请改正函数fun中指定部位的错误 ,使它能得出正确的结果 。
注意:不要改动main函数 ,不得增行或删行 ,也不得更改程序的结构 。
#include <stdio.h>
long fun(long num)
{
/************found************/
long k;
do
{
k*=num%10;
/************found************/
num\=10;
} while(num);
return (k);
}
int main()
{
long n;
printf("Please enter a number:");
scanf("%ld",&n);
printf("\n%ld\n",fun(n));
return 0;
}
3.程序设计题
编写函数fun ,它的功能是:找出一维数组元素中最大的值和它所在的下标 ,最大的值和它所在的下标分别通过形参max和index传回。
注意:请勿改动主函数main和其他函数中的任何内容 ,仅在函数fun的花括号中填入你编写的若干语句 。
#include <stdio.h>
#include <stdlib.h>
void NONO(void);
void fun(int a[], int n, int *max, int *d)
{
}
int main()
{
int i, x[20], max , index, n = 10;
for (i=0;i < n;i++)
{
x[i] = rand()%50;
printf("%4d", x[i]) ;
}
printf("\n");
fun( x, n , &max, &index);
printf("Max =%5d , Index =%4d\n",max, index );
NONO();
return 0;
}
void NONO(void)
{/* 本函数用于打开文件,输入数据 ,调用函数 ,输出数据,关闭文件 。 */
FILE *fp, *wf ;
int i, x[20], max,index,n=10,j;
fp = fopen("in.dat","r") ;
wf = fopen("out.dat","w") ;
for(i = 0 ; i < 10 ; i++)
{
for(j = 0 ; j < n ; j++)
fscanf(fp, "%d,", &x[j]) ;
fun( x, n , &max, &index);
fprintf(wf, "Max=%d,Index=%d\n",max,index);
}
fclose(fp) ;
fclose(wf) ;
}
1.(1)n/2 (2)i (3)a[n-1-i]
2. long k=1;
num/=10;
3. void fun(int a[], int n, int *max, int *d)
{
int i;
*d=0;
*max=a[0];
for (i=1;i<n;i++)
if (*max<a[i])
{
*max=a[i]; *d=i;
}
}
第78套参考答案
第79套
1.程序填空题
给定程序中 ,函数fun的功能是:计算x所指数组中N个数的平均值(规定所有数均为正数) ,平均值通过形参返回主函数 ,将小于平均值且最接近平均值的数作为函数值返回 ,在主函数中输出 。
例如 ,有10个正数:40 30 32 40 6 17 45 15 48 26 ,平均值为:35.500000 ,主函数中输出m=30.0 。
请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果 。
注意:不得增行或删行 ,也不得更改程序的结构!
#include <stdio.h>
#include <stdlib.h>
#define N 10
double fun(double x[],double *av)
{
int i,j;
double d,s;
s=0;
for(i=0; i<N; i++) s = s +x[i];
/**********found**********/
__1__=s/N;
d=32767;
for(i=0; i<N; i++)
if(x[i]<*av && *av - x[i]<=d)
{
/**********found**********/
d=*av-x[i]; j=__2__;
}
/**********found**********/
return __3__;
}
int main()
{
int i;
double x[N],av,m;
for(i=0; i<N; i++)
{
x[i]=rand()%50;
printf("%4.0f ",x[i]);
}
printf("\n");
m=fun(x,&av);
printf("\nThe average is: %f\n",av);
printf("m=%5.1f ",m);
printf("\n");
return 0;
}
2.程序修改题
给定程序中 ,函数fun的功能是:求s=aa..aa-…aaa-aa-a(此处aa..aa表示n个a ,a和n的值在1至9之间) 。
例如 ,a=3,n=6 ,则以上表达式为:s=333333-33333-3333-333-33-3,其值是:296298 。
请改正函数fun中指定部位的错误 ,使它能得出正确的结果 。
注意:不要改动main函数 ,不得增行或删行,也不得更改程序的结构 。
#include <stdio.h>
long fun (int a, int n)
{
int j ;
/**************found**************/
long s = 0, t = 1 ;
for ( j = 0 ; j < n ; j++)
t = t * 10 + a ;
s = t ;
for ( j = 1 ; j < n ; j++)
{
/**************found**************/
t = t % 10 ;
s = s - t ;
}
return(s) ;
}
int main( )
{
int a, n ;
printf( "\nPlease enter a and n:") ;
scanf( "%d%d", &a, &n ) ;
printf( "The value of function is: %ld\n", fun(a, n));
return 0;
}
3.程序设计题
编写函数fun ,它的功能是:统计tt字符串中’a’到’z’26个小写字母各自出现的次数 ,并依此放在pp所指数组中 。
例如 ,输入字符串:abcdefgabcdeabc后 ,程序的输出结果应该是:3 3 3 2 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 。
注意:请勿改动主函数main和其他函数中的任何内容 ,仅在函数fun的花括号中填入你编写的若干语句 。
#include <stdio.h>
#include <string.h>
void NONO(void);
void fun(char *tt, int pp[])
{
}
int main()
{
char aa[1000] ;
int bb[26], k;
printf( "\nPlease enter a char string:" );
scanf("%s", aa) ;
fun(aa, bb ) ;
for ( k = 0 ; k < 26 ; k++ )
printf ("%d ", bb[k]) ;
printf( "\n" ) ;
NONO();
return 0;
}
void NONO(void)
{/* 本函数用于打开文件 ,输入测试数据 ,调用fun函数 ,输出数据 ,关闭文件。*/
char aa[1000] ;
int bb[26], k, i ;
FILE *rf, *wf ;
rf = fopen("in.dat","r") ;
wf = fopen("out.dat","w") ;
for(i = 0 ; i < 10 ; i++)
{
fscanf(rf, "%s", aa) ;
fun(aa, bb) ;
for ( k = 0 ; k < 26 ; k++ )
fprintf (wf, "%d ", bb[k]) ;
fprintf(wf, "\n" ) ;
}
fclose(rf) ;
fclose(wf) ;
}
1.(1)*av (2)i (3)x[j]
2. long s = 0, t = 0 ;
t = t / 10 ;
3. void fun(char *tt, int pp[])
{
int i;
for (i=0;i<26;i++) pp[i]=0;
for (i=0;tt[i]!=\0;i++)
if (tt[i]>=a && tt[i]<=z)
pp[tt[i]-a]++;
}
第79套参考答案
第80套
1.程序填空题
给定程序中 ,通过定义学生结构体变量 ,存储了学生的学号 、姓名和3门课的成绩 。所有学生数据均以二进制方式输出到student.dat文件中 。函数fun的功能是:从指定文件中找出指定学号的学生数据 ,读入此学生数据,对该生的分数进行修改 ,使每门课的分数加3分 ,修改后重写文件中该学生的数据,即用该学生的新数据覆盖该学生原来的数据 ,其他学生的数据不变;若找不到 ,则什么都不做。
请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果 。
注意:不得增行或删行 ,也不得更改程序的结构!
#include <stdio.h>
#define N 5
typedef struct student
{
long sno;
char name[10];
float score[3];
} STU;
void fun(char *filename, long sno)
{
FILE *fp;
STU n;
int i;
fp = fopen(filename,"rb+");
/**********found**********/
while (!__1__)
{
fread(&n, sizeof(STU), 1, fp);
/**********found**********/
if (n.sno__2__) break;
}
if (!feof(fp))
{
for (i=0; i<3; i++) n.score[i] += 3;
/**********found**********/
fseek(fp, -1L*__3__, SEEK_CUR);
fwrite(&n, sizeof(STU), 1, fp);
}
fclose(fp);
}
int main()
{
STU t[N]={{10001,"MaChao", 91, 92, 77},
{10002,"CaoKai", 75, 60, 88},
{10003,"LiSi", 85, 70, 78},
{10004,"FangFang", 90, 82, 87},
{10005,"ZhangSan", 95, 80, 88}}, ss[N];
int i,j;
FILE *fp;
fp = fopen("student.dat", "wb");
fwrite(t, sizeof(STU), N, fp);
fclose(fp);
printf("\nThe original data :\n");
fp = fopen("student.dat", "rb");
fread(ss, sizeof(STU), N, fp);
fclose(fp);
for (j=0; j<N; j++)
{
printf("\nNo: %ld Name: %-8s Scores: ",ss[j].sno, ss[j].name);
for (i=0; i<3; i++)
printf("%6.2f ", ss[j].score[i]);
printf("\n");
}
fun("student.dat", 10003);
fp = fopen("student.dat", "rb");
fread(ss, sizeof(STU), N, fp);
fclose(fp);
printf("\nThe data after modifing :\n");
for (j=0; j<N; j++)
{
printf("\nNo: %ld Name: %-8s Scores: ",ss[j].sno, ss[j].name);
for (i=0; i<3; i++)
printf("%6.2f ", ss[j].score[i]);
printf("\n");
}
return 0;
}
2.程序修改题
给定程序中 ,函数fun的功能是:求S的值 。
例如 ,当k=10时 ,函数值应为:1.533852 。
请改正函数fun中指定部位的错误 ,使它能得出正确的结果 。
注意:不要改动main函数 ,不得增行或删行 ,也不得更改程序的结构 。
#include <stdio.h>
/************found************/
void fun(int k)
{
int n;
float s, w, p, q;
n = 1;
s = 1.0;
while ( n <= k )
{
w = 2.0 * n;
p = w - 1.0;
q = w + 1.0;
s = s * w *w/p/q;
n++;
}
/************found************/
return s
}
int main()
{
printf("%f\n", fun (10));
return 0;
}
3.程序设计题
编写函数fun ,它的功能是:计算下列级数和
例如 ,当n=10时 ,函数值为 0.909091 。
注意:请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句 。
#include <stdio.h>
void NONO(void);
double fun(int n)
{
}
int main()
{
printf("%f\n", fun(10));
NONO();
return 0;
}
void NONO(void)
{/* 本函数用于打开文件 ,输入数据 ,调用函数,输出数据 ,关闭文件 。 */
FILE *fp, *wf ;
int i, n ;
double s ;
fp = fopen("in.dat","r") ;
wf = fopen("out.dat","w") ;
for(i = 0 ; i < 10 ; i++)
{
fscanf(fp, "%d", &n) ;
s = fun(n) ;
fprintf(wf, "%f\n", s) ;
}
fclose(fp) ;
fclose(wf) ;
}
1.(1)feof(fp) (2)==sno (3)sizeof(STU)
2. float fun(int k)
return s;
3. double fun(int n)
{
double s=0;
int i;
for (i=1;i<=n;i++)
s+=1.0/(i*(i+1));
return s;
}
第80套参考答案
声明:本站所有文章 ,如无特殊说明或标注 ,均为本站原创发布 。任何个人或组织 ,在未征得本站同意时 ,禁止复制 、盗用、采集 、发布本站内容到任何网站 、书籍等各类媒体平台 。如若本站内容侵犯了原著者的合法权益 ,可联系我们进行处理 。