raptor从c语言键盘输入五个数按降序上输入六个数,按降序输出,raptor实图

【项目1-函数版星号图】
这一组的練习意在通过调用函数输出星号图体会与理解函数的工作过程,并为其后编制自定义函数实现特定功能
(1)补充完下面的程序,使程序输出星号下面的星号图:

//请在下面写上调用printstars函数的语句使程序输出右图 //请在下面写上调用printstars函数的语句,使程序输出右图

(2)根据main函数Φ对printchs函数的调用以及printchs的功能要求,编写printchs函数使下面的程序能输出星号图: //在下面写printchs函数的定义,功能是输出一行若干个指定字符 //通过茬下面的循环里调用printchs函数输出右面的图

//在下面写printchs函数的定义,功能是输出一行若干个指定字符 //通过在下面的循环里调用printchs函数输出右面嘚图

(3)在上面的程序中,只改动一处输出下面的图形


//在下面写printchs函数的定义,功能是输出一行若干个指定字符

(4)利用printchs函数再实现以湔写过的其他星号图,体会定义函数带来了的好处

}

本文系本站原创,欢迎转载! 转载请紸明出处:

       好多同学都说:“老师我看到指针就晕!”,说实话见过晕血的,见过晕车的晕指针的到是第一次听说!

晕车,是因为耳朵里的一个器官对外界的振动太敏感导致身体调节功能紊乱,系统不能正常工作轻则,晕点中则,吐点重则,“重启”(倒地)时间长了,知道自己晕车于是,看到公交车TAXI,火车自行车,都晕!这样的病就大了上升到心理疾病了。这可得治我们都明白仩面的道理,怎么克服晕车呢你不可能避免做车,你要去面对怎么克服晕车也很简单,先是功心“口服不如心服”,所以先治心病:建立信心经常试着去做晃动不大的车,最好听着MP3这样能减缓心理对晕车的敏感度。时间长了慢慢的克服了心理作用,然后就要上升到治根的阶段了要去试着挑战做公交,TAXI船。

       回来我们开始治“晕指针”这号病其实很多同学晕指针,也是因为自己基础不好(身體素质不好)刚开始学的时候,不用心还没有弄的很明白,一编程(有的同学4年都没编过一个程序)就错形成了恐惧心理,其实C指針非常灵活它对学生的要求也比较高,说白了它要求有计算机的组成原理一些基础,如果有的话你回头看指针,So

       上面的程序如果你偠是灰常EASY的回答出来那你的功底已经不错了!心病是估计没有了,可以进入吃药保养阶段了(做题)

如果上面的题看起来就特别费劲,看来你晕的不轻得治。要不问题会很严重

基于上面的小测试,进入唐式第二方:“理气静心”

       我们先看把C指针的基础打好在这之湔先来复习下变量和常量,有的同学会问这是为什么,我只能告诉你你晕C指针,是因为你从刚开始有问题就没有重视或者你忽略了問题的严重性,导致现在的情况这也没有办法,中国的教育就不重视这一块说实话,大学里讲C语言的很多都没有太多的讲到变量和瑺量,这是很XXX的我们开始治疗。

  •  常量:其值不发生改变的量称谓常量常量又称为字面量,表述常数它们可以和数据类型结合起来分類,比如:整形常量浮点型常量,字符常量= =常量是可以不经过定义和初始化,而直接引用的

常量又分为:直接常量和符号常量。

直接常量又叫做:字面常量如12,04.6,‘a‘“abcd”

特点:常量的值在其作用域内不会发生改变,也不能再被赋值其在出现时就被当作一个立即数来使用。也就是说只能被访问,被读而不能被写,被赋值

  •  变量:其值可以改变的量称这变量。一个变量应该有一个名字在内存中占据一定的存储单元。变量在使用前必须要定义
  •  变量名和变量的值:

变量名是在,变量的声明的时候该名字就和内存中一块地址綁定在一起了。可以通过变量名直接找到对应的内存区域也可以通过地址找到其内存区域。因此有了引入指针的依据

变量的值是变量所对应的内存区域内存放的二进制序列。当该变量被声明成整形时内存区域的二进制序列被以整形的形式翻译出来。比如:int a = 97; 其在内存中昰以97的二进制形式存放的当使用时,他会被以10进制形式表现出来同样的char a = ‘a’; a的ASIIC码是97,也是以97的二进制存放的使用时,会被以字符a的形式表现出来

如果变量是一个指针变量,那么指针变量里的二进制序列被翻译成一个地址

这里的指针变量p的值是a的地址(p = &a),它是什麼啊看下图:

声明了一个变量a,它是整型被赋值为10(它的值被翻译成整数),要形成这种思维时间长了你就知道这样做的好处了,叒声明了一个指针变量p,它是Int类型的(它指向的地址里面要装Int)然后将a变量的地址(ox2c406b24)给了p,这儿注意下现在访问a里面的值有了两种方式(其实本来也有这两种),一个是通过变量名a(绑定的)一个是通过地址ox2c406b24,地址ox2c406b24给了p了p指针变量(指针变量是变量,这个思维很重偠)里面存放的是ox2c406b24(a的地址)那么现在访问a可以通过:

如果你现在上面的都很明白了,那你有了晕指针好转的迹象只是迹象,(迹象だけです^_^)现在验证下是不是真的有好转:

ch是什么? ch 里面是什么 a是什么? a里面又是什么打印什么?

add是什么add里是什么? P是什么 P里媔是什么? *p 又是什么

嘿嘿,晕不别慌,再来。

上面的程序有没有问题?

差不多头疼的不行了吧没事,这是药劲好药都这样。

恏第一方到此为止,老中医要休息会

上一方药劲比较重,年轻人吗口味要重点。现在给你们点解药:

1、主要是测试类型转换还有對变量的理解是否到位。

2、对变量的值的理解是否到位

3、对常量宏替换的理解是否到位

4、对宏替换的理解是否到位

5、能否修改常量的值?

6、能否修改字符串常量的值

通过上面我们可以学到以下内容,重点记下,考试要考(这话在学校里很耳熟但是XXX的这样很不负责任):

       2、变量里的值,和其数据类型没有关系它只是一个二进制序列,不要将电脑想的多聪明它只认识0, 1,只不过这一堆01被其类型限定叻其代表的意义,类型为整形就是其值指针地址类型,就是内存里的一个地址字符型,就是其无符号整形代表的ASCII码

"abcdef";这行代码的意思昰告诉编译器:老编啊,我这儿有个抽屉(指针变量str)你给我找个房间(存放字符串的内存空间),找到后把钥匙给我放到这个抽屉裏。老编去找客房经理找到后问:有没有空房间啊,有的话给我一间一哥们要开房,客房经理去查房间入住情况(内存管理)最后說,这儿有一间它是老总的房间,你要不先用着你用没事,你可别乱动里面的东西你要是动的话,估计你那哥们就被KILL掉老板是黑社会的,不过你用没事。于是老编将老总房间钥匙给我放到了抽屉(指针变量str)里,这样我打开抽屉(指针变量),拿出房间(内存空间)钥匙(指针)去开房了,老编告诉的别乱动,用没事(读取)一定不能破坏里面的结构(修改数据内容),要是乱动(修妀数据)会出乱子的(段错误),然后你会被KILL的(异常结束程序)如果有两个人,就会Double

明白了常量和变量的区别后再进行后面的学習就轻松点了!下面我们来看下指针的双胞胎哥们,数组一般晕车人里面有很多也晕飞机,晕船所以呢,晕指针的也一般都会晕数組。

  •  数组:我们先咬文嚼字一下数指数据,组就是小组,由数据组成的小组就叫数组(学计算机的,不光要学好计算机也要学好語文,偶尔还要懂点医学你要是经常看计算机图书,你看台湾人写的书都有很多文言文在里面,我们这点做的完全没有台胞做的好所以人家计算机牛啊,世界上的电子代工台湾占了绝大数比例)。

数组有几个特点一定要注意看到数组就要想到:

1、  数组里面的数据類型是相同的,小组里面的成员肯定要一样的啊驴堆里站一马,驴马不分鸡窝里蹲一丹顶鹤,鹤立鸡群这都是不合群的东西,计算機里面也讲“和谐”我们顺便看下数据的基本类型:int float double char 这些是基本类型,所以它们可以存在以下类似数组:int a[10], float f[10], doule d[10], char str[10]; 它们每一个都有10个元素每一個元素的类型都是其前面声明的类型。我们是学嵌入式的我们不能光看到表面的东西,我们要看到底好东西是走了光才叫好,光有好東西别人不知道也不行。其实数组在内存中是连续分配的如下图:

定义了一char型数组a,它有6个元素分别是'A', 'B', 'C', 'D', 'E', 'F',它们在内存里面是连续存放的每个元素占用一个字节。 强烈谴责那些将'A' 当成"A"的人前者是单个字符,后者是字符串鄙视那些,问“字符和字符串有什么区别”的人,不知道字符和字符串的区别那你吃过羊肉串吗?单个羊肉块能叫串吗多个羊肉块串起来才叫串,所以字符是单个字符串可鉯是多个字符组成的数组(最后有一个结束符号\0),羊肉块串起来一烤就叫烤羊肉串字符串一拷,叫拷贝串学计算机哪有那么简单,偠是我开个学校入学前要体检,测视力量身高体重,....三围什么的,不行的PASS

       仔细看上面的图,每一个字符都有一个地址它们的跨喥是1(字节),数组的每个元素都可以通过下标来访问下标(index, for循环变量经常用i就是因为这个东西)其实就是他在数组中的位置也就昰他的号,拉10个人过来报数,12,3.....只不过,C语言里数组的下标是从0开始的在计算机里面能访问的最小单位就是字节了,也就是地址呮能找到以字节为单位不能再精确了。数组名a和变量名道理上是一样的在编译时就和数组的首地址绑定上了,a就是数组的首地址变量名和数组名其实都是方便人们记忆而取的代号,它在代码反汇编后其实不存在变量名的,回想下访问数据有两种方式,既然反汇编後的代码不存在变量名只能通过那种方式访问数据了,那就是地址数组中的每一个元素,可以被看成一个变量(回想下变量的特点)因此其可以被读,写修改,爱怎么得瑟怎么得瑟你只要不把房间拆了(内存空间),怎么折腾都行每一个元素的地址都可以通过艏地址的偏移量(offset这个词记住,四级里没有)来算出来这个偏移量说白了就是下标了。比如上面的图中:'C'所在地址0x28c5相对首地址0x28c3的偏移量是2,那a[2]也可以访问'C'了注意一点,a代表数组代表数组的首地址代表数组第一个元素的地址这“三个代表”一定要记住。那a+1呢a是彡个代表,那它是第一代表还是第二个代表还是第三个代表呢?这儿的a应该是第一个元素地址的意思表示的意思应该是&a[0]a+1是个地址的算術运算,而数组是个一维数组数组中每个元素都是一个字符,a+1就是a当前地址0x28c3的下一个元素的地址0x28c4(结合图来看)也就是'B'的地址,如果a昰一个二维数组名的话那么二维数组被编译器理解为一个一维数组,一维数组里的每一个元素是一个一维数组有点乱,别慌屡一下,看下图:

a是个二维数组它有3X4=12个字符元素,而编译器将它认为是一个一维数组它有三个元素,分别是a[0], a[1], a[2], 每一个元素是一个含有4个字符的數组那么a+1的话,是&a[0]的地址a[0]是一个一给数组,取了一个数组的地址再加1 ,肯定就是下一个数组的地址了就是a[1]上图,那么这个时候它嘚地址增加可不再是1了而是列数4,也就是说是a这个二维数组中元素(一维数组)的长度

4,结构体数组中地址加1,地址加sizeof(结构体)

       通過上面的分析可以看出,数组有很多地方很相似其实,编译器这哥们处理数组的时候就是将其看成指针来处理的没有办法,编译器只認地址变量名一直都是被编译器藐视的。

程序图这个名词是我自创的因为好多东西说不清,道不明一个图全搞定。

上面的执行结果昰什么已经很清楚了。休息会

本文系本站原创,欢迎转载! 转载请注明出处:

}

我要回帖

更多关于 c语言键盘输入五个数按降序 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信