今天也要开心啊!!!PEACE & LOVE
1051 复数乘法
思路: 这其实是一个数学问题;首先明确复数乘法的规则,之后就是极坐标转换,和一点三角函数的知识。
#include <stdio.h>
#include <math.h>
int main() {
double r1, r2, p1, p2;
double a, b;
scanf("%lf %lf %lf %lf", &r1, &p1, &r2, &p2);
a = (r1 * r2) * cos(p1 + p2);
b = (r1 * r2) * sin(p1 + p2);
if(fabs(a) < 0.01){
a = 0;
}
if(fabs(b) < 0.01){
b = 0;
}
if(b < 0){
printf("%.2lf-%.2lfi", a, fabs(b));
}
else{
printf("%.2lf+%.2lfi", a, b);
}
return 0;
}
1052 卖个萌
思路: 存储符号用正则表达式匹配,注意构成表情的符号可能有多个,所以定义三维数组;之后按给定顺序输出。
#include<stdio.h>
int main() {
int n, ch, arr[5];
char marks[3][10][5]= {0};
for(int i=0; i<3; i++) {
for(int j=0; (ch=getchar())!='\n';) {
if(ch == '[')
scanf("%[^]]", &marks[i][j++]);
}
}
scanf("%d", &n);
for(int i=0; i<n; i++) {
for(int j=0; j<5; j++)
scanf("%d", &arr[j]);
if(arr[0]>0 && arr[0]<=10 && *marks[0][--arr[0]]
&& arr[1]>0 && arr[1]<=10 && *marks[1][--arr[1]]
&& arr[2]>0 && arr[2]<=10 && *marks[2][--arr[2]]
&& arr[3]>0 && arr[3]<=10 && *marks[1][--arr[3]]
&& arr[4]>0 && arr[4]<=10 && *marks[0][--arr[4]]
)
printf("%s(%s%s%s)%s\n", marks[0][arr[0]], marks[1][arr[1]], marks[2][arr[2]],
marks[1][arr[3]], marks[0][arr[4]]);
else
printf("Are you kidding me? @\\/@\n");
}
return 0;
}
1053 住房空置率
思路: 一个统计题…
#include<stdio.h>
int main() {
int n, d, day, cnt, empty, _empty;//观察户数,阈值,观察天数,空置数,可能空置数
double e, _e;//电压阈值,每日用电数
cnt = empty = _empty = 0;
scanf("%d%lf%d", &n, &e, &d);
for(int i=0; i<n; i++) {
scanf("%d",&day);
for(int j=0; j<day; j++) {
scanf("%lf",&_e);
cnt = _e < e ? cnt+1 : cnt;
}
if(cnt > day/2) {
int flag = 0;
flag = day > d ? 1 : 0;//满足条件1且观察天数超过观察期阈值
if(flag)
empty++;
else
_empty++;
}
cnt = 0;
}
printf("%.1lf%% %.1lf%%", 1.0*_empty/n*100, 1.0*empty/n*100);
return 0;
}
1054 求平均值
思路: 用sscanf(), sprintf()指定格式输入输出;
#include<stdio.h>
#include<string.h>
#define LEN 100
int main() {
int n, flag, cnt = 0;
double tmp, sum = 0;
char s[LEN], _s[LEN];
scanf("%d", &n);
for(int i=0; i<n; i++) {
scanf("%s",&s);
sscanf(s,"%lf",&tmp);
sprintf(_s,"%.2f",tmp);
flag = 0;
for(int j=0; j<strlen(s); j++)
if(s[j] != _s[j])
flag = 1;
if(flag || tmp>1000 || tmp< -1000) {
printf("ERROR: %s is not a legal number\n", s);
continue;
} else {
sum += tmp;
cnt++;
}
}
if(cnt == 1)
printf("The average of 1 number is %.2f",sum);
else if(cnt == 0)
printf("The average of 0 numbers is Undefined");
else
printf("The average of %d numbers is %.2f", cnt, sum/cnt);
return 0;
}