常见问题敲一敲

过了几天不用看书,不用练口语,而没有罪恶感的生活。觉得真是惬意!!!期待我练好口语,打码时能够长久享受这种幸福吧。

今天顺顺利利敲了两个题,还是比较开心的。(思维真的是需要锻炼出来的,很多不知道的小技巧避免不了熟悉的过程)

//求N边形的面积(包括凹边形)//

#include<cstdio>
#include<iostream>
#include<cmath>
using namespace std;
const int maxn=100;

struct point
{
int x;
int y;
} ss[maxn];
int main ()
{
int n,i;
double s;
while(cin>>n)
{
s=0;
if(n<3) continue;

for(i=0; i<n; i++)
{
cin>>ss[i].x;
cin>>ss[i].y;
}
for(i=0; i<n; i++)
s+=ss[i].x*ss[i+1].y-ss[i+1].x*ss[i].y;
s=s+ss[n-1].x*ss[0].y-ss[0].x*ss[n-1].y;
// cout<<s<<endl;
s=fabs(s/2);
cout<<s<<endl;
}
return 0;
}

//任意进制的转化//(C做的)

#include<stdio.h>
#include<iostream>
#include<string.h>
using namespace std;
const int maxn=100000;
char ss1[maxn],NUM[maxn];
int ss2[maxn],num[maxn];//输入的整形ss1-->字符ss2-->转化的整形num-->字符NUM
int main ()
{
int i,j,n,n1,n2;
while(cin>>n1>>ss1>>n2)//输入n1进制的ss1要求转化为n2进制

{
n=0;
for(i=0; i<strlen(ss1); i++)
{
if(ss1[i]>='A') ss2[i]=ss1[i]-55;
if(ss1[i]<='9') ss2[i]=ss1[i]-'0';
}
for(i=0;i<strlen(ss1);i++)
n=n*n1+ss2[i];
if(n2==10)//想想他为神马特殊?
{ cout<<n<<endl;
continue;
}
j=0;
do{
j++;
num[j]=n%n2;
n=n/n2;
}
while(n!=0);
for(i=0; i<=j; i++)
{
if(num[i]>=10) NUM[i]=num[i]+55;
if(num[i]<=9) NUM[i]=num[i]+'0';
}
for(int k=j;k>0;k--)
cout<<NUM[k];
cout<<endl;
}


return 0;
}

原文地址:https://www.cnblogs.com/sxy-798013203/p/5185979.html