C语言实验报告范文
- 格式:docx
- 大小:10.18 KB
- 文档页数:3
C语言实验报告范文一、实验目的本实验旨在通过实际操作和编程,加深对C语言的理解和掌握,同时提高解决实际问题的能力。
二、实验内容1.利用C语言设计一个简单的计算器程序,实现简单的四则运算功能。
2.利用C语言设计一个简单的学生信息管理系统,实现添加、删除、修改和查询学生信息的功能。
三、实验步骤和代码实现1.计算器程序的设计与实现(1) 定义一个函数addition,传入两个参数,实现两数相加。
(2) 定义一个函数subtraction,传入两个参数,实现两数相减。
(3) 定义一个函数multiplication,传入两个参数,实现两数相乘。
(4) 定义一个函数division,传入两个参数,实现两数相除。
(5)在主函数中,通过用户的输入选择所需进行的运算,并输出结果。
代码如下:```C#include <stdio.h>float addition(float a, float b)return a + b;float subtraction(float a, float b)return a - b;float multiplication(float a, float b)return a * b;float division(float a, float b)if (b == 0)printf("Divisor cannot be zero!\n");return 0;}return a / b;int maiint choice;float num1, num2;printf("Please enter two numbers: ");scanf("%f%f", &num1, &num2);printf("Please choose the operation (1:addition, 2:subtraction, 3:multiplication, 4:division): ");scanf("%d", &choice);switch (choice)case 1:printf("The result is: %.2f\n", addition(num1, num2)); break;case 2:printf("The result is: %.2f\n", subtraction(num1, num2)); break;case 3:printf("The result is: %.2f\n", multiplication(num1, num2)); break;case 4:printf("The result is: %.2f\n", division(num1, num2)); break;default:printf("Invalid choice!\n");break;}return 0;```2.学生信息管理系统的设计与实现(1) 定义一个结构体Student,包含学生的姓名、学号、年龄等信息。
c语言实验报告c语言实验报告5篇随着社会一步步向前发展,我们使用报告的情况越来越多,我们在写报告的时候要注意涵盖报告的基本要素。
其实写报告并没有想象中那么难,以下是小编收集整理的c语言实验报告,欢迎阅读与收藏。
c语言实验报告1学号:__________ 姓名:__________ 班级:__________ 日期:__________指导教师:__________ 成绩:__________实验六综合实验一、实验目的1、掌握C语言中的变量、数组、函数、指针、结构体等主要知识点。
2、掌握C程序的结构化程序设计方法,能使用C语言开发简单的应用程序。
3、掌握C程序的运行、调试方法等。
二、实验内容编写一个学生信息排序程序。
要求:1、程序运行时可输入n个学生的信息和成绩(n预先定义)。
2、学生信息包括:学号、英文姓名、年龄;学生成绩包括:语文、数学、计算机。
3、给出一个排序选择列表,能够按照上述所列信息(学号、姓名、年龄、语文、数学、计算机)中的至少一个字段进行排序,并显示其结果。
1、使用函数方法定义各个模块。
三、实验步骤与过程物理实验报告·化学实验报告·生物实验报告·实验报告格式·实验报告模板四、程序调试记录c语言实验报告2第一章基础掌握1.1 实验目的掌握C程序设计编程环境Visual C++,掌握运行一个C程序的基本步骤,包括编辑、编译、链接和运行。
(]1.2 实验要求在报告中记录建立、保存C程序实习过程。
1.3 实验基本内容编写程序,在屏幕上显示一个短句“Hello World”(1)程序:1)编译如下程序:#includeVoid main(){printf (“Hello World! ”);}2)链接。
执行Build-命令。
3)运行。
执行Build Execute 命令。
显示结果。
4)关闭程序工作区。
(2)运行结果:输出结果:Hello World!总结:掌握C语言程序设计的基本框架,能够编写简单的程序。
最新c语言实验报告心得体会范文(精选3篇)最新c语言实验报告范文篇1做完这个课程设计,我们的自信一下子提高了;尽管对于有些人这种程序会很简单,可对我们c语言初学者来说,已经很不容易了。
这次体验为以后的学习计算机的我们增强了信心。
享受劳动成果的'滋味实在很美妙啊!虽然对着电脑做程序,有点累有点热,可是当看到劳动成果时,真是别有一番滋味在心头啊!世上无难事,只怕有心人,的确如此。
做完这个程序最大的收获就是感受到了集体的力量,当然个人的智慧也是很重要的哦!忙碌了一个多星期,在大家的共同努力下,我们总算将此程序设计出来。
尽管不是自己独立完成,但仍然很高兴,因为在设计的过程中,让我了解到要设计一个程序,查找资料是至关重要的,在他人的基础上,再根据自己所学进行修改与调试,最后设计出自己想要的程序,这过程艰辛,但只要你持之以恒,成功指日可待。
最新c语言实验报告心得体会范文篇2现在,计算机和网络已经深入到了我们生活中的方方面面,也已经成了生活中不可缺少的一部分,网络成了我们获取知识和信息的一种便捷工具,现在的网民也在不断的增多,所以,了解和学习网络知识是我们作为一名大学生迫切所需的。
我通过这一学期的学习,对网页设计有了初步的认识和了解,并基本掌握了Dreamweaver的应用。
在学习了网页设计的同时,我更加深入的了解了关于计算机和网络的知识。
基于对计算机基础与C语言的基本掌握,学习网页设计的基础部分便显得较为轻松。
虽然如此,在设计过程中依然出现了很多的问题,但通过看书,上网查询,等方式,不断的学习、解决、提高,设计出的网页不论是外观还是内容,都在不断的进步、改善。
可以说在自己动手,不断实践的过程中,网页设计水平得到了很大的提高。
通过对网页设计书籍的翻阅,我学习到了一些关于建设网站和制作网页的知识,在实践查阅资料时,对flash也有所了解。
我还了解了一些基础的网络技术。
通过学习,我对计算机有了更深层次得到了解,也有了更浓厚的兴趣。
C语言课程实习(优秀范文5篇)第一篇:C语言课程实习课程实习一、C程序上机操作方法及运行环境编写一个C程序,输入a, b, c,d四个值,输出其中最小者。
#includemain(){int a,b,c,d,t;printf(“Please input numbers:”);scanf(“%d,%d,%d,%d”,&a,&b,&c,&d);t=min(min(min(a,b),c),d);printf(“min number is:%dn”,t);}int min(int x,int y){int z;if(xz=x;elsez=y;return(z);}运行结果:Please input numbers:4,6,3,9min number is:3课程实习二、C程序上机操作方法及运行环境从键盘输入三个字符,要求输出这三个字符,并输出它们的ASCII 码及其ASCII码的平方根和的平方。
#include#includevoid main(){char ch1,ch2,ch3;float t;scanf(“%c,%c,%c”,&ch1,&ch2,&ch3);t=sqrt(ch1)+sqrt(ch2)+sqrt(ch3);printf(“%c,%dn”,ch1,ch1);printf(“%c,%dn”,ch2,ch2);printf(“%c,%dn”,ch3,ch3);printf(“%fn”,t*t);}运行结果:a,b,ca,97b,98c,99881.984683课程实习三、循环结构程序设计1)输入两个正整数m和n;2)如果m=n输出最大公约数m程序结束;3)若m>n则m=m-n否则n=n-m;4)返回到2)(循环)。
#includevoid main(){int m,n;scanf(“%d%d”,&m,&n);while(m!=n){if(m>n)m=m-n; else n=n-m;}printf(“%dn”,m); }运行结果:34,24课程实习四、循环结构程序设计打印下面的图案# # # # ## # # ## # ## ##includevoid main(){int i,j;for(i=1;i<=4;i++) {for(j=1;jprintf(“ ”);for(j=5;j>=i;j--) printf(“*”); putchar('n');}}课程实习五、数组的应用输入一个0到150之间的十进制整数,要求把此数转化为二进制形式。
C语言实验报告范文一、实验目的本实验旨在通过编写C语言程序,加深对C语言基本语法的理解,并运用所学的知识实现基本的程序控制结构。
二、实验内容1.编写一个程序,实现两个整数之间的数值互换。
2.编写一个程序,实现计算学生的平均成绩并输出。
3.编写一个程序,实现一个简单的计算器,能够实现加、减、乘、除四则运算。
三、实验步骤1.实现整数互换程序(1)首先定义两个整数变量a和b,并且分别赋予初值。
(2)使用第三个变量temp作为中间变量,将a的值赋给temp。
(3)将b的值赋给a,即执行a=b。
(4)将temp的值赋给b,即执行b=temp。
(5)输出交换后的a和b的值。
(6)编译并运行程序,验证结果。
2.实现计算学生平均成绩程序(1)首先定义学生的姓名和成绩的变量。
(2)使用scanf函数依次输入学生的姓名和成绩,并将其保存在定义好的变量中。
(3)使用循环控制将所有学生的成绩进行累加。
(4)计算平均成绩,使用累加的成绩除以学生人数。
(5)输出平均成绩。
(6)编译并运行程序,验证结果。
3.实现简单计算器程序(1)定义两个操作数和运算符的变量。
(2)使用scanf函数依次输入两个操作数和运算符,并将其保存在定义好的变量中。
(3)根据运算符的不同,使用不同的控制结构实现加、减、乘、除四则运算。
(4)输出运算结果。
(5)编译并运行程序,验证结果。
四、实验结果1.整数互换程序输入:a=10,b=20输出:交换后:a=20,b=10验证结果正确。
2.计算学生平均成绩程序输入:学生1:姓名:张三,成绩:85学生2:姓名:李四,成绩:90学生3:姓名:王五,成绩:78输出:平均成绩:84.33验证结果正确。
3.简单计算器程序输入:操作数1:10操作数2:5运算符:*输出:运算结果:50验证结果正确。
五、实验总结通过本次实验,我进一步熟悉了C语言的基本语法和程序控制结构,并成功实现了整数互换、计算平均成绩和简单计算器的功能。
C语言实验报告C语言实验报告(精选9篇)在经济发展迅速的今天,我们都不可避免地要接触到报告,通常情况下,报告的内容含量大、篇幅较长。
写起报告来就毫无头绪?下面是小编帮大家整理的C语言实验报告,欢迎阅读与收藏。
C语言实验报告1在这个星期里,我们在专业老师的带领下进行了c语言程序实践学习。
在这之前,我们已经对c语言这门课程学习了一个学期,对其有了一定的了解,但是也仅仅是停留在了解的范围,对里面的好多东西还是很陌生,更多的在运用起来的时候还是感到很棘手,毕竟,万事开头难嘛。
由于时间的关系,我们的这次实践课程老师并没有给我们详细的介绍,只是给我们简单的介绍了几个比较重要的实际操作。
上机实验是学习程序设计语言必不可少的实践环节,特别是c语言灵活、简洁,更需要通过编程的实践来真正掌握它。
对于程序设计语言的学习目的,可以概括为学习语法规定、掌握程序设计方法、提高程序开发能力,这些都必须通过充分的实际上机操作才能完成。
学习c程序设计语言除了课堂讲授以外,必须保证有不少于课堂讲授学时的上机时间。
因为学时所限,课程不能安排过多的统一上机实验,所以希望学生有效地利用课程上机实验的机会,尽快掌握用c语言开发程序的能力,为今后的继续学习打下一个良好的基础。
个人认为课程上机实验的目的,不仅仅是验证教材和讲课的内容、检查自己所编的程序是否正确,课程安排的上机实验的目的可以概括为如下几个方面:1、加深对课堂讲授内容的理解课堂上要讲授许多关于c语言的语法规则,听起来十分枯燥无味,也不容易记住,死记硬背是不可取的。
然而要使用c语言这个工具解决实际问题,又必须掌握它。
通过多次上机练习,对于语法知识有了感性的认识,加深对它的理解,在理解的基础上就会自然而然地掌握c 语言的语法规定。
对于一些内容自己认为在课堂上听懂了,但上机实践中会发现原来理解的偏差,这是由于大部分学生是初次接触程序设计,缺乏程序设计的实践所致。
学习c语言不能停留在学习它的语法规则,而是利用学到的知识编写c语言程序,解决实际问题。
C语言实验报告范文1.实验目的本实验的目的是通过C语言编写程序来熟悉C语言的基本语法和编程方法,掌握C语言的基本数据类型、运算符、控制语句等内容,并能够利用C语言完成简单的程序设计。
2.实验内容本实验包括以下四个部分的内容:2.1输入输出通过C语言的输入输出函数,实现从用户处输入数据,再将数据输出到屏幕上的功能。
2.2算术运算通过C语言的算术运算符,实现基本的加减乘除运算,并将运算结果输出到屏幕上。
2.3控制语句通过C语言的条件语句和循环语句,实现对条件的判断和循环控制,并输出满足条件的结果。
2.4函数调用通过C语言的函数定义和函数调用,实现程序的模块化设计和代码的复用。
3.实验过程3.1输入输出首先,使用C语言的输入函数scanf(从用户处输入两个整数,并将其存储在两个变量a和b中。
然后,使用C语言的输出函数printf(将两个变量的值输出到屏幕上。
3.2算术运算定义两个变量c和d,并分别将a和b的值赋给它们。
然后,使用C 语言的算术运算符对c和d进行加、减、乘、除运算,并将运算结果分别存储在变量e、f、g、h中。
最后,使用printf(函数将这四个变量的值输出到屏幕上。
3.3控制语句根据用户输入的值,使用if-else语句判断a和b的大小关系,并输出不同的结果。
然后,使用for循环语句计算1加到100的和,并输出结果。
3.4函数调用首先,在程序中定义一个函数sum,用于计算两个整数的和。
然后,在主函数中调用该函数,并将a和b作为参数传递给该函数。
最后,将函数的返回值输出到屏幕上。
4.实验结果根据实验过程中的步骤,编写C语言程序并进行编译运行。
输入不同的数据值,观察程序的输出结果。
根据所输入的数据和程序逻辑,验证程序运行是否正确。
5.实验总结通过本次实验,我掌握了C语言的基本语法和编程方法。
通过编写程序,我能够熟练使用C语言的输入输出函数、算术运算符、控制语句和函数调用等功能。
通过对实验结果的观察和分析,我对C语言的运行机制和语法规则有了更深入的理解,并且能够独立解决简单的编程问题。
C语言实验报告C语言实验报告9篇随着个人素质的提升,报告的适用范围越来越广泛,我们在写报告的时候要注意语言要准确、简洁。
写起报告来就毫无头绪?以下是小编为大家整理的C语言实验报告,仅供参考,欢迎大家阅读。
C语言实验报告1一、实习目的1.掌握在集成环境中编辑、编译、连接和运行C程序的方法。
(1)运行TC(2)启动TC集成环境,输入一个源程序,编译并运行。
2.掌握单步执行、设置/去除断点,观察变量或表达式的值。
(3)在该程序中按CTRL+F7单步招待并在观察窗口中查看变量和表达式的值。
(4)设置/去除断点,继续调试。
1、熟练掌握if.switch分支语句的使用。
2、熟练掌握for.while.do.while循环语句的使用。
3、熟练掌握函数的定义、说明、参数传递及嵌套和递归调用方法。
4、熟练掌握一维数组、二维数组、字符数组的定义、说明和使用方法。
熟练掌握结构体和指针的综合应用链表的操作二、实习地点北京交通干部管理学院计算机系机房十三号.三、实习成果熟练掌握TC集成环境的使用方法。
认真编写实习报告和实习总结,描述实习操作和心得体会,总结在这次实习中的业务收获,作出自我评价。
熟练掌握并应用TC程序设计的各个知识点。
掌握结构体和指针的联合使用,学会链表的构造和常用操作方法,认真编写实习日志和实习体会。
并通过各种途径查找所需资料,拓宽视野,培养自学能力。
四、实习心得在短短一周的实习期间使我获取了不少新知识也巩固了许多老知识。
我体会到了老师和同学们的热心帮助,无论面对学习中多大的困难,同学们都会帮助你,老师也会帮助你,大家就像兄弟姐妹一样。
老师安排我们有具有的分工:首先,在计算机机房里同学们积极的对C语言进行巩固与实习,老师热心的讲解同学们提出的问题和实习过程中应该注意的事项和同学们的任何。
老师把我们分为几组,每一组十一个人,并且分配了具体的任务,在我们实习结束后每一组的同学都把自己组里的成果展示给大家一起分享,告诉大家编程的原理、方法等,使同学们既有动手能力,又能提高语言表达能力。
c语言顺序结构实验报告篇一:实验三顺序结构程序设计实验报告实验三顺序结构程序设计实验报告一、实验目的1. 掌握掌握赋值语句的使用方法。
2. 各种类型数据的输入输出的方法,能正确使用各种格式转换符。
3. 进一步掌握编写程序和调试程序的方法。
二、实验内容(源代码)1. sy3-(1) ①#includeint main() { int a,b;//基本整型float d,e; //单精度浮点型 char c1,c2;//字符型 double f,g;//双精度浮点型long m,n; //长整型unsigned int p,q;//"unsiguld"改成"unsigned" 无符号整型a=61,b=62; c1='a';c2='b';//'a''b'的"'"不能掉了d=3.56;e=-6.87; //d,e之间用";"隔开f=3157.890121;g=0.9; m=50000;n=-60000; p=32768;q=40000;printf("a=%d,b=%d\nc1=%c,c2=%c\nd=%6.2f,e=%6.2f\n", a,b,c1,c2,d,e);//"""与"a"之间的","不能掉了,"\"不能写成"/" printf("f=%15.6f,g=%15.12f\nm=%1d,n=%1d\np=%u,q=%u\ n",f,g,m,n,p,q); //f后的q改为g}③#includeint main() {int a,b;//基本整型 float d,e; //单精度浮点型char c1,c2;//字符型double f,g;//双精度浮点型 long m,n; //长整型unsigned int p,q;//"unsiguld"改成"unsigned" 无符号整型 a=61,b=62;c1=a;c2=b; //c1,c2之间用";"隔开 f=3157.890121;g=0.9; d=f;e=g;p=a=m=50000;q=b=n=-60000;printf("a=%d,b=%d\nc1=%c,c2=%c\nd=%6.2f,e=%6.2f\n", a,b,c1,c2,d,e);//"""与"a"之间的","不能掉了,"\"不能写成"/"printf("f=%15.6f,g=%15.12f\nm=%1d,n=%1d\np=%u,q=%u\ n",f,g,m,n,p,q); //f后的q改为g④#includeint main() {int a,b;//基本整型 float d,e; //单精度浮点型char c1,c2;//字符型double f,g;//双精度浮点型 long m,n; //长整型unsigned int p,q;//"unsiguld"改成"unsigned" 无符号整型 a=61,b=62;c1=a;c2=b; //c1,c2之间用";"隔开f=3157.890121;g=0.9; d=f;e=g;p=a=m=50000;q=b=n=-60000;printf("a=%d,b=%d\nc1=%d,c2=%d\nd=%d,e=%d\n",sizeof (a),sizeof(b),sizeof(c1),sizeof(c2),sizeof(d),sizeo f(e));printf("f=%d,g=%d\nm=%d,n=%d\np=%d,q=%d\n",sizeof(f ),sizeof(g),sizeof(m),sizeof(n),sizeof(p),sizeof(q) );}2. sy3-(2)#include int main() {float h,r,c,s1,s2,v1,v2; //定义float pi=3.1415926; //赋值printf("圆半径r=,圆柱高h=:");//提示scanf("%f,%f",&r,&h); //输入c=2*pi*r; //计算s1=pi*r*r;//"*"不可省略s2=4*s1;v1=4.0/3.0*s1*r; v2=s1*h;printf("圆周长:c=%6.2f\n",c); //输出 printf("圆面积:s1=%6.2f\n",s1);printf("圆球表面积:s2=%6.2f\n",s2); printf("圆球体积:v1=%6.2f\n",v1); printf("圆柱体积:v2=%6.2f\n",v2); return 0;}3. sy3-(3)#include#include //不要忘了数学函数 int main() {float p,r5,r3,r2,r1,r0,p1,p2,p3,p4,p5; //定义p=1000;//赋值printf("r5=,r3=,r2=,r1=,r0=:");//提示 scanf("%f,%f,%f,%f,%f",&r5,&r3,&r2,&r1,&r0); //输入 p1=p*r5*5; //计算}p2=p*(1+2*r2)*(1+3*r3)-p; p3=p*(1+3*r3)*(1+2*r2)-p; p4=p*pow(1+r1,5)-p; p5=p*pow(1+r0/4,20)-p;printf("方案1的利息:p1=%f\n",p1); //输出printf("方案2的利息:p2=%f\n",p2); printf("方案3的利息:p3=%f\n",p3); printf("方案4的利息:p4=%f\n",p4); printf("方案5的利息:p5=%f\n",p5); return 0;4. sy3-(4)① #include int main() {char c1='C',c2='h',c3='i',c4='n',c5='a';//定义与赋值 c1=c1+4;//计算 c2=c2+4; c3=c3+4; c4=c4+4; c5=c5+4;printf("用printf语句输出结果为:");//提示printf("%c%c%c%c%c\n",c1,c2,c3,c4,c5);//输出c1,c2之间的","不可省略 printf("用putchar语句输出结果为:");//提示putchar(c1);//输出putchar(c2); putchar(c3); putchar(c4); putchar(c5);printf("\n");//换行不要省略 return 0;}② #include int main(){ }char c1='T',c2='o',c3='d',c4='a',c5='y';//定义与赋值 c1=c1-22;//计算 c2=c2-22; c3=c3-22; c4=c4-22; c5=c5-22;printf("用printf语句输出结果为:");//提示printf("%c%c%c%c%c\n",c1,c2,c3,c4,c5);//输出c1,c2之间的","不可省略 printf("用putchar语句输出结果为:");//提示putchar(c1);//输出putchar(c2); putchar(c3); putchar(c4); putchar(c5);printf("\n");//换行不要省略 return 0;③ #include int main(){char c1='T',c2='o',c3='d',c4='a',c5='y';//定义与赋值 c1=c1-4;//计算 c2=c2-4; c3=c3-4; c4=c4-4; c5=c5-4;printf("用printf语句输出结果为:");//提示printf("%c%c%c%c%c\n",c1,c2,c3,c4,c5);//输出c1,c2之间的","不可省略 printf("用putchar语句输出结果为:");//提示putchar(c1);//输出putchar(c2); putchar(c3); putchar(c4); putchar(c5);printf("\n");//换行不要省略 return 0;}篇二:C语言实验二程序、总结顺序结构与输入、输出方法实验二顺序结构与输入/输出方法1 学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自增减运算符的使用。
CC语言实验总结与反思(通用3篇)(经典版)编制人:__________________审核人:__________________审批人:__________________编制单位:__________________编制时间:____年____月____日序言下载提示:该文档是本店铺精心编制而成的,希望大家下载后,能够帮助大家解决实际问题。
文档下载后可定制修改,请根据实际需要进行调整和使用,谢谢!并且,本店铺为大家提供各种类型的经典范文,如工作报告、合同协议、心得体会、条据书信、规章制度、礼仪常识、自我介绍、教学资料、作文大全、其他范文等等,想了解不同范文格式和写法,敬请关注!Download tips: This document is carefully compiled by this editor. I hope that after you download it, it can help you solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you!Moreover, our store provides various types of classic sample essays, such as work reports, contract agreements, personal experiences, normative letters, rules and regulations, etiquette knowledge, self introduction, teaching materials, complete essays, and other sample essays. If you want to learn about different sample formats and writing methods, please pay attention!CC语言实验总结与反思(通用3篇)C语言实验总结与反思(通用3篇)CC语言实验总结与反思篇1一、需求分析:1.需求概述设计一个员工信息管理系统,使其能够提供以下功能:(1)员工信息录入功能(2)员工信息浏览功能(3)职工信息删除功能(4)职工信息修改功能(5)员工信息查询功能2.需求说明(1)职工信息包括:职工号、姓名、性别、出生年份、学历职务、工资、住址、电话号码要求不重复。
实验名称:指针及其应用日期:得分:指导老师:
专业:班次:姓名:学号:
实验目的
(1)掌握变量的指针及其基本用法。
(2)掌握一维数组的指针及其基本用法。
(3)掌握指针变量作为函数的参数时,参数的传递过程及其用法。
一.实验内容( 1)运行以下程序,并从中了解变量的指针和指针变量的概念。
(2)运行以下程序,观察 &a[0] 、&a[i] 和 p 的变化,然后回答以下问题:
1.程序的功能是什么?
2.在开始进入循环体之前, p 指向谁?
3.循环每增加一次, p 的值(地址)增加多少?它指向谁?
4.退出循环后, p 指向谁?
5.你是否初步掌握了通过指针变量引用数组元素的方法?( 3)先分析以下程序的运行结果,然后上机验证,并通过此例掌握通过指针变量引用数组元素的各种方法。
( 4)编写函数,将 n 个数按原来的顺序的逆序排列(要求用指针实现),然后编写主函数完成:
①输入 10 个数;
②调用此函数进行重排;
③输出重排后的结果。
二.分析与讨论
( 1)指针的定义方法,指针和变量的关系。
定义方法:
数据类型 * 指针变量名 ;
如定义一个指向 int 型变量的指针——
int *p;
则我们可以继续写如下代码——
int a = 4;
p = &a;
printf("%d", *p);
在这里,我们定义了一个变量a,我们把它理解为内存空间连续的 4个字节(int 型占用 4字节),则这 4个字节的空间保存着一个数 4。
&是取地址符号,即把变量a的地址(即这4个字节的首地址)赋给指针p (记住指针p的类型和变量a的类型要保持一致,否则的话,要进行类型转换)。
这样子,指针p就保
存着变量a的地址。
我们如果把指针p当做内存空间里面另外一个连续的 4个字节,那么这4个字节保存的数就是变量a的地址。
printf("%d",*p)和
printf("%d",a)的结果是一样的。
这里的*是取变量符号(与&刚好作用相反,通过变量的地址找到变量),与定义时 int *p 的*号作用不同(定义时的 *表示该变量是个指针变量,而非是取它指向的变量)。
( 2)数组和指针的关系。
指针与数组是 C 语言中很重要的两个概念,它们之间有着密切的关系,利用这种
关系,可以增强处理数组的灵活性,加快运行速度,本文着重讨论指针与数组之间的联系及在编程中的应用。
1.指针与数组的关系
当一个指针变量被初始化成数组名时,就说该指针变量指向了数组。
如: char
str[20], *ptr;
ptr=str;
ptr 被置为数组 str 的第一个元素的地址,因为数组名就是该数组的首地址,也是数组第一个元素的地址。
此时可以认为指针 ptr 就是数组 str(反之不成立),这样原来对数组的处理都可以用指针来实现。
如对数组元素的访问,既可以用下标变量访问,也可以用指针访问。
2.指向数组元素的指针
若有如下定义:
int a[10], *pa;
pa=a;
则 p=&a[0] 是将数组第 1 个元素的地址赋给了指针变量 p 。
实际上,C语言中数组名就是数组的首地址,所以第一个元素的地址可以用两种方法获得: p=&a[0] 或 p=a。
这两种方法在形式上相像,其区别在于:pa是指针变量,a是数组名。
值得注意的是: pa 是一个可以变化的指针变量,而 a 是一个常数。
因为数组一经被说明,数组的地址也就是固定的,因此 a是不能变化的,不允许使用a+ +、+ + a或语句a+ =10,而pa+ +、++ pa、pa+ =10则是正确的。
由此可见,此时指针与数组融为一体。
3.指针与一维数组
理解指针与一维数组的关系,首先要了解在编译系统中,一维数组的存储组织形式和对数组元素的访问方法。
一维数组是一个线形表,它被存放在一片连续的内存单元中。
C语言对数组
的访问是通过数组名(数组的起始地址)加上相对于起始地址的相对量(由下标变量给出),得到要访问的数组元素的单元地址,然后再对计算出的单元地址的内容进行访问。
通常把数据类型所占单元的字节个数称为扩大因子。
实际上编译系统将数组元素的形式 a[i] 转换成*(a + i),然后才进行运算。
对于一般数组元素的形式:<数组名>[<下标表达式>],编译程序将其转换成:*(<数组名>+ <下标表达式>),其中下标表达式为:下标表达式*扩大因子。
整个式子计算结果是一个内存地址,最后的结果为:*<地址>=<地址所对应单元的地址的内容〉。
由此可见,C语言对数组的处理,实际上是转换成指针地址的运算。
数组与指针暗中结合在一起。
因此,任何能由下标完成的操作,都可以用指针来实现,一个不带下标的数组名就是一个指向该数组的指针。
4.指针与多维数组用指针变量可以指向一维数组,也可以指向多维数组。
但在概念上和使用上,多维数组的指针比一维数组的指针要复杂一些。
例如,在一个三维数组中,引用元素 c[i][j][k] 的地址计算最终将换成:
*(*(*(c+i)+j)+k)。
了解了多维数组的存储形式和访问多维数组元素的内部转换公式后,再看当一个指针变量指向多维数组及其元素的情况。
1 指向数组元素的指针变量
若有如下说明:
int a[3][4];
int *p;
p=a;
p 是指向整型变量的指针; p=a 使 p 指向整型二维数组 a 的首地址。
伙(伙(p + 1) + 2)表示取a[1][2]的内容;* p表示取a[0][1]的内容,因为 p 是指向整型变量的指针;p++表示p的内容加1,即p中存放的地址增加一个整型量的字节数2,从而使p指向下一个整型量a[0][1]。
2 指向由 j 个整数组成的一维数组的指针变量
当指针变量 p 不是指向整型变量,而是指向一个包含 j 个元素的一维数组。
如果
p=a[0],则p++不是指向a[0][1],而是指向a[1]。
这时p的增值以一维数组的长度为单位。
5.指针与字符数组
C 语言中许多字符串操作都是由指向字符数组的指针及指针的运算来实现的。
因为对于字符串来说,一般都是严格的顺序存取方式,使用指针可以打破这种存取方式,更为灵活地处理字符串。
另外由于字符串以’0'作为结束符,而’0'的ASCII码是0,它正好是 C语言的逻辑假值,所以可以直接用它作为判断字符串结束的条件,而不需要用字符串的长度来判断。
C 语言中类似的字符串处理函数都是用指针来完成,使程序运行速度更快、效率更高,而且更易于理解。