以下程序运行后的输出结果是______。 main() { char*s="abcde";s+=2;printf("%1d\n",s);}A.cdeB.

题目

以下程序运行后的输出结果是______。 main() { char*s="abcde";s+=2;printf("%1d\n",s);}

A.cde

B.字符c的ASCII码值

C.字符c的地址

D.出错

如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

(25)有以下程序

#include<stdio.h>

void fun(char *s)

{while(*s)

{ if(*s%2==0) printf(“%c”,*s);

s++;

}

}

main()

{ char a[]={“good”};

fun(a);printf(“\n”);

}

注意:字母a的ASCII码值为97,程序运行后的输出结果是

A)d B)go C)god D)good


正确答案:A

第2题:

有以下程序 main() { char s[]="abcde"; s+=2; printf("%d\n",s[0]); } 执行后的结果是______。

A.输出字符a的ASCⅡ码

B.输出字符c的ASCⅡ码

C.输出字符c

D.程序出错


正确答案:D
解析:此题中s是—个字符数组,而字符数纽是在编绎时为它分配内存单元的,即此字符数组的地址在编译时是确定的,所以对此地址变量并不能赋值,故语句“s+=2;”错误,故程序出错。

第3题:

有以下程序

main()

{ char s[]="abcde";

s+=2;

printf("%d\n",s[0]);

}

执行后的结果是

A) 输出字符 a 的 ASCII 码

B) 输出字符 c 的 ASCII 码

C) 输出字符 c

D) 程序出错


正确答案:D
答案 D
解析:本题的错误之处在于下标越界。因为 s 是一个只有一个数组元素( “ abcde ” )的字符串数组,因此不能将指针在当前位置的基础上向后移动两位。

第4题:

有以下程序: #include<stdio.h> main { char s[]="rstuv"; printf("%c\n",*s+2); } 程序运行后的输出结果是( )。

A.tuv

B.字符t的ASCIl码值

C.t

D.出错


正确答案:C
本题中,语句printf函数输出的是字符指针S所指变量的ASCIl表对应值,即ASCIl表中值为s[0]+2的字符。所以选C。

第5题:

有下列程序:

main()

{char s[]="abcde";

s+=2;

printf("%d\n",s[0];

}

执行后的结果是( )。

A.输出字符a的ASCII码

B.输出字符c的ASCII码

C.输出字符c

D.程序出错


正确答案:D
解析:因为字符数组s1)中的数组名s表示的是一个地址常量。所以语句“s+=2;”不能将指针在当前位置的基础上再向后移动两位,因而程序编译时出错。

第6题:

下面程序段的运行结果是 char *S="abcde"; s+=2;printf("%d",s);

A.cde

B.字符'c'

C.字符'c'的地址

D.无确定的输出结果


正确答案:C
解析: 对于字符串指针,其保留的是整个串的首地址,即第一个字符的起始地址;当该指针做算术运算时,就是该指针根据其类型向后移动相应的存储空间。

第7题:

有以下程序 main() {char s[]={"aeiou"},*ps; ps=s; printf("%c\n",*ps+4); } 程序运行后输出的结果是______。

A.a

B.e

C.u

D.元素s[4]的地址


正确答案:B
解析:此题中先定义一个指针变量ps,并将s的首地址赋给此指针变量,*ps+4相当于先从指针变量ps指向的地址中取出相应数据“a”后,对此数据加4,a的ASCⅡ码为32,32+4=36,对应于字符e,所以答案选B。

第8题:

有以下程序

main()

{ char s[]={"aeiou"},*ps;

ps=s; printf("%c\n",*ps+4);

}

程序运行后的输出结果是

A)a

B)e

C)u

D) 元素 s[4] 的地址


正确答案:B
答案 B
解析:字符指针 ps 指向的是字符 a, 而 *ps+4 表示将字符 a 加 4 ,即字符 e 。

第9题:

以下程序运行后的输出结果是【】。includemain(){int k=1,s=0; do{ if((k%2)!=0)continue;

以下程序运行后的输出结果是【 】。

include<stdio.h>

main()

{ int k=1,s=0;

do{

if((k%2)!=0) continue;

s+=k; k++;

}while(k>10);

printf("s+%d\n",s);

}


正确答案:s=0
s=0 解析:do-while循环结构的形式如下:
do
循环体
while(表达式);
循环的执行过程如下:
①执行do后面循环体中的语句。
②计算while后—对圆括号中表达式的值。当值为非0时,转去执行步骤1;当值为0时,执行步骤3。
③退出do-while循环。
在本题中先判断k是否为偶数,如果不是则结束本次循环,进行下—次的循环条件判定,由于没有改变k的值,k>10的不成立,退出do-while循环,执行后面的printf("s=%d\n",s);语句,因为s=0,所以输出结果为s=0。

第10题:

有以下程序: int a=2; int f(int *a) {return (*a)++;) main() { int s=0; { int a=5; s+=f(&a); } s+=f(&a); printf("%d\n',s); } 执行后输出结果是( )。

A.10

B.9

C.7

D.8


正确答案:C
解析:本题中定义了一个全局变量a和局部变量a。在主函数中定义一个整型变量s并赋初值为0,接着定义了一个局部变量a并赋值为5,由于该局部变量的和全局变量a同名,全局变量在复合语句中将不起作用,然后调用函数f(&a)(该函数的作用是返回存储变量a中的值,并让该值加1,分析程序可知返回值为5,并让a值加1变为6),并将返回值加到s中。此时s的值为5,再执行该复合语句外的其他语句,同样调用函数f(&a),传递的参数是全局变量a,故其返回值为2,加到s中后s的值变为7,最后输出的s值为7,所以,4个选项中选项C符合题意。

更多相关问题