第1套
1.程序填空题
给定程序中 ,函数fun的功能是:统计整型变量m中各数字出现的次数 ,并存放到数组a中 ,其中 ,a[0]存放0出现的次数 ,a[1]存放1出现的次数 ,…… ,a[9]存放9出现的次数 。
例如 ,若m为14579233 ,则输出结果为:0,1,1,2,1,1,0,1,0,1 。
请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。
注意:不得增行或删行,也不得更改程序的结构!
2.程序修改题
给定程序中 ,函数fun的功能是:求矩阵(二维数组)a[N][N]中每行的最小值 ,结果存放到数组b中 。
例如,程序运行后 ,输出结果应为1,5,9,13 。
请改正函数fun中指定部位的错误 ,使它能得出正确的结果 。
注意:不要改动main函数,不得增行或删行 ,也不得更改程序的结构 。
#include <stdio.h>
#define N 4
void fun(int a[][N], int b[])
{
int i, j;
for (i=0; i<N; i++)
{
/**********found**********/
b[i] = a[0][0];
/**********found**********/
for (j=1; j<N-1; j++)
/**********found**********/
if ( b[i] < a[i][j] )
b[i] = a[i][j];
}
}
int main()
{
int a[N][N]={{1,4,3,2},{8,6,5,7},{11,10,12,9},
{13,16,14,15}},b[N];
int i;
fun(a,b);
for (i=0; i<N; i++) printf("%d,", b[i]);
printf("\n");
return 0;
}
3.程序设计题
编写函数fun ,其功能是:将一组得分中 ,去掉一个最高分和一个最低分 ,然后求平均值 ,并通过函数返回 。函数形参a指向存放得分的数组 ,n存放得分个数(n>2) 。
例如 ,若输入9.9 8.5 7.6 8.5 9.3 9.5 8.9 7.8 8.6 8.4十个得分 ,则输出结果为:8.687500 。
注意:请勿改动主函数main和其他函数中的任何内容 ,仅在函数fun的花括号中填入你编写的若干语句 。
#include <stdio.h>
void NONO(void);
double fun(double a[] , int n)
{
}
int main()
{
double b[10], r;
int i;
printf("输入10个分数放入b数组中 : ");
for (i=0; i<10; i++)
scanf("%lf",&b[i]);
printf("输入的10个分数是 : ");
for (i=0; i<10; i++) printf("%4.1f ",b[i]);
printf("\n");
r = fun(b, 10);
printf("去掉最高分和最低分后的平均分 : %f\n", r );
NONO();
return 0;
}
void NONO()
{/* 本函数用于打开文件,输入数据 ,调用函数 ,输出数据,关闭文件 。 */
FILE *fp, *wf ;
int i, j ;
double b[10], r ;
fp = fopen("in.dat","r");
wf = fopen("out.dat","w");
for(i = 0 ; i < 10 ; i++)
{
for(j = 0 ; j < 10 ; j++)
fscanf(fp, "%lf ", &b[j]);
r = fun(b, 10) ;
fprintf(wf, "%f\n", r);
}
fclose(fp);
fclose(wf);
}
1.(1)a[i] (2)m%10 (3)m/10
2. b[i] = a[i][0];
for (j=1; j<N; j++)
if ( b[i] > a[i][j] )
3. double fun(double a[] , int n)
{
double max,min,s;
s=max=min=a[0];
int i;
for (i=1;i<n;i++)
{
if (max<a[i]) max=a[i];
if (min>a[i]) min=a[i];
s+=a[i];
}
return (s-max-min)/(n-2);
}
第1套参考答案
第2套
1.程序填空题
围绕山顶一圈有N个山洞 ,编号为0 、1 、2、… 、N-1 ,有一只狐狸和一只兔子在洞中居住。狐狸总想找到兔子并吃掉它,它的寻找方法是先到第一个洞(即编号为0的洞)中找;再隔1个洞 ,到编号为2的洞中找;再隔2个洞 ,到编号为5的洞中找;再隔3个洞 ,到编号为9的洞中找;…… 。若狐狸找一圈 ,请为兔子指出所有不安全的洞号 。若形参n的值为30时 ,不安全的洞号是0 、2 、5 、9 、14 、20 、27。
请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果 。
注意:不得增行或删行 ,也不得更改程序的结构!
#include <stdio.h>
#define N 100
void fun(int *a ,int n)
{
int i, t;
for( i=0; i<n; i++ )
/**********found**********/
a[i]=___1___;
i=0;
/**********found**********/
___2___=1;
while( i<n )
{
a[i]= 1;
t++;
/**********found**********/
i=___3___;
}
}
int main()
{
int a[N], i, n=30;
fun( a, n);
for(i=0; i<n; i++)
if (a[i]==1) printf("不安全的洞号是 : %d\n",i );
return 0;
}
2.程序修改题
函数fun的功能是:统计a所指字符串(串中字符全部为字母)中每个字母在字符串中出现的次数(统计时不区分大小写) ,并将出现次数最高的字母输出(如果有多个相同 ,输出一个即可) 。例如对于字符串dadbcdbabdbdb,对应的输出应为b或d。
请改正函数fun中指定部位的错误 ,使它能得出正确的结果 。
注意:不要改动main函数,不得增行或删行 ,也不得更改程序的结构 。
#include <stdio.h>
#include <string.h>
void fun(char a[])
{
int b[26], i, n,max;
for (i=0; i<26; i++)
/**********found**********/
a[i] = 0;
n= strlen(a);
for (i=0; i<n; i++)
if (a[i] >=a && a[i]<=z)
/**********found**********/
b[a[i] - A]++;
else if (a[i] >=A && a[i]<=Z)
b[a[i] -A]++;
max = 0;
for (i=1; i<26; i++)
/**********found**********/
if (b[max] > b[i])
max=i;
printf("出现次数最多的字符是:%c\n", max + a);
}
int main( )
{
char a[200];
printf("请输入一个待统计的字符串 : ");
scanf("%s", a);
fun(a);
return 0;
}
3.程序设计题
编写函数fun ,其功能是将一个数字字符串转换成与其面值相同的长整型整数 。例如,在键盘输入字符串2345210 ,函数返回长整型数2345210 。
注意:请勿改动主函数main和其他函数中的任何内容 ,仅在函数fun的花括号中填入你编写的若干语句 。
#include <stdio.h>
#include <string.h>
void NONO();
long fun( char *s )
{
}
int main()
{
char s[10]; long r;
printf("请输入一个长度不超过9个字符的数字字符串: ");
gets(s);
r = fun( s );
printf(" r = %ld\n" , r );
NONO();
return 0;
}
void NONO()
{/* 本函数用于打开文件,输入数据 ,调用函数 ,输出数据 ,关闭文件 。 */
FILE *fp, *wf ;
int i; long r;
char s[10], *p;
fp = fopen("in.dat","r") ;
wf = fopen("out.dat","w") ;
for(i = 0 ; i < 10 ; i++)
{
fgets(s, 10, fp);
p = strchr(s, \n);
if (p) *p = 0;
r = fun(s);
fprintf(wf, "%ld\n", r);
}
fclose(fp) ;
fclose(wf) ;
}
1.(1)0 (2)t (3)i+t
2. b[i]=0
b[a[i] - a]++;
if (b[max] < b[i])
3. long fun( char *s )
{
long num=0;
int i;
for (i=0;s[i]!=\0;i++)
{
num=num*10+s[i]-0;
}
return num;
}
第2套参考答案
第3套
1.程序填空题
给定程序的主函数中 ,已给出由结构体构成的链表结点a 、b 、c ,各结点的数据域中均存入字符 ,函数fun的功能是:将a、b 、c三个结点链接成一个单向链表 ,并输出链表结点中的数据 。
请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果 。
注意:不得增行或删行 ,也不得更改程序的结构!
#include <stdio.h>
typedef struct list
{
char data;
struct list *next;
}Q;
void fun(Q *pa, Q *pb, Q *pc)
{
Q *p;
/**********found**********/
pa->next=___1___;
pb->next=pc;
p=pa;
while( p )
{
/**********found**********/
printf(" %c",____2_____);
/**********found**********/
p=____3____;
}
printf("\n");
}
int main()
{
Q a, b, c;
a.data=E; b.data=F; c.data=G; c.next=NULL;
fun( &a, &b, &c );
return 0;
}
2.程序修改题
函数fun的功能是:统计s所指一维数组中0的个数和1的个数 ,并输出结果 。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意:不要改动main函数 ,不得增行或删行 ,也不得更改程序的结构 。
#include <stdio.h>
void fun(int *s, int n)
{
/**********found**********/
int i, one=0, zero ;
for(i=0; i<n; i++)
/**********found**********/
switch( s[i] );
{
/**********found**********/
case 0 : zero++;
case 1 : one ++;
}
printf( "one : %d zero : %d\n", one, zero);
}
int main()
{
int a[20]={1,1,1,0,1,0,0,0,1,
0,0,1,1,0,0,1,0,1,0,0}, n=20;
fun( a, n );
return 0;
}
3.程序设计题
编写函数fun,其功能是将形参s所指字符串放入形参a所指的字符数组中 ,使a中存放同样的字符串 。说明:不得使用系统提供的字符串函数。
注意:请勿改动主函数main和其他函数中的任何内容 ,仅在函数fun的花括号中填入你编写的若干语句 。
#include <stdio.h>
#define N 20
void NONO(void);
void fun( char *a , char *s)
{
}
int main()
{
char s1[N], *s2="abcdefghijk";
fun(s1,s2);
printf("%s\n", s1);
printf("%s\n", s2);
NONO();
return 0;
}
void NONO(void)
{/* 本函数用于打开文件,输入数据 ,调用函数 ,输出数据 ,关闭文件 。 */
FILE *fp, *wf ;
int i;
char s1[256], s2[256];
fp = fopen("in.dat","r") ;
wf = fopen("out.dat","w") ;
for (i = 0 ; i < 10 ; i++)
{
fgets(s2, 255, fp);
fun(s1,s2);
fprintf(wf, "%s", s1);
}
fclose(fp) ;
fclose(wf) ;
}
1.(1)pb (2)p->data (3)p->data
2. int i, one=0, zero=0 ;
switch(s[i])
case 0 : zero++; break;
3. void fun( char *a , char *s)
{
int i;
for (i=0;s[i]!=\0;i++)
a[i]=s[i];
a[i]=\0;
}
第3套参考答案
第4套
1.程序填空题
函数fun的功能是:输出a所指数组中得前n个数据 ,要求每行输出5个数。
请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果 。
注意:不得增行或删行 ,也不得更改程序的结构!
#include <stdio.h>
#include <stdlib.h>
void fun( int *a, int n )
{
int i;
for(i=0; i<n; i++)
{
/**********found**********/
if( ___1___==0 )
/**********found**********/
printf("___2___");
/**********found**********/
printf("%d ",___3___);
}
}
int main()
{
int a[100]={0}, i,n;
n=22;
for(i=0; i<n;i++) a[i]=rand()%21;
fun( a, n);
printf("\n");
return 0;
}
2.程序修改题
给定程序中 ,函数fun的功能是:在任意给定的N个正整数中 ,从左到右依次逐个取三个数作为一组 ,按值大小找出该组数的中值 ,用该中值替换与该组数对应的原三个数的中间位置的数 。处理后原数列中首尾2个数不变 。
例如,有10个正整数如下:
初始数列为:6 5 7 23 18 5 8 21 45 38
第1组数为:6 5 7 ,中值为6 ,替换后数列为:6 6 7 23 18 5 8 21 45 38
第2组数为:5 7 23,中值为7 ,替换后数列为:6 6 7 23 18 5 8 21 45 38
第3组数为:7 23 18 ,中值为18,替换后数列为:6 6 7 18 18 5 8 21 45 38
第4组数为:23 18 5 ,中值为18 ,替换后数列为:6 6 7 18 18 5 8 21 45 38
第5组数为:18 5 8 ,中值为8 ,替换后数列为:6 6 7 18 18 8 8 21 45 38
第6组数为:5 8 21 ,中值为8 ,替换后数列为:6 6 7 18 18 8 8 21 45 38
第7组数为:8 21 45 ,中值为21 ,替换后数列为:6 6 7 18 18 8 8 21 45 38
第8组数为:21 45 38 ,中值为38,替换后数列为:6 6 7 18 18 8 8 21 38 38
最终结果为:6 6 7 18 18 8 8 21 38 38
请改正函数fun中指定部位的错误 ,使它能得出正确的结果 。
注意:不要改动main函数 ,不得增行或删行,也不得更改程序的结构 。
#include <stdio.h>
#define N 10
int findmid(int a, int b, int c)
{
int t;
t = (a>b)?(b>c?b:(a>c?c:a)):((a>c)?a:((b>c)?c:b));
/**********found**********/
return b;
}
void fun(int x[])
{
int i,a,b,c,t[N];
/**********found**********/
for(i=0;i<N;i++) t[i]=x[i]
for(i=0;i<N-2;i++)
{
a=t[i]; b=t[i+1]; c=t[i+2];
/**********found**********/
t[i+1]=findmid(a,b,c);
}
}
int main()
{
int i, x[N]={6,5,7,23,18,5,8,21,45,38};
for(i=0; i<N; i++) printf("%d ",x[i]);
printf("\n");
fun(x);
for(i=0; i<N; i++) printf("%d ",x[i]);
printf("\n");
return 0;
}
3.程序设计题
编写函数fun ,其功能是:查找x在s所指数组中下标的位置 ,并作为函数值返回,若x不存在 ,则返回-1 。
注意:请勿改动主函数main和其他函数中的任何内容 ,仅在函数fun的花括号中填入你编写的若干语句 。
#include <stdio.h>
#include <stdlib.h>
#define N 15
void NONO(void);
int fun(int *s, int x)
{
}
int main()
{
int a[N]={29,13,5,22,10,9,3,18,22,
25,14,15,2,7,27},i,x,index;
printf("a数组中的数据 :\n");
for(i=0; i<N; i++) printf("%4d",a[i]);
printf("\n");
printf("给x输入待查找的数 : ");
scanf("%d",&x);
index=fun( a, x );
printf("index=%d\n",index);
NONO();
return 0;
}
void NONO(void)
{/* 本函数用于打开文件 ,输入数据 ,调用函数 ,输出数据 ,关闭文件 。 */
FILE *fp, *wf ;
int i, j, a[10], x, index;
fp = fopen("in.dat","r") ;
wf = fopen("out.dat","w") ;
for(i = 0 ; i < 10 ; i++)
{
for(j = 0 ; j < 10 ; j++)
fscanf(fp, "%d ", &a[j]);
fscanf(fp, "%d", &x);
index = fun(a, x);
fprintf(wf, "%d\n", index);
}
fclose(fp);
fclose(wf);
}
1.(1)i%5 (2)\n (3)a[i]
2. return t;
for(i=0;i<N;i++) t[i]=x[i];
x[i+1]=findmid(a,b,c);
3. int fun(int *s, int x)
{
int i;
for (i=0;i<N;i++)
if (s[i]==x) return i;
return -1;
}
第4套参考答案
第5套
1.程序填空题
给定程序中 ,函数fun的功能是:在任意给定的9个正整数中找出按升序排列时处于中间的数 ,将原数据序列中比该中间数小的数用该中间数替换 ,位置不变,并将中间数作为函数值返回 ,在主函数中输出处理后的数据序列 。
例如 ,有9个正整数:1 5 7 23 87 5 8 21 45
按升序排列时的中间数为:8
处理后主函数中输出的数列为:8 8 8 23 87 8 8 21 45
请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。
注意:不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
#define N 9
int fun(int x[])
{
int i,j,k,t,mid,b[N];
for(i=0;i<N;i++) b[i]=x[i];
for(i=0;i<=N/2;i++)
{
k=i;
for(j=i+1;j<N;j++)
if(b[k]>b[j]) k=j;
if(k != i )
{
/**********found**********/
t=b[i]; b[i]=___1___; b[k]=t;
}
}
/**********found**********/
mid=b[___2___];
for(i=0; i<N; i++)
/**********found**********/
if(x[i] ___3___ mid) x[i]=mid;
return mid;
}
int main()
{
int i, x[N]={1,5,7,23,87,5,8,21,45};
for(i=0; i<N; i++) printf("%d ",x[i]);
printf("\nThe mid data is: %d\n",fun(x));
for(i=0; i<N; i++) printf("%d ",x[i]);
printf("\n");
return 0;
}
2.程序修改题
给定程序中函数fun的功能是:求整数x的y次方的低3位值 。例如 ,整数5的6次方为15625 ,此值得低3位值为625 。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意:不要改动main函数 ,不得增行或删行 ,也不得更改程序的结构
#include <stdio.h>
long fun(int x,int y,long *p )
{
int i;
long t=1;
/**************found**************/
for(i=1; i<y; i++)
t=t*x;
*p=t;
/**************found**************/
t=t/1000;
return t;
}
int main()
{
long t,r;
int x,y;
printf("\nInput x and y: ");
scanf("%d%d",&x,&y);
t=fun(x,y,&r);
printf("\n\nx=%d, y=%d, r=%ld, last=%ld\n\n",x, y,r,t );
return 0;
}
3.程序设计题
编写函数fun ,其功能是:统计s所指字符串中数字字符个数 ,并作为函数值返回 。
例如 ,s所指字符串中得内容为:2def35adh25 3kjsdf 7/kj8655x,函数fun返回值为11 。
注意:请勿改动主函数main和其他函数中的任何内容 ,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h>
void NONO(void);
int fun(char *s)
{
}
int main()
{
char *s="2def35adh25 3kjsdf 7/kj8655x";
printf("%s\n",s);
printf("%d\n",fun(s));
NONO();
return 0;
}
void NONO(void)
{/* 本函数用于打开文件 ,输入数据 ,调用函数 ,输出数据,关闭文件 。 */
FILE *fp, *wf ;
int i;
char s[256];
fp = fopen("in.dat","r") ;
wf = fopen("out.dat","w") ;
for(i = 0 ; i < 10 ; i++)
{
fgets(s, 255, fp);
fprintf(wf, "%d\n", fun(s));
}
fclose(fp) ;
fclose(wf) ;
}
1.(1)b[k] (2)N/2 (3)<
2. for(i=1; i<=y; i++)
t=t%1000;
3. int fun(char *s)
{
int n=0,i;
for (i=0;s[i]!=\0;i++)
if (s[i]>=0 && s[i]<=9)
n++;
return n;
}
第5套参考答案
声明:本站所有文章 ,如无特殊说明或标注 ,均为本站原创发布 。任何个人或组织,在未征得本站同意时 ,禁止复制 、盗用、采集 、发布本站内容到任何网站 、书籍等各类媒体平台 。如若本站内容侵犯了原著者的合法权益 ,可联系我们进行处理 。