| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 743 人关注过本帖
标题:初学者..问个C的问题
只看楼主 加入收藏
librayg
Rank: 2
等 级:论坛游民
帖 子:35
专家分:42
注 册:2010-12-1
结帖率:71.43%
收藏
已结贴  问题点数:10 回复次数:16 
初学者..问个C的问题
原题目是输入4*4维的数组,试求出对角线各元素之和、对角线元素的最大值
代码是:#include<stdio.h>
main()
{
    int a[4][4],j,i,t,b;
    for(i=0;i<4;i++)
    for(j=0;j<4;j++)
    scanf("%d",&a[j][i]);
    printf("请输入任意16个数字\n");

    for(i=0;i<3;i++)//对每一行进行循环
        for(j=0;j<3;j++)//对每一列进行循环
            printf("右对角线的和为\n");
        printf("%d",a[i][j]);
        
        
        for(i=0;i<=3;i++)//同上
        for(j=3;j>=0;j--)
            printf("左对角线的和为\n");
        printf("%d",a[i][j]);


        for(i=0;i<3;i++)
            for(j=0;j<3;j++)
                for(i=0;i<3-j;i++)//进行比较
                    if(a[i]>a[i+1])//进行交换
                    {
                        t=a[i];
                        a[i]=a[i+1];
                        a[i+1]=t;
                    }
                    printf("右对角线元素的最大值为\n");
                        for(i=0;i<3;i++)
                            printf("%d",t);


                        for(i=0;i<=3;i++)
                            for(j=3;j>=0;j--)//同上
                                for(i=0;i<3-j;i++)//同上
                                    if(a[i]>a[i+1])//同上
                                    {
                                        b=a[i];
                                        a[i]=a[i+1];
                                        a[i+1]=b;
                                    }
                                    printf("左对角线的最大值为\n");
                                        for(i=0;i<3;i++)
                                            printf("%d",b);
老是提示错,好像还是提示无法赋值还是什么的,跪求高手指点,如果要求所有元素之和,我又该怎么表示呢????
搜索更多相关主题的帖子: include 对角线 
2010-12-01 21:04
chj8023
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-9-28
收藏
得分:0 
个人意见,仅供参考:
    第一,第二个for循环后面要加{},且printf和scanf的顺序貌似搞反了;第二,对角元素就是a[0][0],a[3][3],a[0][3]和a[3][0],它们的和直接刻求得,再用冒泡法可求得最大值。
2010-12-01 23:07
venus85
Rank: 6Rank: 6
等 级:侠之大者
帖 子:159
专家分:477
注 册:2010-11-27
收藏
得分:5 
程序代码:
#include "stdio.h"
main()
{
    int a[4][4],j,i,b,sum;
   printf("请输入任意16个数字\n");
    for(i=0;i<4;i++)
      for(j=0;j<4;j++)
        scanf("%d",&a[i][j]);
         
       /*-------求左对角线的和---------*/
    sum=0;
    for(i=0;i<4;i++)//对每一行进行循环
        sum+=a[i][i];
        printf("左对角线的和为: ");
        printf("%d\n",sum);
     
      /*-------求右对角线的和---------*/
    
     sum=0;
     for(i=0;i<4;i++)
         sum+=a[i][3-i];
     printf("右对角线的和为: ");
     printf("%d\n",sum);
       /*-------数组全体元素之和---------*/
       sum=0;
     for(i=0;i<4;i++)
        for(j=0;j<4;j++)
        sum+=a[i][j];
     printf("数组全体元素之和 :%d\n",sum);
     
       /*-------求左对角线中最大的数---------*/ 
      j=0;
      for(i=0;i<3;i++)
         if(a[i][i]<=a[i+1][i+1])
         j=i+1;
      printf("左对角线中最大的数 :%d\n",a[j][j]);
     
      /*-------求右对角线中最大的数---------*/
      j=0;
      for(i=0;i<3;i++)
         if(a[i+1][2-i]>=a[i][3-i])
         j=i+1;
      printf("右对角线中最大的数 :%d\n",a[j][3-j]);
}
改动比较大,你试试吧

[ 本帖最后由 venus85 于 2010-12-1 23:21 编辑 ]
2010-12-01 23:19
venus85
Rank: 6Rank: 6
等 级:侠之大者
帖 子:159
专家分:477
注 册:2010-11-27
收藏
得分:0 
写的比较乱,你可以自己优化一下
2010-12-01 23:19
vvvevvv
Rank: 2
来 自:黑龙江
等 级:论坛游民
帖 子:129
专家分:92
注 册:2010-9-9
收藏
得分:5 
回复 3楼 venus85
个人意见  数组定义后 再进行赋值 好像不能吧  程序我运行过了  好像不行(不知道是不是我的编译器的事)
希望朋友能不能改进一下(我也不知道该怎么办)谢谢!!!

学习~
2010-12-01 23:54
vvvevvv
Rank: 2
来 自:黑龙江
等 级:论坛游民
帖 子:129
专家分:92
注 册:2010-9-9
收藏
得分:0 
回复 楼主 librayg
LZ朋友  
个人意见  数组定义后 再进行赋值 好像不能吧  程序我运行过了  好像不行(不知道是不是我的编译器的事)
希望朋友能不能改进一下(我也不知道该怎么办)谢谢!!!

学习~
2010-12-01 23:54
福利费
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:109
专家分:197
注 册:2010-9-26
收藏
得分:0 
自己仔细点看就会发现问题的!!!!!!!!!!!!!!!!!!!!
2010-12-01 23:59
librayg
Rank: 2
等 级:论坛游民
帖 子:35
专家分:42
注 册:2010-12-1
收藏
得分:0 
三楼的,你的代码有误啊,我怎么都无法运行VC++,而且我看你的算法思想,你能好好解释下给我听么??
2010-12-02 08:38
librayg
Rank: 2
等 级:论坛游民
帖 子:35
专家分:42
注 册:2010-12-1
收藏
得分:0 
数组定义后不能赋值???应该可以赋值的啊!!
我现在运行的时候也是老提示出错,而且都是出错提示是我在赋值并且交换的那几个地方,我现在很纳闷,能解释得清楚点么?谢谢了
2010-12-02 08:42
venus85
Rank: 6Rank: 6
等 级:侠之大者
帖 子:159
专家分:477
注 册:2010-11-27
收藏
得分:0 
以下是引用vvvevvv在2010-12-1 23:54:06的发言:

个人意见  数组定义后 再进行赋值 好像不能吧  程序我运行过了  好像不行(不知道是不是我的编译器的事)
希望朋友能不能改进一下(我也不知道该怎么办)谢谢!!!
数组定义后不能赋值,没有这一说吧!!!
如果真是这样的话,那数组的作用就大打折扣了,
我用TC,VS2003都能成功运行
图片附件: 游客没有浏览图片的权限,请 登录注册

你用的是什么编译器啊?建议你换个编译器试试!


我又在linux下试了一下,还是没问题啊!
linux运行结果:
图片附件: 游客没有浏览图片的权限,请 登录注册

你们到底是哪里有问题啊?是没法运行还是结果不对呢?



[ 本帖最后由 venus85 于 2010-12-2 12:20 编辑 ]
2010-12-02 11:34
快速回复:初学者..问个C的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.039019 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved