| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1199 人关注过本帖
标题:输入一个每个元素类型为unsigned char的矩阵,统计值在1到255之间的元素个数 ...
只看楼主 加入收藏
qiqid
Rank: 2
等 级:论坛游民
帖 子:36
专家分:12
注 册:2013-3-31
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:6 
输入一个每个元素类型为unsigned char的矩阵,统计值在1到255之间的元素个数,并输出。
编译的时候出现问题,请指教究竟错在哪里?
#include<stdio.h>

int main()
{
    char a[3][3];        /* 定义一个二维数组 */

    int i;
    int j;

    printf("请给数组赋值:\n");

    for(i=0;i<3;i++)
        for(j=0;j<3;j++)
        {
            scanf("%c",&a[i][j]);
        }
        /* 给数组赋值 */

    for(i=0;i<3;i++)
        for(j=0;j<3;j++)
        {
            printf("%c",a[i][j]);

            if(j==2)
                printf("\n");
        }
        /* 输出该数组 */

        i=0;
        j=0;

        int flag=1;

        int p;                                /* 用来计数的变量 */
        p=0;

        char s='0';

        while(flag)
        {
            if(a[i][j]==s&&s<='255')        /* 让数组中每一个元素与1到255进行比较,若相等则输出 */
            {
                printf("%c\n",a[i][j]);
                p++;
            }

            s=char(s+1);                    /* 使s在1到255中取值 */

            if(s>'255')
            {
                j++;
                s='0';        
            }
            if(j==3)                /* 当j等于三时,第一行数组元素查找完毕 */
            {
                i++;
                j=0;
            }
            if(i==3)                /* 当i等于三时,表示数组遍历完毕 */
                flag=0;
        }

        printf("数组中值在1到255之间的元素有%d个",p);

        printf("\n");
        
    return 0;

}
字符a同字符数字比较,a会不会被转化为数字。
搜索更多相关主题的帖子: include 
2013-05-18 01:17
我叫沃恩
Rank: 12Rank: 12Rank: 12
来 自:Asia
等 级:贵宾
威 望:10
帖 子:1234
专家分:3865
注 册:2013-3-29
收藏
得分:7 
程序代码:
#include<stdio.h>

int main()
{
    char a[3][3];        /* 定义一个二维数组 */

    int i;
    int j;

    printf("请给数组赋值:\n");

    for(i=0;i<3;i++)
        for(j=0;j<3;j++)
        {
            scanf("%c",&a[i][j]);
        }
        /* 给数组赋值 */

    for(i=0;i<3;i++)
        for(j=0;j<3;j++)
        {
            printf("%c",a[i][j]);
            if(j==2)
                printf("\n");
        }
        /* 输出该数组 */

        int p=0;
        char s='0';

        for(i=0;i<3;i++)
        {
            for(j=0;j<3;j++)
            {
                if(a[i][j]>='0'&&a[i][j]<='255')
                    {printf("%c\n",a[i][j]);
                    p++;}
            }
        }
       printf("数组中值在1到255之间的元素有%d个",p);
       printf("\n");

    return 0;

}

你看看这个代码!

因为我是菜鸟,所以应该被骂! 细节+坚持=成功!
2013-05-18 07:12
qiqid
Rank: 2
等 级:论坛游民
帖 子:36
专家分:12
注 册:2013-3-31
收藏
得分:0 
我调试了一下,当我输入123abc456的时候,我希望得到的p是6,但它依旧输出是9。这个字符a去同'0'到'255'比较,究竟怎么比较的。
2013-05-18 11:48
我叫沃恩
Rank: 12Rank: 12Rank: 12
来 自:Asia
等 级:贵宾
威 望:10
帖 子:1234
专家分:3865
注 册:2013-3-29
收藏
得分:0 
程序代码:
#include<stdio.h>

int main()
{
    char a[3][3];        /* 定义一个二维数组 */

    int i;
    int j;

    printf("请给数组赋值:\n");

    for(i=0;i<3;i++)
        for(j=0;j<3;j++)
        {
            scanf("%c",&a[i][j]);
        }
        /* 给数组赋值 */

    for(i=0;i<3;i++)
        for(j=0;j<3;j++)
        {
            printf("%c",a[i][j]);
            if(j==2)
                printf("\n");
        }
        /* 输出该数组 */

        int p=0;
        char s='0';

        for(i=0;i<3;i++)
        {
            for(j=0;j<3;j++)
            {
                if(a[i][j]>='0'&&a[i][j]<='9')  //那就把这里改为9!
                    {printf("%c\n",a[i][j]);
                    p++;}
            }
        }
       printf("数组中值在1到255之间的元素有%d个",p);
       printf("\n");

    return 0;

}

a同'0'和'255'比较时,会用字母的ASCII值比较!因为字母的ASCII值都在0与255之间,所以会输出9!

因为我是菜鸟,所以应该被骂! 细节+坚持=成功!
2013-05-18 14:25
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2392
专家分:13384
注 册:2013-3-3
收藏
得分:7 
输入字符进行比较,肯定是进行ASCII码制进行比较,但是本质上他们都是用整形数进行存储的,也就是比较这个了,
if(a[i][j]==s&&s<='255')        /* 让数组中每一个元素与1到255进行比较,若相等则输出 */这个不对吧!你a[i][j]==s这个比较久不符合你所注视的,你所说的'0'到'255'指的是字符数,还是他们对应的ASCII码制,这个不太明确

Maybe
2013-05-18 14:43
qiqid
Rank: 2
等 级:论坛游民
帖 子:36
专家分:12
注 册:2013-3-31
收藏
得分:0 
这个‘0’到‘255’是表示字符数,你的意思就是假如我输入A,A的ASCII是65,那么比较的话,他就会转化为65进行比较了,那么A也符合输出条件了。但是我希望当我输入比如说是abc123def时,输出的p等于三。
2013-05-18 17:28
scrooper
Rank: 2
来 自:杭州
等 级:论坛游民
帖 子:13
专家分:21
注 册:2012-7-10
收藏
得分:7 
对一个unsigned char,除了'\0'之外,其值必然在1~255之间,楼主你这个问题好像没有意义
2013-05-19 20:57
快速回复:输入一个每个元素类型为unsigned char的矩阵,统计值在1到255之间的元 ...
数据加载中...
 
   



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

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