鱼C论坛

 找回密码
 立即注册
查看: 3552|回复: 4

c问题求助

[复制链接]
发表于 2013-10-24 12:15:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 老宇不老 于 2013-10-24 14:09 编辑

统计输入字符串中字母的个数。
将其中的数字累加。
#include <stdio.h>
int abc(char ch1[80])
{
    int k=0,i;
    for(i=0;ch1!='\0';i++)
        if((ch1>=65&&ch1<=90)||(ch1>=97&&ch1<=122))
            k++;
    return k;
}
int sum(char ch2[80])
{
    int s=0,i;
    for(i=0;ch2!='\0';i++)
        if(ch2>=48&&ch2<=57)
            s=s+(int)ch2;
    return s;
}
int main()
{
    char ch[80];
    scanf("%s",&ch[80]);
    printf("%d\n",abc(ch));
    printf("%d",sum(ch));
    return 0;
}

将输入字符串大写变小写,小写变大写。
#include <stdio.h>
void func(char *a)
{
    char s;
    s=*a;
    if(s>=65&&s<=90)
    {
        s=s+32;
        putchar(s);
    }
    if(s>=97&&s<=122)
    {
        s=s-32;
        putchar(s);
    }
}
int main()
{
    char *c=0;
    while((*c=getchar())!='\n')
        func(c);
    return 0;
}

请问以上两个代码出错在那里了?
谢谢啦~
新手,高手勿喷~~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-10-24 13:31:33 | 显示全部楼层
#include <stdio.h>
int abc(char ch1[80])
{
        int k=0,i;
        //for(i=0;ch1!='\0';i++) // ch1是一个数组名哦
        //        if((ch1>=65&&ch1<=90)||(ch1>=97&&ch1<=122))
        //                k++;
        for (int i=0; i<80; i++)
        {
                if( (ch1[i]>='A' && ch1[i]<='Z')||(ch1[i]>='a' && ch1[i]<='z'))
                        k++;
        }
        return k;
}
int sum(char ch2[80])
{
        int s=0,i;
        //for(i=0;ch2!='\0';i++) // ch1是一个数组名哦
        //        if(ch2>=48&&ch2<=57)
        //                s=s+(int)ch2;   // 字符是以ASCII
        for (int i=0; i<80; i++)
        {
                if( (ch2[i]>='0' && ch2[i]<='9'))
                        s = s + ch2[i] - '0';
        }

        return s;
}
int main()
{
        char ch[80];
        //scanf("%s",&ch[80]); // 取字符串的中第80个单元的地址作为存储的开始地址 ==>越界
        scanf("%s",&ch);
        printf("%d\n",abc(ch));
        printf("%d",sum(ch));
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-10-24 13:45:26 | 显示全部楼层
#include <stdio.h>
void func(char *a) //
{
        char s;
        s=*a;
        if(s>=65&&s<=90) // 对大写处理,小写的不处理
        {
                s=s+32;
                putchar(s); //
        }
        if(s>=97&&s<=122) // 对小写处理
        {
                s=s-32;
                putchar(s);
        }
}
int main()
{
        //char *c=0; // 一个空指针
        //// 使指针指向一个有效的地址:很重要,修改如下:
        //char EffectAddr = '0' ;
        //c = &EffectAddr;
        //while((*c=getchar())!='\n')
        //        func(c);

        // 以上代码可替换如下:
        char t;
        while( (t=getchar())!='\n')
                func(&t);
        
        // 逐个字符进行操作将会逻辑错误: 如 ZhanGsAn 出现的结果是你想要的吗?
        // 一般是对字符串进行处理比较好

        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-10-24 13:57:14 | 显示全部楼层
本帖最后由 老宇不老 于 2013-10-24 14:04 编辑

谢谢你啊~奇怪~我将代码拷贝到论坛上,怎么字母数组名称后面【i】全都消失不见了~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-10-24 14:09:01 | 显示全部楼层
苹果沃珂 发表于 2013-10-24 13:45
#include
void func(char *a) //
{

多谢指教~鱼c有你更精彩~~~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-22 03:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表