char str[100];
sscanf(str,"%d",&n);//从⼀个字符串中读进与指定格式相符的数据,从左往右
sprintf(str,"%d",n);//字符串格式化命令,主要功能是把格式化的数据写⼊某个字符串中,从右往左
用法见博客
https://blog.csdn.net/weixin_42240667/article/details/105715597
柳婼代码
#include <iostream>
#include <cstdio>
#include <string.h>
using namespace std;
int main(){
char a[50],b[50];
int n,cnt=0;//cnt为合法数字的数目
double temp,sum=0.0;//sum为合法数字的和
cin>>n;
//逐一枚举每个字符串
for(int i=0;i<n;i++){
int flag=0;//flag为1表示字符串a,b不相等
scanf("%s",a);
//只要是合法数字,那么最后字符串b肯定与字符串a相同
sscanf(a,"%lf",&temp);//将字符串a以double形式输入到temp中
sprintf(b,"%0.2f",temp);//将temp以保留两位小数的浮点形式输入到字符串b中
for(int i=0;i<strlen(a);i++){
if(a[i]!=b[i]){
flag=1;
}
}
if(flag==1 || temp<-1000 || temp>1000){
printf("ERROR: %s is not a legal number\n",a);
}
else{
sum+=temp;
cnt++;
}
}
if(cnt==1){
printf("The average of 1 number is %0.2f",sum);
}
else if(cnt>1){
printf("The average of %d numbers is %0.2f",cnt,sum/cnt);
}
else{
printf("The average of 0 numbers is Undefined");
}
return 0;
}