当前位置: 代码迷 >> 综合 >> PAT 1054.求平均值
  详细解决方案

PAT 1054.求平均值

热度:109   发布时间:2023-11-17 23:10:14.0

首先!!!还是看了小姐姐的思路!!因为很多知识点都不知道,只能这样慢慢刷题学习辣~

学到了sscanf()和sprintf()

第一个sscanf(源字符串,格式,目的变量)是以字符串为输入源,存储到你定义的格式变量里

第二个sprintf(目的字符串,格式,源变量)是将格式化的数据写入字符串


所以这道题先把输入的a字符串转换为数字

再从数字转换为b字符串

再判断ab字符串是否相等

若不相等说明这个数不合法 否则就合法辣~~


最后就是输出格式的问题辣~~认真看题


完整code:

#include<stdio.h>
#include<iostream>
#include<string.h>
using namespace std;int main()
{int T;cin >> T;char a[50],b[50];double temp,sum=0;int count=0;while(T--){scanf("%s",a);sscanf(a,"%lf",&temp);//将a字符串转换为格式lf存到temp里 //cout << temp << endl;sprintf(b, "%.2lf",temp);//将格式化的temp写入字符串b int flag = 0;for(int j=0;j<strlen(a);j++)//判断新的字符串跟原来的是不是相等的 {if(a[j]!=b[j])flag = 1;}if(flag || temp<-1000||temp>1000)//如果flag = 1表示不相等有问题 {printf("ERROR: %s is not a legal number\n",a);}else{count++;sum += temp; } }
//	cout  << sum << " " << count << " " <<sum/count<< endl;if(count==1){printf("The average of 1 number is %.2lf\n",sum);} else if(count > 1){printf("The average of %d numbers is %.2lf\n",count,(double)sum/count); } else{printf("The average of 0 numbers is Undefined\n");}return 0;} 



 

  相关解决方案