条件是:矩阵每行、每列、主对角线及反对角线上元素之和都相等。
例如,以下3×3的矩阵就是一个"幻方":
4 9 2
3 5 7
8 1 6
请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。
注意:源程序存放在考生文件夹下BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
给定源程序:
#include
#define N 3
int fun(int (*a)[N])
{int i,j,m1,m2,row,colum;
m1=m2=0;
for(i=0; i {j=N-i-1; m1+=a[i][i]; m2+=a[i][j];} if(m1!=m2) return 0; for(i=0; i /**********found**********/ row=colum= __1__; for(j=0; j {row+=a[i][j]; colum+=a[j][i];} /**********found**********/ if((row!=colum) __2__ (row!=m1)) return 0; } /**********found**********/ return __3__; } main() {int x[N][N],i,j; printf("Enter number for array:\n"); for(i=0; i for(j=0; j printf("Array:\n"); for(i=0; i {for(j=0; j printf("\n"); } if(fun(x)) printf("The Array is a magic square.\n"); else printf("The Array isn't a magic square.\n"); } 解题答案: /**********第一空**********/ row=colum= 0; /**********第二空*********/ if((row!=colum) || (row!=m1)) return 0; /**********第三空**********/ return 1; ******************************************[NextPage] 二、改错题:给定程序MODI1.C中fun函数的功能是: 根据整型形参m,计算如下公式的值。 1 1 1 t = 1 - ----- - ----- - …… - ----- 2 3 m 例如,若主函数中输入5,则应输出 -0.283333。 请改正函数fun中的错误或在横线处填上适当的内容并把横线删除, 使它能 计算出正确的结果。 注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构! 给定源程序: #include double fun(int m) { double t = 1.0; int i; for(i = 2; i <= m; i++) /**********found**********/ t = 1.0-1 /i; /**********found**********/ _______; } main() { int m ; printf("\nPlease enter 1 integer numbers:\n"); scanf("%d", &m); printf("\n\nThe result is %lf\n", fun(m)); } 解题答案: /**********found**********/ t=t-1.0/i; /**********found**********/ return t; ****************************************** [NextPage] 三.程序题:请编写一个函数,函数的功能是删除字符串中的所有空格。 例如, 主函数中输入"asd af aa z67", 则输出为 "asdafaaz67"。 注意:部分源程序在文件PROG1.C中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 给定源程序: #include #include void fun(char *str) { } main() { char str[81];void NONO (); printf("Input a string:"); gets(str); puts(str); fun(str); printf("*** str: %s\n",str); NONO(); } void NONO () { /* 请在此函数内打开文件,输入调试数据,调用 fun 函数,输出数据,关闭文件。 */ char str[81]; int n = 0; FILE *rf, *wf ; rf = fopen("in.dat","r"); wf = fopen("out.dat","w"); while(n < 10) { fgets(str, 80, rf); fun(str); fprintf(wf, "%s", str); n++ ; } fclose(rf); fclose(wf); } 参考答案: int fun(char *str) { char *p = str ; int i = 0 ; while(*p) { if(*p != ' ') str[i++] = *p ; p++ ; } str[i] = 0 ; }
| 广告合作:400-664-0084 全国热线:400-664-0084 Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号 珠峰网 版权所有 All Rights Reserved
|