| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3681 人关注过本帖
标题:请问一下~~~
只看楼主 加入收藏
zhuwei168
Rank: 1
来 自:东软信息学院
等 级:新手上路
帖 子:180
专家分:0
注 册:2008-2-13
收藏
 问题点数:0 回复次数:56 
请问一下~~~
编程实现:从键盘输入10个字符,存储到字符型一维数组str中,再从键盘上输入另一个字符ch,要求将str中出现的第一个ch字符删除。将删除ch后的数组str输出到屏幕上。
应该怎么用代码实现
谢谢~~
搜索更多相关主题的帖子: str 字符 键盘 屏幕 删除 
2008-04-19 17:41
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
程序代码:

/*****************************************************************************
        这个程序主要是数组重新排序的问题。
        试着作了个小程序,谨作参考。
        WIN-TC测试正常。
*****************************************************************************/
#include<stdio.h>
#include<string.h>
#define N 10
int main(void)
{
        int i,j;
        char a[N],b,c;
        for(i=0;i<=9;++i)
        {
                printf("请输入第%d个字符:",i+1);  /* 给数组赋值 */
                a[i]=getchar();
                while(c=getchar()!='\n'&&c!=EOF);  /* 清除键盘缓存 */
                puts(" ");                       /* 回车换行 */
        }
        printf("请输入您要删除的字符:");
        b=getchar();           /*~~~~~~~~~~输入准备删去的字符 */
        puts(" ");
        for(i=0;i<=9;++i)
        {
                if(b==a[i])  /*   当字符数组循环到准备删去的字符的时候 */
                {
                        for(j=i;j<9;++j)  /* 用j替代循环到这个字符的i,然后接着循环数组 */
                                a[j]=a[j+1];  /* 用数组的下一个字符替代当前字符,也就等于把
                                                 字符删去,然后把后面的排序。 */
                        a[9]='\0';   /* 数组的最后一个字符被休止符所替代 */
                        break;     /* 跳出循环  */
                }
        }
        printf("\n\n\t%s\n",a);   /* 输出排序后的数组 */


        getch();
}
                                




[[it] 本帖最后由 广陵绝唱 于 2008-4-19 21:45 编辑 [/it]]
2008-04-19 21:40
bianfeng
Rank: 1
等 级:新手上路
帖 子:199
专家分:0
注 册:2007-11-28
收藏
得分:0 
学习了...

欢迎长期在线的朋友加入此群:21135958
2008-04-19 21:55
中学者
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:20
帖 子:3554
专家分:80
注 册:2007-9-14
收藏
得分:0 
#include<stdio.h>
#define N 10
int main(void)
{
    char str[N], ch;
    char* pstr1 = str, *pstr2 =0;
    
    scanf("%c",&ch);scanf("%s",str);
        for(; *pstr1 != '\0' && *pstr1 != ch; pstr1++ );
    if( *pstr1 != '\0' )
    {
     for(pstr2 = pstr1+1; (*pstr1++ = *pstr2++) != '\0'; );
       *pstr1 = '\0';
    }
    puts(str);
     return 0;
}

樱花大战,  有爱.
2008-04-19 22:20
随心
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:12
帖 子:2577
专家分:250
注 册:2007-8-12
收藏
得分:0 
学习了
LS好久不见

天之道,利而不害。圣人之道,为而不争。信言不美,美言不信。善者不辩,辩者不善。知者不博,博者不知。
2008-04-19 22:23
中学者
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:20
帖 子:3554
专家分:80
注 册:2007-9-14
收藏
得分:0 
[bo]以下是引用 [un]随心[/un] 在 2008-4-19 22:23 的发言:[/bo]

学习了
LS好久不见


  嘿嘿, 好久不见,最近在忙什么呢?

樱花大战,  有爱.
2008-04-19 22:24
liweiruc
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-10-29
收藏
得分:0 
我也试试:

#include<stdio.h>
#define N 10
void del(char a[],char ch)
{
    int i=0,j=0,k=0;
    char temp[N];
    for(i;i<N;i++)
    {
        if(a[i]==ch)
            k++;
        if(a[i]!=ch||k!=1)
            temp[j++]=a[i];
    }
    temp[j]='\0';
    for(i=0;i<N;i++)
        a[i]=temp[i];
}
int main(void)
{
    int i;
    char str[N],ch;
    printf("输入%d个字符:",N);
    gets(str);
    printf("输入要删除掉字符:");
    ch=getchar();
    puts("原始数据:");
    puts(str);
    del(str,ch);
    puts("删除后的数据:");
    puts(str);
return 0;
}
2008-04-19 22:25
雨中飛燕
Rank: 1
等 级:新手上路
帖 子:765
专家分:0
注 册:2007-10-13
收藏
得分:0 
其实4楼的代码可以更快。。。快一倍。。。

" border="0" />
2008-04-19 22:27
中学者
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:20
帖 子:3554
专家分:80
注 册:2007-9-14
收藏
得分:0 
[bo]以下是引用 [un]雨中飛燕[/un] 在 2008-4-19 22:27 的发言:[/bo]

其实4楼的代码可以更快。。。快一倍。。。

http://blog.


   继续学习, 怎么弄? 我没考虑呢~

樱花大战,  有爱.
2008-04-19 22:29
随心
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:12
帖 子:2577
专家分:250
注 册:2007-8-12
收藏
得分:0 
和这个类似http://

天之道,利而不害。圣人之道,为而不争。信言不美,美言不信。善者不辩,辩者不善。知者不博,博者不知。
2008-04-19 22:29
快速回复:请问一下~~~
数据加载中...
 
   



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

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