近期学习总结4
作者:互联网
一、结构体
(1)结构体声明;
一般格式为;
struct 结构体名
{
成员变量;
};//使用分号表示结束;如:
//申明一个结构体
struct book
{ char title[MAXTITL];//一个字符串表示的titile 题目 ;
char author[MAXAUTL];//一个字符串表示的author作者 ;
float value;//一个浮点型表示的value价格;
};//注意分号不能少,这也相当于一条语句;
(2)结构体变量定义
1、先定义结构体类型后再定义结构体变量,格式为:struct 结构体名 变量名列表; struct book s1,s2,*ss;(注意这种之前要先定义结构体类型后再定义变量)
2、在定义结构体类型的同时定义结构体变量。
格式为
struct 结构体名
{ 成员列表;
}变量名列表;(这里结构体名是可以省的,但尽量别省)
3,直接定义结构体类型变量,就是第二种中省略结构体名的情况。 这种方式不能指明结构体类型名而是直接定义结构体变量,并且在值定义一次结构体变量时适用,无结构体名的结构体类型是无法重复使用的,也就是说,后面程序不能再定义此类型变量了,除非再写一次重复的struct。
ps:在使用结构体进行sort排序时,需进行函数的排序
列如:
struct num
{
int a,b;
}c[10010];//进行sort排序的时候sort(c,c+n,cmp)需加入函数cmp进行排序处理。
函数cmp
bool cmp(num n,num m)
{
if(n.a==m.a)
return n.b>m.b;
return n.a>m.a;
}
如果没有函数的话,会排序错误,代码无法运行。
二、算法
计算数列求和
4 3 2 1
1 3 2 1
1 2 2 1
1 2 3 1
1 2 3 4
算法解析:
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
long long int n;
long long int a[10001];
while(cin>>n)
{
for(long long int i=0;i<n;i++)
cin>>a[i];
sort(a,a+n);
long long int sum=0;
for(long long int j=1;j<n;j++)
sum=sum+(a[j]-a[j-1])*j*(n-j)*2;//进行累加排序相加,每次从1然后1加上1加2,逐渐增加,且由题意可知分两次增加,*2即可。
cout<<sum<<endl;
}
return 0;
}
标签:总结,struct,int,定义,long,学习,近期,体名,结构 来源: https://blog.csdn.net/weixin_43466783/article/details/88696331