C语言两个不是很难的问题

题一:有代数式 ,用C语言表示。
答案是 sqrt(fabs(pow(x,n)+exp(X)))
但是我觉得答案应该是sqrt(fabs(pow(x,n)+exp(x)))
Pow的原型是double pow(doubleX,doublenY)
Exp的原型是double exp(doubleX)
但是对于sqrt(fabs(pow(x,n)+exp(X))),前面的aqrt就是用的小写,后面的exp肯定要用小写噻,我觉得答案错了?

题二:有以下函数
Int fun(char *s)
{char *t=s;
While(*t++);
Return(t-s);}
答案说是S所占字节数,我认为应该是S字符串的长度,答案说While(*t++);
是指到\0后面,我认为答案错了,想象*t刚好指向\0前面一个字符,则*t++后的*t肯定指向\0噻,而且对于\0的ascll码为0,所以While(0)停止循环,所以t的位置是\0才对,运行t-s后,就是字符串的长度,我认为答案错了?

第一个题……书印错了吧…

第二个…楼上说错了,不是先返回t(当然即便你的意思是先返回*t,那也不对)。

(*t++)这个东西,肯定是t先自增,然后返回*t值(因为++符号和*符号的结合级别相等,而且结合方向都是从右至左),而且理解while的语义,肯定是发现了*t等于0的时候才停止,这时候,t已经是指向字符串末尾了,t的值必然为0。

书上说的占字节数其实就是楼主你的意思,它们没有把结束标志算进去。
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-09-16
楼上说的不对,C也是大小写敏感的,一般C的库函数都是小写的,C++中有些是部分字母大写的,如MFC中的一些函数。sqrt(fabs(pow(x,n)+exp(x)))是对的。

题二中,应该是
int fun(char *s)
{
char *t=s;
while(*t++);
return(t-s);
}
不要随便将关键词的首字母大写,否侧会报错。
返回的确实是字符串的长度,因为t++这种表达式是相当于先返回t,再自增1.
然而字符串的长度要包含\0在内的,不要忘记。楼上有一点是对的,就是一个字符就是一个字节本回答被提问者采纳
第2个回答  2008-09-16
在C当中,函数名是不区分大小写的,所以第一道题你没有必要担心.
第二题,你所理解的S字符串的长度,其实也就是S所占的字节数,因为每个字符在机器中所占的字长是8个二进制位,而8个二制位也就是一个字节,.

两个C语言小问题,十分简单
=2.5+0 =2.5 a\/=a+a 相当于 a=a\/(a+a)=12\/24 \/\/12\/24是整数除,因此为0 =0

求解C语言两个问题
1、int x=2,y=2,a;a=(x=x+1)丨丨(y=y+1),括号优先级最高,先计算第一个括号里面的x = x + 1,x = 3,3非0,为逻辑真 ||逻辑或运算符,一边为真,那结果一定为真,所以||右边就不计算了,整个结果为逻辑真赋值给a 最终就是a=1,x=3,y=2(y=y+1被优化掉不计算了)2、i...

两个关于C语言的问题。
1、在x=3的状态下进入do循环,第一次运行printf语句,首先使 x -= 2 ,x的内容减掉2,输出x的当前值,所以输出了1。接着进行循环条件判断,先进行 --运算,使x的内容变为0,!0的计算结果为真,循环继续进行。第二次运行printf首先 x-=2 即 x = 0-2,使x的内容变为-2,并被输出。当x...

亲,关于C语言的两个问题,100分悬赏!!!
第一个问题,我也不知道,我是从网上搜索到的,也比较容易懂,答案如下:实数的计算机内部表示由具体系统规定,其中不少系统采用通行的国际标准(IEEE 标准,IEEE 是电子电器工程师协会,是一个著名的国际性技术组织):(1) 浮点类型的数用4个字节32位二进制表示。这样表示的数大约有7位十进制有效数...

两个关于C语言的问题
第一题:应该这样看 if(a>c) b=a;a=c;c=b;如果你明白可追问 第二题:首先,在 switch(x) {} 中,case 0与case 1之间没有break;所以执行完case 0后面的内容后还会执行case 1后面的内容,这就是为什么会输出 #,因为执行了default : printf ("#");其次,* 这个是得不到的,除...

c语言两个问题求解答,一个逻辑运算,一个数组 第一题希望能详细一点,网 ...
第二题答案为0。连续逻辑与,除最后一个以外,前面均为真(非0),最后'b'就是98啊!98-'b'当然是0。有0参与的逻辑与,结果当然为假,也就是0了 最后不写出答案了吗?20 13 6 一开始数组内容为 2 3 4 5 6 7 8 9 10 for的执行内容,翻译一下就是数组中每个元素...

关于数据结构(C语言版)的两个问题
如果为右括号`)`,则检查`stack`是否为空,如果不为空则弹出栈顶元素,将`top`减一。在遍历结束后,检查`stack`是否为空。如果为空,表示所有括号均匹配,返回1;否则表示存在未匹配的括号,返回0。通过上述程序,可以实现对给定字符串中括号匹配性的判断,对于数据结构(C语言版)中的括号匹配问题,...

c语言编程问题。。。这是一个作业。。实在不会写,求大神帮忙。。。_百...
include<stdio.h>struct Poker{char num;char color;};int comparenum(char a,char b){a=(a=='A'?'9'+5:a);b=(b=='A'?'9'+5:b);a=(a=='K'?'9'+4:a);b=(b=='K'?'9'+4:b);a=(a=='Q'?'9'+3:a);b=(b=='Q'?'9'+3:b);a=(a=='...

大一c语言编程简单问题,这两个基于指针的程序有何区别?谢谢各位大神...
右边程序里边定义的是普通类型的变量temp,显而易见 p1 p2也是两个指针,在这个程序里面p1=004,p2=005,左边程序 第一步:p1=temp;也就是把001给了temp,第二步:p1=p2;也就是把002给了p1,此时p1的指向发生了变化,它指向的那块儿内存不再指向 10,而是指向了002这块儿地址所存放的数据,也就...

C语言简单问题?
void big_sum(char a[], char b[], char c[]);函数的功能是计算超大整数的加法:c=a+b 第二个是逆向字符串的函数:void str_rev(char s[]);功能是把字符串s收尾颠倒,下面以C语言的语法描述两个函数算法,如果看不懂就代码就看注释。void str_rev(char s[]){ int n=0,i=0;char...

相似回答