摘要:希賽網(wǎng)軟考頻道小編為大家整理了2019上半年軟考程序員下午真題第四部分,供大家參考。
4、閱讀以下說明和C代碼,填寫程序中的空(1) ~ (5),將解答寫入答題紙的對應(yīng)欄內(nèi)。
【說明】
下面程序運行時,對輸入的表達式進行計算并輸出計算結(jié)果。設(shè)表達式由兩個整數(shù)和一個運算符(+或-)構(gòu)成,整數(shù)和運算符之間以空格分隔,運算符可以出現(xiàn)在兩個整 數(shù)之前、之間或之后,整數(shù)不超過4位,輸入的兩個整數(shù)和運算符都用字符串表示。
例如,輸入分別為“25+7”、“+25 7”、“25 7+”時,輸出均為“25 + 7 = 32”。
問題內(nèi)容:
【C代碼】
#include<stdio.h>
int str2int(char *s); //將數(shù)字字符串轉(zhuǎn)換為整數(shù)
int isOperator(char *str); //判斷字符串的開頭字符是否為運算符
void cal(char op, char a[ ], charb[ ]); //將數(shù)字串轉(zhuǎn)化為對應(yīng)整數(shù)后進行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);
//輸入數(shù)據(jù)的有效性檢測略,下面假設(shè)輸入數(shù)據(jù)有效、正確
Solve(a,b,c);
Return0;
}
int str2int(char *s)
{
int val = 0;
while (*s) {
val = (1) + (*s - '0'); //將數(shù)字字符串轉(zhuǎn)換為十進制整數(shù)
(2) ; //令字符指針指向下一個數(shù)字字符
}
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個字符串,輸出表達式及計算結(jié)果
if (isOperator(a)) { //運算符在兩個整數(shù)之前
cal( (3) );
}
else if(isOperator(b)) { //運算符在兩個整數(shù)之間
cal( (4) );
}
else { //運算符在兩個整數(shù)之后
cal( (5) )
}
}
相關(guān)推薦:2019上半年程序員下午真題及答案
在線題庫:程序員歷年真題自測估分
軟考備考資料免費領(lǐng)取
去領(lǐng)取