sscanf与sprintf
sscanf() – 从一个字符串中读进与指定格式相符的数据
sprintf() – 字符串格式化命令,主要功能是把格式化的数据写入某个字符串中
sscanf() :从左到右,格式,被指定数
sprintf() :从右到左,格式,指定数
综合实例
题解(记无比傻的一次找bug)
柳神代码
又是参考的柳神的,因为柳神写的太好了呜呜
又是感谢@纪流汐夜的一天
但凡我用pat的测试看一下,也能找到如此傻兮兮的bug
竟然把两个number都忘记加s,应该是当时直接复制的单数的那一句Orz
一定!要!细心!
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,cnt=0;
char a[50],b[50];
double num,sum=0.0;
cin>>n;
while(n--)
{
bool flag=false;
scanf("%s",a);
sscanf(a,"%lf",&num);
//cout<<num<<endl;
sprintf(b,"%.2f",num);
//for(int j=0;j<strlen(b);j++)
// cout<<b[j];
for(int i=0;i<strlen(a);i++)
if(a[i]!=b[i]){
flag=true;
}
if(flag||num>1000||num<-1000)
{
printf("ERROR: %s is not a legal number\n",a);
continue;
}else{
cnt++;
sum+=num;
}
}
if(cnt==1)
printf("The average of 1 number is %.2f\n",sum);
else if(cnt>1)
printf("The average of %d numbers is %.2f\n",cnt,sum/cnt);
else
printf("The average of 0 numbers is Undefined\n");
return 0;
}