小明在做加減法的算術題,有些題他不會做,那么他會不填答案,有些題可能做錯了。 請你寫個程式,判斷一下小明作對了幾道題?
輸入
每行一個算術式,形如a+b=c,a-b=c,a+b=,a-b=。0≤a,b,c≤100
輸出
輸出正確的題目數。
樣例輸入
1+1=2
1+2=4
2-1=1
2-2=
3+6=
樣例輸出
2
這是網上找的代碼:
#include<bits/stdc++.h>
using namespace std;
char s[50];
int main(){
int d1,d2,d3;
int cnt=0;
char op;
while(gets(s)){
d3=1000;
sscanf(s,"%d%c%d=%d",&d1,&op,&d2,&d3);
if(d1+d2==d3&&op=='+')
{
cnt++;
}
if(d1-d2==d3&&op=='-')
{
cnt++;
}
}
printf("%d\n",cnt);
return 0;
}
不懂這里的gets和sscanf函式,不能用scanf嗎?
還有這個輸入只有輸入CTRL+Z才會輸出cnt也有點懵
還有當d3是空格的時候, sscanf(s,"%d%c%d=%d",&d1,&op,&d2,&d3);是咋處理的
uj5u.com熱心網友回復:
恩,可以用的。//#include<bits/stdc++.h>
#include <stdio.h>
#include <stdlib.h>
//using namespace std;
char s[50];
int main(){
int d1,d2,d3;
int cnt=0;
char op;
//while(gets(s)){
while(scanf("%d%c%d=%d", &d1, &op, &d2, &d3) == 4){
//d3=1000;
//sscanf(s,"%d%c%d=%d",&d1,&op,&d2,&d3);
if(d1+d2==d3&&op=='+')
{
cnt++;
}
if(d1-d2==d3&&op=='-')
{
cnt++;
}
}
printf("%d\n",cnt);
return 0;
}
供參考~
建議查一下sscanf函式實作;可以看成scanf從s中讀取值匹配%d和%c
uj5u.com熱心網友回復:
謝謝你的回答,但是wa哦
uj5u.com熱心網友回復:
供參考:https://www.cnblogs.com/polebug/p/3502565.html轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/276761.html
標籤:C語言
上一篇:為什么這里不要加&和【】
下一篇:小白提問
