第51套
1.程序填空题
给定程序中 ,函数fun的功能是将不带头结点的单向链表逆置 。即若原链表从头至尾结点数据域依次为:2 、4 、6 、8 、10 ,逆置后 ,从头至尾结点数据域依次为:10 、8 、6 、4 、2 。
请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果 。
注意:不得增行或删行 ,也不得更改程序的结构!
2.程序修改题
给定程序中 ,函数fun的功能是将字符串s中位于奇数位置的字符或ASCII码为偶数的字符放入字符串t中(规定第1个字符放在第0位中) 。
例如 ,字符串中的数据为:AABBCCDDEEFF ,则输出应为:ABBCDDEFF 。
请改正函数fun中指定部位的错误 ,使它能得出正确的结果 。
注意:不要改动main函数 ,不得增行或删行 ,也不得更改程序的结构 。
#include <stdio.h>
#include <string.h>
#define N 80
void fun(char *s, char t[])
{
int i, j=0;
for(i=0; i<strlen(s); i++)
/***********found**********/
if(i%2 && s[i]%2==0)
t[j++]=s[i];
/***********found**********/
t[i]=\0;
}
int main()
{
char s[N], t[N];
printf("\nPlease enter string s : "); gets(s);
fun(s, t);
printf("\nThe result is : %s\n",t);
return 0;
}
3.程序设计题
编写函数fun ,其功能是将M行N列的二维数组中的按列的顺序依次存放到一维数组中 。
例如 ,二维数组中的数据为
33 33 33 33
44 44 44 44
55 55 55 55
则一维数组中的内容应为:
33 44 55 33 44 55 33 44 55 33 44 55 。
注意:请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句 。
#include <stdio.h>
void NONO(void);
void fun(int (*s)[10], int *b, int *n, int mm, int nn)
{
}
int main()
{
int w[10][10]={{33,33,33,33},{44,44,44,44},{55,55,55,55}},i,j;
int a[100]={0}, n=0;
printf("The matrix:\n");
for(i=0; i<3; i++)
{
for(j=0;j<4; j++) printf("%3d",w[i][j]);
printf("\n");
}
fun(w,a,&n,3,4);
printf("The A array:\n");
for(i=0;i<n;i++) printf("%3d",a[i]);
printf("\n\n");
NONO();
return 0;
}
void NONO(void)
{/* 请在此函数内打开文件 ,输入测试数据 ,调用 fun 函数,输出数据 ,关闭文件 。 */
FILE *rf, *wf ;
int i, j, k ;
int w[10][10], a[100], n = 0, mm, nn ;
rf = fopen("in.dat", "r") ;
wf = fopen("out.dat", "w") ;
for(k = 0 ; k < 5 ; k++)
{
fscanf(rf, "%d %d", &mm, &nn) ;
for(i = 0 ; i < mm ; i++)
for(j = 0 ; j < nn ; j++)
fscanf(rf, "%d", &w[i][j]) ;
fun(w, a, &n, mm, nn) ;
for(i = 0 ; i < n ; i++) fprintf(wf, "%3d", a[i]);
fprintf(wf, "\n") ;
}
fclose(rf) ;
fclose(wf) ;
}
1.(1)NODE * (2)q!=NULL (3)r
2. if(i%2 || s[i]%2==0)
t[j]=\0;
3. void fun(int (*s)[10], int *b, int *n, int mm, int nn)
{
int i,j,k=0;
for (j=0;j<nn;j++)
for (i=0;i<mm;i++)
b[k++]=s[i][j];
*n=k;
}
第51套参考答案
第52套
1.程序填空题
给定程序中 ,函数fun的功能是:计算形参x所指数组中N个数的平均值(规定所有数均为非负数) ,将所指数组中大于平均值的数据移至数组的前部 ,小于等于平均值的数据移至数组的后部 ,平均值作为函数值返回 ,在主函数中输出平均值和移动后的数据 。
例如 ,有10个非负数:41 17 34 0 19 24 28 8 12 14 ,平均值为:19.700000
移动后的输出为:41 34 24 28 17 0 19 8 12 14。
请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果 。
注意:不得增行或删行 ,也不得更改程序的结构!
#include <stdlib.h>
#include <stdio.h>
#define N 10
double fun(double *x)
{
int i, j;
double s, av, y[N];
s=0;
for (i=0; i<N; i++) s=s+x[i];
/**********found**********/
av=__1__;
for(i=j=0; i<N; i++)
if( x[i]>av )
{
/**********found**********/
y[__2__]=x[i]; x[i]=-1;
}
for(i=0; i<N; i++)
/**********found**********/
if( x[i]!= __3__) y[j++]=x[i];
for(i=0; i<N; i++)x[i] = y[i];
return av;
}
int main()
{
int i;
double x[N];
for(i=0; i<N; i++)
{
x[i]=rand()%50;
printf("%4.0f ",x[i]);
}
printf("\n");
printf("\nThe average is: %f\n",fun(x));
printf("\nThe result :\n",fun(x));
for(i=0; i<N; i++) printf("%5.0f ",x[i]);
printf("\n");
return 0;
}
2.程序修改题
在主函数中从键盘输入若干个数放入数组中 ,用0结束输入并放在最后一个元素中 。给定程序中 ,函数fun的功能是:计算数组元素中值为正数的平均值(不包括0)。
例如 ,数组中元素值依次为:39,-47,21,2 ,-8,15,0 ,则程序的运行结果为:19.250000 。
请改正函数fun中指定部位的错误,使它能得出正确的结果 。
注意:不要改动main函数 ,不得增行或删行 ,也不得更改程序的结构 。
#include <stdio.h>
double fun ( int x[])
{
/************found************/
int sum = 0.0;
int c=0, i=0;
while (x[i] != 0)
{
if (x[i] > 0)
{ sum += x[i]; c++; }
i++;
}
/************found************/
sum \= c;
return sum;
}
int main( )
{
int x[1000]; int i=0;
printf( "\nPlease enter some data (end with 0): " );
do
{
scanf("%d", &x[i]);
}
while (x[i++] != 0);
printf("%f\n", fun(x));
return 0;
}
3.程序设计题
编写函数fun ,其功能是:根据以下公式计算S ,计算结果作为函数值返回 ,n通过形参传入 。
例如 ,若n=11 ,函数返回值为1.833333 。
注意:请勿改动主函数main和其他函数中的任何内容 ,仅在函数fun的花括号中填入你编写的若干语句 。
#include <stdio.h>
void NONO(void)
float fun(int n)
{
}
int main()
{
int n;
float s;
printf("\nPlease enter N:");
scanf("%d", &n);
s = fun(n);
printf("the result is: %f\n", s);
NONO();
return 0;
}
void NONO(void)
{/* 本函数用于打开文件 ,输入数据 ,调用函数 ,输出数据 ,关闭文件 。 */
FILE *fp, *wf ;
int i, n ;
float 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)s/N (2)j++ (3)-1
2. double sum = 0.0;
sum /= c;
3. float fun(int n)
{
int i;
float s=0,t=0;
for (i=1;i<=n;i++)
{
t=t+i;
s=s+1/t;
}
return s;
}
第52套参考答案
第53套
1.程序填空题
给定程序中,函数fun的功能是:把形参s所指字符串中最右边的n个字符复制到形参t所指字符数组中 ,形成一个新串 。若s所指字符串的长度小于n ,则将整个字符串复制到形参t所指字符数组中 。
例如,形参s所指字符串为:abcdefgh ,n的值为5 ,程序执行后t所指字符数组中的字符串应为:defgh 。
请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果 。
注意:不得增行或删行 ,也不得更改程序的结构!
#include <stdio.h>
#include <string.h>
#define N 80
void fun(char *s, int n, char *t)
{
int len,i,j=0;
len=strlen(s);
/**********found**********/
if(n>=len) strcpy(__1__);
else
{
/**********found**********/
for(i=len-n; i<=len-1; i++) t[j++]= __2__ ;
/**********found**********/
t[j]= __3__ ;
}
}
int main()
{
char s[N],t[N];
int n;
printf("Enter a string: ");
gets(s);
printf( "Enter n:");
scanf("%d",&n);
fun(s,n,t);
printf("The string t : ");
puts(t);
return 0;
}
2.程序修改题
给定程序中 ,函数fun的功能是:统计一个无符号整数中各位数字值为零的个数 ,通过形参传回主函数 ,并把该整数中各位上最大的数字值作为函数值返回 。
例如 ,若输入无符号整数30800 ,则数字值为零的个数为3 ,各位上数字值最大的是8。
请改正函数fun中指定部位的错误 ,使它能得出正确的结果 。
注意:不要改动main函数 ,不得增行或删行 ,也不得更改程序的结构 。
#include <stdio.h>
int fun(unsigned n, int *zero)
{
int count=0,max=0,t;
do
{ t=n%10;
/**************found**************/
if(t=0)
count++;
if(max<t) max=t;
n=n/10;
}while(n);
/**************found**************/
zero=count;
return max;
}
int main()
{
unsigned n;
int zero,max;
printf("\nInput n(unsigned): ");
scanf("%d",&n);
max = fun( n,&zero );
printf("\nThe result: max=%d zero=%d\n",max,zero);
return 0;
}
3.程序设计题
编写函数fun,其功能是:判断字符串是否为回文。若是 ,函数返回1 ,否则返回0 。回文是指顺读和倒读都一样的字符串 。
例如,字符串LEVEL是回文 ,则字符串12312就不是回文 。
注意:请勿改动主函数main和其他函数中的任何内容 ,仅在函数fun的花括号中填入你编写的若干语句 。
#include <stdio.h>
#define N 80
void NONO(void);
int fun(char *str)
{
}
int main()
{
char s[N] ;
printf("Enter a string: ") ;
gets(s) ;
printf("\n\n") ;
puts(s) ;
if(fun(s)) printf(" YES\n") ;
else printf(" NO\n") ;
NONO() ;
return 0;
}
void NONO(void)
{/* 请在此函数内打开文件 ,输入测试数据 ,调用 fun 函数 ,输出数据 ,关闭文件 。 */
FILE *rf, *wf ;
int i ; char s[N] ;
rf = fopen("in.dat","r") ;
wf = fopen("out.dat","w") ;
for(i = 0 ; i < 10 ; i++)
{
fscanf(rf, "%s", s) ;
if(fun(s)) fprintf(wf, "%s YES\n", s) ;
else fprintf(wf, "%s NO\n", s) ;
}
fclose(rf) ;
fclose(wf) ;
}
1.(1)t,s (2)s[i] (3)\0
2. if(t==0)
*zero=count;
3. int fun(char *str)
{
int i,j;
for (j=0;str[j]!=\0;j++);
j--;
for (i=0;i<=j;i++,j--)
if (str[i]!=str[j]) return 0;
return 1;
}
第53套参考答案
第54套
1.程序填空题
给定程序中 ,函数fun的功能是:计算下列多项式的值
例如 ,当n=10时 ,输出结果为:-0.204491 。
请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果 。
注意:不得增行或删行 ,也不得更改程序的结构!
#include <stdio.h>
double fun(int n)
{
int i, k;
double s, t;
s=0;
/**********found**********/
k=__1__;
for(i=1; i<=n; i++)
{
/**********found**********/
t=__2__;
s=s+k*(2*i-1)*(2*i+1)/(t*t);
/**********found**********/
k=k*__3__;
}
return s;
}
int main()
{
int n=-1;
while(n<0)
{
printf("Please input(n>0): ");
scanf("%d",&n);
}
printf("\nThe result is: %f\n",fun(n));
return 0;
}
2.程序修改题
给定程序中 ,函数fun的功能是:根据形参m的值(2<=m<=9) ,在m行m列的二维数组中存放如下所示规律的数据,由main函数输出 。
例如 ,若输入2 ,则输出
1 2
2 4
若输入4,则输出
1 2 3 4
2 4 6 8
3 6 9 12
4 8 12 16
请改正函数fun中指定部位的错误 ,使它能得出正确的结果 。
注意:不要改动main函数 ,不得增行或删行 ,也不得更改程序的结构 。
#include <stdio.h>
#define M 10
int a[M][M] = {0} ;
/**************found**************/
fun(int **a, int m)
{
int j, k ;
for (j = 0 ; j < m ; j++ )
for (k = 0 ; k < m ; k++ )
/**************found**************/
a[j][k] = k * j ;
}
int main ( )
{
int i, j, n ;
printf ( " Enter n : " ) ;
scanf ("%d", &n ) ;
fun ( a, n ) ;
for ( i = 0 ; i < n ; i++)
{
for (j = 0 ; j < n ; j++)
printf ("%4d", a[i][j]) ;
printf ( "\n" ) ;
}
return 0;
}
3.程序设计题
程序定义了N*N的二维数组 ,并在主函数中自动赋值 。编写函数fun ,其功能是:使数组左下三角元素中的值乘以n 。
例如 ,若n的值为3 ,a数组中的值为
1 9 7
2 3 8
4 5 6
则返回主函数后a数组中的值应为
3 9 7
6 9 8
12 15 18
注意:请勿改动主函数main和其他函数中的任何内容 ,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h>
#include <stdlib.h>
#define N 5
void NONO(void);
void fun ( int a[][N], int n)
{
}
int main ( )
{
int a[N][N], n, i, j;
printf("***** The array *****\n");
for ( i =0; i<N; i++ )
{
for ( j =0; j<N; j++ )
{
a[i][j] = rand()%10;
printf( "%4d", a[i][j] );
}
printf("\n");
}
do n = rand()%10 ; while ( n >=3 );
printf("n = %4d\n",n);
fun ( a, n );
printf ("***** THE RESULT *****\n");
for ( i =0; i<N; i++ )
{
for ( j =0; j<N; j++ ) printf("%4d", a[i][j]);
printf("\n");
}
NONO();
return 0;
}
void NONO(void)
{/* 本函数用于打开文件 ,输入数据 ,调用函数 ,输出数据 ,关闭文件 。 */
FILE *rf, *wf ;
int i, j, n, a[5][5] ;
rf = fopen("in.dat", "r") ;
wf = fopen("out.dat", "w") ;
for(i = 0 ; i < 5 ; i++)
for(j = 0 ; j < 5 ; j++)
fscanf(rf, "%d ", &a[i][j]) ;
fscanf(rf, "%d", &n) ;
fun(a, n) ;
for ( i = 0; i < 5; i++ )
{
for ( j = 0; j < 5; j++ ) fprintf(wf, "%4d", a[i][j]);
fprintf(wf, "\n");
}
fclose(rf) ;
fclose(wf) ;
}
1.(1)1 (2)2*i (3)(-1)
2. void fun(int a[][M], int m)
a[j][k] = (k+1) * (j+1) ;
3. void fun ( int a[][N], int n)
{
int i,j;
for (i=0;i<N;i++)
for (j=0;j<=i;j++)
a[i][j]=a[i][j]*n;
}
第54套参考答案
第55套
1.程序填空题
给定程序中,函数fun的功能是:将a所指3*5矩阵中第k列的元素左移到第0列 ,第k列以后的每列元素依次左移 ,原来左边的各列依次绕到右边 。
例如,有下列矩阵
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
若k为2 ,程序执行结果为
3 4 5 1 2
3 4 5 1 2
3 4 5 1 2
请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。
注意:不得增行或删行 ,也不得更改程序的结构!
#include <stdio.h>
#define M 3
#define N 5
void fun(int (*a)[N],int k)
{
int i,j,p,temp;
/**********found**********/
for(p=1; p<= __1__; p++)
for(i=0; i<M; i++)
{
temp=a[i][0];
/**********found**********/
for(j=0; j< __2__ ; j++)
a[i][j]=a[i][j+1];
/**********found**********/
a[i][N-1]= __3__;
}
}
int main( )
{
int x[M][N]={{1,2,3,4,5},{1,2,3,4,5},{1,2,3,4,5}},i,j;
printf("The array before moving:\n\n");
for(i=0; i<M; i++)
{
for(j=0; j<N; j++) printf("%3d",x[i][j]);
printf("\n");
}
fun(x,2);
printf("The array after moving:\n\n");
for(i=0; i<M; i++)
{
for(j=0; j<N; j++) printf("%3d",x[i][j]);
printf("\n");
}
return 0;
}
2.程序修改题
给定程序中 ,函数fun的功能是:从s所指字符串中 ,找出t所指子串的个数作为函数值返回 。
例如 ,当s所指字符串中的内容为:abcdabfab ,t所指字符串的内容为:ab ,则函数返回值为3 。
请改正函数fun中指定部位的错误 ,使它能得出正确的结果 。
注意:不要改动main函数 ,不得增行或删行 ,也不得更改程序的结构 。
#include <stdio.h>
#include <string.h>
int fun(char *s,char *t)
{
int n;
char *p,*r;
n=0;
while (*s)
{
p=s;r=t;
while (*r)
/************found************/
if(*r==*p) {r++;p++}
else break;
/************found************/
if(r==\0)
n++;
s++;
}
return n;
}
int main()
{
char s[100],t[100];
int m;
printf("\nPlease enter string S:");
scanf("%s",s);
printf("\nPlease enter substring t:");
scanf("%s",t);
m=fun(s,t);
printf("\nThe result is: m=%d\n",m);
return 0;
}
3.程序设计题
编写函数fun ,它的功能是:实现两个字符串的连接(不使用库函数strcat) ,即把p2所指的字符串连接到p1所指的字符串后 。
例如,分别输入两个字符串:FirstString- 和 SecondString ,程序输出:FirstString-SecondString 。
注意:请勿改动主函数main和其他函数中的任何内容 ,仅在函数fun的花括号中填入你编写的若干语句 。
#include <stdio.h>
void NONO(void);
void fun(char p1[], char p2[])
{
}
int main()
{
char s1[80], s2[40] ;
printf("Enter s1 and s2:\n") ;
scanf("%s%s", s1, s2) ;
printf("s1=%s\n", s1) ;
printf("s2=%s\n", s2) ;
printf("Invoke fun(s1,s2):\n") ;
fun(s1, s2) ;
printf("After invoking:\n") ;
printf("%s\n", s1) ;
NONO() ;
return 0;
}
void NONO(void)
{/* 本函数用于打开文件,输入测试数据 ,调用fun函数 ,输出数据 ,关闭文件 。*/
int i ;
FILE *rf, *wf ;
char s1[80], s2[40] ;
rf = fopen("in.dat","r") ;
wf = fopen("out.dat","w") ;
for(i = 0 ; i < 10 ; i++)
{
fscanf(rf, "%s", s1) ;
fscanf(rf, "%s", s2) ;
fun(s1, s2) ;
fprintf(wf, "%s\n", s1) ;
}
fclose(rf) ;
fclose(wf) ;
}
1.(1)k (2)N (3)temp
2. if(*r==*p) {r++;p++;}
if(*r==\0)
3. void fun(char p1[], char p2[])
{
int i,j;
for (i=0;p1[i]!=\0;i++);
for (j=0;p2[j]!=\0;j++)
p1[i++]=p2[j];
p1[i]=\0;
}
第55套参考答案
声明:本站所有文章 ,如无特殊说明或标注 ,均为本站原创发布 。任何个人或组织 ,在未征得本站同意时 ,禁止复制 、盗用 、采集 、发布本站内容到任何网站 、书籍等各类媒体平台 。如若本站内容侵犯了原著者的合法权益 ,可联系我们进行处理 。