一、程序填空题
在此程序中,函数fun的功能是:在形参s所指字符串中的每个数字字符之后插入一个*号。
例如,形参s所指字符串为”def35adh3kjsdf7”,执行后结果为”def3*5*adh3*kjsdf7*”。
#include <stdio.h>
void fun(char *s)
{ int i, j, n;
for(i=0; s[i]!='\0'; i++)
/**********found**********/
if(s[i]>='0' ___1___ s[i]<='9')
{ n=0;
/**********found**********/
while(s[i+1+n]!= ___2___) n++;
for(j=i+n+1; j>i; j--)
/**********found**********/
s[j+1]= ___3___;
s[j+1]='*';
i=i+1;
}
}
void main()
{ char s[80]="def35adh3kjsdf7";
printf("\nThe original string is : %s\n",s);
fun(s);
printf("\nThe result is : %s\n",s);
}
答案:(1) && (2) 0 (3) s[j]
二、程序修改题
在此程序中,函数fun的功能是:根据整型形参m,计算如下公式的值。
例如,若m的值为5,则应输出1.463611。
#include <stdio.h>
double fun ( int m )
{ double y = 1.0 ;
int i;
/**************found**************/
for(i = 2 ; i < m ; i++)
/**************found**************/
y += 1 / (i * i) ;
return( y ) ;
}
void main( )
{ int n = 5 ;
printf( "\nThe result is %lf\n", fun ( n ) ) ;
}
答案:(1) for(i = 2 ; i <= m ; i++) (2) y += 1.0 / (i * i) ;
三、程序设计题
在此程序中,编写函数fun,其功能是:实现B=A+A’,即将矩阵A加上A的转置,存放在矩阵B中。计算结果在main函数中输出。
例如,输入下面的矩阵:其转置矩阵为:
程序输出:
#include <stdio.h>
void fun ( int a[3][3], int b[3][3])
{
}
void main( ) /* 主程序 */
{ int a[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}, t[3][3] ;
int i, j ;
void NONO ( );
fun(a, t) ;
for (i = 0 ; i < 3 ; i++) {
for (j = 0 ; j < 3 ; j++)
printf("%7d", t[i][j]) ;
printf("\n") ;
}
NONO () ;
}
void NONO ( )
{/* 本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/
int i, j, k, a[3][3], t[3][3] ;
FILE *rf, *wf ;
rf = fopen("in.dat","r") ;
wf = fopen("out.dat","w") ;
for(k = 0 ; k < 5 ; k++) {
for(i = 0 ; i < 3 ; i++)
fscanf(rf, "%d %d %d", &a[i][0], &a[i][1], &a[i][2]) ;
fun(a, t) ;
for(i = 0 ; i < 3 ; i++) {
for(j = 0 ; j < 3 ; j++) fprintf(wf, "%7d", t[i][j]) ;
fprintf(wf, "\n") ;
}
}
fclose(rf) ;
fclose(wf) ;
}
答案:
int i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
b[i][j]=a[i][j]+a[j][i];