|
发表于 2008-11-18 00:45:01
|
显示全部楼层
head.h :- #ifndef SYS_H
- #define SYS_H
- #define DEMEN 6
- struct coord_s
- {
- float value ;
- int x ;
- int y ;
- } ;
- typedef struct coord_s coord ;
- static void diagonal_sum(float a[][DEMEN] , int , float* , float*) ;
- static void largest_coord(float a[][DEMEN] , int) ;
- static void copy2temp(float , int , int) ;
- #endif
复制代码 main.c :- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include "head.h"
- coord lc ;
- static void diagonal_sum(float src[][DEMEN] , int demen , float* sum_diag , float* sum_anti_diag)
- {
- register int i , j ;
- for(i = 0 ; i < demen ; i++){
- for(j = demen - 1 ; j >=0 ; j--)
- if(i + j == demen - 1) *sum_anti_diag += src[i][j] ;
- *sum_diag += src[i][i] ;
- }
- }
- static void largest_coord(float src[][DEMEN] , int demen)
- {
- register int i , j ;
- copy2temp(src[0][0] , 0 , 0) ;
- for(i = 0 ; i < demen ; i++){
- for(j = 0 ; j < demen ; j++)
- if(lc.value < src[i][j]) copy2temp(src[i][j] , i , j) ;
- }
- }
- static void copy2temp(float src , int x , int y)
- {
- lc.value = src ;
- lc.x = x ;
- lc.y = y ;
- }
- int main(void)
- {
- register int i , j ;
- float a[DEMEN][DEMEN] ;
- float sum_diag = 0 , sum_anti_diag = 0 ;
- puts("Starting computer some values ... \n") ;
- puts("this tools need some float value and now input ...\n") ;
- for(i = 0 ; i < DEMEN ; i++)
- for(j = 0 ; j < DEMEN ; j++){
- /*a[i][j] = i+j ;*/
- printf("value[%d][%d] :\t" , i , j) ;
- scanf("%f",&a[i][j]) ;/*用scanf不是一个好的ideal,应该实现一个严格检测输入的函数*/
- }
- for(i = 0 ; i < DEMEN ; i++){
- for(j = 0 ; j < DEMEN ; j++) printf("%6.2f " , a[i][j]) ;
- printf("\n\n") ;
- }
- diagonal_sum(a , DEMEN , &sum_diag , &sum_anti_diag) ;
- printf("the sum of diagonal and anti diagonal are :\t%6.2f\t%6.2f\n" , sum_diag , sum_anti_diag) ;
- largest_coord(a , DEMEN) ;
- printf("the largest item is : [%d][%d] = %6.2f\n" , lc.x , lc.y , lc.value) ;
- return 0 ;
- }
复制代码 compile & link :
gcc -o s -Wall main.c
try and enjoy
[ 本帖最后由 judite 于 2008-11-18 00:50 编辑 ] |
评分
-
查看全部评分
|