字符问题

来源:百度知道 编辑:UC知道 时间:2024/06/04 08:44:56
本意是输出字符串中最近的数字和字符为一组 不知道错在哪里
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

main()
{
char a[100];
int k=0,layer;
char ch,ch1;
gets(a);
ch=a[k];
while(ch!=' ')
{ if(isdigit(ch))
layer=ch-'0';
else if(isalpha(ch))
{
ch1=ch;
}
ch=a[++k];
printf("%d%c",layer,ch1);
}
getchar();
getchar();
}

帮你把过程走一下
假如输入的是字符串“abc123 ”// 注意要有空格,因为你程序里循环是以空格为结束
首先ch=a[k];而k此时为0,那ch='a';
满足循环条件,进入循环,再先判断ch是不是数字字符,这里ch是'a',执行else的,判断是不是英文字母,这里满足,所以执行ch1=ch;即ch='a';
再执行ch=a[++k];没什么问题,再printf(这里就有问题了),输出ch1没问题,但输出layer就有问题了,就这里这种情况,它并没有初始化(即附过值),当然就不是你想要的了。
........好累,希望不嫌我啰嗦,总的说:逻辑有问题,相信你能搞定的,加油

不懂什么叫‘最近’,另外最后那俩getchar是做什么用得啊