鱼C论坛

 找回密码
 立即注册
查看: 3610|回复: 0

帮忙改进一下!!!

[复制链接]
发表于 2012-9-26 23:16:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 考鸡蛋 于 2012-9-26 23:18 编辑
  1. /*
  2. *  * 1、无法正常退出;
  3. *   * 2、输入错误数字无提示信息;
  4. *    */

  5. #include <stdio.h>
  6. int main()
  7. {
  8.         int array[3][3];
  9.         int i, j;
  10.         char c;

  11.         int max_value(int array[3][3]);
  12.         int min_value(int array[3][3]);
  13.         int sun_value(int array[3][3]);
  14.         int n_value(int array[3][3]);

  15.         printf("请输入3*3矩阵数据:\n");

  16.         for(i = 0; i < 3; i++)
  17.         {
  18.                 for(j = 0; j < 3; j++)
  19.                 {
  20.                         scanf("%d", &array[i][j]);
  21.                 }
  22.         }

  23.         printf("输入的3*3矩阵为: \n");

  24.         for(i = 0; i < 3; i++)
  25.         {
  26.                 for(j = 0; j < 3; j++)
  27.                 {
  28.                         printf("%5d", array[i][j]);
  29.                 }
  30.                
  31.                 printf("\n\n\n");
  32.         }

  33.         printf("选择对矩阵进行的操作:\n");
  34.         printf("1、求最大值;         2、求最小值;          3、求所有数的总和;  \n");
  35.         printf("4、最大值与最小值和;5、最大值与最小值差; 6、矩阵数据的平均值  \n");
  36.         printf("7、第n行或第n列数据的和;\n");
  37.         printf("退出Q!\n");

  38.         scanf("%c", &c);

  39.         while(c != 'Q' || c != 'q' )
  40.         {
  41.                 switch(c)
  42.                 {
  43.                                 case 1: printf("max=%d \n", max_value(array));
  44.                                         break;
  45.                                 case 2: printf("mix=%d \n", min_value(array));
  46.                                         break;
  47.                                 case 3: printf("sun=%d \n", sun_value(array));
  48.                                         break;
  49.                                 case 4: printf("最大值与最小值和=%d \n", max_value(array) + min_value(array));
  50.                                         break;
  51.                                 case 5: printf("最大值与最小值差=%d \n", max_value(array) - min_value(array));
  52.                                         break;
  53.                                 case 6: printf("矩阵数据的平均值=%d \n", sun_value(array) / (3*3));
  54.                                         break;
  55.                                 case 7: printf("第n行或第n列数据的和=%d    \n", n_value(array));
  56.                                         break;
  57.                 }
  58.                
  59.                 printf("选择对矩阵进行的操作:\n");
  60.                 printf("1、求最大值;         2、求最小值;          3、求所有数的总和;  \n");
  61.                 printf("4、最大值与最小值和;5、最大值与最小值差; 6、矩阵数据的平均值  \n");
  62.                 printf("7、第n行或第n列数据的和;\n");
  63.                 printf("退出Q!\n");

  64.                 scanf("%d", &c);
  65.         }
  66.         printf("\n\n");
  67.         return 0;
  68.         
  69. }

  70. int max_value(int array[3][3])
  71. {
  72.         int max, i, j;
  73.         max = array[0][0];

  74.         for(i = 0; i < 3; i++)
  75.         {
  76.                 for(j = 0; j < 3; j++)
  77.                 {
  78.                         if(max < array[i][j])
  79.                         {
  80.                                 max = array[i][j];
  81.                         }        
  82.                 }
  83.         }
  84.         return max;
  85. }

  86. int min_value(int array[3][3])
  87. {
  88.         int min, i , j;
  89.         min = array[0][0];

  90.         for(i = 0; i < 3; i++)
  91.         {
  92.                 for(j = 0; j < 3; j++)
  93.                 {
  94.                         if(min > array[i][j])
  95.                         {
  96.                                 min = array[i][j];
  97.                         }
  98.                 }
  99.         }
  100.         return min;
  101. }

  102. int sun_value(int array[3][3])
  103. {
  104.         int sun, i, j;
  105.         sun = 0;

  106.         for(i = 0; i < 3; i ++)
  107.         {
  108.                 for(j = 0; j < 3; j++)
  109.                 {
  110.                         sun = sun + array[i][j];
  111.                 }
  112.         }
  113.         return sun;
  114.         
  115. }

  116. int n_value(int array[3][3])
  117. {
  118.         int i, j, n, sun;
  119.         sun = 0;
  120.         
  121.         printf("选择行、列 \n");
  122.         printf("1、行;2、列;  \n");
  123.         scanf("%d", &n);

  124.         if(n == 1)
  125.         {
  126.                 printf("输入要求的行: \n");
  127.                 scanf("%d", &i);
  128.                
  129.                 for(j = 0; j < 3; j++)
  130.                 {
  131.                         sun = sun + array[i - 1][j];
  132.                 }
  133.                         
  134.         }
  135.         if(n == 2)
  136.         {
  137.                 printf("输入要求的列: \n");
  138.                 scanf("%d", &i);

  139.                 for(j = 0; j < 3; j++)
  140.                 {
  141.                         sun = sun + array[j][i - 1];
  142.                 }
  143.         }
  144.         return sun;
  145. }

复制代码
正在自学C语言,自已写的段代码。。。希望鱼友们帮忙改进一下,一是无法正常退出,退出会出现死循环,二是输入错误无反应!!

小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-2-11 03:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表