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;
}
请问以上两个代码出错在那里了?
谢谢啦~
新手,高手勿喷~~~
#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;
} #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 14:04 编辑
苹果沃珂 发表于 2013-10-24 13:31 static/image/common/back.gif
#include
int abc(char ch1)
{
谢谢你啊~奇怪~我将代码拷贝到论坛上,怎么字母数组名称后面【i】全都消失不见了~ 苹果沃珂 发表于 2013-10-24 13:45 static/image/common/back.gif
#include
void func(char *a) //
{
多谢指教~鱼c有你更精彩~~~~
页:
[1]