计算机二级C语言题目,回答并解释!谢谢

来源:百度知道 编辑:UC知道 时间:2024/05/26 01:10:36
阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。
【程序】
#include <stdio.h>
#define MAXLEN 80
main()
{ int k=0,number=0;
char str[MAXLEN];
while((str[k]=getchar())!=’#’)
k++;
str[k]=’\0’;
for(k=0;str[k]!=’\0’;k++)
if(str[k]>=’0’&&str[k]<=’9’||str[k]==’A’||str[k]==’B’)
if(str[k]>=’0’&&str[k]<=’9’)
number=number*12+str[k]-‘0’;
else if(str[k]==’A’||str[k]==’B’)
number=number*12+str[k]-‘A’+10;
else ; /*第15行*/
else break; /*第16行*/
printf(“%d\n”,number);
}
(17) 程序运行时,输入10#,输出 (17) 。
A、16 B、10 C、12 D、1
(18) 程序运行时,输入1a0#,输出 (18) 。
A、264 B、10 C、1 D、12
(19) 将第16行改为“;”后,程序运行时,输入a*0#,输出 (19) 。
A、0 B、120 C、10 D、12
(20) 将第16行改为“else break;”后,删除第15行,程序运行时,输入160#,输出 (20) 。
A、10 B、12 C、216 D、1

#include <stdio.h>

#define MAXLEN 80

int main(void)
{
int k=0,number=0;
char str[MAXLEN];

while((str[k]=getchar())!='#')
k++;
str[k]='\0';

for(k=0;str[k];k++)
if(str[k]>='0'&&str[k]<='9'||str[k]=='A'||str[k]=='B')
if(str[k]>='0'&&str[k]<='9')
number=number*12+str[k]-'0';
else if(str[k]=='A'||str[k]=='B')
number=number*12+str[k]-'A'+10;
else ; /*第15行*/
else break; /*第16行*/

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

return 0;
}

---- 分析如下 ----
第17题
程序输入10#,
第一步 number=0*12+1=1
第二步 number=1*12+0=12

第18题
程序输入1a0#
第一步 number=0*12+1=1
因为 a 不在 A 和 Z范围内,所以跳出循环,此时number=1

第19题,程序修改第