C语言实验六实验报告——指针

合集下载

C语言——指针

C语言——指针

4. 结论: 若要使变量的值通过函数调用而发生改变, 则形参必须是指针型,实参为地址量(&<变量名>)
或指针型。
另:全局变量和数组名作为参数也可改变变量的值.
总 结
若要使n个变量的值通过函数调用而发生改变,则
在主调函数中设n个变量,用n个指针变量指向它们。 将这些指针变量作为实参,将其地址传递给被调函
p1 p &a p2 &b p1 &b p2 &a
a 5
b 9
a 5 b 9
}
5,9 9,5
三、指针变量作为函数参数 前面讲过:数值型变量作为函数实参 形参数据值的改变不会影响实参。 但当用地址(指针变量)作参数时,作用为传址, 与数组名类似。 要求:形参、实参均为地址量。
单向 传递
形参,于是,
例:实现10.2 swap(int *p1, int *p2) { int temp; temp=p1; p1=p2;p2= temp; } #include <stdio.h> void main( ) { int a, b;
它代表的是地址+1个单位
重要概念: 指针变量也有各种类型(如上面所示),但指针变 量的值只能是整型值。
二、指针变量的引用方式 *指针变量名----表示所指变量的值。 指针变量名----表示所指向变量的指针(地址)。
两个运算符号:
&: 取地址运算符。 &i *: 指针运算符,取其指向的内容(所指变 量的值)。 *p
9,0,10
10,9,0
§10.3 数组与指针
一个变量的地址为该变量的指针。当用一个变 量来存放地址(指针)时,该变量称为指针变量。
一个数组元素相当于一个简单变量。于是,亦 可用一个指针变量来指向数组元素。

c语言实验报告实验

c语言实验报告实验

c语言实验报告实验C 语言实验报告实验一、实验目的本次 C 语言实验的主要目的是通过实际操作和编程实践,加深对 C 语言基本语法、数据类型、控制结构、数组、指针等重要概念的理解和掌握,提高编程能力和解决实际问题的能力。

二、实验环境本次实验使用的编程环境为 Visual Studio 2019,操作系统为Windows 10。

三、实验内容1、基本数据类型和运算符的使用定义不同类型的变量,如整数型(int)、浮点型(float、double)、字符型(char)等,并进行赋值和运算操作。

熟悉各种运算符的优先级和结合性,包括算术运算符(+、、、/、%)、关系运算符(>、<、>=、<=、==、!=)、逻辑运算符(&&、||、!)、位运算符(&、|、^、~、<<、>>)等。

2、控制结构的应用使用ifelse 语句实现条件判断,根据不同的条件执行相应的代码块。

运用 switch 语句进行多分支选择,处理不同的情况。

利用 for 循环、while 循环和 dowhile 循环实现重复执行的操作,例如计算数列的和、打印特定的图案等。

3、数组和字符串的操作定义和使用一维数组、二维数组,进行数组元素的访问、赋值和遍历。

掌握字符串的存储和处理方式,使用字符数组和字符串函数(如strlen、strcpy、strcmp 等)进行字符串的操作。

4、指针的应用理解指针的概念和指针变量的定义,通过指针访问变量和数组元素。

实现指针与数组、指针与函数的结合使用,体会指针在程序中的灵活运用。

5、函数的定义和调用编写自定义函数,实现特定的功能,如计算阶乘、判断素数等。

掌握函数的参数传递方式(值传递和地址传递),理解函数的返回值。

6、结构体和共用体的使用定义结构体类型,创建结构体变量,访问结构体成员。

了解共用体的概念和使用场景,比较结构体和共用体的区别。

四、实验步骤1、实验准备打开 Visual Studio 2019 开发环境,创建一个新的 C 语言项目。

《C语言与程序设计》实验06---函数

《C语言与程序设计》实验06---函数

实验六函数一、实验目的1. 熟练掌握函数的定义、函数的类型和返回值。

2. 熟练掌握形式参数与实际参数、参数值的传递。

3. 掌握函数的嵌套调用与递归调用。

4.学会使用指向函数的指针变量。

5.了解指向指针的指针的概念及带参数的main函数。

6. 掌握局部变量和全局变量。

7. 掌握变量的存储类型。

8. 了解内部函数和外部函数。

二、实验学时:8课时三、预习知识1.标准库函数标准库函数是C系统提供的,这些库函数定义了一些基本的、常用的功能,用户可以使用这些库函数,但是在使用库函数之前需要用预编译命令# include将该库函数所在的头文件包含进来。

2.自定义函数定义函数一般有两种形式形式1:存储类型类型符函数名(类型符形参1,类型符形参2 ,… ) { 说明语句执行语句}形式2:存储类型类型符函数名(形参1,形参2 ,……)形参类型说明{ 说明语句执行语句}说明:①形参表中即使没有参数,函数名后的一对圆括号也不能省略。

②函数名前的类型符是用来说明函数返回值的数据类型(也作为函数的数据类型) 。

当函数值为整型时,类型符可以省略。

③当函数只完成某一特定操作不需要返回值时,可用类型标识符 void 说明,将函数定义成空类型。

④C 规定:不允许在一个函数内部再定义另外一个函数,即函数不允许嵌套定义。

⑤函数的存储类型:函数的存储类型有 extern 和 static 两种。

extern 型的函数除了可以被本程序中其它函数调用外,还可以被其它文件中的函数调用,这种函数称为外部函数,如果定义函数时省略 extern ,则隐含为外部函数。

static 型的函数只能被本源程序文件中的函数调用,称为内部函数(静态函数)。

3.函数的参数(1)在定义函数时函数名后面括号中的变量称为形参(形式参数),如果有两个以上形参,形参之间以逗号分隔。

形参是函数的内部变量,只在函数内部才有意义。

在未出现函数调用时,形参不占内存。

对每个形参必须指明其名字和数据类型。

《C语言程序设计》实验报告

《C语言程序设计》实验报告

(此文档为word格式,下载后您可任意编辑修改!)《C语言程序设计》实验报告2012~2013学年第二学期班级姓名学号指导教师实验一实验项目名称:C程序的运行环境和运行C程序的方法所使用的工具软件及环境:Visual C++6.0一、实验目的:1.了解在Visual C++6.0环境下如何编辑、编译、连接和运行一个C程序;2.通过运行简单的C程序,初步了解C源程序的特点。

二、预习内容:教材《C语言程序设计教程》第1章。

三、实验内容:1.在Visual C++6.0环境下输入并运行下面的程序:#include<stdio.(){printf("This is a C program.\n");return0;}2.在Visual C++6.0环境下输入下面的程序(有语法错误),编译、连接、调试该程序,直至程序无语法错误,然后运行程序,并观察分析运行结果。

#include<stdio.(){int a,b,suma=3;b=4;sun=a+b;print("%d+%d=%d\n",a,b,sum);return0;}四、实验结果:1.运行结果(或截图):2.(1)改正后的源程序:(2)运行结果(或截图):五、思考题:1.一个C程序上机的步骤有哪些?答:2.组成C程序的基本单位是函数,一个函数包括哪几个部分?答:成绩指导教师签名实验二实验项目名称:数据类型、运算符和表达式所使用的工具软件及环境:Visual C++6.0一、实验目的:1.掌握整型、实型与字符型这三种基本类型的概念;2.掌握常量及变量的使用方法;3.掌握基本算术运算符及其表达式的使用方法;4.掌握++、--运算符、赋值运算符及其表达式的使用方法。

二、预习内容:教材《C语言程序设计教程》第2章。

三、实验内容:1.在Visual C++6.0环境下输入下面的程序(有语法错误),编译、连接、调试该程序,直至程序无语法错误。

#include<stdio.(){int2cd=3;floatπ=3.14;char for=′A′;printf("%d,%f,%c\n",2cd,π,for);return0;}2.在Visual C++6.0环境下输入并运行下面的程序,观察分析运行结果。

程序设计基础(C语言)实验报告

程序设计基础(C语言)实验报告

程序设计基础(C语言)实验报告课程名称:程序设计基础(C语言)姓名:学号:年级:专业:指导教师:实验地点:目录实验一顺序结构程序设计实验二选择结构程序设计实验三循环结构程序设计实验四数组及其应用实验五函数及其应用实验六指针及其应用实验(一)顺序结构程序设计一、实验目的1.掌握顺序结构程序的设计思想,领会顺序结构的程序执行时顺次执行的特点。

2.掌握赋值语句的特点、功能。

3.掌握各种类型数据的输入输出的方法,能正确使用各种格式转换符。

4.掌握编写程序和调试程序的方法。

二、实验内容及要求1.用下面的scanf函数输入数据使a=3,b=7,x=8.5,y=71.82,c1=’A’,c2=’a’。

#include <stdio.h>int main(){int a,b;float x,y;char c1,c2;scanf("a=%db=%d",&a,&b);scanf("%f%e",&x,&y);scanf("%c%c",&c1,&c2);printf("a=%d,b=%d,x=%.1f,y=%.2f,c1=%c,c2=%c\n",a,b,x,y,c1,c2);return 0;}运行时分别按以下方式输入数据,观察输出结果,分析原因(□表示空格,↙表示回车)。

(1)a=3,b=7,x=8.5,y=71.82,A,a↙(2)a=3□b=7□x=8.5□y=71.82□A□a↙(3)a=3□b=7□8.5□71.82□A□a↙(4)a=3□b=7□8.5□71.82Aa↙(5)3□7□8.5□71.82Aa↙(6)a=3□b=7↙8.5□71.82↙A↙a↙(7)a=3□b=7↙8.5□71.82↙Aa↙(8)a=3□b=7↙8.5□71.82Aa↙通过此题,总结输入数据的规律和容易出错的地方。

《C语言程序设计》实验报告实验六

《C语言程序设计》实验报告实验六

《C语言程序设计》实验报告实验六使用指针的程序设计学号姓名一、实验目的1、掌握指针的概念,会定义和使用指针变量;2、能正确使用数组的指针和指向数组的指针变量;3、熟悉指针作为函数参数的定义和调用方法;4、能正确使用字符串的指针和指向字符串的指针变量。

二、实验内容1.分析下面的程序并上机运行程序,要求写出3组以上程序的运行结果。

#include <stdio.h>void main(){int *p1,*p2,*p;int a,b;printf("Input a b please");scanf("%d%d",&a,&b);p1=&a;p2=&b;if(a>b){ p=p1;p1=p2;p2=p;}printf("*p1=%d, *p2=%d\n",*p1,*p2);printf("a=%d, b=%d\n",a,b);}『运行结果:』输入1,2得:*p1=1,*p2=2a=1,b=2输入2,1得:*p1=1,*p2=2a=2,b=1输入56,123得:*p1=56,*p2=123a=56,b=1232.下列程序的功能是分别求出数组中所有奇数之和以及所有偶数之和。

形参n给了数组中数据的个数,利用指针odd返回奇数之和,利用指针even 返回偶数之和。

请在下面空白处将实现这一功能的函数完善,并且调试运行出结果。

#include <stdio.h>#define N 10void fun(int *a,int n,int *odd,int *even){int m;*odd=0; *even=0;for(m=0;m<n;m++)if(*(a+m)%2==0)*even+=*(a+m);else*odd+=*(a+m);}void main(){int a[N]={1,10,2,3,19,6},i,n=6,odd,even;printf("The original data is:\n");for(i=0;i<n;i++)printf("%5d",*(a+i));printf("\n\n");fun(a,n,&odd,&even);printf("The sum of odd numbers:%d\n",odd);printf("The sum of even number:%d\n",even);}『运行结果:』3.编程实现从键盘输入一个字符ch和一个字符串str,利用字符指针实现删除字符串str中和字符ch相等所有字符,然后输出字符串str。

《高级语言程序设计》实验报告

《高级语言程序设计》实验报告

合肥师范学院实验报告册2013 / 201 学年第1 学期系别计算机科学与技术系实验课程高级语言程序设计专业班级姓名学号指导教师《高级语言程序设计》实验 班级: 学号: 姓名:-1-实验一 ——VC 工作环境及顺序结构程序设计一、实验目的1. 熟悉VC++的运行环境,掌握运行一个C 程序的基本步骤,包括编辑、编译、连接和运行;2. 理解顺序结构程序方式;3. 了解常用数据类型的输入输出方法;4. 了解C 程序的基本框架,能编写简单的C 程序,了解程序调试;二、实验预习内容在认真阅读教材及实验指导书的基础上,上机前请预习以下内容,并在空白处填写相应的步骤或命令。

1. 输入并运行一个简单、正确的程序。

输入编程示例 “Hello ,World !”程序,即: # inc lude “stdio.h” int main(void) {printf("Hello ,World !\n"); return 0; }1) 参考实验指导书P223~P233,学习C 程序的编辑、编译、运行,熟悉VC++6.0的基本界面操作。

2) 修改本例,使用printf ()输出自己的个性化签名,保存到文件ex1_1.c 中。

2. 程序改错题:# include stdio.h int mian(void) {printf( Welcome to You! \n" ) return 0;1) 分析本程序段中哪些地方存在错误?请标记出来,并给出修改意见。

2) 输入上面程序(或打开error1_2.c ),学习程序调试。

3. 程序阅读题:1) 请分析下面程序(ex1_3.c )运行结果是什么? # include <stdio.h> int main(void){ char c1,c2 ; c1=97; c2=98; printf( "c1=%c,c2=%c \n", c1, c2 ); printf( "c1=%d,c2=%d \n", c1, c2 ); return 0; } 运行结果是: 2) 若将程序第4,5行改为c1=197;c2=198;运行结果又如何?并简单分析。

C语言程序设计实验六函数答案《西北民大电气学院》

C语言程序设计实验六函数答案《西北民大电气学院》

实验六函数一,实验目的:1,掌握定义函数的方法.2,掌握函数实参与形参的对应关系,以及"值传递"的方式.3,掌握函数的嵌套调用和递归调用的方法.4,掌握全局变量和局部变量动态变量,静态变量的概念和使用方法.二,实验准备:1,复习函数调用的基本理论知识.2,复习函数的嵌套调用和递归调用的方法.3,复习全局变量,局部变量;静态变量,动态变量;外部变量等概念和具体使用. 4,源程序.三,实验步骤及内容:1,运行程序并回答问题(1)程序main(){ play(3);}void print_star(){ printf("* * * * * * * * * *\n")}void print_message(){ printf("Good Friend! \n");}void play(n)int n;{ int i;for(i=1;i<=n;++i){ print_star();print_message();}}问题:运行后出现什么错误为什么应如何修改请上机调试.修改:main(){ play(3);}void print_star(){ printf("* * * * * * * * * *\n");(缺少分号)}void print_message(){ printf("Good Friend! \n");}play(n)(原先void的与声明类型不同)int n;{ int i;for(i=1;i<=n;++i){ print_star();print_message();}getch();}运行结果(2)以下程序用于计算1+2+3+4+5.main(){ int i,sum;for(i=1;i<=5;++i)sum=add(i);printf("sum=%d\n",sum);getch();}add (a)int a;{static int s=0;s=s+a;return(s);}运行结果:问题:此程序能否得到正确结果为什么请在不增加语句的条件下,修改程序并上机调试.(3)程序int x=567,y=890;main(){ printf("x=%d,y=%d\n",x,y);}运行结果:问题:运行程序后出现什么错误为什么如何修改答:定义位置出错,y的定义在主函数之后了,将y的定义改在和x一样的位置处。

C语言实验报告

C语言实验报告

C语言实验报告实验一:c语言环境的开发与使用1.实验目的:上机编写简单的c语言程序,逐步了解c语言运行的程序步骤2.实验内容:在turboc3.0的环境下调试简单的c语言3.实验清单:输入一行字符(如“hello!”)Ex513_11.c#include<stdio.h>Int main(){printf(“hello!\n”);return 0;}从键盘输入两个整数,将其平方和输出(用函数关系求平方和)Ex513_12.c#include<stdio.h>#include<math.h>int main(){int a,b,c;printf(“\n input a=”);scanf(“%d”,&a);printf(“\n input b=”);scanf(“%d”,&b);c=sqre(a,b);printf(“sqre=%d”,c);return 0;}int sqre(x,y)int x,y;{return x*x+y*y;}从键盘输入三个整数,将其最大值输出。

(用函数求最大值)Ex513_13.c#include<stdio.h>int main(){int a,b,c,d;printf(“\n input a=”);scanf(“%d”,&b);printf(“\n input c=”);scanf(“%d”,&c);d=max(a,b,c);printf(“max=%d”,d);return 0;}int max(x,y,z);int x,y,z,t;{if(x>y) t=x;else t=y;if(z>t) t=z;return t;}输入三角形三边的长度,将其面积输出(用函数求面积) Ex513_14.c#include<stdio.h>#include<math.h>Int main(){double a,b,c,s,area;a=3.67;b=5.43;c=6.21;s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c));printf(“a=%f\tb=%f\t%f\n”,a,b,c);printf(“area=%f\n”,area)return 0;}4运行结果及分析程序:Ex513_11.c结果:输出hello!分析:掌握输出一行字符的写法程序:Ex513_12.c结果:输入1,2输出5分析:编写正确,但不够简洁程序:Ex513_13.c结果:输入-3,1,2输出2分析:程序运用了函数程序:Ex513_14.c结果:输入3,4,5输出6分析:编写不够简洁实验二:顺序结构设计1.实验目的:了解什么是常量和变量及种类掌握整型,实型,字符型变量的定义和使用及输出规律掌握七个运算符的运算法则及其混合运算规律2.实验内容:假如我国国民生产总值的年增长率为百分之九,计算十年后我国国民生产总值与现在相比增长多少?Ex513_21.c#include<stdio.h>#include<math.h>int main(){float p,r,n;r=0.1;n=10;p=pow(1+r,n);printf("p=%f\n",p);return 0;}用编好的scanf函数输入数据,使a=3,b=7,x=8.5,y=71.82,c1=’A’,c2=’a’Ex513_22.c#include<stdio.h>int main(){int a,b;float x,y;char c1,c2;scanf("a=%d b=%d",&a,&b);scanf("%f%e",&x,&y);scanf("%c%c",&c1,&c2);printf("a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%c\n",a,b,x,y,c1,c2);return 0;}设圆半径r=1.5,圆柱高h=3,求圆周长,圆面积,圆球表面积,圆球体积,圆柱体积。

《C语言程序设计》实验报告(实验1-11) 2013.3

《C语言程序设计》实验报告(实验1-11) 2013.3

《C语言程序设计》实验报告2012~2013学年第二学期班级姓名学号指导教师实验一实验项目名称:C程序的运行环境和运行C程序的方法所使用的工具软件及环境:Visual C++ 6.0一、实验目的:1.了解在Visual C++ 6.0环境下如何编辑、编译、连接和运行一个C程序;2.通过运行简单的C程序,初步了解C源程序的特点。

二、预习内容:教材《C语言程序设计教程》第1章。

三、实验内容:1. 在Visual C++ 6.0环境下输入并运行下面的程序:#include <stdio.h>int main( ){printf("This is a C program.\n");return 0;}2. 在Visual C++ 6.0环境下输入下面的程序(有语法错误),编译、连接、调试该程序,直至程序无语法错误,然后运行程序,并观察分析运行结果。

#include <stdio.h>int main( ){int a,b,suma=3;b=4;sun=a+b;print(“%d+%d=%d\n”,a,b,sum);return 0;}四、实验结果:1. 运行结果(或截图):2. (1) 改正后的源程序:(2) 运行结果(或截图):五、思考题:1. 一个C程序上机的步骤有哪些?答:2. 组成C程序的基本单位是函数,一个函数包括哪几个部分?答:成绩指导教师签名实验二实验项目名称:数据类型、运算符和表达式所使用的工具软件及环境:Visual C++ 6.0一、实验目的:1.掌握整型、实型与字符型这三种基本类型的概念;2.掌握常量及变量的使用方法;3. 掌握基本算术运算符及其表达式的使用方法;4. 掌握++、--运算符、赋值运算符及其表达式的使用方法。

二、预习内容:教材《C语言程序设计教程》第2章。

三、实验内容:1. 在Visual C++ 6.0环境下输入下面的程序,编译、连接、调试该程序。

c语言实验结论

c语言实验结论

c语言实验结论指针是c语言的精华,也是c语言的难点,它就像一把双刃剑,锋利无比但运用的不好也会给自己带来危害,后果比较严重,所以重点来说说指针。

很多初学者弄不清指针和数组到底有什么样的关系,为避免混淆不清,下面总结一下指针和数组的特性。

指针是保存数据的地址,任何存入指针变量的数据都会被当作地址来处理,指针变量本身的地址由编译器另外存储,存储在哪里,我们并不知道,间接访问数据,首先取得指针变量的内容,把它作为地址,然后从这个地址读或写入数据。

指针可以用间接访问操作符(_)访问,也可以用以下标的形式访问,指针一般用于动态数据结构。

数组是用来保存数据的,数组名代表的是数组首元素的地址而不是数组的首地址,所以数组p与&p是有区别的,虽然内容相同,但意义却不同,&p才是整个数组的首地址,数组名是整个数组的名字,数组内每个元素并没有名字,不能把数组当一个整体来进行读写操作。

当然数组在初始化时也有例外,如int p[]=“12345”是合法的。

数组可以以指针的形式访问如_(p+i);也可以以下标的形式访问p[i],但其本质都是p所代表的数组首元素的地址加上i_sizeof(类型)个字节作为数据的真正地址来进行访问的。

数组通常用于存储固定数目且数据类型相同的元素。

刚开始的时候我有点分不清指针数组和数组指针,现在也总结一下,指针数组,首先它是一个数组,数组的每个元素都是指针,可以理解为“存储指针的数组”的简称,数组指针,首先它是一个指针,它指向一个数组,在32位系统下永远只占4个字节,至于它指向的数组有多少个字节,并不知道,可以理解为“指向数组的指针”。

举个例子,int_p1[10]与int(_p2)[10],要理解这个问题,首先要清楚操作符的优先级,“[]”的优先级比“_”的优先级高,所以首先p1与“[10]”结合构成一个数组p1[10],int_为修饰数组的内容,所以数组元素是指向int类型的指针,所以这个是指针数组,“()”的优先级比“[]”的优先级高,“_”与p2结合构成一个指针变量,int修饰数组的内容,即数组的每个元素,数组这里并没有名字,是个匿名数组,现在清楚了p2是一个指针,它指向一个包含10个int 类型数据的数组,即为数组指针。

C语言指针实验报告

C语言指针实验报告

实验6 指针一、实验目的1.掌握指针的基本概念和基本用法。

包括:变量的地址和变量的值,指针变量的说明、指针变量的初始化、指针的内容与定义格式、指针的基本运算等;2.掌握数组与指针的关系并能够利用指针解决数组的相关问题;3.掌握字符串与指针的关系并能够利用指针处理字符串的问题;4.掌握指针与函数的关系并能够利用指针处理函数问题;5.了解指向指针的指针的概念及其使用方法;6.能够使用指针进行程序设计。

二、实验环境PC微机Windows 操作系统Visual studio 2019三、实验内容与步骤1.实现:将一个任意整数插入到一个已排序的整数数组中,插入后数组中的数仍然保持有序。

要求:(1)整数数组由初始化方式输入。

任意整数由scanf函数输入;(2)实现过程采用指针处理;(3)输出原始数组数据以及插入数据后的数组数据并加以相应说明。

代码实现:#include<stdio.h>int main(){int num[11], * p = &num[10];//预先指向末尾for (int i = 0; i < 10; i++) {scanf("%d", &num[i]);}//输入已排序的数据printf("原始数组:");for (int i = 0; i < 10; i++) printf("%d ", num[i]);printf("\n");int newnum;scanf("%d", &newnum);//输入待插入的数bool flag = true;//判断是否是插入末尾for (int i = 0; i < 10; i++) {if (newnum <= num[i]) {//找到插入位置flag = false;for (int j = 9; j >= i; j--) {//插入数据并将其他数据后移*p = num[j];p--;if (j == i) {num[j] = newnum;}}break;}}if (flag) *p = newnum;printf("插入后的数组:");for (int i = 0; i < 11; i++) printf("%d ", num[i]);return 0;}实验结果:①插入最左边②插入最右边:③插入中间:④插入相同的数:实验分析:结果和预期一致。

实验报告_实验1 复习、 指针(1)(学号_姓名)

实验报告_实验1 复习、 指针(1)(学号_姓名)

实验报告_实验1 复习、指针(1)(学号_姓名)一、实验目的:1、复习C语言的基本概念和基础知识;2、通过查看变量地址,了解不同类型数据在内存存储情况;理解用指针获取内存数据的两个关键点:首地址、数据类型(决定占用的存储单元的个数、数据存储方式);3、掌握指针变量的定义方法、=(赋值)、&(取地址)、*(取内容,间接访问);4、能够用指针变量作函数参数,实现通过函数调用得到n个要改变的值;5、注意避免使用悬空指针及swap函数的不正确写法。

二、实验内容1、(基础题)程序代码:# include <stdio.h># include <string.h>int main(void){char str[50];int k;int a,e,i,o,u;a=e=i=o=u=0;printf("请输入一个长度不超过50的字符串\n");gets(str);for(k=0;str[k];k++){if(str[k] == 'A' || str[k] == 'a')a++;if(str[k] == 'E' || str[k] == 'e')e++;if(str[k] == 'I' || str[k] == 'i')i++;if(str[k] == 'O' || str[k] == 'o')o++;if(str[k] == 'U' || str[k] == 'u')u++;}printf("\n");printf("该字符串中出现:\n");printf("A或a出现的次数:%d\n", a);printf("E或e出现的次数:%d\n", e);printf("I或i出现的次数:%d\n", i);printf("O或o出现的次数:%d\n", o);printf("U或u出现的次数:%d\n", u);return 0;}2、(基础题)#include<stdio.h>//定义结构体Student,学生姓名不超过10个字符//三门课程成绩均为百分制,只取整数struct Student{//代码段1char name[10];int chinese;int english;int math;int total;};int main(){//定义结构体数组stud[3]//对input()、sum()、print()三个函数进行声明//调用input()、sum()、print()三个函数//代码段2struct Student stud[3];void input(struct Student s[], int n);void print(struct Student s[], int n);void sum(struct Student s[], int n);input(stud, 3);sum(stud, 3);print(stud, 3);return 0;}//定义输入n名学生的姓名、三门课程成绩的函数。

C语言实验报告答案

C语言实验报告答案

C语⾔实验报告答案南京信息⼯程⼤学实验(实习)报告实验(实习)名称:指针及其应⽤⽇期:得分:指导⽼师:院系:应⽤⽓象学院专业:班次:姓名:学号:实验⽬的(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 = &aprintf("%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)的结果是⼀样的。

c语言实验指导书

c语言实验指导书

返回
实验4 数组的应用实验4 数组的应用-1/3
实验目的: 实验目的:
1、掌握一维数组和二维数组的定义、赋值和输入输出方法 、掌握一维数组和二维数组的定义、 2、掌握字符数组的使用 、 3、学习与数组有关的算法 、 4、学会进行矩阵运算 、
实验4 数组的应用实验4 数组的应用-2/3
实验内容: 实验内容:
实验7 文件操作实验7 文件操作-2/2
实验要求: 实验要求:
1、画出流程图 、 2、按照模块化的思路编写程序 、 3、在编译链接运行中逐步改正程序中的错误 、 4、能够进行查找、排序、修改、删除、插入等操作 、能够进行查找、排序、修改、删除、 5、学籍信息要写入文件 、 6、输出界面友好 、 7、撰写上机报告并进行总结分 、
实验1 运行环境与顺序结构程序设计实验1 运行环境与顺序结构程序设计-2/3
实验内容: 实验内容:
1、编程环境的使用(编辑、编译、运行和调试) 编程环境的使用(编辑、编译、运行和调试) 程序调试技巧(语法/语义错误的诊断、程序的单步/断点跟踪) 2、程序调试技巧(语法/语义错误的诊断、程序的单步/断点跟踪) 请分别编写能显示以下内容的C语言程序: 3、请分别编写能显示以下内容的C语言程序: (1) I can do it! Ok (2) ************** * * ^_^ Welcome ^_^ * * ************** 求二个数和、 商并显示。 4、求二个数和、差、积、商并显示。
1、掌握基本算术运算与字符处理 2、学会进行选择结构流程控制 学会使用不同的条件控制语句, 3、学会使用不同的条件控制语句,体会其应用方法 体会将待处理的问题转换为算法描述, 4、体会将待处理的问题转换为算法描述,并编程实现

C语言实验六实验报告—指针

C语言实验六实验报告—指针

C语言实验六实验报告—指针实验六:指针实验报告一、实验目的1.了解指针的概念和作用;2.掌握指针与数组、函数的关系;3.熟悉指针的运算和指针的应用。

二、实验内容1.指针的定义和初始化;2.指针与数组的关系;3.指针与函数的关系。

三、实验原理1.指针的定义和初始化指针是一个变量,其值为另一个变量的地址。

可以使用指针来访问和修改内存中的数据。

指针的定义格式为:数据类型*指针名;可以使用&运算符来获取变量的地址,并将其赋值给指针。

2.指针与数组的关系数组是一组相同类型的数据的集合,而指针可以指向数组的首地址。

通过指针可以访问数组中的元素。

数组名本身就是一个指针常量,存储了数组的首地址。

定义指针指向数组时,可以使用数组名作为初始化值。

3.指针与函数的关系函数可以接受指针作为参数,通过指针可以修改传递给函数的变量的值。

函数也可以返回指针,指向在函数内部创建的局部变量。

需要注意的是,在使用指向局部变量的指针时要小心,因为函数执行完毕后,局部变量会被释放,指针将指向无效的内存地址。

四、实验步骤1.指针的定义和初始化定义一个整型变量a,并使用指针p指向a的地址。

使用*p来访问a 的值,使用&运算符获取a的地址并给指针p赋值。

2.指针与数组的关系定义一个整型数组arr,并使用指针p指向数组的首地址。

使用p[i]来访问数组的元素,使用*(p+i)也可以实现相同的效果。

3.指针与函数的关系定义一个函数,接受一个指针作为参数,并使用指针修改传递给函数的变量的值。

定义一个函数,返回一个指针,指向在函数内部创建的局部变量。

在主函数中调用这两个函数,并打印出相应的结果。

五、实验结果1.指针的定义和初始化定义一个整型变量a,并初始化为10。

指针p指向a的地址,使用*p 来访问a的值。

2.指针与数组的关系定义一个整型数组arr,并初始化为{1, 2, 3, 4, 5}。

指针p指向数组的首地址,使用p[i]来访问数组的元素。

C语言实验报告

C语言实验报告

C语⾔实验报告上机要求:禁⽌玩游戏、看视频及从事与课程⽆关的活动。

实验内容按照指导书内容填写,可以把⾃⼰上机编写的程序、遇到的问题、解决办法写上(得到⾼分的条件)。

在有输⼊输出的程序部分,应该写上输⼊输出的结果,以表⽰程序能正确⼯作。

实验⼀编程环境的使⽤⼀、⽬的和要求1.了解编程环境的使⽤。

2.学会处理简单的错误,观察运⾏结果。

3.掌握基本的输⼊输出。

⼆、实验原理VisualC++6.0是⼀个集成的开发环境,包括编辑、编译连接和调试。

编写程序的主要过程是:建⽴⼯作区、建⽴⼯程、添加源⽂件、输⼊程序、运⾏程序、改正出现的错误直到有正确的输出结果。

三、实验内容及步骤1.编程环境的使⽤。

(1)打开VisualC++6.0开发环境。

(2)单击“⽂件-〉新建”菜单命令,显⽰出“新建”对话框(如图1-3)。

在新建对话框单击“⼯程”标签,选中Win32 Console Application项,然后在⼯程框中键⼊控制台应⽤程序项⽬名称,并且选中空⼯程。

(3)添加C++源⽂件,输⼊⽂件名。

(4)打开编辑窗⼝,输⼊程序,保存。

(5)编译运⾏程序,找到其错误位置,改正错误。

2.编写如下程序,从键盘读⼊两个整数,计算它们的和差积商,将结果输出在屏幕上。

3.编写如下程序,从键盘读⼊两个字符,并输出在屏幕上。

四、思考问题1.如何使⽤不同的数据类型。

2.如何处理输⼊输出。

3.如何查找程序中的错误?实验⼆选择结构⼀、⽬的和要求1. 掌握if ...else 及其嵌套的⽤法。

2. 掌握switch 的⽤法。

⼆、实验原理if 语句是专门⽤来实现选择结构的语句,是根据⼀个条件满⾜与否来决定是否执⾏某条语句或从两个语句中选择⼀个语句执⾏。

if-else 语句的⼀般格式为:if (表达式1) 语句1else if (表达式2)语句2……else if (表达式n )语句nelse 语句n+1当程序中有多个条件判断时,若使⽤if 语句可能使嵌套太多,降低了程序的可读性,switch 语句能很好的解决这个问题。

C语言6-指针

C语言6-指针

int a; int *p1; 指针p1 变量a
&a 目标变量p1
P1=&a;
&运算和*运算
&运算和*运算都属于单目运算,&要求运算量是变量或数
组元素,(取地址运算符)其形式为: & 变量名或数组元素名 其含义为取指定变量或数组元素的地址 *运算符要求运算量是地址,(指针运算符——间址运 算符)其形式为: *指针变量名或目标变量地址 含义为访问指定地址的目标变量 如: int i , j; int *p_1 , *p_2; p_1=&i; p_2=&j;
可见,指针p±n的运算并非内存地址含义上的运 算,而是C语言含义的地址运算。这种运算,一般 应在相同数据类型的存储区域上操作才有实际意 义,因此指针和数组关系密切,后图表示了这种 情况。
int a[40],*pa; pa-4 pa-3 pa-2 pa-1 pa pa+1 pa+2 pa+3 pa+4 a[ i –4] a[ i –3] a[ i –2] a[ i -1] a[ i ] a[i+1] a[i+2] a[i+3] a[i+4] (pa-4) (pa-3) (pa-2) (pa-1) pa (pa+1) (pa+2) (pa+3) (pa+4) 2004 2006 2008 2010 2012 2014 2016 2018 2020
运行情况如下: a=5,b=9 max=9,min=5
注: 程序中,a和b的值并未改变,但a1、a2的值已经改变, 因为程序始终让a1指向较小者,a2指向较大者,算法采取不 交换整型变量的值而交换指针变量的值的方法。 使用指针处理数据时,指针在使用前必须被赋予一定的地址 值或指定为空指针。一个没有赋值的指针其指向是不定的。 使用指针未定的指针接收数据时,常常会破坏内存中其它领 域的内容,甚至造成系统失控,应注意避免。例如下面对指 针p的使用是不恰当的:

C语言程序设计 指针

C语言程序设计 指针

实验6 指针学号:姓名:实验日期:一、实验目的和要求(1)掌握指针的概念、指针变量定义和引用。

(2)掌握指针的运用方法。

(3)掌握数组的指针和指向数组的指针变量。

(4)掌握指针与函数的关系。

(5)能正确使用字符串的指针和指向字符串的指针变量。

(6)了解指向函数的指针。

(7)了解指向指针变量的指针的概念及其使用方法。

二、实验内容(注意:由于本实验报告模板中已经有题目内容,故源代码中无需再附上教材上的题目编号信息,只需有你的学号和姓名信息即可。

以下所有题目都要求代码与运行结果一起截图,只有在代码实在过多无法一起截图情况下,才能分开截图)1、【编写程序】请用指针编程实现:从键盘输入10个数,求出其中的最小值。

提示:定义函数lookup(int *str,int *a,int n)查找数组str中的最小值,将数组中的每一个数跟第一个数进行比较,最后得到最小的数。

2、【编写程序】请用指针编程实现:编写函数change(char *s,int *p),将字符串s 中的数字字符转换成数字存储到整型数组p中,函数返回转换后的数字的个数。

提示:先检测字符是否为数字,数字的ASCII码值为30H~39H,逐个判断s中的字符,如果是数字字符,则将其转换成数字存储到整型数组中。

3、【编写程序】请用指针编程实现:先读入10个整数,然后把它们按从大到小的次序排列起来,最后再读入一个整数k,并将k插入到该整数数列中,插入后的数列仍然按从大到小的顺序排列。

要求:编写一个函数实现排序功能。

4、【编写程序】请用指针编程实现:从键盘输入一个字符串,判断输入的字符串是否为回文。

(回文是指正序和反序字符排例方式相同的字符串,如abcdcba是回文)。

5、【编写程序】请用指针编程实现:写一个函数,实现两个字符串的比较。

即自己写一个strcmpa函数,函数原型为:int strcmpa(char *p1,char *p2),若两个字符串相等则返回0,否则返回这两个字符串第一个不同字符的ASCII码差值。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(2)实现过程采用指针处理;
(3)输出原始数组数据以及插入数据后的数组数据并加以相应说明。
3.编写函数newCopy(Char *new,Char *old),它的功能是删除old所指向的字 符串中的小写字母,并将所得到的新串存入new中。
要求:
(1)在主函数中以初始化方式输入一个字符串;
(2)调用newcopy()函数;
for (n=0;* 10;++n)
SCanf("%d",&a[n]);/*输入十个数*/
for (n=0;* 10;++n)
SUm=SUm+*(p+n);/*使用指针访问数据*/
aver=(float)sum∕n;
Printf("Average is %.2f",aver);/*精确到小数点后两位*/
}
#include VStdio.h>
void arr(int *a,int n);/*定义排序函数*/
void insert(int *a,int num);/*插入并排序函数*/ int n=10;/*定义数据个数,可修改*/
void main()
{
int *a,num,j,k,b[10];
printf("请输入个数据:\n");
void main()
{
Char *new1,*old,a[10];/*new是不能当做变量,所以用new1*/ old=a;
new1=a;/*字符串的初始化*/
Printf("请输入字符串:∖n");
SCan f("%s",a);
newcopy(new1,old);/*调用函数*/
Printf("新的字符串为:\n");
三、
有关指针的程序设计1.编程实现:任意输入的10个数,求其平均值。 要求:
(1)10个数采用SCanf语句读入。
(2)利用指针实现对这1 0个数的访问。
(3)要求平均值的精度为小数后面2位。
2.编程实现: 将一个任意整数插入到一个已排序的整数数组中, 插入后数组中的 数仍然保持有序。
要求:
(1)整数数组由初始化方式输入。任意整数由SCa nf函数输入;
SCan f("%d,%d,%d",&a,&b,&c);
q仁&a;q2=&b;q3=&c;/*将三个数的地址存入q1q2q3中*/ exchange(q1,q2,q3);/*调用排序函数*/
Printf("3个数从大到小排列为:∖n%d,%d,%d",a,b,c);
(3)在主函数中输出处理后的结果。4.编程实现:输入三个整数,按由大到小的顺序输出。
要求:
(1通过SCanf函数输入三个数据并存入三个变量中;
(2)利用指针实现从大到小输出;
(3)修改程序,将三个整型数据改为字符型数据,输入三个字符,按从大到小数 顺序输出;
(4)修改程序,将三个字符型数据改为字符串数据,输入三个字符串,按从小到 大顺序输出;
for (j=0;j<n;++j)
scanf("%d",&b[j]);/*输入原始数据*/ a=&b[0];/*初始化*/
arr(a,n);/*调用排序函数T
printf("排序好的数据为:\n");
for (j=0;j<n;++j)
printf("%d ",*(a+j));/*输出排序好的原始数据*/printf("\n请输入要插入的数:");scanf("%d",&num);
Prin tf("%s" ,n ew1);
} void n ewcopy(char *n ew1,char *old)
{
int n ,j=0;
for (;* old!='\0';++old)
if ((* old)>'z' || (* old)<'a'){
* (n ew1+j)=* old;
++j;}/*排除原字符串中的小写字母,将其他字符存入新字符串*/
Printf("插入%d后的数据为:\n" ,n um);
insert(a,num);/*调用插入并排序函数*/
}
void arr(int *a,int n)/*排序函数*/
{
int k,j,h;
for (k=0;k<10;++k)
for (j=0;j<n-k-1;++j)
if (*(a+1+j)<*(a+j)){
*(new1+j)='∖0';/*结束新字符串,否则新字符串的输出会故障*/
四、
#i nclude VStdiO.h>
VOid main()
{
void excha nge(i nt *q1,i nt *q2,i nt*q3);
int b,c,*q1,*q2,*q3;
Printf("请输入个数:∖n");
h=*(a+1+j);
*(a+1+j)=*(a+j); *(a+j)=h;
}
}
void insert(int *a,int num)
{
void arr(int *a,int n);
int j,k;
*(a+n)=num;/*将插入的数排在数组最后一位*/
arr(a,n+1);/*将新数组重新排序*/
for (j=0;j<(n+1);++j)
(5)体会指针对不同数据处理的特点。
四、实验步骤及结果

#i nclude VStdiO.h>
VOid mai n()
{
int a[10], n, sum=0;
float aver;/*定义平均数为浮点型*/
int *p=a;/*初始化*/
Prin tf("Please in PUt 10 nu mbers:\n");
if (*(a+j)==num){
k=j;
break;}/*找到插入的数在数组中的位置*/
for (j=0;j<(n+1);++j)
Printf("%d ",*(a+j));
Printf("∖n插入的数据排在数组的第%d位",k+1);
}
#i nclude VStdiO.h>
VOid n ewcopy(char *n ew1,char *old);
一、
指针
二、
1.掌握指针的基本概念和基本用法。包括:变量的地址和变量的值,指针变量的 说明、指针变量的初始化、指针的内容与定义格式、指针的基本运算等;
2.掌握数组与指针的关系并能够利用指针解决数组的相关问题;3.掌握字符串与指针的关系并能够利用指针处理字符串的问题;4.掌握指针与函数的关系并能够利用指针处理函数问题;5.了解指向指针的指针的概念及其使用方法;6.能够使用指针进行程序设计。
相关文档
最新文档