#include
#include
main()
{
int i,k=0;
char s[7],a[8],b[5];
gets(s);
for(i=0;i<2;i++){
if(s[i]>='A'&&s[i]<='Z')
a[i]=s[i];
}
a[2]=0;
for(;i<6;i++)
{
if(s[i]>='0'&&s[i]<='9')
b[k++]=s[i];
}
b[4]=0;
strcat(a,b);//把b数组追加到a数组结尾,a末尾的'\0'自动被删除,并返回a地址
printf("%s",a);
}
你没有弄明白循环嵌套是如何运行的,另外你忘了字符串最后总是有一个'\0'的,'\0'的ascii是0
循环嵌套,必须是外循环执行一次,内循环全部执行完,才执行第二次外循环,然后内循环继续执行完,在执行第三次外循环,以此类推
就以你写的来说
你写的大体格式如下
while(){
for()
for()
}
这样一来,就先判断while循环条件,如果为真,则执行一次while内的语句,
现在开始执行while内语句了,第一个for全部循环玩,在执行第二个for,第二个全执行完,再次回到while的判断条件,如果为真,继续上述执行规则,
因此你的while是多余的, 另外要记住,一个字符串最后一个字符总是/0, 还有就是你的数组开太大了,根本用不上 就造成了资源上的浪费,虽然本程序没什么大小可谈,但是这个习惯要改,因为在将来做大型程序的时候 这点很重要 还有什么问题 可以继续追问
#include
#include
int main() {
int i = 0, j = 0, k = 0;
char s[81], alab[81], alpha[81];
printf("请输入字符串: ");
gets(s);
for (i = 0; i < 2; i++) {
if (s[i] >= 'A' && s[i] <= 'Z') {
alpha[j++] = s[i];
}
}
alpha[j++] = 0;
for (i = 2; i < 6; i++) {
if (s[i] >= '0' && s[i] <= '9') {
alab[k++] = s[i];
}
}
alab[k++] = 0;
printf("%s%s\n", alpha, alab);
}
不明白 为什么使用 while(s[i]) i都没有初始化,根本不知道i是多少?那么s[i]代表什么意思呢?
如果i=-1 s[-1] 是个啥?
你的叙述中,是输入一个ID,然后判断ID是否合法,为什么使用 循环套循环的方式,while有必要吗?两个for不就判断出来了。
合法就是合法,不合法就是Error,没有见到程序中有提示ERROR的信息。另外,合法了为什么还要复制到另一个数组中,?题目中还有别的要求??