C语言 麻烦各位大侠帮我解释个程序

作者&投稿:乾亚 (若有异议请与网页底部的电邮联系)
C语言 麻烦各位大侠给解释个程序~

选择B,在32位的编译器中短整形占2字节。首地址(也就是A[0])为P,那么A[1]为P+2……依次类推。都是最基本的东西,建议把基础打好。

关于补充问题:请我觉得答案是B

A中第1个元素是A[0], &A[0]=P 这里i=1 即 第1个元素地址为P+(1-1)*2=P
A中第2个元素是A[1], &A[1]=P+2 这里i=2 即 第2个元素地址为P+(2-1)*2=P+2
A中第3个元素是A[2], &A[2]=P+4 这里i=3 即 第3个元素地址为P+(3-1)*2=P+4
……
A中第i个元素是A[i-1], &A[i-1]=P+(i-1)*2

楼主没搞明白一个基本的问题吧,数组中的第i个元素是array[i-1]而不是array[i],因为是从array[0]开始算的。

我想帮你,不过我的显示
fatal error C1083: Cannot open include file: 'dir.h': No such file or directory
打不开dir.h

宏定义中的SQR(X) X*X有如下作用:
在接下来的程序中,SQR(某表达式)被直接变为:某表达式*某表达式(注意没有括号)
所以
SQR(k+m)
就相当于
k+m*k+m

a/=SQR(k+m)/SQR(k+m)
就相当于
a=a/k+m*k+m/k+m*k+m

应该懂了吧~?

#define SQR(X) X*X是宏定义,声明程序中出现的所有SQR(X)用X*X来替换,即自定义了一个求x平方的带参数的宏

a/=SQR(k+m)/SQR(k+m);相当于a=a/SQR(k+m)/SQR(k+m);,用宏替换后得到:
a=a/(k+m*k+m)/(k+m*k+m)

SQR(X) X*X 是X的地方用X*X 代替
a/=SQR(k+m)/SQR(k+m)就是k+m/k+m主要是定义的时候X*X 没有用括号括起来的原因


波密县19655319966: C语言 麻烦各位大侠给解释个程序 -
胥彦龙勃: 选择B,在32位的编译器中短整形占2字节.首地址(也就是A[0])为P,那么A[1]为P+2……依次类推.都是最基本的东西,建议把基础打好. 关于补充问题:请我觉得答案是BA中第1个元素是A[0], &A[0]=P 这里i=1 即 第1个元素地址为P+(1-1)*...

波密县19655319966: 解释一个简单的C语言程序 -
胥彦龙勃: union 是共用体的标识符.1.它所占的长度等于其中最大的单位的长度.你这个union的大小是 int 的大小2. 各个数据成员同占一个储存空间,所以一个时间就只有一个数据成员是有意义的.你把 u1.c='A';就是把这段空间写入了字符A.然后printf();就是把这段空间按照字符的方式输出....(在这个时候正int 的 n是没有意义的) 打印出来的是A

波密县19655319966: 一个c语言的程序,麻烦解释哈啊??? -
胥彦龙勃: fseek(fp,sizeof(int)*(50-1),SEEK_SET);//重新定位fp fp指向SEEK_SET位置开始偏移sizeof(int)*(50-1),fread(&n, sizeof(int), 1,fp); 读取fp指向的值存储在n中.sizeof(int)整形的大小(一般为4字节),即将fp从新定位到fp+SEEK_SET+sizeof(int)*(50-1)的位置,然后取出该位置的一个整数存入n中.

波密县19655319966: C语言一个很小的程序,麻烦各位解释一下 -
胥彦龙勃: 这个地方的结果选择C,a=p1==&m;这个表达式首先算p1==&m,”==“这是一个比较运算符,因为p1中存放的是k的地址,而&m是m的地址,所以就不相等,.所以就取值0,然后再把0的值赋给a,

波密县19655319966: C语言,麻烦哪位仁兄详细讲解一下这个程序
胥彦龙勃: else if(num>=10) { i=itoc(num/10,buffer); *(buffer+i)=(num%10)+'0'; *(buffer+i+1)=0; } 这里理解的关键是在这里,这里涉及到递归的问题. 我拿num=-3456举例,详细描述下程序运行的过程. 因为num<0,那么*buffer='-'; 这里buffer是字符指针...

波密县19655319966: 哪位大侠来帮我解释一下这个C语言程序是什么意思?
胥彦龙勃: \b退格,\t跳到下一个制表位,\'代表一个单引号(撇号),\x80,16进制80所代表的ascII码值,即128所代表的字符, \n,移至下一行,\\代表一个\字符,\"代表一个双引号字符,\200,8进制数200所代表的字符,即128

波密县19655319966: C语言 麻烦哪位大神给我逐句解释以下代码,小弟新手,求帮忙! -
胥彦龙勃: 你那个写法有误,应该是 x *= 2; x和*=之间有空格.这个写法等效于 x = x*2; static关键字表示这个变量是个静态的,每一次进来后,x的值还等于上次退出时的值.比如第一次运行时,x=1,退出时 x=x*2, x就等于2.那么,下次再进来这个函数,x的初始值就是2,退出值就是4,再下次初始值是4,退出值是8.

波密县19655319966: 麻烦各位C语言的高手们,给小弟我讲解一下下面的程序啊~ -
胥彦龙勃: 也就是程序让选择三种算法,1取最大值,2取最小值,3计算两数之和.参与运算的两个数是a=34,b=-21.根据选择的算法调用相应的实现函数.

波密县19655319966: 麻烦帮忙解释下这个C语言程序,谢谢了,很基础的j -
胥彦龙勃: 首先你定义了一个返回值为int类型的函数func,这个函数有一个int类型的形参.在函数里面,用传递进来的实参来作为判断程序结束的条件,就是x&=(x-1);这句,这个是一个按位与的操作,数在内存里面都有以二进制存储的,当x和x-1在内存中表示的对应位上没有全是1的情况出现,那么这个表达式就是0,然后结束,返回count,这个是计数用的,来看看执行了几次循环.在main函数中用printf函数输出这个数值.看明白了吧,就是一个位与大概比较难理解一下,你看看书就明白了.

波密县19655319966: C语言 麻烦帮忙解释个程序 -
胥彦龙勃: str[50]表示定义一个可以容纳50个字符的数组 str作为数组名,等同于该数组的首元素地址 因此str+2表示该地址向后偏移2个单位,str是字符指针,所以1个单位是1字节,偏移2个也就是2字节,本来str是首元素地址,也就是str[0]的地址,向后偏...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网