C语言问题,求大神解决,谢谢啦,我是小白,最好能够解释下原因..

作者&投稿:韶琛 (若有异议请与网页底部的电邮联系)
C语言问题,求大神解决,谢谢啦,我是小白,最好能够解释下原因~

① p-q,地址相减,恰好等于a的地址加上6再减去a的地址,等于6,可以准确求得;
② p+3,就相当于a的指针向后移6+3=9位,没有移出数组a,地址不会溢出,可以。
③ p+q,两个变量的地址不能相加,如果相加,地址会超出原来定义的范围,所以 是错的。
④ p>q,p指向a[5],q指向a[0],数组是连续的,所以p>q是一定的,也可以。

if (a=b)x++; //合法,但是逻辑错误
if (a=<b) x++; //不合法应该是 a<=b
if (a-b) x++;//合法,当a-b不等于0时为真
if (a<=b<=c) x++;//合法,但是逻辑有误
if(1) x++; //合法,死循环

第三项

第一项的结果不正确。
第二项和第四项结果等同都是指向指针的指针操作。可以将二维数组看成一个双重指针,第一个中括号是一个一重指针。比如说a[n][m]中a[0]是一个指向a[0][m]数组首位a[0][0]的指针,而a则是指向指针数组*a[n]的首位a[0]的指针。
这样我们来看B选项,*(a+2)表示一个指向a[2][0]的指针,而(*(a+2)+1)则表示指向a[2][1]的指针,所以*(*(a+2)+1)就是a[2][1]。
再来看D选项,a[2]是指向a[2][0]的指针,a[2]+1就是指向a[2][1]的指针。所以*(a[2]+1)就是a[2][1]。

第三项结果是一个指针,也就是一个地址。它就是a[2][1]的地址,由于scanf要求是地址,所以它是正确的。

scanf函数的参数应为指针类型,所以不是指针的均要被排除,选3.
1.表达式都错了?
2.*(a+2)等价于a[2],*(a[2]+1)等价于a[2][1],不是指针。
4.和2一样,不是指针。

1是错的,表示不对,二维数组形式:a[i][j],i,j是整数;
2是3行2列的值;
3是表示地址*(a+2)+1,等于a[2]+1;
4和2差不多,表示*(a[2]+1)=*(*(a+2)+1);
注意:二维数组里 a[1]=*(a+1)
呵呵,欢迎高手指正。

C语言中是按行优先存储的,*(a+2)实际上是a[0][2]的数据。
因为scanf的参数必须是地址,另a[2][1]数据的地址可以是*(*(a + 2)+1)表示

2,4是一样的,都对。


C语言问题求大神详细解析
答案选d 你得搞清楚函数的概念,一个函数要调用必须得有定义。当然如果调用出现在定义之后则可以直接调用,如果调用出现在定义之前,那么在调用之前需要对这个函数进行声明,声明和定义必须相同。还有函数的返回值类型为void时表示函数没有返回值,不能使用函数的返回值。a错 因为调用在定义之前但是没有声...

C语言程序问题,求大神详解
按运算符优先级, a+=a-= (a=4)*(a=3); 等价于 a+= (a-=( (a=4)*(a=3) ) );可以分解为以下步骤:(1)声明与初始化 int a=5;(2)第一个小括号 a=4; a变4。(3)第二个小括号 a=3; a变3。(4) 计算表达式 ((a=4)*(a=3)), 3*3=9;(5) a-= ((a...

C语言问题,求大神解决,谢谢啦,我是小白,最好能够解释下。
题中,a=3 ,二进制为:0011;b=6,二进制值为:0110。所以(a^b)按位异或后的值为0101也就是5,左移两位后值(二进制)为:010100 也就是 :20

c语言问题,求大神解答
char a=97 a为字符型,对应的是ASCII码表中十进制数97对应的字符,是a c对应的字符是A,对应的ASCII码表中十进制数是65 输出语句的意思是计算字符a和字符A在ASCII码表中对应十进制数的差并按规定格式输出。97-65=32 结果输出a-A=32 选C ...

c语言求大神
1、x[3][2] = {0}指的是定义一个 3x2 数组,并将数组的所有值初始化为 0。2、输入2 4 6之后,数组的值是x[3][2] = {{2, 0}, {4, 0}, {6, 0}}。3、分别输出x[0][0] == 2, x[0][1] == 0, x[1][0] == 4。以上是我对这道题目的解析,如果对你有帮...

求C语言大神解答这个问题
精度不够,如果改成这样,就行了:include<stdio.h> int main(){ double x,y;x=111111.111;y=222222.222;printf("%lf\\n",x+y);return 0;}

c语言的题,求大神解答
选择的答案都是对的 题1:i++先进行表达式运算,最后再自增;++i先自增,再进行表达式运算,从结果上看最终都会导致i+1,所以结束后i,j,k都分别加1了。题2:C的写法就是强制类型转换,a1+a2的结果本来还是int,但是被强制转换成了char。A、B是普通的加法运算,D是可以说是赋值运算 ...

c语言,求大神,答案是a我算的是c,为什么
w<x ? w : z < y ? z : x根据符号优先级,是按照如下运算的:(w<x) ? w : ((z < y) ? z : x)因为:w<x为false,所以输出结果应该是: ((z < y) ? z : x)的值:z<y为true,所以输出结果应该是z 所以最终输出是A ...

这是一个c语言选择题,求大神解题并说明过程 
我先重复一遍 z+=x>y?++x,++y;赋值运算优先级最低,那么先看后面的x>y?++x,++y x>y?意思是判断x是否大于y,是则执行后面的前者,否则后者 很明显执行后者。也就是变成了z+=(++y)也就是z=z+(++y)也就是z=z+(y+1)所以是6,选C 纯手打,望采纳 ...

汇编 语言的几个问题,求大神解答,全在图中
SHR是逻辑右移指令;SAR是算术右移指令。SHR右移的时候,它的最高位用0填补,最低位移入CF。而SAR右移的时候,最高位不变,最低位移入CF。AL和CL分别是AX和CX的高八位。ROL是循环左移指令,它移出的位移入CF,并且填补空出的位。SBB既是传说中的带进位减法指令,SBB AX,BX的执行结果是:2060...

美溪区18186651406: C语言问题,求大神解决,谢谢啦,我是小白,最好能够解释下原因 -
白些必诺: 已修改,看注释#include int main() { char a[20],b[20],c[50],*p1,*p2,*p3; p1=a,p2=b,p3=c; gets(a); while(*p1) { *p2 = (*p1)+3; //对字符串中的每个字符用加3的方法加密并存入数组b p1++; p2++; }*p2='\0'; //串结束符 p2=b ; //p2重新指向b的开始位置 while(*p2) { *p3 = (*p2)-3; //对b中的字符串解密存入数组c p3++; p2++; }*p3='\0'; puts(a); //puts是输出一个串 puts(b); puts(c); return 0; }

美溪区18186651406: C语言问题,求大神解决,谢谢啦,我是小白,最好能够解释下原因.. -
白些必诺: #include<stdio.h> void findmin(int *s,int t,int*k)//找到最小值的函数.这个*s是数组的第一个元素,*k是指向第一个i的位置,就是k存储的是i的存储单元的地址 { int p; for(p=0,*k=p;p<t;p++)这点 if(s[p]<s[*k])这个s数组首地址的地址依然是指向a数组...

美溪区18186651406: c语言问题,求大神解答!给一个不多于5位的正整数.①求出它是几位数.②分别输出每一位数字.③按逆序输出各位数字.例如原数位465,应输出5 6 4.... -
白些必诺:[答案] #include#include#includeint main(){int num,tmp,i,j;int n[5]={0};//用于存储num分解后的每位上的数字,由于num不超过5位,所以数组有5个单元就可以了 int *sq_ls_num;printf("请输入一个不多于5位的正整数: ");sc...

美溪区18186651406: C语言问题,求大神解决,我是小白,解释下原因,谢谢拉.下列变量定义中合法的是 A) short - a=1 - .le - 1 ; B) double b=1+5e2.5 ; C) long do=0xfdaL ; D) float ... -
白些必诺:[答案] A 前面的0应该要写上 0.1e-1

美溪区18186651406: 各位C语言前辈们帮我解决一个C语言问题!谢谢啦!!!
白些必诺: #include <stdio.h> void main(){ char c[5]={'C','h','i','n','a'}; int i; for(i=0;i<5;i++){ c[i]=c[i]+4; printf("%c",c[i]); } }

美溪区18186651406: 跪求C语言大神解答,急用急用,谢谢大哥大姐们解答. 急需C语言大神,必有重谢 -
白些必诺: #include <stdio.h> int main() { int n,i; double s=0; scanf("%d", &n); for(i=2;i<=n;i+=2) { s+=1.0/i; } printf("%lf", s); return 0;}

美溪区18186651406: C语言问题,求大神解决,谢谢拉..我是小白,解释下原因 -
白些必诺: 同学,这个完全可以去翻书.自己解决啦,我不会告诉你其实我忘了的. 以下是模糊了的记忆了. -表示左对齐 6表示宽度 .2表示小数部分两位 e表示按科学表示法输出 然后宽度不够6 按实际宽度输出了

美溪区18186651406: c语言问题 求大神解答 -
白些必诺: 按题中的意思就是两个瓶子换一瓶汽水(不含瓶子),所以下面的代码就搞定了#include int main() { int n,i,a,b,sum=0; scanf("%d",&n); if(n sum = 0; } else { //两个以上可以换 sum = n/2; //直接除以2,因为int类型所以多一个瓶子也不影响 } printf("%d\n",sum); //这是答案 return 0; }

美溪区18186651406: 跪求解决C语言问题,我是大一新生,程序不要太简练,谢谢,解决后再加分
白些必诺: #include "stdio.h" void fun(char *s,char ch){ char *p; while(*s) { p=s; while(*p!=ch&&*p) { p++; } if(!*p) { return; } s=p; while(*p++=*(p+1)); }} void main(){ char sz[200]; char ch; printf("input string:"); gets(sz); printf("input char to delete:"); scanf("...

美溪区18186651406: C语言的问题,急求高手~~解决的话高分相赠 -
白些必诺: 以下为转贴:可能很多人在安装VC 6.0后有过点击“Compile”或者“Build”后被出现的 “Compiling... ,Error spawning cl.exe”错误提示给郁闷过.很多人的 选择是重装,实际...

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