目录
1051 复数乘法
1052 卖个萌
1053 住房空置率
1054 求平均值
1055 集体照
1056 组合数的和
1057 数零壹
1058 选择题
1059 C语言竞赛
1060 爱丁顿数
1051 复数乘法
AC主要考察细节,比如:
(1)12、13行,如果-0.005
(2)16行的判断条件,如果虚部为负就不用添加运算符号,若是正数要手动加+号。
#include
#include
using namespace std;
int main()
{
double R1,R2,P1,P2,A,B;
cin>>R1>>P1>>R2>>P2;
A=R1*R2*cos(P1+P2);
B=R1*R2*sin(P1+P2);
if(A<0 && A>=-0.005) A=0;
if(B<0 && B>=-0.005) B=0;
printf("%.2lf",A);
if(B>=0)
printf("+%.2lfi",B);
else
printf("%.2lfi",B);
}
1052 卖个萌
(1)容器填充,考虑到中括号内元素不一定长度为1,因此设置start end存储;
(2)36行注意需要输出反斜杠时,源码中要写两个。
#include
#include
#include
using namespace std;
int main()
{
vector> v(3);
string s[3];
for(int i=0;i<3;i++)
getline(cin,s[i]);
for(int i=0;i<3;i++)
{
for(int j=0;j>n;
while(n--)
{
int a,b,c,d,e;
cin>>a>>b>>c>>d>>e;
if(a>v[0].size()||b>v[1].size()||c>v[2].size()||d>v[1].size()||e>v[0].size()||a<1||b<1||c<1||d<1||e<1)
cout<<"Are you kidding me? @\/@"<
1053 住房空置率
写的时候12和17行写顺手了写了while(N--),结果全错,因为N和n不能改动。
#include
#include
using namespace std;
int main()
{
int N,d;
double e;
cin>>N>>e>>d;
double may=0,certain=0;
for(int i=0;i>n;
int counter=0;
for(int j=0;j>temp;
if(tempn/2&&n>d)
{
certain++;
continue;
}
if(counter>n/2)
may++;
}
double may_rate=(may/N)*100.0;
double certain_rate=(certain/N)*100.0;
cout<
1054 求平均值
(1)注意几个不合法类型:
小数点出现了一次以上;
如果长度为1且仅有负号;
小数点后超过两位;
在区间之外;
负号出现了一次以上;
如果长度为1且仅有小数点;
(最后两种我写的时候也没有考虑到..)
(2)第42行的fabs()要记得添加cmath头文件;
(3)第57行的情况注意输出格式中,要写number而不是numbers不然测试点2会报错(说实话这里根本没想到,还是看的别人的题解才明白TT)(P.S.话说为什么0个都能用复数1个要用单数)。
#include
#include
#include
#include
#include
using namespace std;
int main()
{
int n;
cin>>n;
vector v;
while(n--)//判定以及填充容器过程
{
string s;
cin>>s;
int OneMinus=0;//是否仅有负号
int point=0;//小数点个数
int alpha=0;//字母个数
int pos=0;//小数点位置
for(int i=0;i0)
cout<<"ERROR: "<0)
cout<<"ERROR: "<1)
cout<<"ERROR: "<2)
cout<<"ERROR: "<1000)
cout<<"ERROR: "<
1055 集体照
参考了这位博主的题解;
主要难点应该填充output[m]的那块代码;
写的时候我又想当然地写了while(row--),结果测试点0和测试点4出错,因为row变量在执行段里用到了,这毛病最近犯好多次T^T。
#include
#include
#include
using namespace std;
struct info
{
string name;
int height;
};
bool cmp(info a,info b)
{
if(a.height!=b.height)
return a.height>b.height;
else
return a.name>n>>k;
vector student(n);
for(int i=0;i>student[i].name>>student[i].height;
sort(student.begin(),student.end(),cmp);
int t=0,row=k;
while(row)
{
if(row==k)
m=n-n/k*(k-1);//每排人数
else
m=n/k;
vector output(m);
output[m/2]=student[t].name;
//left
int j=m/2-1;
for(int i=t+1;i
1056 组合数的和
找出14行公式即可。
#include
using namespace std;
int main()
{
int n,a[10];
cin>>n;
int sum=0;
for(int i=0;i>a[i];
sum+=a[i];
}
sum=sum*(n-1)*11;
cout<
1057 数零壹
字母先转小写再处理相加。
#include
#include
using namespace std;
int main()
{
string s;
int sum=0;
int binary[2]={0};
getline(cin,s);
for(auto x:s)
if(isalpha(x))
sum=sum+tolower(x)-'a'+1;
while(sum)
{
binary[sum%2]++;
sum/=2;
}
cout<
1058 选择题
(1)参考了这篇题解;
(2)别忘了28行的getchar()。
#include
#include
#include
#include
using namespace std;
int main()
{
int N,M;
cin>>N>>M;
vector> right(M);
int score[M]={0};
int WrongCnt[M]={0};
for(int i=0;i>s>>o>>r;
for(int j=0;j>rightans;
right[i].insert(rightans);
}
score[i]=s;
}
getchar();
for(int i=0;i stuans;
for(auto x:s)
{
if(isalpha(x))
stuans.insert(x);
if(x==')')
{
if(stuans==right[counter])
StuScore+=score[counter];
else
WrongCnt[counter]++;
stuans.clear();
counter++;
}
}
cout<
1059 C语言竞赛
(1)思路:因为id是四位数字,所以创一个长度一万的数组,id作为下标内容是排名;
(2)35行要用printf限定长度,因为如果用cout不方便补前置0;
(3)isPrime()这个函数体中,第10行的for循环条件如果写i (4)debug最久的点在于最终输出时,判定素数的部分如果你第6行没有考虑到0和-1不算素数,那要注意把这个if判定加在rank[i]==0和-1都判定完之后。 水题。 欢迎分享,转载请注明来源:内存溢出#include
1060 爱丁顿数
#include
评论列表(0条)