哈哈哈的 发表于 2018-8-6 15:40:27

c语言计算机二级

有两个问题哟


第一个:
阅读以下函数:

fun(char*s1, char*s2)
{
int i=0; while(s1==s2&& s2!='\0') i++;
return(s1==&& s2{i)!=='\0');
}

此函数的功能是()。
A.将s2所指字符串赋给s1
B.比较s1和s2所指字符串的大小,若s1比s2的大,函数值为1,否则函数值为0
C.比较s1和s2所指字符串是否相等,若相等,函数值为1,否则函数值为0
D.比较s1和s2所指字符串的长度,若s1比s2的长,函数值为1,否则函数值为0

有几点不明白。 return后面跟着的是什么意思??while(s1==s2)是判断这两个字符串是否相等的 意思吗??并且s2!='\0',就表示它们相等但是都不为0对吗??能不能把每一行给出详细的注释呢??


第二个:
void main()
int k=8,7,6,5,0,0, *s;
s=k+1;
printf("%d\n",s+1);
能不能给出每一行的注释呢??那个s=k+1时什么意思啊??有点不明白指针。。。

claws0n 发表于 2018-8-6 15:57:20

亲爱的,要帮你不是不可以,能不能把代码弄得可阅读一点?

第一个代码有错误

第二个代码
指针跟数组名一样,指向数组的第一个元素。
s = k+1; 就是指向数组的第二个元素
s+1 就是先指向数组的第二个元素,然后+1,指向第三个元素

哈哈哈的 发表于 2018-8-6 16:13:49

claws0n 发表于 2018-8-6 15:57
亲爱的,要帮你不是不可以,能不能把代码弄得可阅读一点?

第一个代码有错误


不好意思哈,我刚刚又翻了一遍书。第一题的代码不全,但是的确有问题。
fun(char*s1, char*s2)
{
int i=0;
while(s1==s2&& s2!='\0') i++;
return(s1=='\0'&& s2!=='\0');
}
参考书上答案给的是D,不是很明白。。能说说嘛??

claws0n 发表于 2018-8-6 16:34:42

哈哈哈的 发表于 2018-8-6 16:13
不好意思哈,我刚刚又翻了一遍书。第一题的代码不全,但是的确有问题。
fun(char*s1, char*s2)
{


s1, s2 是指针,前面循环没问题吧?主要在看 s2 是不是指向结束,然后递增。
return( s1 == '\0' && s2 != '\0') 这个看真相表:真真真、真假假……(自己手写展开一下)
若为真,return 1;若为假,return 0

你这一段 return 的代码还是有错误,不过自己思考一下~记得前面是看 s2 是否提前结束,不过如果 s1 != s2 也会跳出循环体
页: [1]
查看完整版本: c语言计算机二级