阅读以下说明和C代码,填写程序中的空(1)~(5),将解答写入对应栏内。 【说明】 下面程序运行时,对输入的表达式进行计算并输出计算结果。设表达式由两个整数和一个运算符(+或-)构成,整数和运算符之间以空格分隔,运算符可以出现在两个整数之前、之间或

admin2021-03-13  48

问题 阅读以下说明和C代码,填写程序中的空(1)~(5),将解答写入对应栏内。
【说明】
    下面程序运行时,对输入的表达式进行计算并输出计算结果。设表达式由两个整数和一个运算符(+或-)构成,整数和运算符之间以空格分隔,运算符可以出现在两个整数之前、之间或之后,整数不超过4位,输入的两个整数和运算符都用字符串表示。
    例如,输入分别为“25+7”“+25 7”“25 7+”时,输出均为“25+7=32”。
【C代码】
#include
int str2int(char*s);                   //将数字字符串转换为整数
int isOperator(char*str);         //判断字符串的开头字符是否为运算符
void cal(char op,char a[],char b[])         //将数字串转化为对应整数后进行op所要求的计算
void solve(char a[],char b[],char C[]);
int main()
{
    char a[10],b[10],C[10];
    scanf(“%s%s%s”,a,b,c);
    //输入数据的有效性检测略,下面假设输入数据有效、正确
    solve(a,b,C);
    return 0;
}
int Str2int(char *S)
{
    int val=0;
    while(*s){
       val=(1)________+(*s-‘0’);    //将数字字符串转换为十进制整数
      (2)________;                              //令字符指针指向下一个数字字符
    }
    return Val;
}
int isOperator(char *str)
{
    return(*Str==‘+’||*Str--‘-’);
}
void cal(char op,char a[],char b[])
{
     switch(op){
          case‘+’:
             printf(“%s+%s=%d”,a,b,str2int(a)+str2int(b));
             break;
          case‘-’:
             printf(“%s-%S=%d”,a,b,str2int(a)-str2int(b));
             break;
      }
}
void solve(char a[],char b[],char C[])
{//解析输入的3个字符串,输出表达式及计算结果
    if(isOperator(a)){           //运算符在两个整数之前
       cal((3)________);
    }
    else if(isOperator(b)){     //运算符在两个整数之间
       cal((4)________);
    }
    else {                    //运算符在两个整数之后
       cal((5)________);
    }
}

选项

答案(1)val*10或等效形式 (2)s++或++s或S=S+1或s+=1或等效形式 (3)a[0],b,c或等效形式 其中,a[0]可表示为*a,b可替换为&b或&b[0],c可替换为&c或&c[0] (4)b[0],a,c或等效形式 其中,b[0]可表示为*,a可替换为&a或&a[0],c可替换为&c或&c[0] (5)c[0],a,b或等效形式 其中,c[0]可表示为*c,a可替换为&a或&a[O],b可替换为&b或&b[0]

解析 本题考查C程序的基本结构、函数调用及其应用。
    函数str2int(char*s)的功能是将数字字符串转换为整数数值,以数字串“123”为例,数值123可表示为(((0*10+1)*10+2)*10+3),获得1、2和3的方式为‘1’-‘0’、‘2’-‘0’,和‘3’-‘0’,据此可知空(1)处应填入“val*10”。根据注释,空(2)处应填入“s++”或其等效形式。
    根据说明和函数main中的数组a、b、c的作用,以及函数solve的形参定义和代码逻辑,空(3)处代码处理参数a为运算符的情况,此时b和c为运算数,因此根据函数cal(char op,char a[],char b[])的定义,空(3)处调用cal时的实参为“a[0],b,c”。空(4)处代码处理参数b为运算符的情况,此时a和c为运算数,因此根据函数cal(char op,chara[],char b[])的定义,空(4)处调用cal时的实参为“b[0],a,c”。空(5)处代码处理参数c为运算符的情况,此时a和b为运算数,因此根据函数cal(char op,char a[],char b[])的定义,空(5)处调用cal时的实参为“c[0],a,b”。
转载请注明原文地址:https://kaotiyun.com/show/t2jZ777K
0

最新回复(0)