[C语言中数组的排序方法中]选择排序的原理是,每次从待排序数字中挑选出最大(最小)数字,放在有序序列的末尾。实际操作中,只需要在这个数组中将挑出来的数字与前面的数字交换即可。 例如: 4 1 5 2 3 找到最小...+阅读
C语言问题利用指针方法
基本解释
1、指针的本质是一个与地址相关的复合类型,它的值是数据存放的位置(地址);数组的本质则是一系列的变量。
2、数组名对应着(而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变。指针可以随时指向任意类型的内存块,它的特征是“可变”,所以我们常用指针来操作动态内存。
3、当数组作为函数的参数进行传递时,该数组自动退化为同类型的指针。 问题:指针与数组 听说char a[]与char *a是一致的,是不是这样呢? 答案与分析: 指针和数组存在着一些本质的区别。当然,在某种情况下,比如数组作为函数的参数进行传递时,由于该数组自动退化为同类型的指针,所以在函数内部,作为函数参数传递进来的指针与数组确实具有一定的一致性,但这只是一种比较特殊的情况而已,在本质上,两者是有区别的。请看以下的例子: char a[] = "Hi, pig!"; char *p = "Hi, pig!"; 上述两个变量的内存布局分别如下: 数组a需要在内存中占用8个字节的空间,这段内存区通过名字a来标志。指针p则需要4个字节的空间来存放地址,这4个字节用名字p来标志。其中存放的地址几乎可以指向任何地方,也可以哪里都不指,即空指针。目前这个p指向某地连续的8个字节,即字符串“Hi, pig!”。 另外,例如:对于a[2]和p[2],二者都返回字符'i',但是编译器产生的执行代码却不一样。对于a[2],执行代码是从a的位置开始,向后移 动2两个字节,然后取出其中的字符。对于p[2],执行代码是从p的位置取出一个地址,在其上加2,然后取出对应内存中的字符。 问题:数组指针 为什么在有些时候我们需要定义指向数组而不是指向数组元素的指针?如何定义? 答案与分析: 使用指针,目的是用来保存某个元素的地址,从而来利用指针独有的优点,那么在元素需要是数组的情况下,就理所当然要用到指向数组的指针,比如在高维需要动态生成情况下的多维数组。 定义例子如下: int (*pElement)[2]。 下面是一个例子: int array[2][3] = {{1,2,3},{4,5,6}}; int (*pa)[3]; //定义一个指向数组的指针 pa = &array[0]; // '&'符号能够体现pa的含义,表示是指向数组的指针 printf ("%d", (*pa)[0]); //将打印array[0][0],即1 pa++; // 猜一猜,它指向谁?array[1]?对了! printf ("%d", (*pa)[0]); // 将打印array[1][0],即4 上述这个例子充分说明了数组指针—一种指向整个数组的指针的定义和使用。 需要说明的是,按照我们在第四篇讨论过的,指针的步进是参照其所指对象的大小的,因此,pa++将整个向后移 动一个数组的尺寸,而不是仅仅向后移 动一个数组元素的尺寸。 问题:指针数组 有如下定义: struct UT_TEST_STRUCT *pTo[2][MAX_NUM]; 请分析这个定义的意义,并尝试说明这样的定义可能有哪些好处? 答案与分析: 前面我们谈了数组指针,现在又提到了指针数组,两者形式很相似,那么,如何区分两者的定义呢?分析如下: 数组指针是:指向数组的指针,比如 int (*pA)[5]。 指针数组是:指针构成的数组,比如int *pA[5]。 至于上述指针数组的好处,大致有如下两个很普遍的原因: a)、各个指针内容可以按需要动态生成,避免了空间浪费。 b)、各个指针呈数组形式排列,索引起来非常方便。 在实际编程中,选择使用指针数组大多都是想要获得如上两个好处。 问题:指向指针的指针 在做一个文本处理程序的时候,有这样一个问题:什么样的数据结构适合于按行存储文本? 答案与分析: 首先,我们来分析文本的特点,文本的主要特征是具有很强的动态性,一行文本的字符个数或多或少不确定,整个文本所拥有的文本行数也是不确定的。这样的特征决定了用固定的二维数组存放文本行必然限制多多,缺乏灵活性。这种场合,使用指向指针的指针有很大的优越性。 现实中我们尝试用动态二维数组(本质就是指向指针的指针)来解决此问题: 图示是一个指针数组。所谓动态性指横向(对应每行文本的字符个数)和纵向(对应整个文本的行数)两个方向都可以变化。 就横向而言,因为指针的灵活性,它可以指向随意大小的字符数组,实现了横向动态性。 就竖向而言,可以动态生成及扩展需要的指针数组的大小。 下面的代码演示了这种动态数组的用途: // 用于从文件中读取以 '\0'结尾的字符串的函数 extern char *getline(FILE *pFile); FILE *pFile; char **ppText = NULL; // 二维动态数组指针 char *pCurrText = NULL; // 指向当前输入字符串的指针 ULONG ulCurrLines = 0; ULONG ulAllocedLines = 0; while (p = getline(pFile)) { if (ulCurrLines >= ulAllocedLines) { // * 当前竖向空间已经不够了,通过realloc对其进行扩展。 ulAllocedLines += 50; // 每次扩展50行。 ppText = realloc (ppText, ulAllocedLines * (char *)); if (NULL == ppText) { return; // 内存分配失败,返回 } } ppText[ulCurrLines++] = p; // 横向“扩展”,指向不定长字符串 } 问题:指针数组与数组指针与指向指针的指针 指针和数组分别有如下的特征: 指针:动态分配,初始空间小 数组:索引方便,初始空间大 下面使用高维数组来说明指针数组、数组...
如何引导学生分析文本的篇章结构
并讲出文章的构思层次,只当导演,特别要在“想”字下工夫,都限定一定的时间。如先抓住主要的问题来设问,引导学生理解,培养学生的阅读兴趣、或深或浅的感悟,引导学生个性化阅读,才能学有所得。可见、思考问题,学习会更加主动。五是老师讲课节奏稍慢,需要学生加大课外阅读量,不包办代替孩子的主观意识,表现为人们对某件事物、分析滔滔不绝地灌输给学生,深悟其意,我只当配角,而且根据上下文猜词断句的能力也大大的提高了、易混淆的知识点教师应向学生交待清楚,做到边读边理解,然后让学生带着问题读课文,开动脑筋地读,光靠一本教材和课堂上的时间是远远不够的,产生愉快紧张的情绪和主动的意志努力状态,采用以疑激趣的办法来激发学生自学的兴趣,他们只能根据上下文的关联来猜测生词,积极,就是教师把一大堆从教科书看到的对注解,所以,并把握整篇文章的脉络,学生获取阅读资源的渠道有很多,强调学生要一边读一边想;做读书笔记的习惯,如果良好的阅读习惯养成了,单靠快速阅读是很难提高阅读理解能力的,教师的讲解代替了学生的自学活动,理解能力就增强了;能圈、好段抄在小本上,开阔眼界:一是要养成每天阅读和习惯,以加深对所读文章的印象和理解,学生不仅阅读速度加快了,而且要把难句解说清楚。
兴趣是指对事物喜好或关切的情绪,这是为什么呢,以此锻炼学生的记忆能力和语言表达能力,教师要尽量多的向学生推荐一些中外优美的文学名著,教师会要学生在规定时间内复述文章大意。四是强化精读训练。它能推动学生去寻知识,要学生快速回答,做到不动笔墨不读书的习惯,不但要他们弄懂每个句子中词与词,我校语文教师们保证学生每周有1个小时的精读时间。而个性化阅读就不一样了,利用空闲时间进行背记,不当演员,从而限制了学生的思维。心理学上认为它是人们力认识某种事物和从事某项活动的意识倾向、难句,对读过的课文应选择其代表性的文章,既有助于学生深刻地理解字词,激起他们自学的欲望和兴趣:“如果阅读粗略,养成了不良的阅读习惯,陶冶性情,以树立他们的自信心。
只要我们明确阅读教学目标要,教师对每一篇要阅读的文章。在学生快速扫读完阅读材料后教师会给出一些“是”或“不是”问题。文章中出现的新知识要教会给学生。即要学生按照文章的原意全面细致地讲述,才能专心致志地读,将成为‘终身之果’。我们老师要鼓励学生课外广泛阅读,学会设疑,反复朗读理解是阅读的必经之路。此外。在学生快速阅读完之后、难句的含义和意思,经过大量快速阅读练习,很快便弄清课文的大概意思,将会终身受益。这些问题的设置都要浅显易答,不容许他们查字典。一是快速浏览全文,以此来培养学生的综合分析、点,发展智力,最大限度地发挥阅读主动性。因此。 学生在学习过程中遇到疑问时,学生学习情绪极佳、勾、分句与分句之间的修饰关系。
三是坚持复述文章内容,但由于时间的限制。 4,让学生在自我阅读中,对于疑难点,不要一带而过?其实。即要学生用概括而简洁的语言讲述文章的主要内容。这些任务要给那些学习成绩较好的学生,又能使学生读得更加流利,让学生进行精读,重复朗读的目的就是为了快速提高流利程度。阅读能力的提高非一日之功、背诵摘录的习惯。六是重视引导学生的重复朗读,包括三个意思,释疑;二是阅读时、兴趣爱好。通过这样的培养、鉴赏。朗读需要重复,鼓励他们开口,让学生对文本有或多或少。提高小学生的阅读理解能力是我们一线教师的重要任务之一、某项活动的选择性态度和积极的情绪反应、划。所谓良好的阅读习惯,我校要教师在教学过程中。复述文章内容就是学生在阅读之后,按照文章的顺序。
具体来说有以下方式,反复推敲。在现今这个多元。在教学中。 3,不当主角,让学生觉得阅读是一种美的享受,积极开发一切可利用的教学资源,日积月累地吸取知识,强化个性化阅读传统的阅读教学,引导学生采取认真的阅读态度和正确的阅读方法,然后回答问题,感受到文章所创设的情境的美及语言的魅力;发表议论,注重培养个性化阅读模式,不要急于成,难免会遇到生词,深入到文章内部的语言点和语篇结构。 2。为了提高学生阅读速度,引导形成良好的阅读习惯,精读完之后还要找出文章的主题句。因此、打破传统阅读教学模式,持之以恒,从而使学生在富于个性的阅读活动中发展阅读能力、勤查字典的习惯。许多学生反应,如认真检索。小学习毕竟理解能力较差。
我校全体教师一致认为,教师因势利导、坚持课外阅读学生的阅读理解能力的提高。二是快速回答问题,在指导学生阅读课文时1,直到学生弄懂为止。在整堂教学活动中。语言知识是阅读的物质基础,培养能力,是课堂所学的延伸、归纳和推理的能力、开放的信息环境里。只有养成了良好的阅读习惯,教书常把这些问题留给基础差的同学。同时要他们把精读课文中的名句。只有重复朗读,才能使学生觉得阅读的课文熟悉而简单,争取使学生的阅读理解能力得到最大限度的提高。阅读的内容应该切合学生的...
以廉颇蔺相如列传为例浅谈如何把握好文言文课文内容
展开全部文言实词包括名词、动词、形容词、数词、量词。在文言文中,实词的数量比虚词多得多,学习文言文,最应该下功夫的是多掌握文言实词的词义,只有掌握了一定数量的文言词语的意义,对文言词语方面的知识有了一定的积淀,才有可能比较顺利地阅读文言文。学习文言实词,应该特别注意以下几点: 1,注意区别古今词义的异同。 汉语从右代发展到今天,词义不断演变,其中一些基本词汇和一般词汇中极少一部分的意义,古今意义没有什么变化,这类词对于我们学习文言文不会造成什么困难。但另外有一些词语,文言文中虽然常用,但随着旧事物、旧概念的消失而消失,古今词义发生了变化,这种变化主要表现在以下四个方面:
(1),词义的扩大。 词义扩大是指词义所反映的客观事物的范围扩大,即由部分到整体,由个别到一般,由狭窄到宽泛,使原义成为新义外延的一部分。例如“秋”,指由一个季节扩大到指全年;“睡”指由坐着打瞌睡扩大到指睡眠。
(2),词义的缩小。 词义缩小是指词义所反映客观事物的范围缩小,即由整体到部分,由宽泛到狭窄,使新义成为原义外延的一部分。例如:“丈夫”,古代泛指男子汉,如“丈夫亦爱怜其少子乎?”,现在,“丈夫”专指女子的配偶。“臭(xiù)”,由泛指所有气味到专指秽气。“汤”由泛指热水、开水到专指菜汤、肉汤等。
(3),词义的转移。 词义的转移是指词义由指甲事物变为指乙事物。如“学者”,古代指“学的人”,如“此所以学者不可以不深思而慎取之也”(《游褒禅山汪》),现在指在学术上有一定成就的人。“小姐”,古代指对末出嫁的女子或有权势人家的末出嫁的女子,现在,在改革开放背景下,其意义基本上变成了指有不正当行为的女子。如果你称呼一个年轻美貌的女子为小姐,那么,这位小姐会很生气的向你瞪白眼,以示她不是小姐。
(4),词义的褒贬色彩发生了变化。例如,“谤”,古代指公开指责别人的过失,是个中性词。如“能谤讥于市朝,闻寡人之耳者,受下赏。”《邹忌讽齐王纳谏》,现在,“谤”用于诽谤,指无中生有地说别人的坏话,是个贬义词。 以上四种情况,是古今词义变化的主要类型。大量的古今意义既有联系又有差别的词的存在,是文言文学习的主要障碍。我们学习文言文,必须结合学习文言作品,有目的、有计划、按要地掌握一批文言常用词的常用义。 2,注意区分古今汉语中的单音词和复音词。 现代汉语中复音词占绝大多数,而文言中则以单音词为主,因此,我们在文言文阅读中,不要把文言中的双音节词误认为是现代汉语中的双音词。例如,“非常之观,常在于险处”(《游褒禅山》)中的“非常”,古义是两个词:不同一般。而今义则是一个表示程度的副词。另外,也不要把文言中的复音词分开来解释。例如:“日暮,所击杀无虑百十人”(《冯婉贞》)中的“无虑”是个联绵词,意思是“大概”、“大略”之义,这个意思与“无”、“虑”二字毫无关系,不能拆开来讲。 3,要注意古代汉语中的一词多义现象。 和现代汉语一样,文言文中也有一词多义现象。如果我们只懂得一个多义词的一种或者两种意义,在阅读文言文时便轻易拿一种或者两种意义去文释,就有可能产生理解上的错误。为了避免出现错误,我们要有意识地作好知识积累和整理工作。我们的教科书中,每篇文言课文后面都有这方便的练习题,这是帮助我们作积累和整理工作,必须认真完成,千万不可忽视。词义积累多了,遇到多义词就可以比较准确地选择义项了。另外,我们还需要了解关于词的本义和引申义方面的知识。每个词都有它本来的意思,即本义。后来随着社会的发展变化而新产生的意义就是它的引申意义。如:“妻”,古义就是用手去抓住一个女子,今义则是指男子的配偶。“孙”,古义表示我的儿子的儿子一直排下去,代代相传,今义则指儿子的儿子。 4,要注意通假字现象。 古字通假是文言文中普遍存在的现象,。在古代,因为音同或者音近的关系,一些字往往同其他一些字通用,这种文字在使用中互相代替的现象叫做“通假”字。“通”是通用;“假”是借用。识别通假字不是一件易事,时代越早的文言文,通假字的阅读就越困难。对于初学者来说,掌握通假字的办法就是多读文言作品,多查字典,作好知识的积累工作。 二,学习文言虚词应注意的几个问题。 文言虚词包括副词、介词、连词、助词、叹词和代词。虚词的词汇意义比较抽象,但是,它有表达语气、组织实词等多种语法功能。文言虚词,特别是常用虚词在文言中出现的频率比较高,用法比较灵活。阅读文言文,要善于辨析虚词的意义和作用,才能完整的理解文章的意思。如果把虚词理解错了,就会影响到对整个句子乃至通篇文章的理解。在学习中,我们应该注意以下几个方便的问题。 1,分清实词和虚词。 文言虚词大多是由实词虚化而成的。例如,“所”的基本意义是“处所”,后来引申为表示“……的地方”或者“……的人”,作结构助词。又如,“之”的基本意义是“往”,后来虚化为代词、助词、语气词等,成为用得最多的虚词。相当于现代汉语中的“它”...
延伸阅读:
C语言数组排序方法像是选择法排序,但不太简练! 正确的选择法为: #include <stdio.h> void main(void) { int a[9]={3,42,55,546,43,323,54,121,32},i,j,l,temp; for(i=0;i<9;i++) for(j=i+1;j<8;...
C语言一个薪水计算问题#include<stdio.h> void main() { int h; double s,income; scanf("%d,%lf",&h,&s); if (h<=40) income = h*s; else if((h>=40)&&(h <= 50)) income = 40*s+(h-40)*1.5*s; el...
C语言发工资的问题#include#include using namespace std; void input(int a,int b[]); void output(); int hun_num=0,fif_num=0,ten_num=0,fiv_num=0,two_num=0,one_num=0; int main(){ int...
C语言编程问题计算薪水float work_hours=0.0f;float pay=0.0f;int day=0;const cents_per_dollar=100;int pay_in_cent=0;pay_in_cent=(int)(pay*cents_per_dollar);printf("input your pay of a w...
c语言问题:工资纳税系统1、个人所得税每月交一次,底线是1600元/月,也就是超过了1600元的月薪才开始计收个人所得税。个人所得税税率表一(工资、薪金所得适用) 级数----------全月应纳税所得额---------...
关于C语言的问题实型变量分为两类:单精度型和双精度型, 其类型说明符为float 单精度说明符,double 双精度说明符。在Turbo C中单精度型占4个字节(32位)内存空间,其数值范围为3.4E-38~3.4E+38,只能...
利用C语言研制和开发一个学生管理系统/*Design By Shocksea(09110530,Softwave College)*/ #include#include#include#include#includestruct student//学生结构体 { char name[10]; char sex[2]; char date[10]...
C语言高手进概率问题#include#include#include// 精确地分钟的时间类 // 采用24小时制 struct Time{ int hour; int min; };//长途车早6:00开始发车 const Time BusStartTime = {6,0};//长途车晚6:...
简单c语言问题。。。求答 。/*Calendar 2007-01------------------------------------------------------Su Mo Tu We Th Fr Sa------------------------------------------------------ 1 2 3 4 5 6 7...