其他分享
首页 > 其他分享> > 近期学习总结4

近期学习总结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