老宇不老 发表于 2013-10-24 12:15:23

c问题求助

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

统计输入字符串中字母的个数。
将其中的数字累加。
#include <stdio.h>
int abc(char ch1)
{
    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)
{
    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;
    scanf("%s",&ch);
    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;
}

请问以上两个代码出错在那里了?
谢谢啦~
新手,高手勿喷~~~

苹果沃珂 发表于 2013-10-24 13:31:33

#include <stdio.h>
int abc(char ch1)
{
        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>='A' && ch1<='Z')||(ch1>='a' && ch1<='z'))
                        k++;
        }
        return k;
}
int sum(char ch2)
{
        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>='0' && ch2<='9'))
                        s = s + ch2 - '0';
        }

        return s;
}
int main()
{
        char ch;
        //scanf("%s",&ch); // 取字符串的中第80个单元的地址作为存储的开始地址 ==>越界
        scanf("%s",&ch);
        printf("%d\n",abc(ch));
        printf("%d",sum(ch));
        return 0;
}

苹果沃珂 发表于 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;
}

老宇不老 发表于 2013-10-24 13:57:14

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

苹果沃珂 发表于 2013-10-24 13:31 static/image/common/back.gif
#include
int abc(char ch1)
{

谢谢你啊~奇怪~我将代码拷贝到论坛上,怎么字母数组名称后面【i】全都消失不见了~

老宇不老 发表于 2013-10-24 14:09:01

苹果沃珂 发表于 2013-10-24 13:45 static/image/common/back.gif
#include
void func(char *a) //
{


多谢指教~鱼c有你更精彩~~~~
页: [1]
查看完整版本: c问题求助