一、基础练习 数列排序
陌生知识点:sort函数,数组用法,sort(a,a+n)
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
scanf("%d",&n);
int a[n];
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
sort(a,a+n); // 排序函数
for(int i=0;i<n;i++)
printf("%d ",a[i]);
return 0;
}
二、基础练习 时间转换
#include<bits/stdc++.h>
using namespace std;
int main()
{
int t,h,m,s;
scanf("%d",&t);
h=t/3600;
m=t%3600/60;
s=t%3600%60;
printf("%d:%d:%d",h,m,s);
return 0;
}
三、基础练习 字符串对比
陌生知识点:
(1)compare函数
(2)tolower函数
(toupper函数用法相似,不过,是把小写字母转换成大写字母)
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s1,s2;
cin>>s1>>s2;
int len1=s1.length();
int len2=s2.length();
if(len1!=len2)
{
printf("1");
return 0;
}
int ret=s1.compare(s2); //比较字符串函数,相同则为0
if(ret==0)
{
printf("2");
return 0;
}
int flag=1;
for(int i=0;i<len1;i++)
{
s1[i]=tolower(s1[i]); // 字符的小写形式,大写形式为函数toupper
s2[i]=tolower(s2[i]);
if(s1[i]!=s2[i])
{
flag=0;
break;
}
}
if(flag==1) printf("3");
if(flag==0) printf("4");
return 0;
}
四、基础练习 分解质因数
陌生知识点:
(1)sqrt函数
(2)vector容器
(3) bool函数
#include<bits/stdc++.h>
using namespace std;
bool isprime(int n)
{
int m=sqrt(n);
for(int i=2;i<=m;i++)
{
if(n%i==0)
return false;
}
return true;
}
int main()
{
int a,b,temp;
vector<int> prime;
scanf("%d%d",&a,&b);
for(int i=2;i<=b;i++) //找出到从2到b的所有素数,构建素数表
{
if(isprime(i))
{
prime.push_back(i);
}
}
for(int i=a;i<=b;i++) //求区间[a,b]中所有整数的质因数分解
{
temp=i;
printf("%d=",i);
for(int j=0;j<prime.size();) //利用素数表,找出每个整数的质因数
{
if(temp%prime[j]==0)
{
temp/=prime[j]; //如果该数是素数,则temp变为1 ,
printf("%d",prime[j]); //或者如果只剩最小的因数了,temp也变为1
if(temp!=1) printf("*"); //为了判断 * 是否输出
}
else
{
j++;
}
}
printf("\n");
}
return 0;
}
五、基础练习 矩阵乘法
做题思路: 代码来自 矩阵知识
完整代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a[35][35];
int b[35][35];
int t[35][35];
int n,m;
scanf("%d%d",&n,&m);
int i,j,k;
for(i=0;i<n;i++)//1.输入矩阵,并给b矩阵赋相同的值
{
for(j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
b[i][j]=a[i][j];
}
}
if(m==0)//2.分情况讨论 (1)当求矩阵的0次幂,即m=0时
{
for(i=0;i<n;i++)//矩阵的0次幂为单元矩阵
{
for(j=0;j<n;j++)
{
if(i==j) printf("1 ");
else printf("0 ");
}
printf("\n");
}
return 0;
}
if(m==1) //2.(2)当求矩阵的1次幂,即m=1时
{
for(i=0;i<n;i++) //矩阵的1次幂为它本身
{
for(j=0;j<n;j++)
{
printf("%d",a[i][j]);
}
printf("\n");
}
return 0;
}
while(m>=2)//2.(3) 当求矩阵的m>=2次幂时
{
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
int k=n;
while(k)
{
//t的每一行的每一列等于a的每一行的每一列乘以b的每一列的每一行之和
t[i][j]+=b[i][k-1]*a[k-1][j];
k--;
}
}
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
b[i][j]=t[i][j];//把t矩阵赋值给b矩阵
t[i][j]=0;//并初始化t矩阵
}
}
m--;
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("%d ",b[i][j]);
}
printf("\n");
}
return 0;
}
六、基础练习 矩形面积交
知识点:swap,交换函数;sort,排序函数
#include<bits/stdc++.h>
using namespace std;
int main()
{
double x1,y1,x2,y2,x3,y3,x4,y4;
scanf("%lf%lf%lf%lf%lf%lf%lf%lf",&x1,&y1,&x2,&y2,&x3,&y3,&x4,&y4);
if(x1>x2) swap(x1,x2); //交换函数
if(y1>y2) swap(y1,y2);
if(x3>x4) swap(x3,x4);
if(y3>y4) swap(y3,y4);
double a[4]={x1,x2,x3,x4};
double b[4]={y1,y2,y3,y4};
sort(a,a+4); //排序函数
sort(b,b+4);
double s=(a[2]-a[1])*(b[2]-b[1]);
printf("%.2lf",s);
return 0;
}