单选题有以下程序(注:字符a的ASCII码值为97):#include main(){ char *s={abc}; do {  printf(%d,*s%10);  ++s; }while(*s);}程序运行后的输出结果是(  )。A abcB 789C 7890D 979800

题目
单选题
有以下程序(注:字符a的ASCII码值为97):#include main(){ char *s={abc}; do {  printf(%d,*s%10);  ++s; }while(*s);}程序运行后的输出结果是(  )。
A

abc

B

789

C

7890

D

979800

参考答案和解析
正确答案: C
解析:
a、b、c的ASCII值分别为97、98、99。程序中执行输出s中字符对应的ASCII码与10进行模运算后的值,s是一个指针,首先指向字符a,先执行97%10,结果为7;然后++s,指针指向下一个字符b,执行98%10,结果为8,直到s所指为空,故最后输出的结果为789。答案选择B选项。
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第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的ASCII码

B.输出字符c的ASCII码

C.输出字符c

D.程序出错


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

第3题:

有以下程序

#include <stdio.h>

main()

{ char *s={"ABC"};

do

{ printf("%d",*s%10);s++;

}

while (*s);

}

注意 : 字母 A 的 ASCII 码值为 65 。程序运行后的输出结果是

A)5670

B)656667

C)567

D)ABC


正确答案:C

第4题:

有以下程序inc1udemain(){char*s={"ABC"}; do {printf("%d",*s%10);s++; }while(*s);

有以下程序 #inc1ude<stdio.h> main() { char*s={"ABC"}; do { printf("%d",*s%10); s++; } while(*s); } 注意字母A的ASCII码值为65。程序运行后的输出结果是______。

A.5670

B.656667

C.567

D.ABC


正确答案:C
解析:本题考查的是do-while语句的使用,do-while执行的过程是当while后面—对括号中表达式的值为非0时,转去执行循环体,当值为0时,退出循环。本题定义了—个指针变量s,并使得s指向字符串"ABC",的首地址,即把字符A的地址赋给s,因为do-while语句是先执行循环体再进行循环条件的判断,因此先执行printf语句,“s%10”是s对10的取模运算,第—字符A的ASCII码为65,故“65%10”取模运算结果为5,因此输出5,接着执行s++,s指向字符串的下—个字符,当字符串中字符没有循环完时,继续执行do-while语句,以此类推,B和C的分别为6和7,因此,选项C是正确的。

第5题:

有下列程序: #include<stdi0.h> voidmain( ) {char*s={"ABC"); do {printf("%d",*s%10);s++; }while(*s); } 注意:字母A的ASCIl码值为65。程序运行后的输出结果是( )。

A.5670

B.656667

C.567

D.ABC


正确答案:C
C。【解析】本题考查d0…while语句,至少执行一次循环体,依次输出ABC,这三个字母的ASCIl值对10求模的余数,字母A的ASCIl值对10求模的余数为5,字母B的ASCIl值对10求模的余数为6,字母c的ASCIl值对10求模的余数为7。所以正确答案为选项C。

第6题:

有下列程序:

include<stdi0.h>

voidmain( )

{char*s={"ABC");

do

{printf("%d",*s%10);s++;

}while(*s);

}

注意:字母A的ASCIl码值为65。程序运行后的输出结果是( )。

A.5670

B.656667

C.567

D.ABC


正确答案:C

C。【解析】本题考查d0…while语句,至少执行一次循环体,依次输出ABC,这三个字母的ASCIl值对10求模的余数,字母A的ASCIl值对10求模的余数为5,字母B的ASCIl值对10求模的余数为6,字母c的ASCIl值对10求模的余数为7。所以正确答案为选项C。

第7题:

以下程序运行后的输出结果是【】。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。

第8题:

(21)有以下程序

#include<stdio.h>

main()

{char *s=(“ABC);

do

{printf(“%d”,*s%10);s++;

}while(*s);

}

注意,字母A的ASCII码值为65。程序运行后的输出结果是

A)5670 B)656667 C)567 D)ABC


正确答案:C

第9题:

有以下程序: include main( ) {char s[ ] ="159" , * p;p=s;printf( "% c", * p + +

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

A.15

B.16

C.12

D.59


正确答案:A
解析:语句p=s将指针变量p指向字符数组s,第一次输出时,由于++和*为同一优先级,而结合方向为自右向左,所以,*p++相于*(p++)。但又因为“++”在p的右侧,所以,先输出*p,得到s[0]的值,然后P++,P指向s[1],故第二次输出时,输出s[1]的值,所以输出结果为15。

第10题:

有以下程序inc1udevoid fun(char*s){while(*s) {if(*s%2=0) printf("%c",*s); s++ }}m

有以下程序 #inc1ude<stdio.h> void fun(char*s) { while(*s) { if(*s%2=0) printf("%c",*s); s++ } } main() { char a[]={"good"}; fun(A) ; prntf("n\"); } 注意:字母a的ASCII码值为97,程序运行后的输出结果是______。

A.d

B.go

C.god

D.good


正确答案:A
解析:本题主要考查函数的调用以及字符的ASCII码值,由while循环语句可知,如果字符的ASCII码值为偶数就输出该字符,否则不输出,因为s的ASSCII码值为103;o的码值为111,d的码值为100,所以程序输出结果是d,因此,选项A是正确的。

更多相关问题