设char s[10];int i=5;,下列表达式中,正确的表达式是( ).(1分)

碎夏草莓2022-10-04 11:39:541条回答

设char s[10];int i=5;,下列表达式中,正确的表达式是( ).(1分)
A、s[i+6] B、*(s+i)
C、*(&s+i) D、*((s++)+i

已提交,审核后显示!提交回复

共1条回复
糙人他爷爷 共回答了20个问题 | 采纳率90%
A、s[i+6] //错误.数组超界.
B、*(s+i) //正确.
C、*(&s+i) //错误.&s+i这个地址超界,非法访问.
D、*((s++)+i //错误.s++试图改变s的值,而数组名的值不能改变.括号也不配对.
1年前

相关推荐

若定义 char s[2][3]={"ab","cd"},*p=(char *)s; 那么下列表达式语法正确,
若定义 char s[2][3]={"ab","cd"},*p=(char *)s; 那么下列表达式语法正确,
若定义
x09x09x09x09x09x09
char s[2][3]={“ab”,“cd”},*p=(char *)s;
那么下列表达式语法正确,并且其值与 s[1][1]相等的表达式(并非一定与其等价)是(
x09x09x09x09x09x09
).
(3分)
x09x09x09x09x09x09
A、*(s+3)
B、*++p+2
C、*s+2
D、p[1][1]
x09x09x09x09x09x09
x09x09x09x09x09x09
B
x09x09x09x09x09
x09x09x09x09
x09x09x09
x09x09
tabvf1年前1
ltss006 共回答了17个问题 | 采纳率94.1%
s[1][1] = 'd',这个应该没问题吧?第二个字符串的第二个字符.
*++p+2 这个比较有趣,p是一个char*指针,指向字符数组首地址,&s[0][0].
首先++的优先级更高执行++p得到的是&s[0][1],然后*运算符解引用,得到s[0][1]
s[0][1]的字符是'b',然后'b'+2,得到的就是'd'的ASCII码.
C语言 已知:char s[10], *p = s,则在下列语句中,错误的语句是 _____. 选择一项:
C语言 已知:char s[10], *p = s,则在下列语句中,错误的语句是 _____. 选择一项:
已知:char s[10], *p = s,则在下列语句中,错误的语句是 _____.
选择一项:
A. s = p + s
B. p = s + 5
C. s[2] = p[4]
D. *p = s[0]
月色宛然1年前1
jyyxx11 共回答了19个问题 | 采纳率89.5%
A
s是数组名,是不可修改的左值,不可作为赋值运算符的左参数
选出正确的调用语句(其中char s【5】,c;int b) 选择哪个选项?
选出正确的调用语句(其中char s【5】,c;int b) 选择哪个选项?
A.scanf(“%s%c”,s,c);
B.scanf(“%d%c”,b,c);
C.scanf(“%s%c”,&b,&c);
D.scanf(“%c%s”,&c,s);
cccnnn601年前1
田鸡变王子 共回答了17个问题 | 采纳率88.2%
给你讲讲为什么把,
scanf函数要求后面加地址符比如说:scanf("%d",&x);
现在分析char s[5],c;这里的s[5]是字符数组,他的地址就是他的首地址,s[0],由于是数组所以可以省去【0】,他的地址就是s。
所以输入的时候数组可以不带地址符,
不懂可追问,望采纳
若有定义语句:char s[10]="1234567\0\0",则strlen(s)的值是?到底strlen 函数计数时
若有定义语句:char s[10]="1234567 ",则strlen(s)的值是?到底strlen 函数计数时要不要加...
若有定义语句:char s[10]="1234567 ",则strlen(s)的值是?到底strlen 函数计数时要不要加上
pengrm1年前1
苏州雪 共回答了14个问题 | 采纳率92.9%
strlen函数在计算时遇到第一个 结束,返回数值.所以返回7
这和sizeof(s)=10不同,它是计算所占内存多少.
关于数组越界问题:char s[5] = {"ABCDE"}; char s[5] = {’A’,’B’,’C’,’D’
关于数组越界问题:char s[5] = {"ABCDE"}; char s[5] = {’A’,’B’,’C’,’D’,’E’};
两种情况是否都越界,情况有什么不同.末位是否为 ,怎样确保其为 ?
yutongforever1年前1
whiteinsky 共回答了16个问题 | 采纳率81.3%
追问为什么呢……#include
main(){
char s[5] = {'a','b','c','d','e'};
puts(s);
}
最后一位也是乱码啊
你最后又用了一个puts(s);
如果你输入的字符串长小于5,就没事,要是大于等于5,就又越界了.
因为puts()函数会在你输入的字符串后自动加一个“ ”作为结束符
若以下定义:char s[20],*ps=s; 则,以下赋值语句正确的是:
若以下定义:char s[20],*ps=s; 则,以下赋值语句正确的是:
A,s=ps+s; B,ps=ps; C、s[5]=ps[9]; D、ps=s[0];
补充一个问题:int a=3,则a+=a-=a*a的值是____
梁文_gg1年前1
醉也dd 共回答了19个问题 | 采纳率94.7%
C
s与ps都为地址,故D不正确;
B没有意义,A可能越界
若有定义语句:char s[3][10],(*k)[3],*p;则以下赋值语句正确的是:A、p=s; B、p=k; C、
若有定义语句:char s[3][10],(*k)[3],*p;则以下赋值语句正确的是:A、p=s; B、p=k; C、 p=S[0] D、k=s
我想知道其他3个答案为什么是错误的!,
及人慈善志愿者1年前1
eegeoiqp 共回答了16个问题 | 采纳率93.8%
首先说 指针数组和数组指针.
数组指针 char (*k)[3];
数组指针 char s[3][10] *(p[3]) p[3]存储的都是char*指针.
p*是普通的char指针
所以 p=s[0]正确
若有定义语句:char s[10]="1234567\0\0";,则strlen(s)的值是______.
绝理1年前1
天使判了我ff 共回答了18个问题 | 采纳率88.9%
7= =
遇到第一个' '返回.
请帮忙解释一下下面两道题1.设有以下一段程序 char s[ ]="Hello";char *p=s ; 执行完上面程序
请帮忙解释一下下面两道题
1.设有以下一段程序
char s[ ]="Hello";
char *p=s ;
执行完上面程序段后,*(p+5) 的值为 ( ) .
A、'o'
B、' '
C、'o' 的地址
D、不确定的值
2.已知:char s1[4]="12";char *ptr;则执行以下语句后的输出为.
ptr=s1;
printf("%cn",*(ptr+1));
A、字符'2'
B、字符'1'
C、字符'2'的地址
D、不确定
tear11021年前2
yanshi8 共回答了16个问题 | 采纳率93.8%
1.B
char s[ ]="Hello";定义字符串(字符串结尾为标志位" ")
char *p=s ;将字符串的地址(也就是第一个字符的地址)赋值给指针P
经过以上两步以后,*p='H';*(p+1)='e';*(p+2)='l';*(p+3)='l';*(p+4)='o';*(p+5)=' '
2.A
若已定义char s[10];则在下面表达式中不表示s[1]的地址是 .A)s+1 B)s++ C)&s[0]+1 D)
若已定义char s[10];则在下面表达式中不表示s[1]的地址是 .A)s+1 B)s++ C)&s[0]+1 D)&s[1]
若已定义char s[10];则在下面表达式中不表示s[1]的地址是 .
A)s+1 B)s++ C)&s[0]+1 D)&s[1]
为神马C错?
打错了 应该是为神马c是对的,那个+1不是应该在[ ]里面么?
liuzl1年前1
peng1118 共回答了16个问题 | 采纳率93.8%
错了因为数组名是常量不能自加 Cs[0]的地址再加一不就是s[1]的地址么?&s[0]+1=&s[1]
定义语句:char s[3][10],(*k)[3],*p;,则以下赋值语句正确的为啥是 A)p=s; B)p=k; C
定义语句:char s[3][10],(*k)[3],*p;,则以下赋值语句正确的为啥是 A)p=s; B)p=k; C)p=s[0]; D)k=s
kelemin1年前1
qwerit 共回答了19个问题 | 采纳率94.7%
p是char型指针,必须指向char型变量,s是char型数组,k是char型指针数组,s[0]是char型变量,所以A,B都错了,C是对的,k是char型指针数组,当其单独使用时表示首地址即此数组中第一个指针,也应该指向char型变量,而s是char型数组,所以错误
下面语句正确的是 A.char s[5] B.char s[5]="12345" C.chat s[56] D.char
下面语句正确的是 A.char s[5] B.char s[5]="12345" C.chat s[56] D.char s[5];s[2]="2"
就一疯子1年前1
大路朝天没有翅膀 共回答了18个问题 | 采纳率88.9%
我在想你这问题 每一个选项都没分号,如过有分好的话A对了,虽然没有初始化,也不会出现错误,B的话越界了想赋值“12345”,应该定义六个元素的数组,因为字符串后面会有‘ ’,C中char写错了,D中s[2]应该赋值字符而不是字符串,我认为答案是A.
编写一个FUN函数:long fun(char s[]),将一个数字字符串转换为一个整数(不得调用标准库函数,转换仅限于
编写一个FUN函数:long fun(char s[]),将一个数字字符串转换为一个整数(不得调用标准库函数,转换仅限于正整数).例如,若输入字符串“1234”,则函数把他转换为整数1234.
1.输入输出的功能在main函数中完成;
2,.fun函数完成转换功能
3.fun函数在main函数中调用
天哪kao1年前1
雨中漫步5778 共回答了13个问题 | 采纳率92.3%
#include
long fun(char str[])
{
long a = 0;
while(*str != ' ')
{
if(*str>='0' || *st
设有定义:char s[12]={"string"};则printf("%d",strlen(s));的输出值是多少?
孤独的混混1年前1
sweetie198401 共回答了15个问题 | 采纳率93.3%
输出的是6
strlen(s)遇到字符串结尾符号 才结束,而可以看出string一共6个字符所以输出6
和sizeof不同.lz可以试一下sizeof,结果不一样的
纯手打 谢谢采纳
下面程序段的运行结果是?Char s[80],*sp="HELLO!";sp=strcpy(s,sp);s[0]=''h
下面程序段的运行结果是?
Char s[80],*sp="HELLO!";
sp=strcpy(s,sp);
s[0]=''h'';
puts(sp);
-晴-朗-1年前1
000chris 共回答了24个问题 | 采纳率91.7%
Char s[80],*sp="HELLO!";
sp=strcpy(s,sp);
s[0]=''h'';
puts(sp);
符号错误,应该用''这个符号.不能用"".
s[0]是一个字符空间,怎么能用""字符串表示形式呢.
如果用''结果hELLO!
还有就是 Char 应该char 没有Char这个定义.
13下面是对数组s的初始化,其中错误的是 ( )。 A) char s[5]={"abc
13下面是对数组s的初始化,其中错误的是 ( )。 A) char s[5]={"abc
13下面是对数组s的初始化,其中错误的是 ( )。
A) char s[5]={"abc"} B) char s[5]={'a','b','c'};
C) char s[5]=" "; D) char s[5]="abcde";
为什么?
shaonianliumang1年前1
飞翔291 共回答了13个问题 | 采纳率92.3%
D,因为存不下,数组长度至少要比字符串长度长1,用来存字符串结束标志 ' '.
下列选项中正确的语句组是().A:char s[8]; s={"Beijing"};B:char *s; s={"Bei
下列选项中正确的语句组是().
A:char s[8]; s={"Beijing"};
B:char *s; s={"Beijing"};
C:char s[8]; s="Beijing";
D:char *s; s="Beijing";
选D?其他哪错了
吴承远1年前1
菜豆菜豆 共回答了18个问题 | 采纳率94.4%
A:char s[8]; s={"Beijing"}; // 字符串“Beijing”占9个字节的内存,s只分配了8个字节,会越界
B:char *s; s={"Beijing"}; // 如果在定义s的时候直接赋值是可以的,如char *s = {"Beijing"},但是定义好之后再赋值就不行
C:char s[8]; s="Beijing"; // 这个有两个错,A和B的错都发生了
D:char *s; s="Beijing"; // 这个正确,s是一个指针,指针可以用地址给它赋值,这里把内存常量区中的"Beijing"这个字符串的首地址赋值给s了.而C里面的数组是不行的,数组名字在被定义好以后就被分配地址了,并且是不可更改的
设变量定义为char s【】=”hello \nworld \ n”;则数组s中有几个元素
设变量定义为char s【】=”hello nworld n”;则数组s中有几个元素
A 12 B13 C14 D15
是哪十二个元素?不算元素吗?
shx_88991年前1
xingxing_star 共回答了21个问题 | 采纳率85.7%
“n”是一个字符,表示回车......其实是个转义符.
C语言题:定义:char s[20]="programming",*p=s;则不能正确表示S[2]元素的表达式是?
C语言题:定义:char s[20]="programming",*p=s;则不能正确表示S[2]元素的表达式是?
A:P+2 B:*(S+2) C:P[2] D:P+=2,*P
B和D我明白 主要是A和C
语堂佳佳1年前1
霍思燕01 共回答了17个问题 | 采纳率88.2%
*p=s,将数组的首地址赋给p,p+2 等同于 s+2,p[2]则等同于*(p+2),
C语言里,编译器会将指针操作转化为下标操作,如*(s+2)会被转化为s[2]运算
设有定义:char s[81];int i=10;,以下不能将一行(不超过80个字符)带有空格的字符串真确读入的语句或语
设有定义:char s[81];int i=10;,以下不能将一行(不超过80个字符)带有空格的字符串真确读入的语句或语句组是
A)gets(s)
B)while((s[i++]=getchar())!=”n”;s=” ”;
C)scanf(“%s”,s);
D)do{scanf(“%c”,&s);}while(s[i++]!=”n”);s=” ”;
浮号1年前1
may1268may 共回答了21个问题 | 采纳率95.2%
B 和D 不需要说了吧 ,做了判断 如果 s数列的小标是空格 就替换成n
说下gets
gets 这是一个函数 能输入字符串 包括空格,
至于scanf的话 默认是以空格来分隔的 所以 带空格的字符就无法正确读取
char s[10];s="abcd";printf("%s\n",s);请问输出的结果
啊加1年前1
芝麻狂ll 共回答了20个问题 | 采纳率100%
压根什么也输不出来,
s是数组名 也就是数组中首个元素的地址 你想想一个存储单元他能放需要5个存储单元的内容么?
在说你对数组名赋值本身就是错的