zoukankan      html  css  js  c++  java
  • 【PAT】B1054 求平均值(20 分)

    一开始就想用sscanf和sprintf去实现,但是没有设计好思路,卡住了。
    看了网上别人的博客,都是用的很复杂的逻辑分别判断,一言不合就七八十航代码
    今天早上看了柳神的代码,发现跟自己的思路一样,开心的不得鸟。
    但是,但是,但是。
    算法很简单,一个小地方却坑了我很久,注意1的时候number没有s/喷血

    #include<stdio.h>
    #include<string.h>
    #include<map>
    #include<vector>
    #include<algorithm>
    using namespace std;
    
    int main(){
    	int N,legnum=0;
    	double sum=0;
    	scanf("%d",&N);
    	for(int i=0;i<N;i++){
    		char temp[100],temp3[100];
    		scanf("%s",temp);
    		double temp2;
    		sscanf(temp,"%lf",&temp2);
    		sprintf(temp3,"%.2lf",temp2);
    		int flag=0;
    		for(int j=0;j<strlen(temp);j++)
    			if(temp[j]!=temp3[j]) flag=1;
    		if(flag|| temp2 < -1000||temp2>1000){
    			printf("ERROR: %s is not a legal number
    ",temp);
    		}else{
    			sum+=temp2;legnum++;
    		}
    	}
    	if(legnum==1)
    		printf("The average of 1 number is %.2lf",sum);
    	else if(legnum>1)
    		printf("The average of %d numbers is %.2lf",legnum,sum/legnum);
    	else
    		printf("The average of 0 numbers is Undefined");
    	return 0;
    }
    
    
  • 相关阅读:
    net异步编程
    二维码的生成细节和原理
    4605 Magic Ball Game
    (Java实现) 子集和问题
    (Java实现) 组合的输出
    (Java实现) 自然数的拆分
    (Java实现) 装载问题
    (Java实现) 整数区间
    (Java实现) 最佳调度问题
    (Java实现) 最佳调度问题
  • 原文地址:https://www.cnblogs.com/hebust/p/9496798.html
Copyright © 2011-2022 走看看