c语言非常基本问题的疑惑。。一个初学者的烦恼!

来源:百度知道 编辑:UC知道 时间:2024/06/28 14:37:35
1。 于数学式子3x^n/(2x-1) 对应的C表达式为: 3*pow(x,n)*(1/(2x-1)) 若x为整数,那么红体字为整形,可是在数学式子中,它可能得出小数啊?怎么解决?这个就是答案么?

2.main()
{ cahr s[]”Yes\n/No”,*ps=s;
puts(ps+4);
*(ps+4)=0;
puts(s);
}
程序运行后输出结果是(选项D的第一行是空行)
A .n/No B./No C, n/No D
Yes Yes Yes /No
/No /No Yes
转义字符占空间吗?是/n算一个字节 ,还是分开算两个字符(字节),为什么不选D啊?刚好运行到转义字符怎么办。?

3。 在字符串中,对数组名,指针名所代表的意义:
1. charp[][2]={“abc”,”bde”}中,p、 p[1] 、 p+1 、*a=p(a指向什么)
2. char p[]=”deng”中, p 、p[1]、p+1
3. char *p=”zhang”; p p+1
4. char *p[]={“deng”,”zhang”,”jie”}; p、 p[i] 、 *b=p[1], 则b+1

4.有以下函数
fun(char *a,char *b)
{
while((*a!=’\0’)&&(*b!=’\0’)&&(*a==*b))
{a++; b++;}
return(*a-*b);
}
A 计算a 和b所指字符串长度之差
B 将b所指字符串复制到a所指字符串中
C 将b所指字符串连接a所指字符串后面
D 比较a和b所指字符串的大小

*1。函数定义什么意思?a b是指向字符还是字符串 还是二者都可以*
2.*a=*b 是指二串内容完全相同还是其中一个字符有相同的?

看了你的问题, 主要在于指针方面,毕竟指针是C的精华, 是要下点功夫才能搞懂!
1. 3x^n/(2x-1) 不能写成 3*pow(x,n)*(1/(2x-1)) 因为括号的优先级比*高,它会先算1/(2x-1), 1/(2x-1)要么=0, 要么=1; 所以应写成(3*pow(x,n))/(2x-1)

2. 转义字符也占占空间,但只占一个字节, \n占一个字节,其值=10, /n算两个字节

3.1
3.2 char p[]="deng"中, p 指向字符串"deng"的首地址,首地址是一个long型的值如0x12345678h什么的。p[1]指第二位地址里的值,第二位地址可能是0x12345679h, 但第二位地址的值是'e', p+1就是第二位地址,所以*(p+1)也=='e'
3.3 和3.2一样的
3.4 char *p[]={“deng”,”zhang”,”jie”}; p指向一个数组,这个数组里放的是指针,比如{0x00000010h, 0x00000020h, 0x00000030h}; p[i](0<<i<3) 就是0x00000010h, 0x00000020h, 0x00000030h中的一个;char *b=p[1]即b指向地址0x00000020h, 而0x00000020h是字符串"zhang"的首地址,所以b+1=0x00000021h。

4.1 函数声明是宣称有fun这个函数, 函数定义就是把fun的函数体写出来.
4.2 *a == *b 是比较串a的第一个字符与串b的第一个字符.
4.3 比如char *a = "12345", 则a++之后 a指向"2345", 再来个a++ 就指向"345"了
4.4 *a-*b, 如a = "xyz", b="opq", 则(*a-*b)='x' - 'o' = 120-111 = 9