实验10 数组、指针与字符串
c语言程序设计课程教学大纲(计算机科学与技术)
甘肃民族师范学院计算机专业课程教学大纲C语言程序设计一、说明(一)课程性质必修课(二)教学目的本课程是为计算机类等本、专科学生开设的,以培养学生程序设计能力为目的的专业基础课,是学习其他专业课的基础,同时也是第一门高级语言程序设计课。
本课程的任务是结合一般数值计算向学生介绍计算机程序设计的基本知识,使学生掌握C语言的基本语法,掌握程序设计的基本思想、基本概念和基本方法和技巧,并能运用所学的知识和技能对一般问题进行分析和程序设计,编制出高效的C 语言应用程序;同时了解进行科学计算的一般思路,培养应用计算机解决和处理实际问题的思维方法与基本能力,为进一步学习和应用计算机打下基础。
(三)教学内容计算机程序语言发展史,结构化程序设计的三种基本结构,函数,数组,指针,文件。
(四)教学时数90学时,60理论,30上机(五)教学方式多媒体授课二、本文第一章C语言程序设计基础教学要点:C程序的基本结构。
上机环境,进行简单C程序的编写。
教学时数:4学时(理论3学时,上机1学时)教学内容:第一节概述程序设计语言的发展。
C程序的基本结构。
第二节开发环境上机环境,进行简单C程序的编写。
考核要求:1.掌握编写C语言程序的基本步骤。
2. 掌握上机调试过程。
第二章数据类型、运算符与表达式教学要点:数据类型。
表达式。
输入输出函数。
教学时数:12学时(理论8学时,上机4学时)教学内容:第一节数据类型整型、实型、字符型、枚举型、构造类型、指针。
第二节常量与变量第三节运算符与表达式算术运算符及表达式、关系运算符及表达式、逻辑运算符及表达式、逗号运算符及表达式、条件运算符及表达式、赋值运算符及表达式。
第四节标准输入/输出scanf()函数、printf()函数。
第五节数学函数数学库头文件<math.h>。
第六节随机数发生器函数rand()和srand()函数,对应的头文件“stdlib.h”。
考核要求:1.理解数据结构、常量、变量的概念;2.掌握各种运算符的优先级及结合方向;3.熟练掌握数据的输入、输出方法;4.了解其他数学函数及随机函数的使用方法。
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 语言项目。
数组指针字符串
山西大学计算机与信息技术学院实验报告姓名学号专业班级课程名称面向对象程序设计实验日期2017-4-13成绩指导教师马千里小组批改日期实验名称数组、指针与字符串一、实验目的1.学习使用数组数据对象;2.学习字符串数据的组织和处理;3.学习标准C++库的使用;4.掌握指针的使用方法;5.练习通过debug观察指针的内容及其所指的对象的内容;6.练习通过动态内存分配实现动态数组,并体会指针在其中的作用;7.分别使用字符数组和标准C++库练习处理字符串的方法。
二、实验要求1.编写并测试3×3矩阵转置函数,使用数组保存3×3矩阵。
2.使用动态内存分配生成动态数组来重新完成上题,使用指针实现函数的功能。
3.编程实现两字符串的连接。
要求使用字符数组保存字符串,不要使用系统函数。
4.使用string类定义字符串对象,重新实现上一小题。
5.定义一个Employee类,其中包括姓名、街道地址、城市和邮编等属性,以及change_name()和display()等函数。
display()显示姓名、街道地址、城市和邮编等属性,change_name()改变对象的姓名属性,实现并测试这个类。
6.定义包含5个元素的对象数组,每个元素都是Employee类型的对象。
7.(选做)修改实验四中的选做实验中的people(人员)类。
具有的属性如下:姓名char name[11]、编号char number[7]、性别char sex[3]、生日birthday、身份证号char id[16]。
其中“出生日期”定义为一个“日期”类内嵌子对象。
用成员函数实现对人员信息的录入和显示。
要求包括:构造函数和析构函数、拷贝构造函数、内联成员函数、聚集。
在测试程序中定义people类的对象数组,录入数据并显示。
三、实验内容1.编写转置函数源程序如下:#include<iostream.h>void move(int DATE[3][3]){int i,j,a;for(i=0;i<3;i++)for(j=0;j<i;j++){a=DATE[i][j];DATE[i][j]=DATE[j][i];DATE[j][i]=a;}};int main(){int i,j;int date[3][3];cout<<"请输入数组元素。
C语言实验学生版(最新版)
实验一:简单的C程序设计(2学时)一、实验方式:一人一机二、实验目的:1、了解C语言程序的编译环境和编写过程。
2、掌握C语言程序在Visual C++ 6.0环境下的调试过程。
3、初步了解C语言程序的特点。
4、掌握C语言的数据类型。
三、实验内容:1、计算两个数x和y的和。
(教材P5【例1-2】)2、从键盘输入华氏温度h,输出摄氏温度c(摄氏温度=5/9*(华氏温度-32))。
(实验教材P18)3、给定圆环,输入内圆环半径r1、外圆环半径r2,求出圆环的面积。
(实验教材P27)4、从键盘上输入两个整数x、y,实现两个数的交换,并求出最大值、最小值和两个数的平均值。
(实验教材P21)5、输入并运行以下程序,分析运行结果。
(实验教材P27)#include <stdio.h>void main( ){int i,j;i=8; j=10;printf(“%d,%d\n”,++i,++j);i=8; j=10;printf(“%d,%d\n”,i++,j++);i=8; j=10;printf(“%d,%d\n”,++i,i);i=8; j=10;printf(“%d,%d\n”,i++,i);}四、实验程序代码:五、实验运行结果(截图):实验二:顺序结构程序设计(2学时)一、实验方式:一人一机二、实验目的:1、掌握标识符、常量、变量的定义及使用。
2、掌握C语言的常用运算符及表达式。
3、掌握单分支if语句的使用方法。
4、掌握双分支if-else语句的使用方法。
三、实验内容:1、从键盘输入一个3位整数,请输出该数的逆序数。
(实验教材P27)2、输入3个字符型数据,将其转换成相应的整数后,求它们的平均值并输出。
(实验教材P27)3、判断箱子是正方体还是长方体。
(实验教材P33)4、有一函数: x (x<1)y= 2x-1 (1≤x<10)3x-11 (x≥10) 编写程序,输入x值,输出y值。
利用数组和指针对字符串操作的比较应用
一
c 语言中, 为了实现对字符串的操作 , 可以定义 个 字符数 组 , 可 以定 义一个 字符 串指针 , 也 虽然 它
2 字符指针和数组 的区别 与优势
2 1 赋 值方 式的 不 同意 义 .
2 1 1 数 组 方 式 赋 值 ..
们都 能实现 字符 串 的存 储 和运 算 , 它 们二 者 之 间 但 是有 区别 的 , 能混为 一谈 。 不
洪 阳
( 内蒙古 包头钢 铁职 业技 术学 院 , 内蒙古 包头 04 1) 100
摘
要 : 中通过实例阐述 了字符 串指针变量与字符数组在 处理字符 串上的 区别 , 文 利用指针数组 比二维数组 更适
合于对若干个 字符 串的处理 , 使用更加方便灵活 、 效率更高 。 关键词 : 字符数组 ; 字符指针变量 ; 指针数组
Ab t a t I h a e , e df r n e fds o i g c a a trsrn sw t t n a a lso on e sa d c a a tra - s r c :n t e p p r t i e e c so ip sn h r ce t g i s g v r be fp it r n h rc e t h i h r i i r y r lb rtd t r u h p a t e . h o n e ra sae mo es i l rd s o ig ac r i mo n f h r ce t n s a s ae e a o a e o g rc i s T ep itrar y r ut e f ip sn e t n a u t a a trs g h c r b a o a oc i r ta h t n wo—d me so a ra sa ela h y a emoe c n e in d f xb e t s o t a h f ce ce r ih r i n in lar y s w l s t e r o v n e ta e il o u e s h t e e i in is ae hg e . r n l t Ke r s: h rc e ra s s n a i l so it r ; on e ra s y wo d c a a tra r y ;t g v r e f n es p itra r y i r b a o p
数组字符串和指针
字符串连接函数strcat
• 将两个字符串连接成一个字符串
–char str1[30]={"Hello"}; –char str2[]={"World!"}; –cout<<strcat(str1,str2);
指针
•指针的定义 •使用简单的指针 •指针和数组 •指针和字符串
•指针数组 •多重间接访问 •指针、数组与函数 •main函数的参数
使用指针访问字符数组,大写字符 和小写字符之间相互转换
指针和字符串
• 在C++中,要访问一个字符串可以采用两种方
法 –使用字符数组; –使用指向字符的指针来指向一个字符串
将一个字符串反向输出
指针数组
• 如果一个数组中所有的元素都是同一种类型
的指针,那么这个数组就是一个指针数组 –int *p[10];
数组中每个元素都有自己的地址,并且这些地址是相连的。 这样,如果可以得到一个数组中某个元素的地址,又知道 这个数组中每个元素的数据类型,那么就可以通过一个指 针和在这个指针上进行的算术运算访问到这个数组中的所 有元素。
• 可以说访问数组元素的方法有两种
–一种是使用下标法访问数组元素, –一种方法是使用指针法访问数组元素 –使用指针法访问数组元素的效率要高于下标法。
字符数组来表示字符串
• C++要求在字符串的末尾增加一个字符的空间
用于保存一个字符串结束标记\0。 –要用字符数组来保存字符串时,要定义一个一维
字符数组,让这个字符数组的长度比要保存的字 符串的字符数目多1个,这样就有足够的空间保存 字符串中的所有有效字符和字符串结束标记\0
字符串输入函数gets
C++ 实验数组、指针与字符串实验报告
贵州大学实验报告学院:计算机科学与信息专业:通信工程班级:实验内容1. 编写一个函数,统计一个英文句子中字母的个数,在主程序中实现输入、输出。
2.编写函数reverse(char *s)的倒序递归程序,使字符串s倒序。
实验数据1、代码如下:#include<iostream>#include <string>using namespace std ;int main(){string Str;char ch ;int i=0,j=0;cout << "input str:" <<endl;getline(cin , Str );for ( i=0;i<Str.length();i++ ){if ( Str[i] >='a' && Str[i]<='z' || Str[i] >='A' && Str[i]<='Z' ) j++;}cout << "str="<<Str<<endl ;cout << "The number is:" << j <<endl ;system("pause");return 0;}运行结果:2、代码和运行结果:实验总结1、这次试验让我了解了在C++程序中的输入输出和字符串的统计。
2、掌握了一点点递归的方法。
3、通过这次试验觉得自己还是有很多不足,对基础知识掌握不牢。
指导教师意见签名:年月日注:各学院可根据教学需要对以上栏木进行增减。
表格内容可根据内容扩充。
《程序设计基础(C语言)》实验指导书
《程序设计基础(C语言)》目录第1 章概述 (1)1.1 课程简介 (1)1.2 实验环境选择 (1)第 2 章实验要求 (1)2.1 实验过程要求 (1)2.2 考核及评分标准 (1)第 3 章实验内容 (2)3.1 实验1 熟悉C语言运行环境 (2)3.2 实验2 数据类型 (3)3.3 实验3 运算符和表达式 (4)3.4 实验4 顺序结构及输入和输出 (6)3.5 实验5 选择结构 (7)3.6 实验6 循环结构 (9)3.7 实验7 数组(1) (11)3.8 实验8 数组(2) (12)3.9 实验9 字符串及其操作 (13)3.10 实验10 函数 (14)3.11 实验11 结构体 (15)3.12 实验12 指针 (16)第 1 章概述1.1 课程简介《程序设计基础(C语言)》是软件工程各专业或其它相近专业学生的公共职业基础课,是软件类各专业的入门课程,直接影响学生后继职业技术课程的学习及可持续发展能力的培养。
通过本书,学习基本的程序设计概念和程序设计方法,学会使用C语言解决实际问题,进行初级的程序设计。
1.2 实验环境选择VC++6.0第 2 章实验要求2.1 实验过程要求本课程中,实验者必须服从指导教师和实验室工作人员的安排,遵守纪律与实验制度,爱护设备及卫生。
在指定的实验时间内,必须到机房内实验,其余时间可自行设计和分析。
本课程所涉及的程序代码,都要求有较高的可读性和效率,多文件表示。
2.2 考核及评分标准若实验者在指定上机时间三次不到课,取消考核资格。
请假,必须提前出具正式假条,不接受事后假条。
如果发现抄袭、篡改、伪造实验数据,或实验报告和设计报告雷同,涉及的所有学生的该课程成绩计为0 分。
本课程采用结构化评分,主要由指导教师灵活处理,可以是考勤等。
第 3 章实验内容3.1 实验1 熟悉C语言运行环境一、实验目的1.了解什么是C语言2.熟悉C语言程序开发环境二、实验内容和步骤1.大学生涯的第一个程序1)运行Microsoft Visual Studio 2008或者VC6.02)创建项目,选择win32控制台应用程序或者空项目,项目名为MyFirstApp3)新建项目,选择C++源文件,文件名为HelloWorld4)在程序编辑窗口,输入如下代码#include <stdio.h>/* 主程序*/void main(){printf("hello world\n");}5)执行程序,Ctrl+F56)观察输出结果,并记录2.修改程序1)增加语句,观察输出结果是否不同printf("hello world\n");printf("world is me\n");2)删除输出字符串中的“\n”,观察输出结果是否不同printf("hello world\n");3)进行换行输出,观察输出结果是否不同printf("hello, ");printf("world");printf("\n");4)将上个程序块中的printf("\n");去掉,观察输出结果是否不同3.用自己的语言,描述下对C语言程序的第一印象4.简单描述下,第二步骤中,输出结果相同与不同的原因;以及“\n”的用途3.2 实验2 数据类型一、实验目的1.掌握变量的命名规则和定义2.掌握C语言程序中的各种数据类型并使用它们二、实验内容和步骤1.定义3个变量numInt、numFloat、charInfo,他们的类型分别为整型,单精度类型,字符型;并分别初始化为2,2.0和‘A’,最后输出这三个变量的值。
C++实验报告——数组和指针
C++实验报告——数组和指针评分签名日期湖南商学院实验报告课程名称 C++语言程序设计实验名称数组和指针专业班级姓名学号实验日期第四周星期三七八节实验地点E6032011—2012学年度第二学期一、实验目的1.掌握一维数组和二维数组定义的方法、初始化方法及数组元素的引用方法。
2.熟练掌握一维数组和二维数组的使用。
3.掌握字符数组与字符串的关系以及字符串变量的表示;熟练字符串处理函数的应用。
4.熟练掌握指针、地址、指针类型、void指针、空指针等概念。
5.熟练掌握指针变量的定义和初始化、指针的间接访问、指针的加减运算和指针表达式。
6.会使用数组的指针和指向数组的指针变量。
7.会使用字符串的指针和指向字符串的指针变量。
8.学会使用指向函数的指针变量。
9.了解指针与链表关系。
二、实验内容1.用筛法求100之内的素数。
2.编写程序,输入10个整数,并对其进行从小到大排序,输出排序结果。
3.打印出以下的杨辉三角形(要求打印出10行)。
11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 14.输入两个字符串,比较这两个字符串,并输出比较的结果, 不要用strcmp 函数。
5.编一程序,将两个字符串连接起来,不要用strcat函数。
6.输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。
写3个函数:输入10个数;进行处理;输出10个数。
7.编写一个函数,将一个4×5的矩阵转置。
8.有一篇文章,共有3行文字,每行有80个字符。
要求使用指针变量分别统计出其中英文大写字母、小写字母、数字、空格以及其他字符的个数。
9.对5个字符串进行排序,并输出排序后的字符串。
三、实验环境VC++6.0四、相关知识1.排序方法有多种,可以选择不同的排序方法实现,并比较不同算法排序的效率。
排序可以用最简单的选择排序法。
选择排序法:1) 从n个数中选择最小的一个,把它和第一个数组元素交换;2) 从剩下的n-1个数中选择最小的一个,把它和第二个数组元素交换;3) 依此类推,直到从最后两个元素中选出倒数第二小的元素并把它和倒数第二个元素交换为止。
数组、字符处理实验报告[五篇范例]
数组、字符处理实验报告[五篇范例]第一篇:数组、字符处理实验报告验实验 4数组1.实验目的和要求(1)掌握一维数组与二维数组的定义、使用及初始化方法。
(2)学习数组作为函数参数的用法。
(3)掌握字符数组和字符串函数的使用方法。
(4)掌握与数组有关的常用排序算法,进一步理解模块化程序设计的方法。
(5)掌握字符、字符串的输入/输出方法。
(6)掌握字符数组的使用。
(7)学会使用字符串的指针和指向字符串的指针变量。
2.实验内容:实验指导书中的实验六、实验七3.实验步骤实验六数组部分:6-1:解决问题的算法或源程序代码:程序的运行测试结果截图(考虑各种情况下的运行结果):6-2:该程序完整的源程序代码是:程序运行结果截图:6-3 :该程序完整的源程序代码是:程序运行结果截图:6-4.:解决问题的关键算法的源程序代码是:程序运行结果截图:6-5:解决问题的关键算法的源程序代码是:程序运行结果截图:6-6(选作):我使用的算法为:请用文字描述一下程序运行结果截图:6-7(选作):我使用的算法为:程序运行结果截图:7-1 该程序的功能是:去除空格后的字符串程序运行结果截图:7-2:解决问题的关键算法的源程序代码是:程序运行结果截图:7-3:解决问题的关键算法的源程序代码是:程序运行结果截图:7-4:解决问题的关键算法的源程序代码是:程序运行结果截图:7-5:解决问题的关键算法的源程序代码是:程序运行结果截图:7-6:解决问题的关键算法的源程序代码是:程序运行结果截图:、实验小结一维数组与二维数组使用和初始化,数组作为函数参数的用法还是不太熟练。
掌握了与数组有关的常用排序算法,字符、字符串的输入输出方式。
进一步掌握使用字符串的指针和指向字符串的指针变量的方法。
掌握了字符串数组和数字数组的运算。
第二篇:实验:字符数组与字符串实验11:字符数组与字符串一、实验目的1、理解字符数组和字符串的概念。
2、掌握字符数组的定义、初始、数组元素引用、输入输出。
C++语言程序设计实验6(数组、指针和字符串)
{ for(i = 0; i < 4; ++ i) //二维数组赋值与输出
{
Array[t][i] = ( t * 4 ) + i + 1;
cout << Array[t][i] << ' ';
}
cout <<endl;
}
return 0;
} z 数组作为函数参数
数组元素作实参,与单个变量一样。
for(int i = 0; i < 4; i ++)
cout << "obs[" << i << "].getx(): " << obs[i].getx() << "\n";
return 0;
}
2. 指针
z 指针:内存地址,用于间接访问内存单元 z 指针变量:用于存放地址的变量
例如: int i; int *i_pointer = &i; //指向整型变量的指针,其中&表示取地址运算符
pint = (int *)pv; //void 指针赋值给 int 指针需要类型强制转换:
z 指向常量的指针
不 能 通 过 指 针 来 改 变 所 指 对 象 的 值 ,但 指 针 本 身 可 以 改 变 ,可 以 指 向 另 外 的 对 象 。例 如 :
int a, b;
int *name1 = &a;
using namespace std;
int main( )
{
int Array[10], *va = Array; //第一种访问方式
级软件工程(卓越班)《C语言程序设计》实验指导书
实验1 C的实验环境和C语言的数据类型⒈实验目的⑴了解在具体的语言环境下如何编辑、编译、连接和运行一个C程序。
⑵通过运行简单的C程序,初步了解C源程序的特点。
⑶掌握C语言数据类型,熟悉如何定义一个整型、字符型和实型的变量,以及对它们赋值的方法。
⑷掌握不同的类型数据之间赋值的规律。
⑸学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加(++)和自减(--)运算符的使用。
⒉实验内容和步骤⑴检查所用的计算机系统是否已安装了C编译系统并确定他所在的子目录。
⑵进入所用的集成环境。
⑶熟悉集成环境的界面和有关菜单的使用方法。
⑷输入并运行一个简单的、正确的程序。
⒊实验题目⑴输入下面的程序# include “stdio.h”void main(){ printf(“This is a c program.\n”);}程序无误,其运行的结果为:(请填写)⑵输入并编辑一个有错误的C程序。
# include “stdio.h”void main(){ int a,b,suma=123; b=456;sum=a+bprint(“sum i s %d\n”,sum);}运行后程序出现几处错误,请分别指出,并逐一更改:⑶若k,g均为int型变量,则下列语句的输出为,:# include “stdio.h”void main(){ int k, g;k=017; g=111;print(“%d\t”,++k);printf(“%x\n”,g++);}运行结果为:实验2 数据的输入输出⒈实验目的⑴掌握C语言中赋值表达式的使用方法。
⑵掌握用格式化输入/输出函数实现各种类型数据的输入输出,能正确使用各种格式转换符。
⑶进一步熟悉C程序的编辑、编译、连接和运行的过程。
⒉实验内容(1)用下面的scanf函数输入数据,使a=3,b=7,x=8.5,y=71.82,c1=’A’,c2=’a’。
问在键盘上如何输入?请书写程序#include “stdio.h”void main(){ int a,b;float x,y;charc1,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=3 b=78.5 71.82A a运行结果:A=3,b=7,x=8.500000,y=71.820000,c1=A,c2=a思考:为什么在第三个scanf函数双引号第一个字符为空格字符,如果没有这个空格字符,而写成:scanf(“%c %c”,&c1,&c2);按以上的输入、输出将如何变化?请分析原因(2)用下面的程序输出一个实数。
C++ 第六章 数组、指针与字符串
1、分析程序的运行结果
2、修改后分析
void main() { Date d[5]={Date(2010,10,1), Date(2010,10,2), Date(2010,10,3)}; d[3]=Date(2010,10,4); d[4]=Date(2010,10,5); for(int i=0;i<5;i++) d[i].print(); }
2
数组
数组的声明
格式 数据类型 数组名 [常量表达式 1] [常量表达式2 ]. . .
整型、浮 点型、自 定义类型 数组名:常量 unsigned int 限定数组元素 个数
,代表数组元
素在内存中的 起始地址
eg:int eg: a[5][3]; int a[10];
15 ? 10个元素, 个元素,a[0],a[1]……a[ 9 ] 有 ? 3] a[0][0],a[0][1]……a[? 4 ][?
声明之后,单独使用赋值语句
– 指针名=地址; » int i,*p; p=&i; 例:6_5
面向对象程序设计 内蒙古工业大学 19
指针
指针的赋值
可以声明指向常量的指针,不能通过指针改变所指 对象的值,但指针本身可改变,可指向另外的对象。 可以声明指针类型的常量,这时指针本身的值不能 改变。 int a=3,b=5; const int *p=&a; 指针的值只能赋给相同类型的指针,但 void类型的 int a=3,b=5; p=&b; √ 指针可存储任何类型的对象地址。 int *const p2=&a;
a[0]
a[1] a[2]
面向对象程序设计 内蒙古工业大学 5
数组指针与字符串
分行给二维数组赋初值
例如:static int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
可以对部分元素赋初值
例如:static int a[3][4]={{1},{0,6},{0,0,11}};
数组作为函数参数
数 数组元素作实参,与单个变量一样。
<< " is " << sum << endl; A[i][0]=sum; } }
void main(void) { int Table[3][4] = {{1,2,3,4},{2,3,4,5},{3,4,5,6}};
for (int i = 0; i < 3; i++) { for (int j = 0; j < 4; j++)
数组元素所属类的构造函数
数 若不声明构造函数,则采用默认构造函数。
各元素对象的初值要求为相同的值时,可
组 以声明具有默认形参值的构造函数。
各元素对象的初值要求为不同的值时,需 要声明带形参的构造函数。
当数组中每一个对象被删除时,系统都要 调用一次析构函数。
例6-3 对象数组应用举例
数
//Point.h #if !defined(_POINT_H)
{
pv = &i;
pint = (int *)pv;
}
指向常量的指针
指
不能通过该指针来改变所指对象的值,但指针 本身可以改变,可以指向另外的对象。
例1
针
char *name1 = "John";
*name1='A';
例2
数组指针与字符串
第二讲 数组、指针与字符串
中国地质大学(武汉)计算机学院
1
本章主要内容
1.数组 2.指针 3.动态存储分配* 4.字符串*
2
1.数组
数组的概念 一维数组的声明与引用 二维数组的声明与引用
3
1.1数组的概念
数
数组是具有一定顺序关系的若干相
同类型变量的集合体,组成数组的变量
都是unsigned long int型。
允许声明指向 void 类型的指针。该指针可以被 赋予任何类型对象的地址。
例: void *general;
18
例2-3 指针的声明、赋值与使用
指 #include<iostream.h>
void main(){
针
int *i_pointer; //声明int型指针i_pointer
<<"]="
{
<<B[i]<<endl;
A[i]=i*2-1;
}
B[10-i-1]=A[i]; }
}
6
一维数组的存储顺序
数
数组元素在内存中顺次存放,它们的地址是连
续的。例如:具有10个元素的数组 a,在内存
组 中的存放次序如下:
a a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]
运行结果:
二维数组的声明及引用
数
二维数组的声明
类型说明符 数组名[常量表达式][常量表达式]
例如:float a[3][4];
组
可以理解为:
存储顺序
a
a[0]——a00 a01 a02 a03 a[1]——a10 a11 a12 a13 a[2]——a20 a21 a22 a23
C程序设计_指针和字符串_实验报告
贵州大学《C程序设计实验》实验报告实验名称:专业电子信息科学与技术班级2008级1班姓名学号教师贵州大学理学院2010年{t=*p2;*p2=*p3;*p3=t;}printf("the order is:%d,%d,%d\n",*p1,*p2,*p3); }运行情况:程序改为:#include <stdio.h>#include<string.h>void main(){void swap(char *,char *);char str1[2],str2[20],str3[20];puts("in put three array:");gets(str1);gets(str2);gets(str3);if(strcmp(str1,str2)>0)swap(str1,str2);if(strcmp(str1,str3)>0)swap(str1,str3);if(strcmp(str2,str3)>0)swap(str2,str3);printf("the order is:%s,%s,%s\n",str1,str2,str3);}void swap(char *p1,char *p2){char p[20];strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p);}运行情况:(2).将一个3X3的矩阵转置,用一函数实现之。
在主函数中用scanf函数输入以下矩阵元素:l 3 57 9 1113 15 19将数组名作为函数实参,在执行函数的过程中实现矩阵转置,函数调用结束后在主函数中输出已转置的矩阵。
#include <stdio.h>void main(){t=*(px+3*i+j);*(px+3*i+j)=*(px+3*j+i);*(px+3*j+i)=t;}}}运行情况:(3).有n个人围成一圈,顺序排号。
字符字符串字符数组字符串指针指针数组(C语言)
字符字符串字符数组字符串指针指针数组(C语⾔)⼀、字符指针、字符数组1. 字符指针:字符串指针变量本⾝是⼀个变量,⽤于存放字符串的⾸地址。
⽽字符串本⾝是存放在以该⾸地址为⾸的⼀块连续的内存空间中并以‘\0’作为串的结束。
char *ps="C Language"; 顺序是:1.分配内存给字符指针;2.分配内存给字符串;3.将字符串⾸地址赋值给字符指针;可以写为:char *ps; #ps字符串指针,是指针,是⼀个变量,ps="C Language"; #ps为字符串的⾸地址,利⽤ps++可遍历字符串,字符串存储在以ps为开始地址的地段连续的内存空间中,并以'\0'作为字符串的结束。
这⾥有两点需要注意:①定义字符指针char *a中,*a只是指向⼀个字符。
举例如下:#include<stdio.h>int main(){char *a= "bcd" ;printf("输出字符:%c\n",*a); //输出字符printf("输出字符:%c\n",*(a+1)); //输出字符/printf("输出字符串:%s\n",a); //输出字符串}运⾏结果如下:②若字符串常量出现在在表达式中,代表的值为该字符串常量的第⼀个字符的地址。
char *a; a="hello";这⾥字符串"hello"仅仅代表其第⼀个字符的地址。
2. 字符数组:字符数组是由于若⼲个数组元素(⼀个个字符)组成的,它可⽤来存放整个字符串。
(即⽤字符数组来存放字符串)。
在c语⾔中,将字符串作为字符数组来处理。
(c++中不是)字符数组初始化的⽅法:1). 可以⽤字符串常量来初始化字符数组:char str[]={"Iamhappy"}; //可以省略花括号char str[]="Iamhappy"; //系统⾃动加⼊‘\0’注意:上述这种字符数组的整体赋值只能在字符数组初始化时使⽤,不能⽤于字符数组的赋值,字符数组的赋值只能对其元素⼀⼀赋值。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验十数组、指针与字符串
一、实验目的
1.学习使用数组数据对象
2.掌握指针的使用方法
3. 理解深拷贝与浅拷贝的机制
二、实验设备
计算机,Windows操作系统,VC++6.0
三、实验内容
1.阅读下列程序分析其结果,理解指针与类成员函数的关系
(1)点类Point-指向类的非静态成员的指针,补充完整程序,并体会输出结果
#include <iostream>
using namespace std;
class Point //类的声明
{ int X,Y,Z;
public: //外部接口
Point(int x=0, int y=0,int z=0) {X=x;Y=y;Z=z;}//构造函数
int GetX() {return X;} //内联函数,返回X
int GetY() {return Y;} //内联函数,返回Y
int GetZ() {return Z;} //内联函数,返回Z
};
int main() //主函数
{ Point Obj(4,5,6); //声明对象Obj
Point *pObj=&Obj; //声明对象指针并初始化
int ______________________ ; //声明成员函数指针并初始化,P_getx指向Getx()函数int ______________________ ; //声明成员函数指针并初始化,P_gety指向Gety()函数int ______________________ ; //声明成员函数指针并初始化,P_getz指向Getz()函数cout<<"The coordinate of X is:"<<(Obj.*p_GetX)()<<endl;//语句1:使用成员函数指针
cout<<"The coordinate of Y is:"<<(pObj->GetY)()<<endl; //语句2:使用对象指针
cout<<"The coordinate of Z is:"<<Obj.GetZ()<<endl;//语句3:使用对象名
return 0;
}
(2)点类Point-指向类的静态数据成员的指针,补充完整程序,体会输出结果
#include <iostream>
using namespace std;
class Point //类的声明
{ int X,Y,Z;
public: //外部接口
//其它成员函数同上案例,这里略…
Point(int x=0, int y=0,int z=0) {X=x;Y=y;Z=z;countP++;} //构造函数
static int countP; //静态数据成员引用性说明
};
int Point::countP=0; //静态数据成员定义性说明
int main()
{ Point Obj1(4,5,6), Obj2(14,15,16);//声明对象
int *count=__________________; //语句1:声明指向类的静态数据成员的指针
cout<<"The number of the Objects is:"
<<_________<<endl; //语句2:直接通过指针访问静态数据成员
return 0;
}
(3)点类Point-指向类的静态函数成员的指针,补充完整程序,体会输出结果
#include <iostream>
using namespace std;
class Point //类的声明
{public: //外部接口
//其它成员函数同上案例,这里略…
Point(int x=0, int y=0,int z=0) {X=x;Y=y;Z=z;countP++;} //构造函数
static int GetC() {return countP;} //静态函数成员
private: //私有数据
int X,Y,Z;
static int countP; //静态数据成员引用性说明
};
int Point::countP=0; //静态数据成员定义性说明
int main()//主函数
{ ___________________________; //语句1:声明一个指向类的静态成员函数指针gc指向GetC
Point Obj(4,5,6), Obj2(14,15,16); //声明对象
cout<<"The number of the Objects is:"<<gc()<<endl;//语句2:通过函数指针调用静态成员函数
return 0;
}
2.
2、将实验九中第4题中四边形扩展为一个多边形,顶点数N。
实现上述的功能。
提示:数据成员动态对象数组类arrayofpoint。
3. 定义一个Employee类,其中包括表示姓名、街道地址、城市和邮编等属性,包括chage_name()和display()等函数;display()使用cout语句显示姓名、街道地址、城市和邮编等属性,函数change_name()改变对象的姓名属性,实现并测试这个类。
四、实验记录:
1、
2、
3、
五、实验结论:。