计算机二级C语言考试编程题
编程题
1.请编一个函数fun(char *s),函数的功能是把字符串中的内容逆置。例如:字符串中原有的内容为:abcdefg,则调用该函数后,串中的内容为:gfedcba。
注意: 部分源程序存在文件prog.c中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
#include
#include
#include
#define N 81
/*本题的考核点是C语言中的for循环语句的使用。
解题思路:对于本题,我们给出的参考函数采取的算法是:将第一个元素与最后一个元素互换,第二个元素与倒数第二个互换…的方式进行倒排序。因为我们一次互换两个元素,所以for循环语句执行length/2次(length是字符串的长度)就可以把全部元素互换一遍。*/
void fun ( char *s )
{
int i ,length;
char tmp;
length = strlen( s ); /*统计字符串s中字符的个数*/
for (i = 0;i < length / 2; i++)
{ /*以下三行即将s中的第i个字符与第length-i个字符进行交互*/
tmp = s[i];
s[i] = s[length - i - 1];
s[length - i - 1] = tmp;
}
}
NONO( )
{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */
int i ;
char a[N] ;
FILE *rf, *wf ;
rf = fopen("bc8.in", "r") ;
wf = fopen("bc8.out", "w") ;
for(i = 0 ; i < 9 ; i++) {
fscanf(rf, "%s", a) ;
fun(a) ;
fprintf(wf, "%s\n", a) ;
}
fclose(rf) ;
fclose(wf) ;
}
main()
{ char a[N];
system("cls");
printf("Enter a string: ");gets(a);
printf("The original string is: ");puts(a);
fun(a);
printf("\n");
printf("The string after modified: ");
puts(a); NONO( );
}
2.编写程序,实现矩阵(3行3列)的转置(即行列互换)。
例如,输入下面的矩阵:
100 200 300
400 500 600
700 800 900
程序输出:
100 400 700
200 500 800
300 600 900
注意: 部分源程序存在文件prog.c中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
#include
#include
/*本题的考核点是3行3列矩阵转置算法。
解题思路:通过两重循环和一个中间数组完成转置。方法是通过循环将原数组中的i行j列上的数赋值给中间数组的j行i列,最后再将中间数组的值赋给原数组,形成转置后的矩阵。*/
void fun(int array[3][3])
{ int i,j;int b[3][3];
for (i=0;i<3;i++)
for (j=0;j<3;j++)
b[j][i]=array[i][j];/*将矩阵行列互换*/
for (i=0;i<3;i++)
for (j=0;j<3;j++)
array[i][j]=b[i][j];/*将b数组中的数据原封不动的保存在array数组中*/
}
NONO( )
{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */
int i,j;
FILE *wf ;
int array[3][3]={{100,200,300