| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1933 人关注过本帖
标题:C初学者有个问题请教
只看楼主 加入收藏
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
程序代码:
/*******************************************************************************

    从键盘任意输入10个数字或字符到内存中,然后去除所有非数字的字符并打印出来。

********************************************************************************/
#include<stdio.h>
int main(void)
{
        char a[11];
        int i,j,k=11;
        printf("输入十个字符:\n");
        gets(a);
        for(i=0;i<k;i++)   /* 从始至末检查数组 */
                if(a[i]<'0'||a[i]>'9')         /*  如果发现不是数字的字符 */
                {
                        for(j=i;j<k-1;j++)     
                                a[j]=a[j+1];/* 把数组这个非数字字符重新赋值,下面依次重新赋值。
                                               如a[0]='a';a[1]='1';,重新赋值后,a[0]为'1'。*/

                        k--;           /* 因为有个字符被取消了,所以数组长度减 1 */

                        i--;          /* 因取消了这个字符,防止重新赋值还为非数字字符,所以i--,
                                         重新检查一遍 */

                        a[k]='\0';  /* 在字符串的结尾加上休止符,否则就会出现后面一串相同字符*/
                }
        puts(a);
        getch();
}


[[it] 本帖最后由 广陵绝唱 于 2008-8-9 15:39 编辑 [/it]]
2008-08-09 14:09
henyue
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2006-6-3
收藏
得分:0 
回复 11# 广陵绝唱 的帖子
for循环可以注释一下吗
2008-08-09 14:28
moonwalker
Rank: 1
等 级:新手上路
威 望:1
帖 子:909
专家分:2
注 册:2007-3-2
收藏
得分:0 
我也写一个吧
再提供一个思路,呵呵。
#include "stdio.h"

int main()
{
    char c;
    printf("Input string:\n");
    
    while('\n' != (c = getchar()))
    {
        if(c < '0' || c > '9')
            putchar(c);
    }
    return 0;
}


[[it] 本帖最后由 moonwalker 于 2008-8-9 15:43 编辑 [/it]]

“视频教程网”免费提供教学资源
C不限制你的自由!
条件是自己承担滥用自由的恶果!
2008-08-09 15:42
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
程序代码:
/*******************************************************************************

    从键盘任意输入10个数字或字符到内存中,然后去除所有非数字的字符并打印出来。





~~~~~~~~~~~~~~


    呵呵,我也提供另外一个思路。

********************************************************************************/
#include<stdio.h>
int main(void)
{
        char a[11];
        int i;
        printf("输入十个字符:\n");
        gets(a);
        for(i=0;i<11;i++)
                if(a[i]>'0'&&a[i]<'9')
                        printf("%c",a[i]);
        getch();
}
2008-08-09 15:49
moonwalker
Rank: 1
等 级:新手上路
威 望:1
帖 子:909
专家分:2
注 册:2007-3-2
收藏
得分:0 
广陵,粗心了吧!

“视频教程网”免费提供教学资源
C不限制你的自由!
条件是自己承担滥用自由的恶果!
2008-08-09 15:51
爱喝牛奶的猫咪
Rank: 1
来 自:QQ群46520219
等 级:禁止访问
帖 子:513
专家分:0
注 册:2008-6-16
收藏
得分:0 
哈哈,有意思,你们继续


[color=white]<" border="0" />>
2008-08-09 15:57
csynyk
Rank: 1
等 级:新手上路
威 望:1
帖 子:114
专家分:0
注 册:2008-8-9
收藏
得分:0 
呵呵!那有何难?
2008-08-09 15:57
csynyk
Rank: 1
等 级:新手上路
威 望:1
帖 子:114
专家分:0
注 册:2008-8-9
收藏
得分:0 
#include <stdio.h>
#include <ctype.h>
#include <process.h>

//下面的这个func()就吧非数字的内容全部清除了!
void func(char *str)
{
    char *temp=str;
    if(!str)
    {
        printf("Parameter Error!");
        exit(1);
    }
    while(*str)
    {
        if(isdigit(*str))
        {
            *temp=*str;
            temp++;
        }
        str++;
    }
    *temp='\0';
}

int main(void)
{
    char pf[100]={0};
    printf("Please input string!\n");
    gets(pf);
    func(pf);
    printf("After Be changed ,the string is :%s\n",pf);
    return 0;
}
2008-08-09 15:59
moonwalker
Rank: 1
等 级:新手上路
威 望:1
帖 子:909
专家分:2
注 册:2007-3-2
收藏
得分:0 
[bo][un]爱喝牛奶的猫咪[/un] 在 2008-8-9 15:57 的发言:[/bo]

哈哈,有意思,你们继续


 

有啥意思啊,我比不了你们年轻人。
复杂的问题我也搞不定,只好帮帮初学者发挥一下余热啊,呵呵。

“视频教程网”免费提供教学资源
C不限制你的自由!
条件是自己承担滥用自由的恶果!
2008-08-09 16:01
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
回复 15# moonwalker 的帖子
我理解的题意是:
 
如:abcd123456

是去除掉 abcd,并打印 123456。

请问您是怎么理解的呢?
2008-08-09 16:19
快速回复:C初学者有个问题请教
数据加载中...
 
   



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

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