入门C语言请写出执行结果谢谢

来源:百度知道 编辑:UC知道 时间:2024/05/27 04:36:45
f(char s[])
{int n=0;
while (*(s+n)!='\0') n++;
return(n);
}
main()
{char a[10],*p=a+1;
scanf ("%s",a);
printf ("%d\n",f(p+1));
}
并请详细解释一下谢谢
假设从键盘上输入为ABCDE

比如输入字符串:weiwei(输入的字符个数不能超过10-1即9个)
结果就是:4
char *p=a+1;表示定义一个指向字符的指针变量,这个指针变量的值即p是a[10]中第二个字符的地址,即a[1]的地址(p=&a[1]);p的内容即*p是a[1]的值(*p=a[1])。
子函数要求的是从p+1指向的即从a[2]开始的字符串a中的字符个数。所为若输入为weiwei则计数的是iwei这4个字符。
类型为int型的函数,关键词int可以省略,所以源程序完全正确。在tc2.0下执行一下,通过!

输入一个字符串,输出字符串长度-2
f函数是求字符串长度的函数.
不过此程序有很多问题
f(char s[]) 前面应该加上函数返回类型int
假如字符串长度为1,此程序会出现错误

求输入字符的,除去前2个的长度:8

输出 输入字符的个数-2
*p=a+1; 指向数组第二位
f(char s[]) 计算s的字符串个数 字符串以'\0'结束。
因为传入的f(p+1)),故而从第三位开始算个数。。

函数有点小问题先改下
int f(char s[]) //补充上了返回值
{int n=0;
while (*(s+n)!='\0') n++; //从指针处开始计数,遇到\0则停止计数,实际上是用来计算字符串的长度,和库函数里strlen的作用一样
return n;
}
void main(void)
{char a[10],*p=a+1;//定义了一个长度为10的字符数组,指针p指向了他的第二个元素
scanf ("%s",a);
//输入字符串的内容,编译器会在你输入结束后在最后一个字符后加上'\0'标志字符串的结束
printf ("%d\n",f(p+1));
//从字符串的第三个元素开始计数到'\0'
}