计算机二级

有下列程序:main{ char*p[]={"3697","2584"};int i,j;long num=0;for(i=0;i<2:i++){ j=0;while(p[i][j]!=\0){ if((p[i][j]-\0 )%2)num=1O*num+p[j][j]-0;j+=2;}}printf("%d\n",num);}程序执行后的输m结果是( )。A.35B.37C.39D.3975

题目

有下列程序:

main

{ char*p[]={"3697","2584"};

int i,j;long num=0;

for(i=0;i<2:i++)

{ j=0;

while(p[i][j]!='\0')

{ if((p[i][j]-'\0 ')%2)num=1O*num+p

[j][j]-'0';

j+=2;

}

}

printf("%d\n",num);

}

程序执行后的输m结果是( )。

A.35

B.37

C.39

D.3975

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

第1题:

下列程序的输出结果是()。 inClude main() {charch[2][5]={"1234","5678"},*p[2]; int

下列程序的输出结果是( )。

#inClude<stdio.h>

main()

{ charch[2][5]={"1234","5678"},*p[2];

int i,j,s=0;

for(i=0;i<2;i++)

p[i]=ch[i];

for(i=0;i<2;i++)

for(j=0;p[i][j]>'\0';j+=2)

{ s=p[i][j]-'0';

printf("%d",s);}

}

A.6357

B.6135

C.1357

D.691357


正确答案:C
解析:本题先将指针p指向二维数组ch[2][5],相当于p[0]="1234",p[1]="5678",通过双重for循环,是要将p中的字符隔一个输出一个,通过s=p[i][j]-'0'这条语句是将所要输出的字符转换成相应的+进制数。

第2题:

有以下程序:main(){ char *p[]={"3697","2584"}; int i, j; long num=0; for(i=0;i<2;i++) {j=0; while(p[i][j]!='\0') { if((p[il[j] -'0')%2) num=10*num+ p[i][j] -'0'; j+=2; } printf("%d\n", num);}程序执行后的输出结果是( )。

A.35

B.37

C.39

D.3975


正确答案:C
解析:本题首先定义了一个字符指针数组p,然后使用一个两重循环遍历数组p。因为内循环的循环变量j每次会加2,所以只能遍历到数组p每行中列下标为偶数的字符,它们是‘3’、‘9’、‘2’、‘8’。然后,将它们通过p[i][j]-‘0’表达式转换为对应的整数3、9、2、8,并用%2来判断该整数是否为奇数。所以最终能执行到num=10*num+p[i][j]-‘0’,语句的只有‘3’和‘9’两个字符。此时已不难算出,运行后num中的值为39。故应该选择C。

第3题:

有下列程序: main { char*p[]={"3697","2584"}; int i,j;long num=0; for(i=0;i<2:i++) { j=0; while(p[i][j]!=\0) { if((p[i][j]-\0 )%2)num=1O*num+p [j][j]-0; j+=2; } } printf("%d\n",num); } 程序执行后的输m结果是( )。

A.35

B.37

C.39

D.3975


正确答案:D
执行第一次for循环时,用表达式p[i][j]!=\0来判断字符串数组指针P是否到达字符串的结尾,如果没有到达,继续执行while中的语句。if语句表示(p[i][j]-\0)除2的余数不为0时,即字符串所有奇数,执行后面的语句。所以退出第1次for的循环体时,输出为397,执行第2次循环体。对字符串“2584”进行处理,输出结果为5,因而最后输出结果为3975。

第4题:

有以下程序: main() {char*p[]={"3697","2584"}; int i,j;long num=0; for(i=0;i<2;i++) {j=0; while(p[i][j]!='\0') {if((p[i][j]-'0')%2)num=10*num+p[i][j]-'0'; j+=2; } } printf("%d\n",num); } 程序执行后的输出结果是( )。

A.35

B.37

C.39

D.3975


正确答案:C
解析:通过赋值表达式指针数组*p[]等价于数组p[2][4];表达式“p[i][j]-'0'”可用来表示该字符数组元素的数值,故表达式“(p[i][j]-'0')%2”为判断该字符数组元素的数值的奇偶性,表达式“num=10*num+p[i][j]-'0'”中的数值运算表示直接加该字符数组元素的数值。

第5题:

有以下程序:include main( ) char * p[ ] = {"3697" ,"2548" }; int i,j;long num =0

有以下程序: #include <stdio.h> main( ) char * p[ ] = {"3697" ,"2548" }; int i,j; long num =0; for(i =0;i<2;i ++ ) { j =0; while(p[i][j]! ='\0') { if((p[i][j]-'0')%2) num=10*num+p[i][j]-'0'; j+ =2; } printf( "%d \n" ,num);}程序执行后的输出结果是( )。

A.35

B.37

C.39

D.3975


正确答案:C
解析:执行main函数中的for语句,当i=0,j=0时,p[i][j]=p[0)[0]='3',满足while循环条件,执行循环体中的if语句得num=3,j=2,此时p[i][j]=p[0][2]='9',满足循环条件,执行while循环体得num=39,j=4,判断while条件,不满足并退出while循环;再次执行for语句,当i=1,j=0,p[i][j]=p[1][0]=2,满足while条件,执行循环体中的if语句,但不符合if条件,所以num不进行运算,j进行加2运算j=2,此时p[i][j]=p[1][2]=4,if条件为假,num不进行运算,j进行加2运算j=4,再执行while语句,条件不符合退出循环。所以结果为39。

第6题:

有以下程序 main() { char *p[]={"3697","2548"}; int i,j; long num=0; for(i=0;i<2;i++) {j=0; while(p[i][j]!='\0') { if((p[i][j]-'0')%2) num=10*num+p[i][j]-'0'; j+=2; } } printf("%d\n",num); } 程序执行后的输出结果上______。

A.35

B.37

C.39

D.3975


正确答案:C
解析:此题考核的是指针数组。题目中定义的指针数组“*p[]”相当于一个两行四列的数组。执行for()语句i=0,j=O,p[i][j]=p[0][0]=3,满足while循环条件,执行循环体中的if语句得num=3,j=2,此时p[i][j]=p[0][2]=9,满足循环条件,执行while循环体得num=39,j=4,判断while条件且不符合并退出while循环;再次执行for()语句i=1,j=0,p[i][j]=p[1][0],满足while条件,执行循环体中的if语句,但不符合if条件,所以num不进行运算,j进行加2运算j=2,此时p[i][j]=p[1][2]=4,if条件还是为假,num不进行运算,j进行加2运算j=4,再执行while语句条件不符合退出循环。所以结果为39。

第7题:

有下列程序: main( ) { char*P[]={"3697","2584"); int i,j;long num=0; for(i=0;i<2;i++) {j=0; while(p[i][j]!=\0) {if((p[i][j]-t\0)%2)num=10*num+p[j][j]-0; j+=2; } } printf("%d\n",num); } 程序执行后的输出结果是( )。

A.35

B.37

C.39

D.3975


正确答案:D
执行第一次for循环时,用表达式p[i][J]!=\o来判断字符串数组指针P是否到达字符串的结尾,如果没有到达,继续执行while中的语句。if语句表示(p[i][j]-\o)除2的余数不为0时,即字符串所有奇数,执行后面的语句。所以退出第1次for的循环体时,输出为397,执行第2次循环体。对字符串“2584”进行处理,输出结果为5,因而最后输出结果为3975。

第8题:

有以下程序:main(){ char *p[]={"3697","2584"}; int i,j; long num=0; for(i=0;i<2;i++) {j=0;while(p[i][j]!=’\0’){ if((p[i][j]-’0’)%2= =0)num=10*num+p[i][j]-’0’; j+=2;} } printf("%d\n",num);}程序执行后的输出结果是( )。A.35 B.37C.39 D.28


正确答案:D
i=0,i<2,j=0,p[i][j]=3,不满足if判断条件,j+2=2,p[i][j]=9,不满足条件,j+2=4,不满足while循环条件,i+1=1,j=0,p[1][0]=2,满足if判断条件,num=10*num+p[i][j]-‘0’=2,j+2=2,p[1][2]=8,满足条件,num=10*2+p[i][j]-‘0’=28

第9题:

有以下程序

main()

{ char *p[]={"3697","2584"};

int i,j; long num=0;

for(i=0;i<2;i++)

{j=0;

while(p[i][j]!='\0')

{ if((p[i][j]-'0') % 2)num=10*num+p[i][j]-'0';

j+=2;

}

}

printf(" % d\n",num);

}

程序执行后的输出结果是

A)35

B)37

C)39

D)3975


正确答案:C

(42)C) 解析 : while(p[i][j]!='\0') 表示 p[i][j] 不等于 '\0' 时 , 继续执行 while 中的语句。 if 语句表示(p[i][j]-'\0') 除 2 的余数不为 0 时 , 执行后面的语句。最后执行的结果是 39 。