目录
B2108 图像模糊处理
#include<stdio.h>
#include<cmath>
int a[110][110],b[110][110];
int main(){
int n,m,sum;
scanf("%d %d",&n,&m);
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
scanf("%d",&a[i][j]);
}
}
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(i==0||i==n-1||j==0||j==m-1){
b[i][j]=a[i][j];
}else{
sum=a[i][j]+a[i-1][j]+a[i+1][j]+a[i][j-1]+a[i][j+1];
b[i][j]=round(sum/5.0); //round计算四舍五入,括号里的应为小数
}
}
}
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
printf("%d ",b[i][j]);
}
printf("\n");
}
return 0;
}
cmath库中的round()计算四舍五入,括号里的应为小数,所以是5.0
B2074 计算星期几
#include<stdio.h>
int main(){
int a,b,y=1;
scanf("%d %d",&a,&b);
for(int i=0;i<b;i++){
y*=a;
y%=7;
}
//printf("a %d a",y);
if(y==0) printf("Sunday");
else if(y==1) printf("Monday");
else if(y==2) printf("Tuesday");
else if(y==3) printf("Wednesday");
else if(y==4) printf("Thursday");
else if(y==5) printf("Friday");
else printf("Saturday");
return 0;
}
a的b次方,最大为100的1000次方,过大,会有溢出。可采用 边乘边除 的方法(余数的可乘性)【一边乘a一边除7留余数】
B2030 计算线段长度
#include<bits/stdc++.h>
#include<math.h>
int main(){
double xa,ya,xb,yb;
scanf("%lf %lf",&xa,&ya);
scanf("%lf %lf",&xb,&yb);
double x;
x=sqrt((xa-xb)*(xa-xb)+(ya-yb)*(ya-yb));
printf("%.3lf",x);
return 0;
}
math.h库的sqrt()可以计算平方根
B2022 输出保留 12 位小数的浮点数
#include<stdio.h>
int main(){
double a;
scanf("%lf",&a);
printf("%.12lf",a);
return 0;
}
B2107 图像旋转
#include<bits/stdc++.h>
int a[110][110],b[110][110];
int main(){
int n,m;
scanf("%d %d",&n,&m);
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
scanf("%d",&a[i][j]);
b[j][n-1-i]=a[i][j];
}
}
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
printf("%d ",b[i][j]);
}
printf("\n");
}
return 0;
}
将数组a旋转90度得到数组b,旋转过程中,a的一行变为b的一列,而b的列数与a的行数有关,从a的n*m变为b的m*n。