当前位置:文档之家› 实验六 数组、指针与字符串

实验六 数组、指针与字符串

实验六  数组、指针与字符串
实验六  数组、指针与字符串

实验六

数组、指针与字符串(4学时)

一、实验目的

1.学习使用数组。

2.学习字符串数据的组织和处理。

3.学习标准C++库的使用。

4.掌握指针的使用方法。

5.练习通过debug观察指针的内容及其所指的对象的内容。

6.练习通过动态内存分配实现动态数组,并体会指针在其中的作用。

7.分别使用字符数组和标准C++库练习处理字符串的方法。

二、实验任务

1.编写并测试3x 3矩阵转置函数,使用数组保存3×3矩阵。

2.使用动态内存分配生成动态数组来重新完成上题,使用指针实现函数的功能。

3.编程实现两字符串的连接。要求使用字符数组保存字符串,不要使用系统函数。

4.使用string类定义字符串对象,重新实现上一小题。

5.定义一个Employee类,其中包括姓名、街道地址、城市和邮编等属性,以及change—name()和display()等函数。display()显示姓名、街道地址、城市和邮编等属性,change—name()改变对象的姓名属性。实现并测试这个类。

6.定义包含5个元素的对象数组,每个元素都是Employee类型的对象。

7.(选做)修改实验4中的选做实验中的people(人员)类。具有的属性如下:姓名

char name[11]、编号char number[7]、性别char sex[3]、生日birthday、身份证号char id [16]。其中“出生日期”定义为一个“日期”类内嵌对象。用成员函数实现对人员信息的录人和显示。要求包括:构造函数和析构函数、拷贝构造函数、内联成员函数、聚集。在测试程序中定义people类的对象数组,录入数据并显示。

三、实验步骤

1.编写矩阵转置函数,输人参数为3×3整型数组,使用循环语句实现矩阵元素的行列对调,注意在循环语句中究竟需要对哪些元素进行操作,编写main()函数实现输入、输出。程序名:lab6—1.cpp。

2.改写矩阵转置函数,参数为整型指针,使用指针对数组元素进行操作,在main()

函数中使用new操作符分配内存生成动态数组。通过debug观察指针的内容及其所指的

对象中的内容。程序名:lab6—2.cpp。

3.编程实现两字符串的连接。定义字符数组保存字符串,在程序中提示用户输入两

个字符串,实现两个字符串的连接,最后用cout语句显示输出。程序名:lab6—3.cpp。用cin实现输入,注意,字符串的结束标志是ASClI码0,使用循环语句进行字符串间的字符拷贝。

4.使用string类定义字符串对象,编程实现两字符串的连接。在string类中已重载

了运算符“+:”实现字符串的连接,可以使用这个功能。程序名:lab6—4.cpp。

5.在employee.h文件中定义Employee类。Employee类具有姓名、街道地址、城市

和邮编等私有数据成员,都可以用字符型数组来表示,在成员函数中,构造函数用来初始化所有成员数组,对字符数组的赋值可以使用字符串拷贝函数strcpy(char*,char* name);display()中使用cout显示姓名、街道地址、城市和邮编等属性,change—name()改变类中表示姓名属性的字符数组类型的数据成员。在主程序中定义这个类的对象并对其进行操作。程序名:lab6—5.cpp。

6.使用上一小题中定义的Employee类定义对象数组emp[5],使用循环语句把数据显示出来。程序名:1ab6—6.cpp。

C语言实验报告《指针》.doc

C语言实验报告《指针》 学号:__________ 姓名:__________ 班级:__________ 日期:__________ 指导教师:__________ 成绩:__________ 实验五指针 一、实验目的 1、掌握指针的概念、会定义和使用指针变量 2、掌握指向数组的指针变量 3、掌握字符串指针的使用 二、实验内容2、写一函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度。(习题10.6)#include #include long fun(char *p) { 填写程序 } void main() { char s[6]; long n; printf( enter a string:n gets(s); n=fun(s); printf( %ldn ,n); }

一、三、实验步骤与过程 四、程序调试记录 C语言实验报告《综合实验》 学号:__________ 姓名:__________ 班级:__________ 日期:__________ 指导教师:__________ 成绩:__________ 实验六综合实验 一、实验目的 1、掌握C语言中的变量、数组、函数、指针、结构体等主要知识点。 2、掌握C程序的结构化程序设计方法,能使用C语言开发简单的应用程序。 3、掌握C程序的运行、调试方法等。 二、实验内容 编写一个学生信息排序程序。要求:

1、程序运行时可输入n个学生的信息和成绩(n预先定义)。 2、学生信息包括:学号、英文姓名、年龄;学生成绩包括:语文、数学、计算机。 3、给出一个排序选择列表,能够按照上述所列信息(学号、姓名、年龄、语文、数学、计算机)中的至少一个字段进行排序,并显示其结果。 1、使用函数方法定义各个模块。 三、实验步骤与过程 物理实验报告·化学实验报告·生物实验报告·实验报告格式·实验报告模板 四、程序调试记录

实验三 数组和字符串

实验三数组和字符串 一、实验目的 1.掌握Java中的数组定义、引用 2.掌握向量的基本概念和应用技术 3.掌握使用字符串String类处理字符串的方法 4.掌握使用字符串StringBuffer类处理字符串的方法 5.掌握Date类以及Calendar类的常用方法; 二、实验内容 1.使用https://www.doczj.com/doc/f41981523.html,ng.Math类,生成100 个100~999 之间的随机整数,找出他们之中的最大的和最小的,并统计随机产生的大于300 的整数个数。 package exercise; publicclass shiyan3_1 { publicstaticvoid main(String [] args) { int count=0; int max=0; int min=Integer.MIN_VALUE; int num[]=newint[100];//声明并创建一个具有100 个元素的整型数组对象num int i; for(i=1;i<=100;i++) { num[i-1]=100+(int)(Math.random()*899); System.out.print(num[i-1]+"\t");//随机产生一个100~999 之间的随机整数 if(i % 10 == 0) System.out.println();//输出当前产生的随机数,并一行输出10 个数 if(num[i-1]>max) max=num[i-1]; if(num[i-1]300) count++; } System.out.println("最大的随机整数是:"+max); System.out.println("最小的随机整数是:"+min); System.out.println("大于300 的整数个数是:"+count); } }

实验8 指针

实验8 指针 一、实验目的 1. 熟练掌握指针的定义、赋值的方法 2. 掌握间接引用运算符的使用方法 3. 掌握通过指针引用数组元素的方法 4. 掌握使用指针处理字串的方法 二、实验内容 实训1 循环输入学生某门课的成绩,将成绩存储到数组中,统计最高分和获得最高分的学生人数,最后输出统计信息。 1)在VS2013中新建项目,在项目中新建C++源文件,输入下面程序。 #include// 包含输入输出接口文件 using namespace std; // 引用标准命名空间 int main() // 主函数 { const int n = 5; // 使用常变量定义学生人数 int score[n]; // 定义成绩数组,有n个整型元素 int maxScore = 0; // 最高分,并初始化为 int maxStudent = 0; // 得到最高分的学生人数 int i; // 循环变量 int *p = 0; p = score; // p指向score[0] for (i = 0; i < n; i++) // 计数循环 { // 开始循环 cout << "请输入第" << i << "位学生的成绩:"; cin >> p[i]; // 输入第i位学生的成绩,并存储到score[i] if (maxScore < p[i]) // 如果第i位学生的成绩高于原最高分 { maxScore = p[i]; // 将最高分修改为第i位学生的成绩} } // 结束循环 cout << "本班最高分为" << maxScore << endl; cout << "得到最高分的学生序号为:" << endl; for (i = 0; i < n; i++) // 计数循环 { // 循环开始 if (*(p + i) == maxScore) // 如果第i位学生的成绩等于最高分 { maxStudent++; // 得最高分的学生人数增1 cout << i << endl; // 输出该生序号

c语言实验报告6 指针

实验6 指针1.实验目的和要求 (1)掌握指针的概念、指针变量定义格式和引用。 (2)掌握指针的运算方法。 (3)掌握数组的指针和指向数组的指针变量。 (4)掌握指针与函数的关系。 (5)能正确使用字符串的指针和指向字符串的指针变量。(6)了解指向函数的指针。 (7)了解指向指针变量的指针。 2.实验内容:实验指导书中的实验九。 3.实验步骤 9.1 调试程序,找出程序的错误。 改正后的程序代码(贴图): 运行结果(帖图): 9.2 运行程序:

运行结果:; 9.3 修改程序错误,并运行。 改正后程序代码: 运行结果(帖图): 9.4. 程序填空:

运行结果(请帖图):9.5. 程序填空:

程序填空: #include main() { int a[5][5]={0},*p[5],i,j; for(i=0; i<5; i++) p[i]= &a[i][0] ; for(i=0; i<5; i++) { *(p[i]+ i )=1; *(p[i]+5- (i+1) )=1; } for(i=0; i<5; i++) { for(j=0; j<5; j++) printf("%2d", p[i][j]); Printf("\n") ; } } 运行结果(请帖图):

9.6 编程(选作) #include main() { int *p,a[20],i,k,m,n; p=a; printf("请输入人数n:"); scanf("%d",&n); for(i=0;i

微机原理实验2程序 - 字符串匹配实验

8086汇编语言程序实验: 实验二、字符串匹配实验 题目: 1、(必做题)编程实现:从键盘分别输入两个字符串(不必等长), 然后进行比较,若两个字符串有相同的字符,则显示“MATCH”,若字符都不相同则显示“NO MATCH”。 2、(选做题)编程实现:从键盘分别输入两个字符串,然后进行比 较,若两个字符串的长度和对应字符都完全相同,则显示“MATCH”,否则显示“NO MATCH”。 对应程序如下所示: ;第1题 ;==================================== HUICHE MACRO ;定义一个具有回车、换行功能的宏,为程序多次回车换行所调用。 MOV DL,0DH ;用2号功能“显示”回车。 MOV AH,02H INT 21H MOV DL,0AH ;用2号功能“显示”换行。 MOV AH,02H INT 21H ENDM DA TA SEGMENT MESSAGE1 DB 'MATCH','$' ;定义“MATCH”提示信息,“$”作为调用9号功能的结束符。 MESSAGE2 DB 'NO MATCH','$' ;定义“NO MATCH”提示信息。 TISHI1 DB 'Please input the first string:','$' ;提示输入第1个字符串的提示信息。 TISHI2 DB 'Please input the second string:','$' ;提示输入第1个字符串的提示信息。 STRING1 DB 100 ; 100为存第一个字符串的最大可用空间的字节数。 DB ? ;预留字节,存储将要输入的第1个字符串的实际长度。 DB 100 DUP(?) ;预留100个字节空间,用于存放第1个字符串。 STRING2 DB 100 DB ? DB 100 DUP(?) DA TA ENDS

实验八 指针程序设计(解答)

《指针程序设计》实验解答 1、改错题 (1) include int digits(char *s) { int c=0; while(*s) //s改为*s { if(*s>='0' && *s<='9') //*s>=0 && *s<=9改为*s>='0' && *s<='9' c++; s++; } return c; } void main() { char s[80]; printf("请输入一行字符\n"); gets(s); printf("字符长度是:%d\n",digits(s)); } (2) #include swap(int *p1,int *p2) { int p; //int *p改为int p p=*p1; //*p=*p1改为p=*p1 *p1=*p2; *p2= p; //*p2=*p 改为*p2=*p } void main() { int a,b; scanf("%d%d",&a,&b); printf("a=%d\tb=%d\n",a,b); swap(&a,&b); printf("a=%d\tb=%d\n",a,b); }

(3) #include void move(int *pointer) ; //添加 void main(void) { int a[3][3],*p,i; printf("输入数组元素:\n"); for(i=0;i<3;i++) scanf("%d%d%d",&a[i][0], &a[i][1], &a[i][2]); //scanf("%d%d%d",a[i][0], a[i][1], a[i][2]) p=&a[0][0]; // p=a[0][0]; move(p); printf("转置后的数组为:\n"); for(i=0;i<3;i++) printf("%d %d %d\n",a[i][0], a[i][1], a[i][2]); } void move(int *pointer) { int i,j,t; for(i=0;i<3;i++) for(j=i;j<3;j++) { t=*(pointer+3*i+j); //t=(pointer+3*i+j); *(pointer+3*i+j)=*(pointer+3*j+i); *(pointer+3*j+i)=t; //*(pointer+3*j+i)=*t; } } 2、程序填空 (1) #include int findmax(int *s,int t ) { int i,k=0; for(i=0;i< t ;i++) //1 if( s[i]>s[k]) k=i; // 2 return k ; //3 } void main() { int a[10]={12,23,34,45,56,67,78,89,11,22},k=0,*add; int j; for(j=0;j<10;j++) printf("%4d%4d%10xh\n",j+1,a[j],&a[j]);

C语言指针实验报告

C语言程序设计实验报告 1实验目的 (1)掌握指针的概念,会定义和使用指针变量; (2)能正确使用变量的指针和指向变量的指针变量; (3)能正确使用数组的指针和指向数组的指针变量; (4)能正确使用字符串的指针和指向字符串的指针变量; 2实验内容 将一个任意整数插入到已排序的整形数组中,插入后,数组中的数仍然保持有序;要求: (1)整形数组直接由赋值的方式初始化,要插入的整数有scanf()函数数入;(2)算法实现过程采用指针进行处理; (3)输入原始数据以及插入整数后的数据,并加以说明;

3算法描述流程图

4源程序 #include main() { int a[100],m,i,*p,n,w; printf("请输入要输入的数组的元素个数:\n"); scanf("%d",&n); printf("请输入已排好序的数组:\n"); for(i=0;i=w;i--) { a[i+1]=a[i]; } a[i+1]=m; for(i=0;i<=n;i++) { printf("%-4d",a[i]); } printf("\n"); } 5测试数据 “1,3,5,7,9,11,13,15,17,19······10” 6运行结果 7出现问题及解决方法 在编写过程中,

for(i=n-1;a[i]>=w;i--) { a[i+1]=a[i]; } a[i+1]=m; 这一步没有注意a[i++]=m和a[i+1]=m中i++和i+1不同,a[i++]=m是先将的值赋给a[i],然后在执行自增;而在实验过程中忽略了这一点,造成了不必要的麻烦; 8实验心得 通过这次指针实验掌握了指针的概念,会定义和使用指针变量,并且能利用指针来简单化一些问题,给以后的编程带来了很大的便利;

微机实验三 串操作

实验三串操作 一、实验目的 1.熟悉串操作指令的功能。 2.了解串操作指令的使用方法。 二、实验预习要求 1.复习8086指令系统中的串操作类指令。 2.按照题目要求在实验前编写好实验中的程序段。 三、实验任务 1.输入以下程序段并运行之,回答后面的问题。 CLD MOV DI,1000H MOV AX,55AAH MOV CX,10H REP STOSW 上述程序段执行后: (1) 从DS:1000H开始的16个字单元的内容是什么?。 (2) (DI)= ?(CX)= ?,并解释其原因。 2.在上题的基础上,再输入以下程序段并运行之,回答后面的问题。

MOV SI,1000H MOV DI,2000H MOV CX,20H REP MOVSB 程序段执行后: (1)从DS:2000H开始的16个字单元的内容是什么? 55AAH (2)(SI)=?(DI)=?(CX)= ?,并分析之。 SI=1020H,DI=2020H,CX=0000H 3.从DS:1000H开始存放有一个字符串”This is a string”,要求把这个字符串从后往前传送到DS:2000H开始的内存区域中(即传送结束后,从DS:2000H开始的内存单元的内容为”gnirts a si sihT”),试编写程序段并上机验证之。 assume cs:code,ds:datasg,ss:stack datasg segment db 'THIS IS A STRING' db 1000 dup(1) datasg ends stack segment dw 0,0,0,0,0,0,0,0 stack ends code segment start: mov ax,datasg

实验八实验报告_卓越14_彭佳伟

C语言程序设计实验报告 专业计算机科学与技术班级卓越工程师班 日期2014年12月17日成绩 第八次实验指针实验指导教师李开 学生姓名彭佳伟学号U201414716 实验组别同组人姓名 实验名称指针实验 一、实验目的 (1)熟练掌握指针的说明、赋值、使用。 (2)掌握用指针引用数组的元素,熟悉指向数组的指针的使用。 (3)熟练掌握字符数组与字符串的使用,掌握指针数组及字符指针数组的用法。 (4)掌握指针函数与函数指针的用法。 (5)掌握带有参数的main函数的用法。 二、实验任务 1.源程序改错 下面的源程序中是否存在错误?如果存在,原因是什么?如果存在错误,要求在计算机上对这个源程序进行调试修改,使之能够正确执行。 源程序1 #include int main(void) { float *p; scanf("%f", p); printf("%f\n", *p); return 0; } 2.源程序完善、修改、替换 (1)下面的源程序的功能是:通过函数指针和菜单选择来调用字符串拷贝函数或字符串连接函数。请在程序中的下划线处填写合适的表达式、语句或代码片段来完善该程序。 #include #include int main(void) { char a[80], b[80], c[160], *result = c; int choice, i; do { printf("\t\t1 copy string.\n"); printf("\t\t2 connect string.\n");

printf("\t\t3 exit. \n"); printf("\t\tinput a number(1-3) please! \n"); scanf ("%d", &choice); }while(choice < 1|| choice > 5); switch(choice) { case 1: p = strcpy; break; case 2: p = strcat; break; case 3: goto dowm; } getchar(); printf("input the first string please! \n"); i = 0; printf("input the second string please! \n"); i = 0; result = (a, b); printf("the result is %s\n", result); dowm: ; return 0; } (2)请上机运行第(1)题程序,使之能按下面要求输出结果: 1 copy string. 2 connet string. 3 exit input a number(1-2) please! 2(输入) Input the first string please! the more you learn,(输入) input the second string please! the more you get.(输入) the result is the more you learn, the more you get. 3.跟踪调试源程序 请按下面的要求对所给的源程序进行操作,并回答问题和排除错误。 (1)单步执行源程序。进入strcpy时,watches窗口中s为何值?返回main时,watches 窗口中s为何值? (2)排除源程序中的错误,使程序输出结果为:there is a bote on the lake. 源程序3 #include char *strcpy(char *, char*); int main(void) {

朱 实验三 字符及字符串的输入和输出

实验三字符及字符串的输入和输出 一、实验目的 1.熟悉如何进行字符及字符串的输入输出。 2.掌握简单的DOS系统功能调用。 二、实验预习要求 1.复习系统功能调用的1、2、7、8、9、10号功能。 2.按照题目要求预先编写好实验中的程序段。 三、实验任务 1.输入以下程序段并用“single step”单步运行,执行INT 21H指令时,在键盘上按“5”键。 MOV AH,1 INT 21H (1) 运行结束后,(AL)=?它是哪一个键的ASCII码? (2) 重复运行以上程序段,并分别用“A”、“B”、“C”、“D”键代替“5” 键,观察运行结果有何变化? (3) 再将1变为7和8,分别运行之 2.输入以下程序段并运行之。 MOV DL,‘A’ MOV AH,2 INT 21H (1)观察屏幕上的输出,是否显示了“A”字符? (2)分别用“#”、“X”、“Y”、“$”、“?”代替程序段中的“A”字符,观 察屏幕上的输出有何变化,并查看DL中的内容。 (3)分别用0DH、0AH、24H代替程序段中的“A”字符,观察屏幕上 的输出有何变化。 (4)用07H代替程序段中的“A”字符,观察屏幕上有无输出?计算机内的扬声器是否发出“哔”的声音? 3.按要求运行程序,并回答问题。 提示:系统使用0AH号功能调用时,按如下方法设置键盘缓冲区:

在DS:0000H开始的内存区域设置变量名为M1的如下键盘缓冲区:DATA SEGMENT M1 DB 5,0,5 dup (?) DATA ENDS 然后输入以下程序段并单步运行,执行INT 21H指令时,在键盘上键入“5”、“4”、“3”、“2”、“1”、〈回车〉这六个键。 LEA DX,M1 MOV AH,0AH INT 21H 程序段运行完后,检查DS:0000H开始 的内存区域: ①DS:0001H单元的内容是什么?它表示了什么含义? ②从DS:0002H开始的内存区域中的内容是什么?其中是否有字符“1” 的ASCII码?为什么? 4.要在屏幕上显示一个字符串“Hello, world”,写出该字符串变量的定义语句和显示这个字符串的程序段。上机验证之。(此题不要求写在实验报告上) 四、实验报告要求 1.整理出运行完整的实验程序和运行结果。 2.回答题目中的问题。 3. 1、2、9、10号功能的输入输出参数有哪些?分别放在什么寄存器中? 4.

实验七 指针

实验七指针(1) 一、实验目的 1.掌握指针变量的定义与引用 2.掌握指针与变量、指针与数组的关系 3.掌握用数组指针作为函数参数的方法。 4.熟悉TC集成环境的调试指针程序的方法 二、实验内容 以下均用指针方法编程: 1. 调试下列程序,使之具有如下功能:用指针法输入12个数,然后按每行4个数输出。写出调试过程。 main() { int j,k,a[12],*p; for(j=0;j<12;j++) scanf("%d",p++); for(j=0;j<12;j++) { printf("%d",*p++); if(j%4 == 0) printf("\n"); } } 调试此程序时将a设置为一个"watch",数组a所有元素的值在一行显示出来。调试时注意指针变量指向哪个目标变量。 2. 在主函数中任意输入10个数存入一个数组,然后按照从小到大的顺序输出这10个数,要求数组中元素按照输入时的顺序不能改变位置。 三、实验要求 1.复习指针的定义与使用方法。 2.编写程序,运行程序并记录运行结果。 3.将源程序、目标文件、可执行文件和实验报告存在软盘上。 实验八指针(2) 一、实验目的 1.掌握C语言中函数指针的使用方法。 2.掌握C语言中指针数组的使用方法。 3.熟悉TC集成环境的调试指针程序的方法 二、实验内容 1.调试下列程序,使之具有如下功能:任意输入2个数,调用两个函数分别求: ⑴ 2个数的和, ⑵ 2个数交换值。 要求用函数指针调用这两个函数,结果在主函数中输出。 main() { int a,b,c,(*p)(); scanf("%d,%d",&a,&b);

实验09-字符串

实验九字符串程序设计 班级:学号:姓名:评分: 一.【实验目的】 1、熟练掌握字符串的存取和操作方法方法。 2、进一步掌握C程序的调试方法和技巧。 二.【实验内容和步骤】 1、程序调试题 A.目标:进一步学习掌握程序调试的方法和技巧。 B.内容:参照《实验指导》教材P71“1.调试示例”,从键盘输入一个以回车键结束的字符串(少于80个字符),将它的内容逆向输出。例如:输入“ABCD”,输出“DCBA”。改正程序中的错误,使其实现程序的功能。(注:程序文件保存在“调试示例”文件夹中,文件名为error08_1.cpp) ①调试正确的源程序清单 #include int main( ) { int i, k, temp; char str[80]; printf("input a string: \n"); i = 0; while((str[i] = getchar( )) != '\n') i++; str[i] = '\0'; k = i - 1; for(i = 0; i < k; i++){ /* 调试时设置断点 */ temp = str[i]; str[i] = str[k]; str[k] = temp; k--; } /* 调试时设置断点 */ for(i = 0; str[i] != '\0'; i++) putchar(str[i]); printf("\n"); return 0; } ②运行结果:(提示:通过屏幕截图,贴粘程序运行界面)。 2、完善程序,并调试运行程序 题目(1)求字符串长度。程序功能:连续输入一批以#结束的字符串(字符串的长度不超过80),遇## 则全部输入结束。统计并输出每个字符串的有效长度。例如:输入:hello 12#abc+0##,表示连续输入2个字符串"hello

C语言指针实验报告

C语言程序设计实验报告 1实验目得 (1)掌握指针得概念,会定义与使用指针变量; (2)能正确使用变量得指针与指向变量得指针变量; (3)能正确使用数组得指针与指向数组得指针变量; (4)能正确使用字符串得指针与指向字符串得指针变量; 2实验内容 将一个任意整数插入到已排序得整形数组中,插入后,数组中得数仍然保持有序; 要求: (1)整形数组直接由赋值得方式初始化,要插入得整数有scanf()函数数入; (2)算法实现过程采用指针进行处理; (3)输入原始数据以及插入整数后得数据,并加以说明;

3算法描述流程图

4源程序 #include main() { int a[100],m,i,*p,n,w; printf("请输入要输入得数组得元素个数:\n"); scanf("%d",&n); printf("请输入已排好序得数组:\n"); for(i=0;i=w;i--) { a[i+1]=a[i]; } a[i+1]=m; for(i=0;i<=n;i++) { printf("%-4d",a[i]); } printf("\n"); } 5测试数据 “1,3,5,7,9,11,13,15,17,19······10” 6运行结果 7出现问题及解决方法 在编写过程中,

for(i=n-1;a[i]>=w;i--) { a[i+1]=a[i]; } a[i+1]=m; 这一步没有注意a[i++]=m与a[i+1]=m中i++与i+1不同,a[i++]=m就是先将得值赋给a[i],然后在执行自增;而在实验过程中忽略了这一点,造成了不必要得麻烦; 8实验心得 通过这次指针实验掌握了指针得概念,会定义与使用指针变量,并且能利用指针来简单化一些问题,给以后得编程带来了很大得便利;

实验报告8

实验八:指针及其应用 班级: 学生姓名:李林 学号:20141060101 一、实验目的 1、掌握指针的概念 2、掌握指针变量的定义和基本使用方法 3、掌握使用指针操作数组元素的方法 4、掌握使用指针操作字符串的方法 二、知识要点 1、变量的直接访问和间接访问的概念 2、指针和指针变量的概念 3、简单变量的指针及指向简单变量的指针变量的定义、赋值及使用 4、数组的指针及指向数组的指针变量的定义、赋值及使用 5、字符串的指针及指向字符串的指针变量的定义、赋值及使用 三、实验预习(要求做实验前完成) 1、写出一个C语句,使得指针变量u指向变量x: 2、写出一个C语句,输出“指针变量p指向的整型变量”的值: 3、把“指针变量u所指向的变量”的值变为40,其语句是: 4、定义三个变量,其中x1是整型变量;y1、y2是指向整数的指针变量: 5、若有语句:char t[20]= “abcdefgh”,*p;则使p指向字符串的第一个 字符的语句是: 四、实验内容(以下题目要求使用指针方法完成) 1、已知一个整数数组x[4],它的各元素值分别为3、11、8和22。使用指针表 示法编程序,求该数组各元素之积。#include #include int main() { int x[4]={3,11,8,22};

int *p=&x,ji=1,i; for(i=0;i<4;i++) { ji=ji*(*p); p++; } printf("%d\n",ji); return 0; } 2、编写程序,输入10个整数至一数组,将其中最小的数与第一个数对调,把 最大的数与最后一个数对调。(要求输出对调前后的数组)#include #include void ha(int *p,int n) { int i; for(i=0; i

实验5字符串的操作

博客网站设定了校验密码的规则,编写方法检验一个字符串是否是合法的密码。规则如下: 密码长度在8-16 之间 密码只能包含字母和数字 密码必须存在至少2 个数字如果用户输入的密码符合 2. import java.util.Scanner; 3. import java.util.regex.Pattern; 4. public class Check { 5. public static void main(String[] args) { 6. System.out.println("请输入密码:"); 7. Scanner sc = new Scanner(System.in); 8. String str = sc.next(); 9. Check ch = new Check(); 10. ch.checkup(str); 11. sc.close(); 12. } 13. 14. public void checkup(String str) { 15. String patternStr1 = "([0-9]|[a-zA-Z]){8,16}"; 16. String patternStr2 = ".*\\d.*\\d.*"; 17. boolean result1 = Pattern.matches(patternStr1, str); 18. boolean result2 = Pattern.matches(patternStr2, str); 19. if (result1 && result2) { 20. System.out.println(" valid password"); 21. } else { 22. System.out.println(" Invalid password "); 23. } 24. } 25. } 26. String patternStr2 = ".*\\d.*\\d.*"; 27. boolean result1 = Pattern.matches(patternStr1, str); 28. boolean result2 = Pattern.matches(patternStr2, str); 29. if (result1 && result2) { 30. System.out.println(" valid password"); 31. } else { 32. System.out.println(" Invalid password "); 33. } 34. } 35. } 要求从用户输入的多行文本中提取学生的姓名、学号及登录日期,并封装到Student 类中作为类的私有属性。创建一个Student 类型的对象数组,对学号进行升序排序并输出 /*从键盘输入多行文本,格式如下: 学生端名称,姓名,班级名称,学生ID,注册时间 姜涛,姜涛,,20092212232,2011-11-4 9:06:56

《C语言程序设计》(江宝钏著)实验八答案

江宝钏实验八 3.一般编程题 1.用指针法统计10个数中正数、负数与零的个数,并分别求正数的总与,负数的总与。#include void main() { int a[10]; int i,*p,sum1,sum2,c1,c2,c3; printf("输入10个整数:"); for(i=0;i<10;i++) scanf("%d",&a[i]); c1=c2=c3=0;sum1=sum2=0; for(p=a;p<(a+10);p++) { if(*p<0){ sum1+=*p;c1++;} if(*p==0){ c2++;} if(*p>0) {sum2+=*p;c3++;} } printf("正数,负数的与:%d %d\n",sum2,sum1); printf("正数、零、负数的个数:%d %d %d \n",c3,c2,c1); }

4.较难编程题 1.输入一行字符,开始用一个指针指向这行字符的开头,并依次向后移,分别统计出其中英 文字母、空格、数字与其它字符的个数。 #include #include #define N 100 void main() { char *p; char str[N]; int c1,c2,c3,c4,i; printf("input a string:"); gets(str); i=strlen(str); c1=c2=c3=c4=0; for(p=str;p='a'&&*p<='z'||*p>='A'&&*p<='Z') c1++;

实验六字符及字符串处理

实验六字符及字符串处理 一、实验目的 1.掌握头文件ctype.h的用法; 2.掌握常用函数isalpha、isdigit、isspace、isupper、islower、toupper、tolower等常用函数的使用。 3.掌握常用字符串处理函数strcmp、strcat等的模拟。 二、实验内容 1.字符处理练习。编写一个程序提示用户输入一系列字符,只提示一次。在循环中使用scanf(“%c”,…)语句,一次读入一个字符。根据输入内容生成如下输出结果:一次一行,回显输入字符;调用isalpha()检查是否为字母,若是调用touper()函数将其转换为大写字母,如果不是,则打印出一条错误信息,如果字符为句点,打印一条说明信息后退出。 2.回文。设计一个程序测试一条语句是否是回文:即从前向后读和从后向前读的字母都是相同的。首先提示用户输入一条语句。使用getchar一次读入所有字符,直至出现句号为止。读取过程中要求:(1)回显输入字符;(2)调用tolower()函数将每个字符转换成小写;(3)计算读入字符的个数(包括句号在内);(4)将转换后的字符保存在数组的下一个元素中。算法提示:从数组的结尾和开始位置一起比较字母。比较第1个和最后一个,第2个和倒数第2个,依此类推。如果有一对无法匹配,则退出循环后宣布该条语句不是回文。如果一直进行到语句中内始科没有出现问题,则停止然后宣布输入语句为回文。假设输入内容不会超过80个字符。 3.不用库函数模拟strcat和strcmp函数。 三、选做内容 1.检测字符。使用字符分类函数将字符分成几个类:大写字母、小写字母、数字、代白字符和其他符号。编写一个函数完成测试。在主函数中读取一系列字符,直至遇到句号为止。回显每个输入字符,并找印出相应的标注。计算每个类别出现的次数。处理句号的同时为句号计数,然后打印出字符总额并退出程序。算法提示:使用一个计数器数组,递增计数器时可用枚举常量作为数组的下标。 2.编写一个程序在表格中显示ASCII代码,类似附录中的ASCII表格。不要试图直接打印无法打印的字符,跳过列出十六进制代码的列。 四、常见错误 1.char和int。理论上讲,在C语言中,字符就是极短的整数。但在要领上又是一种独立的类型,有自己独立的操作和不同的输入输出方法。确保不要进行无谓的操作,例如两个字符相乘等; 2.字符输入。输入字符时,空白字符是可能造成困扰的原因。Scanf()对数字类型的输入转换处理自动跳过之前的空白字符,在读取第1个非空白字符时才开始存储数据。但是,无论是否空白字符,getchar()都返回第1个字符,带有“%c”的scanf也是一样。为了跳过之前的空白字符,必须使用带有“%c”限定词(格式中的百分号之前包括一个空格)的scanf()。如果遗漏了这个空格,程序就可能读取空白字符并试图将其翻译成为数据,这通常都会导致出现错误。因此,程序员必须清楚地知道自己想做什么(读取空白字符还是跤过空白字符),然后为任务选择恰当的输入机制。 实验七字符串(二) 一、实验目的 1.熟练掌握字符串的匹配查找。 2.熟练掌握字符串的插入操作。 3.熟练掌握字符串的压缩还原处理。 二、实验内容 1.改错题 以下程序对一个由字母和数字字符组成的字符串从头至尾作如下变换:

微机原理实验三 字符串匹配程序.

实验三字符串匹配程序 教学目标:通过教学让学生掌握显示提示信息的方法及接收键盘输入信息的方法。 重点、难点: 重点:字符串匹配的算法,用INT 21H 的09号子功能显示提示信息,用INT 21H的0A号子功能接收字符 难点:用INT 21H的0A号子功能接收字符 课时安排:2学时 教学过程:讲解实验过程 一实验目的: 掌握显示提示信息的方法及接收键盘输入信息的方法 二实验内容: 编写程序,实现两个字符串的比较。如相同,则显示“MATCH”,否则,显示”NO MATCH”. 三程序框图(讲解流程图,介绍编写程序的思路) 四实验原理 1、讲解DB、DUP、EQU等伪指令的功能以及使用格式 2、讲解INT 21H 的09H子功能的功能、工作情况以及使用格式 3、讲解INT 21H的0AH子功能的功能、工作情况以及使用格式 4、讲解串扫描指令SCASB的功能以及使用格式 5、入栈、出栈指令PUSH 、POP的使用情况 五实验参考程序

CRLF MACRO MOV AH,02H MOV DL,0DH INT 21H MOV AH,02H MOV DL,0AH INT 21H ENDM DATA SEGMENT MESS1 DB 'MA TCH',0DH,0AH,'$' MESS2 DB 'NO MA TCH',0DH,0AH,'$' MESS3 DB 'INPUT STRING1:',0DH,0AH,'$' MESS4 DB 'INPUT STRING2:',0DH,0AH,'$' MAXLEN1 DB 81 ACTLEN1 DB ? STRING1 DB 81 DUP(?) MAXLEN2 DB 81 ACTLEN2 DB ? STRING2 DB 81 DUP(?) DATA ENDS STACK SEGMENT STA DB 20 DUP(?) TOP EQU LENGTH STA STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DA TA,SS:STACK,ES:DATA START: MOV AX,DA TA MOV DS,AX MOV AX,DA TA MOV ES,AX MOV AX,STACK MOV SS,AX MOV SP,TOP ;段寄存器及堆栈初始化 MOV AH,09H MOV DX,OFFSET MESS3 INT 21H ;显示输入提示1 MOV AH,0AH MOV DX,OFFSET MAXLEN1 INT 21H ;接收键入的字符串1 CRLF ;回车换行 MOV AH,09H MOV DX,OFFSET MESS4 INT 21H ;显示输入提示2 MOV AH,0AH MOV DX,OFFSET MAXLEN2 INT 21H ;接收键入的字符串2 CRLF CLD

实验08-1参考答案

实验八指针程序设计 班级:学号:姓名:评分: 一.【实验目的】 1、理解指针、地址和数组间的关系。 2、掌握通过指针操作数组元素的方法。 3、掌握数组名作为函数参数的编程方式。 4、进一步掌握C程序的调试方法和技巧。 二.【实验内容和步骤】 1、程序调试题 A.目标:进一步学习掌握程序调试的方法和技巧。 B.内容:有n个整数,使各数顺序往后循环移动m个位置(m void mov(int *, int, int); int main() { int m, n, i, a[80], *p; printf("Input n, m:"); scanf("%d%d",&n,&m); for(p=a,i=0;i0;j--) x[j]=x[j-1]; /* 调试时设置断点 */ x[0]=k; } } ②运行结果:(提示:通过屏幕截图,贴粘程序运行界面)。

相关主题
文本预览
相关文档 最新文档