天天看點

【洛谷 入門5】字元串 P1957 口算練習題

P1957 口算練習題

【洛谷 入門5】字元串 P1957 口算練習題
輸入輸出樣例
輸入 
4
a 64 46
275 125
c 11 99
b 46 64
輸出 
64+46=110
9
275+125=400
11
11*99=1089
10
46-64=-18
9
           

代碼如下(看了題解):

#include <bits/stdc++.h>
using namespace std;
char s[20],num[200],k;
int main()
{
	int n,i,x,y;
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		scanf("%s",&s);
		if(isalpha(s[0]))
		{
			k=s[0];
			scanf("%d%d",&x,&y);
		}
		else
		{
			x=atoi(s);
			scanf("%d",&y);
		}
		if(k=='a') sprintf(num,"%d+%d=%d",x,y,x+y);
		else if (k=='b')sprintf(num,"%d-%d=%d",x,y,x-y);
		else sprintf(num,"%d*%d=%d",x,y,x*y);
		printf("%s\n%d\n",num,strlen(num));
	}
   	return 0;	
}
           

1、

isalpha(s[0])

的作用:

輸入完第一個數字之後,開始輸入字元串。

isalpha()的意思是如果括号裡的字元串是字母則傳回非0數,如果不是字母傳回0。

在這裡,如果是字母的話,記錄下字母友善後面判斷。

如果不是字母,用到第二個函數。

2、

atoi(s)

的作用:

atoi(s)是把括号裡的字元串變成整數的函數。

如果輸入的字元串判斷出來不是a or b or c,那麼就是“與上一題運算類型相同的情況”,就把這個字元串(其實是數字)轉換成整數。

然後再輸入一個整數。

3、

sprintf(num,"%d+%d=%d",x,y,x+y)

的作用:

一個和printf長得很像的函數。

sprintf(num,"%d+%d=%d",x,y,x+y)的作用把後面x+y=m這一串東西搞成一個字元串儲存進num這個字元串數組。(因為題目要求一整個運算式的長度)。

當然搞進去之後他不會輸出,是以最後還要printf輸出。