计算机二级总结

1.结构体改值:

②第二套1 对形参b所指结构体的数据进行修改

1.结构体传参传地址&结构体

2.在函数里用->,在main里用.,数组用.

②第五套1 对形参b所指结构体的数据进行修改

返回指针变量的地址,不用取*,所以用struct student *(前面第二套1是没有返回值所以用void

③第12套3 计算出x所指数组中n个幂数之和

那个没有=!!

2.链表

①第二套2 为结点数据赋0到m-1的值

链表

传表头啊啊啊

结构体用*

②第四套1 将链表从小到大变成从大到小

h所指的data是没有数据的,是从b的data开始才有数据,所以要让p指向h->next指向b,然后q指向p的下一个地址,然后让q遍历与p比较,遍历完了之后p移位再让q遍历和p比较,直至p移向最后一位,最后一位的next是null(比他小就放前面

③第10套1 将链表从小到大排序

先创建链表

然后把该链表赋值给函数里的指针

两次循环,先固定p不变,然后遍历(通过让q指向next)q的data与p的data比较,然后如果p比较大就交换,然后让p位移(让p指向next)再进行如上操作

④第12套1 找出链表的最大值

固定p,然后位移遍历p与pmax比较(p[i]只是数组++,p还是指着第一个数,忘记哪道题了

3.移动

①第二套3 一维数组的数据移动

第0位移出,逐位前移,是那一位往前移动,所以j开始为1,然后把第一位赋值给最后一位

②第六套2 找出Ascll码最大的字符,放在第一位,其他向后移动

③第15套1 把字符最右边的n个字符赋值到新的数组里

算出字符串的长度

如果没有超过,那就把原来的s赋值给t

如果超了,那就从n遍历到数组最后一位那里,然后前面的s的不要了,最后t直接赋0

 ③第六套1 取出偶数 再进行倒序排列

倒序排就是!!取出最后一位然后*10,然后再向前一位一位的取值,再*10

④第七套1 取出ascll码值<97的,存入字符数组里形成一个新的字符串

n最后存完了最后一个字符之后还++了所以刚刚好

是s++移位不是*s++

n索引值就是符合条件的个数

⑤第8套 2 倒序+交叉存放

⑥第10套2 取出数字字符,形成新的字符串

⑦第10套 3  找出ascll码是奇数的删除,剩下的组成数组

strlen s就是这个数组的首地址

⑧第15套2 从低位开始取变量的奇数位上的数放在t中

低位是指从右边开始数

没有返回值,然后()用了*的在下面的函数里也要用*才是真实值

⑧第13套1 把偶数取出,按高位到低位排序

就是先看数据是否结束,然后取出个位看是否为偶数,为偶数则拼成另一个数,10即每一次进来就把进来的那个数字搞到高位,然后取完个位就把个位去掉

4.阶乘

①第三套1 算阶乘,为了不重复计算,搞了结构体还有old

阶乘

发现:结构体在函数里就用“.”

在被调用的函数里的结构体用->

old里储存着上一次的n 和阶乘

如果下一次输入的和上次一样,就输出old里的n 和 order

如果比上一次的大那就在上一次的基础上,多*上次没有*的即old.n+1开始到 现在的n 一直累*

如果比上一次小,就在上一次的基础上,减去多的那块,即/多*的那块,累/

储存这一次的n

②第五套3 求阶乘的倒数的累加

第一个for循环:从1到n,分别求每个阶乘

kk的值要保存

第二个for循环:求这个数i的阶乘

第二个for循环后进行累加

kk的值是保存的,所以就相当于已经做了一个累乘了,下一次循环就继续*就行

一次循环进行一个数的阶乘的实现+累加

③第11套3 求一个关于阶乘的公式

阶乘里:i=1,然后i<=m

求有分母分子的那种定义变量flaot

放阶乘的变量初始化要写1.0

④第13套3 求下列级数和

⑤第14套1  根据一个数学式子来写

有些值是要变化的,有时候他没变就是哪个空要填了

⑥第15套2 1/x*x

⑦第15套3 一个四位正整数==各个数字的四次方和,个数,数组

下面这个循环不能改变i的值,所以将i赋值给k,对k进行操作

进行完这一次的玫瑰后,下一个值进来sum要清0

j就是它的个数

5.立方和

①第三套2 三位数==各个位上数字的立方和

6.第9套1 输入一个数,然后进行相应的数学运算

7.第9套2 正整数是否等于某个连续正整数序列之和

6.因子

①第三套3 求给定整数的所有因子

要给下面没有赋值的变量赋值

是把可以被n整除的因子加起来

7.统计整数里数字的个数

①第四套2 计算出长整数各个位置上的数值,0有几多,1有几多

传地址的话,那个函数里要写*

②第五套2 返回字符的种类,大写小写

④第6套 3  找出数组里能被整除的元素,剩下的累加

已经定义了数组的长度

sum是一个指针,指向当前的地址,只有*sum才代表通过地址访问里面的内容

如果是结构体、数组就不用加*,因为他们本身就是地址

⑤第7套3 找出最大最小值

这种最大值最小值的直接设一个变量max然后把一个值赋给它,然后用它和其他的比较

⑥第11套1 统计其中的数字、小写字、大写字母的个数

⑦第11套2 找出所有因子,统计因子个数,判断是否为完数

因子:n%i==0的数

完数:因子之和恰好==这个数本身

找因子:如果n能被i整除,那么i就是n的因子

找完数:n如果能刚好减完它的因子,那他就是完数

⑧第12套2 计算s所指字符串中含有t所指字符串的数目

就是开始p、s指向一个空间,r、t指向一个空间,然后当r!=0时,看r和p的值是否相等,相等就两者同时向后位移,不相等就跳出循环,其实就是看这两个数组是否相等,相等同时向后位移,看看后面相不相等,

如果r位移到/0,说明前面都是相等的,然后计数的n++

如果r!=0,但是跳出循环了,证明没有相等的,s向后位移,然后p再回来s这里重新对从这个字母开始判断

r每次判断到不相等or判断到0,循环回来就让r回到原始t的位置

8.保留小数,四舍五入

①第四套3 保留两位小数+四舍五入

直接/1000.0得到小数

9.根据输入的数,写二维数组

①第7套2 根据输入的数,写二维数组,其实就是那个位数值*位数值(但是不是0*0

二维数组:int a[][M],行可以不写,列一定要写

不是0*0!

 ⑥第8套1 二维数组的改值

改变行,遍历列,把列的值改到新的一行

①第14套3 找二维数组的最大值

①第八套3 在数组中找符合情况的数字,并累加记录,存放到对应的数组里

然后他是0-10所以是11个

void  fun( int  *a,  int  *b)
{
	int i=0,n[10]={0,0,0,0,0,0,0,0,0,0},j=0;
	for(i=0;i<M;i++)b[i]=0;
	for(i=0;i<N;i++)
	{
		if(a[i]>=0 && a[i]<=9)
			n[0]++;
		if(a[i]>=10 && a[i]<=19)
			n[1]++;
		if(a[i]>=20 && a[i]<=29)
			n[2]++;
		if(a[i]>=30 && a[i]<=39)
			n[3]++;
		if(a[i]>=40 && a[i]<=49)
			n[4]++;
		if(a[i]>=50 && a[i]<=59)
			n[5]++;
		if(a[i]>=60 && a[i]<=69)
			n[6]++;
		if(a[i]>=70 && a[i]<=79)
			n[7]++;
		if(a[i]>=80 && a[i]<=89)
			n[8]++;
		if(a[i]>=90 && a[i]<=100)
			n[9]++;
        if(a[i]>=100)
			b[10]++;
	}
	for(j=0;j<M;j++)
	{
		b[j] = n[j];
	}
}
void  fun( int  *a,  int  *b)
{
	int i=0,j=0;
	for(i=0;i<M;i++)b[i]=0;
	for(i=0;i<N;i++)
	{
		if(a[i]>=0 && a[i]<=9)
			b[0]++;
		if(a[i]>=10 && a[i]<=19)
			b[1]++;
		if(a[i]>=20 && a[i]<=29)
			b[2]++;
		if(a[i]>=30 && a[i]<=39)
			b[3]++;
		if(a[i]>=40 && a[i]<=49)
			b[4]++;
		if(a[i]>=50 && a[i]<=59)
			b[5]++;
		if(a[i]>=60 && a[i]<=69)
			b[6]++;
		if(a[i]>=70 && a[i]<=79)
			b[7]++;
		if(a[i]>=80 && a[i]<=89)
			b[8]++;
		if(a[i]>=90 && a[i]<=99)
			b[9]++;
		if(a[i]>=100)
			b[10]++;
	}

在给数组赋值前要遍历数组,让数组清0,然后再赋值:

①先把b数组清0,然后遍历a,判断a的十位是什么,十位是什么就存在b的哪个位里

超过100的即/10超过10的就存在10里

累加

a[]也行,*a+i也行

③第9套3 判断是否是连续的字母序列

算出数组长度,or指针遍历

int  fun( char  *t )
{
	int i,flag=1,changdu=0;
	changdu = strlen(&t);
	for(i=0;i<changdu;i++)//uvwxyz
	{
		if((t[i+1] - t[i])!=1)
			flag=0;
	}
	return flag;

}

10.第13套2

原来是字符串啊喂,所以数字的ascll要-‘0’才是真正的

上一次的整体*8+7(八进制*8,+7加上他原本的基,来累加

  • 28
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值