为什么选c,d特别是第十题求详细解题方法.
来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/19 02:06:00
为什么选c,d特别是第十题求详细解题方法.
A a是1行4列的数组,而赋值列表中有5个元素,是放不下的
B 定义二维数组的时候要求列数不能为空,而行数可以由后面的赋值列表决定,若没有赋值列表那么行数也不能为空
C b是2行3列的数组,而赋值列表中有3行(1个{}就是一行的数据),超过数组定义的行数
D 正确,相当于定义了一个1行3列的数组,y[0][0]=0,y[0][1]=0,y[0][2]=0
再问: 谢谢,想请问一下这道题。执行以下程序段后,m的值是 ?
int a[]={2,1,3,5,4};
int m=10,k,*ptr=a; for(k=0;k<5;k++) m+=*(ptr+k);
再答: m+=*(ptr+k);等价于m=m+*(ptr+k);
*(ptr+k)实际上就是ptr指向数组a的第k个单元,即a[k]
k=0 m=m+*(ptr+0)=m+a[0]=10+2=12;
k=1 m=m+*(ptr+1)=m+a[1]=12+1=13;
k=2 m=m+*(ptr+2)=m+a[2]=13+3=16;
k=3 m=m+*(ptr+3)=m+a[3]=16+5=21;
k=4 m=m+*(ptr+4)=m+a[4]=21+4=26;
k=5 退出循环
所以程序的功能就是将m与数组a的所有元素加起来后再赋给m
再问: *(ptr+k) ,k只代表循环次数而没有加进去咯。
再答: ptr+k表示的是ptr偏移k个单元对应的那个单元,由于ptr指向的数组a的起始地址,所以ptr偏移k个单元实际上就是a[k]的地址
*(ptr+k)就是取出地址为ptr+k的单元的内容,也就是a[k]的值
再问: 谢谢你~~
再问: 想再请问下这题~若要打开当前目录中的文本文件abc.txt进行只读操作,则下面符合此要求的函数调用是?A. fopen("abc.txt","rb");
B. fopen("abc.txt","r");
C. fopen("abc.txt","a");
D. fopen("abc.txt","w");
再问: 为什么选b呢
再问: 双引号难道不是选a么
再答: A 是要以二进制读方式打开文件,不符合要求,对文本文件的只读操作就用"r"
再问: 那为什么不是a,w呢?r是有特殊意义吗
再答: r表示只读
w表示可写
a表示追加
再问: 哦哦,好吧〒_〒谢谢
B 定义二维数组的时候要求列数不能为空,而行数可以由后面的赋值列表决定,若没有赋值列表那么行数也不能为空
C b是2行3列的数组,而赋值列表中有3行(1个{}就是一行的数据),超过数组定义的行数
D 正确,相当于定义了一个1行3列的数组,y[0][0]=0,y[0][1]=0,y[0][2]=0
再问: 谢谢,想请问一下这道题。执行以下程序段后,m的值是 ?
int a[]={2,1,3,5,4};
int m=10,k,*ptr=a; for(k=0;k<5;k++) m+=*(ptr+k);
再答: m+=*(ptr+k);等价于m=m+*(ptr+k);
*(ptr+k)实际上就是ptr指向数组a的第k个单元,即a[k]
k=0 m=m+*(ptr+0)=m+a[0]=10+2=12;
k=1 m=m+*(ptr+1)=m+a[1]=12+1=13;
k=2 m=m+*(ptr+2)=m+a[2]=13+3=16;
k=3 m=m+*(ptr+3)=m+a[3]=16+5=21;
k=4 m=m+*(ptr+4)=m+a[4]=21+4=26;
k=5 退出循环
所以程序的功能就是将m与数组a的所有元素加起来后再赋给m
再问: *(ptr+k) ,k只代表循环次数而没有加进去咯。
再答: ptr+k表示的是ptr偏移k个单元对应的那个单元,由于ptr指向的数组a的起始地址,所以ptr偏移k个单元实际上就是a[k]的地址
*(ptr+k)就是取出地址为ptr+k的单元的内容,也就是a[k]的值
再问: 谢谢你~~
再问: 想再请问下这题~若要打开当前目录中的文本文件abc.txt进行只读操作,则下面符合此要求的函数调用是?A. fopen("abc.txt","rb");
B. fopen("abc.txt","r");
C. fopen("abc.txt","a");
D. fopen("abc.txt","w");
再问: 为什么选b呢
再问: 双引号难道不是选a么
再答: A 是要以二进制读方式打开文件,不符合要求,对文本文件的只读操作就用"r"
再问: 那为什么不是a,w呢?r是有特殊意义吗
再答: r表示只读
w表示可写
a表示追加
再问: 哦哦,好吧〒_〒谢谢