| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 282 人关注过本帖
标题:解释代码的作用就行了,我想不通
只看楼主 加入收藏
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:5 
解释代码的作用就行了,我想不通
#include <stdio.h>
#include<ctype.h>
int main()
{
    int i,a,b,c,d;
    a=b=c=d=0;
    char str[50];
    printf("请输入一个字符组:\n");
    gets(str);
    for(i=0;str[i]!=0;i++)
    {    if (isalpha(str[i]))
            a+=1;
        else if(isdigit(str[i]))
            b+=1;
    else if (isspace(str[i]))
        c+=1;
        else if (ispunct(str[i]))
            d+=1;

    }
    printf("字母有%d个,数字有%d个,空格有%d个,标点有%d个\n",a,b,c,d);
    return 0;
}加颜色的部分帮忙解释一下,还有那个for循环中的判断条件str[i]!=0,这个判断条件我不明白怎么执行的,还有,那个判断条件可以换成str[i];效果居然一样,我快要崩溃咯,下面是换了条件后的代码,我对那两个判断条件的效果等同不明白
#include <stdio.h>
#include <ctype.h>
int main()
{
    char str[201];
    printf("请输入一个长度不超过200的字符串: \n");
    gets(str);

    int n1,n2,n3,n4;
    n1=n2=n3=n4=0;

    for(int i=0;str[i];i++)
    {
        if (isalpha(str[i]))
            n1++;
        else if (isdigit(str[i]))
            n2++;
        else if (isspace(str[i]))
            n3++;
        else if (ispunct(str[i]))
            n4++;
    }
    printf("该字符串的字母个数:%d,数字个数:%d, 空格个数:%d,标点个数:%d\n\n",n1,n2,n3,n4);

    return 0;
}还有一个让我比较头疼的地方是在输入字符组的时候,之前我一直都是用scanf("%s",str),调试出错后,我又换了一种输入方式:用for语句输入:
for(i=0;i<100;i++)
scanf("%c",&str[i]);或者这种方式:
for(i=0;i<100;i++)
scanf("%c",str[i]);但一样是没结果啊,郁闷,太郁闷了,这是想不出为什么会这样啊

[ 本帖最后由 love云彩 于 2012-12-19 17:05 编辑 ]
搜索更多相关主题的帖子: include 
2012-12-19 17:00
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:2 
我不明白这还需要咋么来解释呢

DO IT YOURSELF !
2012-12-19 17:02
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
收藏
得分:0 
回复 2楼 wp231957
唉,小弟我就是不懂啊,不懂为什么要用gets()输入而不能用scanf输入,不明白for循环的判断条件为什么是这样,实在想不通,居然还能互换条件,结果还一样,郁闷……

思考赐予新生,时间在于定义
2012-12-19 17:07
玉宝宝
Rank: 1
等 级:新手上路
帖 子:5
专家分:8
注 册:2012-12-18
收藏
得分:8 
回复 3楼 love云彩
gets能为字符串数组自动添加“\0”,scanf不能,str[i]!=0,是当循环碰到0是循环结束
2012-12-19 17:20
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
收藏
得分:0 
回复 4楼 玉宝宝
你说的那个循环判断条件我懂,不懂i的是另一个判断条件:
for(i=0;str[i];i++)这个判断条件为什么等同与你说的那个呢?

思考赐予新生,时间在于定义
2012-12-19 17:40
天空微亮
Rank: 1
等 级:新手上路
帖 子:13
专家分:8
注 册:2012-12-19
收藏
得分:0 
回复 5楼 love云彩
for循环应该是判断for中的第二个语句是否为真吧,为假退出循环
2012-12-19 18:05
快速回复:解释代码的作用就行了,我想不通
数据加载中...
 
   



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

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