标题:C语言:输出字符串中大写的英文字母
只看楼主
cxly
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2016-11-15
结帖率:73.33%
已结贴  问题点数:10 回复次数:9 
C语言:输出字符串中大写的英文字母
输出大写英文字母   (15分)

本题要求编写程序,顺序输出给定字符串中所出现过的大写英文字母,“每个字母只输出一遍”;若无大写英文字母则输出“Not Found”。
输入格式:

输入为一个以回车结束的字符串(少于80个字符)。
输出格式:

按照输入的顺序在一行中输出所出现过的大写英文字母,每个字母只输出一遍。若无大写英文字母则输出“Not Found”。
输入样例1:

FONTNAME and FILENAME

输出样例1:

FONTAMEIL

输入样例2:

fontname and filrname

输出样例2:

Not Found


#include<stdio.h>
int main(void)
{
int i,k,count;
char line[80];
count=0;

k=0;
while((line[k]=getchar())!='\n')
k++;
line[k]='\n';

for(i=0;i<k;i++){
if(line[i]>='A'&&line[i]<='Z')
printf("%c",line[i]);
count++;
}

if(count!=0){
printf("\n");}
if(count=0){
printf("Not Found\n");}

return 0;
}显示答案错误,哪里错了啊?


[此贴子已经被作者于2016-11-27 09:46编辑过]

搜索更多相关主题的帖子: 英文字母 编写程序 include 字符串 C语言 
2016-11-27 09:07
xufan
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:232
专家分:804
注 册:2008-10-20
得分:5 
参考代码如下:
程序代码:
#include<stdio.h>

int main(void)
{
    int i,k,count;
    char line[80] = {0};
    count=0;

    k=0;
    while((line[k]=getchar())!='\n')
        k++;
    //line[k]='\0';

    for(i=0;i<k;i++)
    {
        if(line[i]>='A'&&line[i]<='Z')
        {
            count++;
            printf("%c",line[i]);
        }
    }

    if(count!=0)
    {
        printf("\n");
    }
    else
    {
        printf("Not Found\n");
    }

    return 0;
}

~~~~~~我的明天我知道~~~。
2016-11-27 09:22
cxly
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2016-11-15
得分:0 
回复 2楼 xufan
我照你的改了一下,但只有部分正确
2016-11-27 09:27
xufan
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:232
专家分:804
注 册:2008-10-20
得分:0 
回复 3楼 cxly
哪些地方不正确呢?

~~~~~~我的明天我知道~~~。
2016-11-27 09:29
cxly
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2016-11-15
得分:0 
回复 4楼 xufan
它是这样显示的:
测试点1   答案错误  0/6  1  1
测试点2  答案正确  3/3  2  1
测试点3  答案错误  0/2  1  1
测试点4  答案正确  2/2  1  1
测试点5  答案错误  0/2  1  1
查看代码
其实我在C++里面运行是没有问题的


[此贴子已经被作者于2016-11-27 09:38编辑过]

2016-11-27 09:34
cxly
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2016-11-15
得分:0 
回复 4楼 xufan
每个字母只能输出一遍
2016-11-27 09:47
xufan
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:232
专家分:804
注 册:2008-10-20
得分:0 
程序代码:
#include<stdio.h>
#include <string.h>

char out[80] = {0};

bool IsUpper(char ch)
{
    return ch >= 'A' && ch <= 'Z';
}

void Store(char value)
{
    size_t len = strlen(out);
    int i = 0;

    for (; i < len; ++i)
    {
        if (out[i] == value)
        {
            break;
        }
    }
    if (i == len)
    {
        out[len] = value;
    }
}

int main(void)
{
    int i = 0;
    int k = 0;
    int count = 0;
    char line[80] = {0};

    while((line[k]=getchar())!='\n')
        k++;

    for(i=0;i<k;i++)
    {
        if (IsUpper(line[i]))
        {
            Store(line[i]);
        }
    }
    if (out[0] == '\0')
    {
        printf("Not Found\n");
    }
    else
    {
        printf("%s\n", out);
    }

    return 0;
}

~~~~~~我的明天我知道~~~。
2016-11-27 10:20
cxly
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2016-11-15
得分:0 
回复 7楼 xufan
这个编译有问题的吧?
2016-11-28 19:24
xufan
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:232
专家分:804
注 册:2008-10-20
得分:0 
回复 8楼 cxly
编译的时候报啥问题了吗?

~~~~~~我的明天我知道~~~。
2016-11-28 19:33
groveer
Rank: 3Rank: 3
来 自:世界的一角
等 级:论坛游侠
威 望:1
帖 子:77
专家分:182
注 册:2013-11-18
得分:5 
首先 你的程序最后一个if(count=0)改为if(count==0)再一个  你的程序不能实现只输出一次
给你个思路 定义两个字符数组,一个存放输入字符串 一个存放判断后字符串,最后输出判断后的字符数组就行了

付出不亚于任何人的努力~
2016-11-28 20:13



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-471635-1-1.html




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

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