第一篇:实验1 从C到C
实验1 从C到C++ 1.2 实例解析
【1-1】编写一个程序,实现一个整数、长整数、浮点数和双精度数除以2的计算。
【分析】这是一个典型的函数重载的程序。声明函数div()为除法函数,每个函数的功能基本都是一致的,不同的只是形式参数的类型不同而已。程序代码如下:
#include
int a;long b;
if(a!=0)else else if(c!=0)else
float c;
double d;
cin>>a>>b>>c>>d;cout<<“input a,b,c,d:”< if(b!=0) if(d!=0) else } return 0;【总结】这是一个最原始的程序,并且很机械化。有心的读者会发现上面的程序有许多重复的地方,这个正是我们后面模板里面会讲到的内容。 【1-2】编写一个函数,从三个整数中找出最大值和最小值,并返回。【分析】这个程序要求一次调用从主调函数中获取两个值,这不是值传递能够解决的问题,必然会考虑使用地址传递。实现地址传递有两种方法,一种是指针实现,另一种就是采用引用。变量的引用既方便又直观,非常利于理解。程序代码如下: #include } if(a<=b)if(a<=c)if(b<=c) swap(a,b);swap(a,c);swap(b,c);minnum=c;int t;t=a;a=b;b=t;} void max(int a,int b,int c,int &maxnum,int &minnum) maxnum=a;int main(){ } int a,b,c,maxnum,minnum;cout<<“input a,b,c:”;cin>>a>>b>>c;max(a,b,c,maxnum,minnum);cout<<“minnum=”< cout<<“maxnum=”< 【1-3】编写一个函数,求立方体体积,默认变长为10。 【分析】这个程序需要用到带有默认形参值的函数。则在声明函数时,为形参赋予默认值。当函数调用时,如果输入实参值,则默认函数值不起作用。而在没有实参值输入的情况下,就使用默认形参值进行计算。程序代码如下: #include float a,b,c; } float volumn(float a,float b,float c){ return a*b*c; } cout<<“没有实际参数值时,volumn=”< cout<<“有实际参数值时,volumn=”< 【1-4】编写一个程序,计算分别选修2、3和4门课程的学生的平均分。 【分析】这也是一个典型的函数重载的问题。这几个函数的区别在于参数个数不同。程序代码如下: #include cout<<“The first student:”< } float avg(float a,float b,float c){ return(a+b+c)/3;} float avg(float a,float b,float c,float d){ return(a+b+c+d)/4;} 【分析】这几个avg函数重载的出发点是由于其形参个数不同。并且由于函数体只有一句话,并且没有选择和循环等复杂结构,故也可以将其定义为内联函数,以提高程序运行效果。 1.3 实验与实践任务 1.3.1 实验名称 C++基础 1.3.2 实验目的 1.学习并利用C++语言的基本知识编写标准的C++程序; 2.掌握函数的定义和调用方法,练习带默认参数的函数、重载函数的使用; 3.掌握引用的使用; 4.掌握string类型的使用; 5.练习通过动态内存分配实现动态数组,并体会指针在其中的作用; 6.学会使用VC++6.0开发环境中的debug调试功能:单步执行、设置断点、观察变量值。 1.3.2 实验要求 1.调试程序要记录调试过程中出现的问题及解决办法; 2.给出每个问题的算法或画出流程图; 3.编写程序要规范、正确,上机调试过程和结果要有记录,并注意调试程序集成环境的掌握及应用,不断积累编程及调试经验; 4.做完实验后给出本实验的实验报告。 1.3.4 实验内容 1.3.4.1 照猫画虎 所谓照猫画虎,目的是想让读者先模仿别人编写的程序,通过模仿、分析和体会别人编写的程序,领悟编程的基本方法,模仿的过程中,可以加入自己对程序中的一些思考,尝试对别人编写的程序进行试验性修改,根据自己的试验是否成功,判断自己已经掌握的知识水平和能力强弱,使自己的实践能力不断得到提高。 作为初学者,必须搞清楚有关概念,很多概念就是在模仿、实验、思考的过程中,加深了理解、达到了融会贯通。对于下面的举例,依照下述提示进行实验操作,照猫画虎——通过模仿,理解程序的编辑、编译、运行概念。当然,对于前面列举的项目,读者也可以照猫画虎进行模仿。 【例1】输入并运行下列程序,并体会C++引入“默认参数”的用意。 #include #include int* a; int* &p=a; int b=10; p=&b; cout<<*a< cout<<*p< return 0;} 【例3】下面的程序利用重载函数max,分别返回char数组、int数组、long数组、float数组、double数组和字符串数组中的最大元素,请补充完成的函数,输入并运行程序,观察运行结果,深入理解什么是函数重载。 #include } int max(int *a,int n){ int temp=a[0];for(int i=1;i //返回float数组最大值的max函数 //返回double数组最大值的max函数 string max(string *a,int n){ string temp=a[0];for(int i=1;i } int main(){ char a[3]={'a','b','c'};int b[3]={1,2,3};long c[3]={1234,2345,3456};float d[3]={321.1f,322.1f,323.1f};double e[3]={2.1001,3.1001,4.1001};string name[3]={“Zhang”,“Li”,“Wang”};cout< #include int arraysize; int* array; cout<<“please input a number of array: ”; cin>>arraysize; if((array=new int[arraysize])==NULL)//申请一块连续的存储空间 { cout<<“Can't allocate memory, terminating.”;//未分配到存储空间 exit(1); } for(int count=0;count array[count]=count*2; cout< cout< delete[] array;return 0;} //释放array指向的连续存储空间 1.3.4.2 牛刀初试 所谓牛刀初试,目的是让读者把已经掌握的知识和能力应用到编程实践中。请读者根据题目的要求,自己编程设计,实现题目的要求。 【P1】编写一个程序,用C++的输入输出风格从键盘输入两个整数,然后显示以第一个数为底,第二次数为指数的结果(例如,用户输入2与4,那么结果就是16)。 【P2】求2个或3个正整数中的最大数,用带有默认参数的函数实现。 【P3】编一个程序,用同一个函数名对n个数据进行从小到大排序,数据类型可以是整型、单精度型、双精度型。用重载函数实现。 【P4】输入一个字符串,把其中的字符按逆序输出。如输入LIGHT,则输出THGIL。要求用string方法。 【P5】编写程序,调用传递引用的参数,实现两个字符串变量的交换。例如: char *ap=”hello”;char *bp=”how are you?”;交换的结果使得ap和bp指向的内容分别如下: ap: “how are you?” bp: “hello” 【P6】编写程序,通过指针动态生成一个二维数组,数组元素的值为该元素的行值和列值的和,最后输出该二维数组的每个元素。要求利用new和delete运算符。 1.3.4.3挑战自我 所谓挑战自我,是指这一部分给出的程序设计题目有一定的难度,需要你认真思考、认真设计并进行编程实现。如果遇到问题,在已有的知识中不能解决的话,你可以去后面的章节中寻找所需的知识。这样,你的编程水平才能不断提高。 1.编程计算图形的面积。程序可计算圆形、长方形、三角形的面积,运行时先提示用户选择图形的类型,然后,对圆形要求用户输入半径值,对长方形要求用户输入长和宽的值,对三角形要求用户输入三条边长的值,计算出面积的值后将其显示出来。使用debug调试功能观察程序运行中变量值的变化情况。 2.定义如下结构体: struct list { int n; struct list*next;};输入k个整数,将它们依次放入由结构体形成的链表(用new运算符生成链表项)中。再输入一个整数x,查找x在链表中第一次出现的位置(序号),若不存在,输出“不存在”。 从虚拟仿真到开放实验学习心得 2015-2016学年信息技术应用能力提升工程培训中学习了《虚拟实验与未来教学》的相关内容,觉得这次培训内容非常的丰富。包含了中小学所有科目的内容,尤其对理化科目的老师,学习后虚拟实验会极大地方便教学,激发学生的学习兴趣,使得课堂内容生动形象。 通过本次学习,我了解到虚拟实验的优点:突破空间约束,能够随时随地使用,安全性较高。虚拟实验为教学设备比如:电子白板、多媒体等提供互动教学软件,弥补了因教学实验器材不足而导致的无法实验。同时有些实验可能要一段时间的观察才能得出结论,会花费较长的时间。而课堂内容较多,实验时间不够充足,虚拟实验正好可以弥补不足。学生操作时难免会发生意外,有可能损坏贵重的实验仪器或对身体造成伤害。虚拟实验却不用担心这些问题。一些有危险性的实验,我们老师采用虚拟实验教学可以让学生对实验知识有直观的感受,老师也可以放心地让学生操作有危险性的实验。有些实验我们现在是现有条件没法实现的,那么通过虚拟实验就可以让学生看到实验情况,甚至亲身体会。 掌握了虚拟实验的方法,我们将其应用于实际教学当中,可以激发学生实验操作的兴趣,让他们乐于学习、乐于参与。虚拟实验将抽象的概念转化得更形象更生动,易于学生理解掌握学习内容。我们作为一名教师,必须要多地了解一些信息技术知识、和技能,在条件允许时将所学知识与教学实践相结合,通过多种多样的教学手段,丰富学科教学内容,激发学生学习兴趣,提高教学质量。让我们的教育事业更上一层楼! C语言实验 实验一:C语言程序调试基础 一、实验目的 1.掌握C语言源程序的编写方法和调试方法 2.学会使用VC6开发工具及调试过程的查错纠错能力。 二、任务 调试课本例子:例2.19、例3.5、例5.9 三、实验过程及结果 1.鼠标左键双击VC,打开程序;单击打开的New的页面中,单击 键,选择键,选择,在新,最后单击键,就可以建立一个新的页面。 2.在界面中输入例2.19的内容,单击 键进行调试,底下的对话框出现 一句话时,说明我们编写的程序无错,就可以单击键,来运行程序。运行结果及编写程序内容如图: 4.关闭这两个窗口,再单击 实验二:顺序程序设计 一、实验目的: 1.掌握顺序程序的设计方法; 键,选择 ; 2.掌握输入输出控制语句。 二、实验任务与要求 1.第3章课后习题T2 2.第3章课后习题T7 三、实验过程及结果 实验三:分支程序设计 一、目的 1.掌握分支程序控制语句的语法格式及纷争程序设计方法。2.了解分支程序的条件表达式及运算规则; 3.掌握分支程序控制语句的嵌套使用方法。 二、任务 1.第4章课后习题T6 2.第4章课后习题T8 3.第4章课后习题T12 三、实验过程及结果 实验四:循环程序设计 一、目的 1.掌握循环程序的控制语句的语法规则; 2.掌握循环程序的编写方法; 3.掌握循环程序的嵌套与退出控制方法。 二、任务 1.求100~200间的全部素数。2.第5章课后习题T8 3.第5章课后习题T10 三、实验过程及结果 实验五:数组 一、目的 1.掌握数组的定义及使用方法 2.掌握字符数组的相关操作函数。 二、任务 1.用数组求Fibonacci数列的钱40项,每5个一行。2.将一个3行8列的数组A转置为数组B。3.已知字符串str1=”abcde”,str2=”hijklm”,比阿尼写程序分别实现str1与str2的连接、求长度、比较等操作。 三、实验过程及结果 实验六:函数 一、目的 1.掌握函数的定义与调用方法。2.掌握函数参数的专递方式。 3.掌握函数的嵌套调用和递归调用方法。 二、任务 1.编写一函数,用冒泡排序法实现对数组A的排序。2.编写一函数,用选择排序法实现对数组A的排序。3.编写一函数,实现对给定年year是不是闰年。4.编写一函数,实现对给定整数m是不是素数。 5.利用递归算法,编写一函数,求Fibonacci数列的第n项。 三、实验过程及结果 实验七:变量作用域 一、目的 1.了解变量的存储类型及生命周期、作用域的性质。2.准确使用局部变量和全局变量。 二、任务 1.根据变量作用域知识,分析下列程序的运行效果。2.调试程序,分析个变量的作用范围和生命期。 #include Printf(“i=%dn”,i); int i=40; printf(“i=%dn”,i); fun1(); fun1();} 三、实验过程及结果 实验八:结构体 一、目的 1.掌握结构体的定义方法和使用。 二、任务 定义一日期(年、月、日)结构体,编程实现日期的输入、日期的输出、日期加上一个整型天数、两个日期数据相减等功能。 三、实验过程及结果 学习C++从入门到精通的的十本最经典书籍.txt不要为旧的悲伤而浪费新的眼泪!现在干什么事都要有经验的,除了老婆。没有100分的另一半,只有50分的两个人。[C语言] 学习C++从入门到精通的的十本最经典书籍 Post By:2008-9-19 14:33:33 1.《C++Primer》 有“C++的百科全书”,C++程序员人手必备。对语法、语义的描述非常细致和严谨,适合有一定经验的C、C++程序员作为工具书和理论指导书使用,但由于其有一定深度,而没有进阶顺序的章节安排,所以不适合初学者做为教材使用,价格略高。难度:★★☆ 质量:★★★★★ 广度:★★★★★ 深度:★★★★ 性价:★★★☆ 2.《C++Primer Plus》 初学C++不错的书,覆盖面较全,章节安排比较合理,由浅入深,也很容易,故因此失去了一些深度。价格比较便宜,但翻译质量略有不足。难度:☆ 质量:★★★☆ 广度:★★★★ 深度:★★★ 性价:★★★☆ 3.《Essential C++》 lippman 的一部面向初学者的作品。在他写了那么后一本primer之后,为何还要写这么薄这么浅的书呢?其实primer对于初学者来说太笨重了,而这本书却是从不同的方面——C++的本质和组织结构对语言进行阐释,可以帮助初学者对这门语言有一个大致的了解,但知识范围不很全面,不适合系统学习,读者需要一定的编程知识。难度:★☆ 质量:★★★★ 广度:★★★☆ 深度:★★★ 性价:★★☆ 4.《Effective C++》、《More Effective C++》 C++真牛人大手笔,之以条款的形式回答了程序员在使用C++时经常提出的“因该注意些什么?”,“因该避免什么?”,“因该怎样去解决?”,“为什么?”等问题。C++程序员想要让自己的水平上更高的档次,此二书必看。价格稍贵,有一定难度,不适合初学者。难度:★★★☆ 质量:★★★★★ 广度:★★★ 深度:★★★★★ 性价:★★ 5.《C++编程思想》 除了讲述语言之外,有一定的工程性,从设计者的角度来描述C++怎样应用在实际的项目中。语言描述的全面性欠佳,但还是有一定精度的,尤其是在一些小技巧方面。本书还引入了大量的战例,通过一个个的真实项目来引导你使用C++的思想去思考问题。翻译很差,有一定难度。 难度:★★☆ 质量:★★★ 广度:★★★☆ 深度:★★★★ 性价:★★★ 6.《C++大学教程》 正如其名,真正的大学教程,非常适合初学者学习,内容由浅入深,对C++各项特性的描述都很到位,章节的安排很有条理性,但深度略显不足,翻译质量不能称之为很好,有一定的疏漏,但对于厚度来讲,价格还算比较便宜。难度:★ 质量:★★★☆ 广度:★★★★★ 深度:★★★★ 性价:★★★★☆ 7.《C++语言的设计和演化》 对于热爱C++的朋友来说,确实好书一本,可以当做小说来读,可以放在厕所或床头上以供消遣。本书对语言本身描述很少,并有一定难度。读者需要对C++有一定了解,不适合初学者阅读。难度:★★★ 质量:★★★ 广度:★★☆ 深度:★★★★ 性价:★★★ 8.《C++程序设计语言》 C++之父所作,被称之为“C++圣经”。不仅对语言,而且对语言周边的一些如发展史、语义哲学都有比较详细的描述。对语言的描述较为全面,同时包含一部分和程序库相关联的知识,并有一定深度,适合有一定语言基础的初学者,翻译质量不错,价格适中。难度:★☆ 质量:★★★★☆ 广度:★★★★☆ 深度:★★★★ 性价:★★★☆ 9.《深度探索C++对象模型》 第一代C++编译器开发主管所写。如果你想成为真正的C++高手,看这本书,他为你讲述了编译器在处理各种语法时在“后台”所做的事。对C++有较深入了解的读者会在读后有恍然大悟之感。候杰翻译,质量相当不错,但内容太深,只适合对C++有较深了解的读者,价格偏贵。 难度:★★★★☆ 质量:★★★★★ 广度:★★★ 深度:★★★★★ 性价:★★ 10.《C++程序设计教程》(钱能-清华版) 国人所著,国人水平实在有限,深度和广度欠佳,放在这十大里实在是因为再挑不出好书了。可圈可点之处有讲解较为清析、简单,符合中国学生思路,价格便宜。难度:☆ 质量:★★★ 广度:★★★☆ 深度:★★★ 性价:★★★★★ 学习C++的话,看你目前的水平,我说一下从完全不懂到最后高手的专家推荐路线吧: 1.《C++ Primer》Lippman写的,经典中的经典,C++入门的宝典,读完这本书,基本语法过关,部分技巧掌握。 2.《The C++ programming language》C++的创始人Bjarne Stroustrup写的,这本书的权威性毋庸置疑,而且这里面讲到了一些比较底层的东西,如果你看过了《C++ Primer》的话,这本书可以跳着看,懂的就跳过。 3.《Effective C++》 Scott Meyers顶级大师用活泼幽默的语言写的书,这本书中讲到了许多应该注意的问题,这是十分值得购买的书。(Lippman曾把程序员分为看过effective c++的和没看过的两类。由此可见此书的重要性) 4.《More Effective C++》上书的姊妹篇,这本书里讲到了许多关键性的技术,对提高程序的效率是非常有帮助的。 5.《Advanced C++》这是一本神奇的书,里面讲到了许多连C++设计者都没想到的妙法,解决了许多看似不可能解决的问题。Scott Meyers曾隆重推荐过的书。 6.《Inside the C++ Objects Model》又是Lippman的大作!这本书讲到了他在开发第一个C++编译器时的许多想法,彻底解析了C++底层机制是如何实现对象模型的,看过这本书,你对C++的了解会有质的飞跃!从这刻起,你有权力说你是一个C++程序员了! 光学C++语言基本上看完上述的书就是高手了,其他经验要在实践中累积,你在看这些书的同时就应该多做一些小程序,小项目,提高水平的速度是飞快的.这是我个人的经验。另外,你学了C++还要开发程序,开发软件,无疑要使用MFC之类的东西 《API Programming》和《MFC Windows 程序设计》两书值得一看。这两本书能迅速提高你的实践水平。 求两个数之和。在两种情况下完成: ①数据在程序内部定义变量时赋初值,或者通过赋值语句赋值。②数据通过scanf()函数输入。静态输入: #include #include 设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆柱表面积、圆柱体积。要求用scanf 输入数据,输出计算结果。#include l=%6.2fn”,l);printf(“圆的面积为 s=%6.2fn”,s);printf(“圆柱的表面积为 sq=%6.2fn”,sq);printf(“圆柱的体积为 vz=%6.2fn”,vz);} 输入a、b、c三个整数,求出其中最大者,并连同三个源数据一起输出。#include if(x>z) max=x; else max=z;} else { if(y>z) max=y; else max=z;} return(max);} void main(){ int max(int x,int y,int z); int a,b,c,w; printf(“请您输入三个整数:”); scanf(“%d,%d,%d”,&a,&b,&c); printf(“您输入的三个数是:%d,%d,%dn”,a,b,c); w=max(a,b,c); printf(“这三个数中最大的是:%dn”,w);} 给出一个百分制成绩,要求输出成绩等级A、B、C、D、E。90分以上为A,80-89分为B,70-79分为C,60-69分为D,60分以下为E。要求输入一个成绩并打印出对应的等级制成绩。要求用switch语句完成。#include printf(“您输入了一个错误的成绩!请重新输入n”); scanf(“%d”,&grade);} c=grade/10;switch(c){ case 10: case 9: grade='A';break;case 8: grade='B';break;case 7: grade='C';break;case 6: grade='D';break;default: grade='E';} printf(“您输入的成绩的等级为:%Cn”,grade);} 计算当n为何值时,不等式sum=1 + 1/2 + 1/3 +… + 1/n >limit成立,输出n对应的sum(limit从键盘输入,要求用while、或do...while 语句,limit=10)。#include n++; sum=sum+1/n;} printf(“此时sum的值是:%fn”,sum);printf(“此时n的值为%fn”,n);} 计算M=11+ 22+ 33+…+ NN,直到N等于15为止,输出N和对应的M。(要求用for语句做) #include M=M+(n+10*n);} for(n=10;n<=15;n++){ M=M+(n+100*n);} n--;printf(“当n是%d时,M的值为%fn”,n,M);} 100匹马驮100担货,大马一匹驮3担,中马一匹驮2担,小马一匹驮0.5担,计算大、中、小马数目并输出。#include for(small=0;small<100;small+=2) for(mid=0;mid<50;mid++) { if(3*big+2*mid+small/2==100&&big+mid+small==100) { printf(“big:%dt,mid:%dt,small:%dn”,big,mid,small); sum++; } } printf(“一共有%d种组合方式n”,sum);} 求 sum=1!+2!+3!+...+10!,并输出结果。#include t=t*n; s=s+t;} printf(“1!+2!+3!+...+10!的和是:%en”,s);} 注意该程序的结果为:1!+2!+3!+...+10!的和是:4.037913e+006 是以科学计数法表示的结果,因为int的定义范围只能以此表示,如果用long int来输出,则可以得到正常表示的结果 #include t=t*n; s=s+t;} printf(“1!+2!+3!+...+10!的和是:%ldn”,s);} 1!+2!+3!+...+10!的和是:4037913 设数列为1,3,5,7,9,11,13,15,17,19,动态输入在数组array中,然后顺序打印输出该数列,再逆序打印输出该数列。#include scanf(“%d”,&array[i]);printf(“您输入的10个整数的顺序排列是:n”);for(i=0;i printf(“%-4d”,array[i]);printf(“n”);printf(“您输入的10个整数的逆序排列是:n”);for(i=N-1;i>=0;i--) printf(“%-4d”,array[i]);printf(“n”);} 将3x3阶二维数组的关于主对角线对称的元素互换。二维数组的第1至3行元素分别为1、2、3、4、5、6、7、8、9。用矩阵形式分别输出互换前、后的数组元素值。#include for(j=0;j<3;j++) printf(“%5d”,array[i][j]); printf(“n”);} for(i=1;i<3;i++) for(j=0;j { t=array[i][j]; array[i][j]=array[j][i]; array[j][i]=t; } printf(“After Exchanged:n”); for(i=0;i<3;i++) { for(j=0;j<3;j++) printf(“%5d”,array[i][j]); printf(“n”); } } 定义两个字符数组s1、s2,并用赋初值的方法把两个字符串“Computer”和“Language” 分别存放到s1、s2中,要求不用库函数strcat(),把s2连接到s1的尾部,然后以%s格式输出连接后的字符串s1。#include char s1[80],s2[40]; int i=0,j=0; printf(”input string1:“); scanf(”%s“,&s1); printf(”input string2:“); scanf(”%s“,&s2); while(s1[i]!=' ') i++; s1[i]=' '; i++; while(s2[j]!=' ') s1[i++]=s2[j++]; s1[i] = ' '; printf(”The new string is:%sn“,s1);} 用赋初值的方法把字符串”C is a general purpose, procedural, imperative computer programming language developed in 1972 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system.“存放到字符数组s中,编程统计其中的大写字母、小写字母、数字、空格、逗号的个数。#include char s[512] = ”C is a general purpose, procedural, imperative “ ”computer programming language developed in 1972 by Dennis“ ”Ritchie at the Bell Telephone Laboratories for use with “ ”the Unix operating system.“;int upper=0,lower=0,digit=0,space=0,comma=0;int i=0;while(s[i]) { if(s[i]>='A'&&s[i]<='Z')upper++; if(s[i]>='a'&&s[i]<='z')lower++; if(s[i]>='0'&&s[i]<='9')digit++; if(s[i]==' ')space++; if(s[i]==',')comma++; i++; } printf(”这串字符串有大写字母%d个,小写字母%d个,数字%d个,空格%d个,逗号%d个n“,upper,lower,digit,space,comma);} 试从主函数输入10个数据到数组中,编写对偶数项求和的子函数,它将计算结果返回给主函数,由主函数输出。#include int i,s;s=0; for(i=1;i s=s+a[i]; return(s);} void main(){ int a[10];int i,s;printf(”请您在数组内输入10个数:“);for(i=0;i<10;i++) scanf(”%d“,&a[i]);s=oqh(a,10);printf(”这个数组的偶数项的和是:%dn“,s);} 注意:oqh并无其他含义,是本人定义的一个函数名,偶数项求和的缩写。编写一个判断素数的程序,其中主函数用于完成输入一个整数并给出判断结果,单独编写一个函数用于判断其参数是否为素数,其返回值为1表示为素数,为0表示为非素数。#include if(n%i==0) { m=0; break; } if(i>t) m=1; else continue;} return(m);} void main(){ int n;int i;printf(”请输入你要判断的数:n“);scanf(”%d“,&n);while(n<=1){ printf(”您输入了一个错误的数据,请重新输入:n“); scanf(”%d“,&n);} if(prime(n)) printf(”您输入的是一个素数n“);else printf(”您输入的不是一个素数n“); } 输入三个整数,按由小到大的顺序输出。(要求使用指针来排序输出)#include t=*a; *a=*b; *b=t;} if(*a>*c){ t=*a; *a=*c; *c=t;} if(*b>*c){ t=*b; *b=*c; *c=t;} } void main(){ int a,b,c;printf(”请您输入三个整数:“);scanf(”%d %d %d“,&a,&b,&c);sort(&a,&b,&c);printf(”它们由小到大的排列顺序是:%d %d %dn“,a,b,c);} 或者是 #include void swap(int *p1,int *p2); int a,b,c; int *p1,*p2,*p3; printf(”请您输入三个整数:“); scanf(”%d %d %d“,&a,&b,&c); p1=&a; p2=&b; p3=&c; if(a>b)swap(p1,p2); if(a>c)swap(p1,p3); if(b>c)swap(p2,p3); printf(”它们由小到大的排列顺序是:%d %d %dn“,a,b,c);} void swap(int *p1,int *p2){ int p; p=*p1; *p1=*p2; *p2=p;} 输入十个整数,放在数组list中,然后用指针法从后向前输出该数组中的整数。#include int list[10],i,*p=list; printf(”请您输入10个整数:n“); for(i=0;i<10;i++) scanf(”%d“,&list[i]); printf(”这10个整数的逆序序列是:n“); for(i=9;i>=0;i--) printf(”%-4d“,*(p+i));} 如果输入的数字个数不定的情况,下面的代码可行 #include scanf(”%d“,&list[i]);p=&list[0];sort(p,n);printf(”这%d个整数的逆序序列是:n“,n);for(i=0;i printf(”%-4d“,list[i]);printf(”n“);} void sort(char *p,int m){ int i;char t,*p1,*p2;for(i=0;i p1=p+i; p2=p+(m-1-i); t=*p1; *p1=*p2; *p2=t;} } 编写一个函数,它能对一个字符串(“I am a student”)测出长度,要求函数的形参是一个指针变量,函数返回值是字符串的长度。#include n++; p++;} //*p=' ';//n++;return(n);} 若要统计结果包含结束符,则启用*p=' ';n++;两条语句 编一个函数cstrcmp实现两个字符串的比较,具体为: int cstrcmp(char *p1, char *p2)p1,p2分别指向字符串s1,s2;若s1=s2则函数返回0;若s1>s2,则函数返回1;若s1 return 0;} if(strcmp(p1,p2)>0){ return 1;} if(strcmp(p1,p2)<0){ return-1;} } void main(){ char *a;char *b;input();printf(”这两个字符串比较的结果是:%dn“,cstrcmp(a,b));} 如果要求返回的是不相同字母的ASCII码值: #include if(*(p1+i++)==' ')return(0); return(*(p1+i)-*(p2+i));} 有5个学生,每个学生的数据包括学号、姓名、3门课的成绩,用赋初值的方法输入5个学生的数据到结构体数组中,输出每个学生3门课的平均成绩。#include { char num[6]; char name[8];int score[3];float avr;}stu[5]={{”101“,”Zhou“,93,89,87},{”102“,”Yang“,85,80,78},{”103“,”Chen“, 77,70,83},{”104“,”Qian“,70,67,60},{”105“,”Li“,72,70,69}};void main(){ int i,j,sum;for(i=0;i<5;i++) { sum=0; for(j=0;j<3;j++) sum+=stu[i].score[j]; stu[i].avr=sum/3.0;} printf(”number name score1 score2 score3 averagen“);for(i=0;i<5;i++){ printf(”%3s%10s“,stu[i].num,stu[i].name); for(j=0;j<3;j++) printf(”%7d“,stu[i].score[j]); printf(”%10.2fn“,stu[i].avr);} } 如果按平均成绩由高到低排序后,输出每个学生的成绩 #include { char num[6]; char name[8]; int score[3];float avr; }stu[5]={{”101“,”Zhou“,93,89,87},{”102“,”Yang“,85,80,78},{”103“,”Chen“, 77,70,83},{”104“,”Qian“,70,67,60},{”105“,”Li“,72,70,69}},temp;void main(){ int i,j,sum; for(i=0;i<5;i++){ sum=0; for(j=0;j<3;j++) sum+=stu[i].score[j]; stu[i].avr=sum/3.0;} for(i=0;i<4;i++) for(j=i;j<4;j++) if(stu[j].avr { temp=stu[j]; stu[j]=stu[j+1]; stu[j+1]=temp; } printf(”number name score1 score2 score3 averagen“); for(i=0;i<5;i++) { printf(”%3s%10s“,stu[i].num,stu[i].name); for(j=0;j<3;j++) printf(”%7d“,stu[i].score[j]); printf(”%10.2fn",stu[i].avr); } }第二篇:从虚拟仿真到开放实验学习心得
第三篇:C语言实验
第四篇:学习C 从入门到精通的的十本最经典书籍
第五篇:C语言实验题目