| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1901 人关注过本帖
标题:得不到正确结果,求大佬赐教
只看楼主 加入收藏
opq2020
Rank: 1
等 级:新手上路
帖 子:15
专家分:3
注 册:2020-4-3
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:5 
得不到正确结果,求大佬赐教
如有 char str[100],输入一个字符串统计其中数字、大写字母、小写字母和其他字
符的个数,并将大写字母转换为小写字母,小写字母转换为大写字母
#include<stdio.h>
int main()
{char str[100],a[100],b[100];int i=0,k=0,p=0,l=0,c=0;
gets(str);
while(str[i]!='\0')
{
if(str[i]>='0'&&str[i]<='9')
k++;
else if(str[i]>='A'&&str[i]<='Z')
p++,a[i]=str[i]+32;
 else if(str[i]>='a'&&str[i]<='z')
l++,b[i]=str[i]-32;
else c++;i++;
}puts(a);puts(b);  
printf("数字的个数%d 大写字母个数是%d 小写字母个数是%d 其他字符个数是%d",k,p,l,c);}
图片附件: 游客没有浏览图片的权限,请 登录注册

搜索更多相关主题的帖子: 字母 str 大写 个数 小写 
2020-04-29 16:08
纯蓝之刃
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:76
帖 子:570
专家分:3727
注 册:2019-7-29
收藏
得分:10 
程序代码:
#include<stdio.h>
int main()
{
    char str[100]={0},a[100]={0},b[100]={0};    //这里
    int i=0,k=0,p=0,l=0,c=0;
    gets(str);
    while(str[i]!='\0')
    {
        if(str[i]>='0'&&str[i]<='9')
            k++;
        else if(str[i]>='A'&&str[i]<='Z')
            a[p++]=str[i]+32;               //这里
        else if(str[i]>='a'&&str[i]<='z')
            b[l++]=str[i]-32;               //这里
        else
            c++;
        i++;
    }
    puts(a);
    puts(b);
    printf("数字的个数%d 大写字母个数是%d 小写字母个数是%d 其他字符个数是%d",k,p,l,c);
}

一沙一世界,一花一天堂。无限掌中置,刹那成永恒。
2020-04-29 16:17
opq2020
Rank: 1
等 级:新手上路
帖 子:15
专家分:3
注 册:2020-4-3
收藏
得分:0 
谢谢大佬

2020-04-29 20:27
forever74
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:CC
等 级:版主
威 望:58
帖 子:1705
专家分:4345
注 册:2007-12-27
收藏
得分:0 
不合题意的程序恐怕仅有苦劳。
题目显然是要你原地转换大小写,没有让你把字母都集中起来呀。

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2020-04-29 21:06
qing_yx
Rank: 2
等 级:论坛游民
威 望:1
帖 子:25
专家分:70
注 册:2020-4-26
收藏
得分:0 
#include <stdio.h>

int main()
{
    char str[100] = { 0 };
    int num_upper = 0, num_lower = 0, num_number = 0, num_other = 0;
    int i = 0;

    printf("请输入一串字符:");
    gets(str);

    while (str[i] != '\0')
    {
        if (str[i] >= 'a' && str[i] <= 'z')
        {
            num_lower++;
            str[i] -= 32;
        }            
        else if (str[i] >= 'A' && str[i] <= 'Z')
        {
            num_upper++;
            str[i] += 32;
        }
        else if (str[i] >= '0' && str[i] <= '9')
            num_number++;
        else num_other++;

        i++;
    }
    puts(str);
    printf("大写字母=%d,小写字母=%d,数字=%d,其他=%d", num_upper, num_lower, num_number, num_other);

    getchar();
    return 0;
}

输出正确

[此贴子已经被作者于2020-5-6 10:58编辑过]

2020-04-30 13:07
qing_yx
Rank: 2
等 级:论坛游民
威 望:1
帖 子:25
专家分:70
注 册:2020-4-26
收藏
得分:0 
回复 4楼 forever74
#include <stdio.h>

int main()
{
    char str[100] = { 0 };
    int num_upper = 0, num_lower = 0, num_number = 0, num_other = 0;
    int i = 0;

    printf("请输入一串字符:");
    gets(str);

    while (str[i++] != '\0')
    {
        if (str[i] >= 'a' && str[i] <= 'z')
        {
            num_lower++;
            str[i] -= 32;
        }            
        else if (str[i] >= 'A' && str[i] <= 'Z')
        {
            num_upper++;
            str[i] += 32;
        }
        else if (str[i] >= '0' && str[i] <= '9')
            num_number++;
        else num_other++;
    }
    puts(str);
    printf("大写字母=%d,小写字母=%d,数字=%d,其他=%d", num_upper, num_lower, num_number, num_other);

    getchar();
    return 0;
}
如果我从键盘输入I love U!!123 转换后为什么输出I LOVE u!!123,统计数字第一个I算其他字符,不算大写字母,这是为什么?
如果I love U!!123 最前面加个其他什么字符,统计就是对的。
只要第一个字符是字母,无论大小写,都算作其他字符。。。。
2020-04-30 13:22
快速回复:得不到正确结果,求大佬赐教
数据加载中...
 
   



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

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