计算机二级总结

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
    评论
计算机二级C语言知识点主要包括语法基础、数据类型、运算符、控制语句、函数、数组、字符串、结构体、指针等内容。 首先是语法基础,包括标识符的命名规则、注释的使用方法、变量的定义和声明等。掌握这些基础知识是理解后续知识的基础。 其次是数据类型,C语言中主要包括基本数据类型(如int、float、char等)和派生数据类型(如数组、结构体等)。对各种数据类型的特点、表示范围以及存储方式的了解,是编写程序的基础。 运算符包括算术运算符、关系运算符、逻辑运算符、位运算符等。掌握运算符的优先级和结合性,能够正确理解和使用运算符,编写出更加高效、准确的程序。 控制语句主要包括条件语句和循环语句。条件语句使用if-else语句和switch语句进行条件判断和多分支选择。循环语句包括for循环、while循环和do-while循环,用于重复执行一段代码。了解这些控制语句的用法和特点,能够正确地控制程序的执行流程。 函数是C语言的重要组成部分,能够提高代码的可重用性和可读性。学习函数的定义、调用和参数传递方式,能够编写出结构清晰、模块化的程序。 数组是一种能够存储多个相同类型数据的容器,了解数组的定义、使用和特点,能够处理大量数据,并进行各种操作。 字符串是一组字符的集合,掌握字符串的定义、初始化和操作函数的使用,能够处理字符串相关的操作,如拼接、比较等。 结构体是一种自定义的数据类型,可以包含多个不同类型的数据成员,了解结构体的定义和使用方式,能够处理更加复杂的数据结构。 指针是C语言的重要概念,通过指针可以直接访问内存地址,了解指针的定义、初始化和使用方式,能够灵活地处理内存中的数据。 综上所述,掌握二级C语言的知识点,对于理解计算机程序的执行原理、提高编程能力具有重要意义。通过实践和不断的积累,能够有效地应用这些知识点编写出高质量的C语言程序。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值