int a(char* s)
{
char* t=s;
while(*t++);
t--;
return (t-s);
}
求字符串的长度 。
———————————————————————————————————————————
下面这道题目 对for循环和自增(自减)理解会更好
#include<stdio.h>
main()
{
char a='0',b='A';
int i;
for(i=1;i<6;i++)
{
if(i%2==0)
putchar(a+i);
else putchar(b+i);
}
}
for循环开始时 i 的值为1,判断 i 小于6后,直接把 i 的值传入for循环之后,i 的值再自增。(不是先把 i 的值自增后再传入循环体内)。
———————————————————————————————————————————
for 和 continue
#include<stdio.h>
main()
{
int x=8;
for(;x>0;x--)
{
if(x%3)
{
printf("%d",x--);
continue;
}
printf("%d",--x);
}
}
运行结果为 8,5,4,2。
x 的值为8时,8进入循环体,然后执行 if 语句。然后打印 x 。之后再减减。再然后执行continue。跳出本次循环。所以输出的第一个数字为8。
———————————————————————————————————————————
#include<stdio.h>
void main()
{
int i=0,j=0;
char a[]="ab123c4d56ef7gh89";
for(i=0;a[i];i++)
{
if(a[i]>='0'&&a[i]<='9')
a[j++]=a[i];
}
a[j]='\0';
printf("%s",a);
}
结果为 123456789
a[j++]=a[i] 先是把 a[i] 的值赋给 a[j] 。然后 j 的值再自增。只要按照顺序结构,j 的值会一直增加。
把数字前移 ,然后把 '\0'赋值给数组中的字符。