当前位置:文档之家› 指导书_实验十+指针

指导书_实验十+指针

指导书_实验十+指针
指导书_实验十+指针

实验十指针

学号:201703795 姓名:唐茂专业班级:计教03

一、验证及程序分析

1、输入两个整数,并使其从大到小输出,用指针变量实现数的比较。

(1)源程序:

#include

void main()

{

int *p1,*p2,*p,a,b;

scanf("%d,%d",&a,&b);

p1=&a; p2=&b;

if(a

{

p=p1; p1=p2; p2=p;

}

printf("a=%d,b=%d\n",a,b);

printf("max=%d,min=%d\n",*p1,*p2);

}

(2)程序运行结果:

(3)在程序中的定义一个整型变量t,然后将语句段if(a

{

p=p1; p1=p2; p2=p;

}

改为:

if(a

{

t=*p1; *p1=*p2; *p2=t;

}

再运行结果,观察两程序的区别。

2、运行并改正下面程序中的错误。

#include

void main()

{

int a=3,b;

int *p;

*p=a;

b=*p;

printf("%d\n",b);

a=100;

b=*p;

printf("%d\n",b);

}

(1)程序运行结果:

(2)请简要分析程序错误的原因:

(3)请将程序中的错误改正后重新运行:

3、用指针法输入12 个数,然后按每行4 个数输出。(1)算法分析:定义一个整型数组和一个整型指针,这样通过数组就可以

静态分配内存空间,存储数据;然后将指针与数组相关,使指针指向与数组相同的首地址处,这样就可以通过指针对数组的存储空间加以操作。

(2)源程序:

#include

void main()

{

int j,k,a[12],*p ;

p=a; //使指针p 指向与数组a的首地址处

for(j=0;j<12;j++)

scanf("%d",p++); //移动P 的位置,输入数据

p=a; //指针重新定位到数组a的首地址

for(j=0;j<12;j++)

{

if((j+1)%4==0 )

printf("\n"); //按每行4 个数输出

printf("%4d",*p++); //注意:*p++相当于*(p++)

}

printf("\n");

}

(2)程序运行结果:

4、用字符串指针实现两个字符串的复制。

(1)算法分析:分别定义两个字符数组,用于存放字符串;再定义两个字符串指针,分别指向两个串的起始地址,进行串复制,其实就是将一个指针(如p1)所指向的字符,复制给另一个指针(如p2)所指向的位置,重复该过程直到串尾。如下图:

(2)源程序:

#include

void main()

{

char a[30]="C program.";

char b[30],*p1,*p2;

p1=a; p2=b; //两个指针分别指向两个字符串的起始位置

for( ;*p1!='\0';p1++,p2++) //当串1没有到串尾时,进行复制

——————;

* p2='\0'; //给串2加上结束标志

printf("string a is:%s\n",a);

printf("string b is:%s\n",b);

}

(3)程序的运行结果:

5、用字符串指针实现字符串的接收。

(1)源程序

#include

void main()

{

char * str;

scanf("%s",str);

printf("输入的字符串是:%s\n",str);

}

(2)请简要分析程序错误的原因:

(3)请将程序中的错误改正后重新运行:

6、用字符指针数组处理多个字符串:用选择排序法将若干字符串按字母顺序排序输出。

(1)算法分析:定义一个字符指针数组,给定其初值为若干字符串,则数组中的各指针分别指向字符串。用strcmp函数比较各字符串的大小,并按选择法进行排序后,则str指针数组中的指针所指向的字符变为有序。

注意:①在进行字符比较时,一定要用strcmp函数;

②比较过程中,当需要交换两字符位置时,并不是直接交换两串的内容,而是交换指针变量中的值。当指针的指向变了,则输出时的内容也随之改变。

如下图:

(2)源程序:

#include

#include

void main( )

{

char * str[]={"C program", "Basic", "Foxbase+", "Fortran", "Pascal"};

int i,j; char * temp;

for(i=0;i<4;i++) /*选择法排序*/

for(j=i+1;j<5;j++)

if(strcmp(str[i],str[j])>0) //当前面串比后面的大时,交换位置

{ temp=str[i]; str[i]=str[j]; str[j]=temp; }

for(i=0;i<5;i++)

printf("%s\n",str[i]);

}

(3)运行程序,并将程序的运行结果抓图至下方:

二、编程练习

1、练习指针与字符串

在一行字符串中删去指定的字符。例如,要求在一行文字:“I have 150 Yuan!!”中删去字符“0”,使其变为“I have 15 Yuan!!”。

字符串可用gets()函数接收,要删除的字符用getchar( )函数接收。

(1)算法提示:先用一个字符串指针指向串的开头,然后用循环进行比较,当*p与接收到的字符不同时,指针后移,继续比较。比较到相同时,把指针后面的字符复制给指针当前所指向的位置,如*p=*(p+1);

(2)请将源程序及结果粘贴到下面。

2、从键盘接收5个字符串,然后按字典顺序排序后输出。

算法提示:分别定义一个字符指针数组(用于存放字符串的地址)和一个二维字符数组(用于存放字符串),开始时令指针数组中的元素指向每个串的起始位置;用选择法(也可尝试用冒泡法)对字符串进行排序。程序片断如下:char * str[5]; //定义字符指针数组,用于指向多个字符串

char str1[5][80]; //用于接收多个字符串

for(i=0;i<5;i++) gets(str1[i]); //从键盘上接收多个字符串

for(i=0;i<5;i++) str[i]=str1[i]; //让指针数组中的字符串指针指向输入的串……

//排序

//输出

for(i=0;i<5;i++)

printf(”%s\n”, str[i]);

(1)请将源程序粘贴到下面。

(2)程序运行结果抓图至下方:

实验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; // 输出该生序号

【实验指导书】实验7:指针 (1)

(2014~2015学年-第1学期) 1. 理解指针、地址和数组间的关系。 2. 掌握通过指针操作数组元素的方法; 3. 掌握数组名作为函数参数的编程方式。 4. 掌握通过指针操作字符串的方法。 5. 了解掌握使用断点调试程序的方法。 二、实验环境: 操作系统:Window 8 编译环境:CodeBlock 13.02 三、实验要求及内容(根据实验要求,将整个实验过程需要的数据和截屏记录于此,并整理成实验步骤。): 1.设计一个程序计算输入的两个数的和与差,要求自定义一个函数sum_diff(float op1,float op2,float *psum,float *pdiff),其中op1和op2是输入的两个数,*psum和*pdiff是计算得出的和与差。 解: (1)流程图如图1所示: 图1 程序7-1的流程图

图2 实验7-1实验源代码 (3)运行结果(测试用例) 实验7-1运行结果如图3所示 图3 实验7-1运行结果 2. 输入n 个正整数,使用选择法将它们从小到大排序后输出。要求:利用所学指针的内容实现。 提示:在指针这一章所学的冒泡排序算法基础上改写。 解: (1)流程图如图1所示: 图1 程序7-2的流程图

图2 实验7-2实验源代码(3)运行结果(测试用例)实验7-2运行结果如图3所示 图3 实验7-2运行结果

3. 输入10个整数存入数组a ,再输入一个整数x ,在数组a 中查找x ,若找到则输出相应的下标,否则显示“Not found ”。要求定义和调用函数seach(int list[],int n ,int x),在数组list 中查找元素x ,若找到则返回相应的下标,否则返回-1,参数n 代表数组list 中元素的数量。试编写相应程序。 解:(1)流程图如图1 7-3的流程图 (2)源代码 源代码如图2所示

实验10 指针作为函数的参数

实验10 指针作为函数的参数 一、实验目的 1、学会使用指针变量作为函数的参数。 2、学会使用数组作为函数的参数。 3、正确理解和掌握指针与数组的关系。 二、实验知识点 1、指针变量的定义。注意:指针变量和一般简单变量的区别。 2、简单变量作为函数的参数是一种值传递方式。 3、指针作为函数参数是一种地址传递方式。 4、数组作为函数的参数也是一种地址传递方式。 三、实验内容和步骤 1、分析下面程序的运行结果,并调试程序。 //指针作为函数的参数 #include int fun(char *s); void main() { cout<

# include #include fun(char *s); //函数fun声明 void main() {char a[]=”abcdefgh”; fun(a); cout< #include void f(int b[]) //函数f的定义 {int i=0;

C语言实验指导书

《C语言》实验指导书 2016年10月

实验一C程序得运行环境与运行方法 一、实验目得 1。掌握所用得C语言环境得基本操作方法、 2.掌握编辑、编译、连接与运行C程序。 二、实验内容与要求 1、学习使用Visual C++6.0环境开发C程序。 (1)在磁盘上建立自己得文件夹,用于存放C程序,如“e:\cexam”。 (2)启动Visual C++6。0、执行“开始”-—“所有程序”——“Microsoft Visual Studio 6。0"——“Microsoft Visual Studio 6.0”命令,进入VC++编程环境,如图1 所示。 图1 MicrosoftVisual Studio6、0窗口 (3)新建C 程序文件。 执行“文件”——“新建”命令,单击如图2所示得“文件”选项卡,选中“C++So urceFile”;

图 2 新建文件 在“文件”文本框中输入文件名test1, 则C源程序被命名为test1。cpp,若想指定扩展名为.c,则需在“文件”文本框中输入文件名test1.c;在“目录”下拉列表框选择已经建立得文件夹,如,单击“确定”按钮,就新建了C源程序文件,并显示编辑窗口与信息窗口,如图3所示,然后在编辑窗口中输入程序。 (4)保存程序。 在如图3得界面输入程序代码。由于完全就是Windows 界面,输入及修改可借助鼠标与菜单进行,十分方便。当输入结束后,执行“文件”——“保存”命令,保存源文件。 图3编辑源程序(5)编译程序。信息窗口编辑窗口

执行“组建”--“编译[test1、cpp]”命令,弹出消息框,如图4所示,单击“就是"按钮,开始编译,并在信息窗口中显示编译信息。如果信息窗口中显示“test1.obj-0error(s),0 warning(s)",表示编译正确,没有发现错误与警告,并生成了目标文件test1、obj、 图4产生工作区消息框 如果显示错误信息,说明程序中存在严重得错误,必须改正,双击某行出错信息,程序窗口中会指示对应出错位置,根据信息窗口得提示分别予以纠正;如果显示警告信息,说明这些错误并未影响目标文件得生成,但通常也应该改正。 (6)连接程序。 执行“组建”——“组建[test1.exe]”命令,开始连接,并在信息窗口中显示连接信息、如果信息窗口中出现“test1.exe—0 error(s),0 warning(s)”,表示连接成功, 并生成了可执行文件test1、exe。 (7)运行程序。 执行“组建"——“执行[test1、exe]”命令,自动弹出运行窗口,如图5所示,显示运行结果。其中“Pressany key to continue”提示用户按任意键退出运行窗口,返回到VC++编辑窗口。 图 5 显示运行结果 (8)关闭程序工作区。 当一个程序编译连接后,VC++系统自动产生相应得工作区,以完成程序得运行与调试。若想执行第二个程序时,必须关闭前一个程序得工作区,然后通过新得编译连接,产生第二个程序得工作区。否则得话运行得将一直就是前一个程序。 执行“文件"--“关闭工作区命令",弹出得对话框如图 6所示,单击“就是”按钮,关闭工作区。 图 6 关闭所有文档窗口 (9)打开文件、 如果要再次打开C源文件,可以执行“文件”——“打开”命令,在查找范围中找到

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

《指针程序设计》实验解答 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]);

实验7-指针

《C语言程序设计》实验报告实验序号:7 实验项目:指针 一、实验目的及要求 1、通过实验掌握指针的定义和使用指针变量; 2、掌握使用指针对数组和字符串进行操作; 3、掌握函数中指针类型参数的使用; 4、要求采用指针方法完成。 二、实验设备(环境)及要求 使用Turbo C 或Visual C++ 6.0;windows系列操作系统的环境。 三、实验内容与步骤 1.输入运行下面这个程序,观察并分析结果: #include "stdio.h" void main() { int a[]={2,3,4,5,6}; int *p1; char *p2="computer\n"; p1=a; printf("%d\n",p1+2); printf("%d\n",*(p1+2)); p1=a+2; printf("%d\n",p1+2); printf("%d\n",*(p1+2)); printf(p2+2); printf("%s",p2+2); } 运行结果截图:

2.以下程序调用invert 函数按逆序重新放置a 数组中的值,a 数组中的值在main 函数中读入,请填空。 #include "stdio.h" void invert(int *s,int i,int j) { int t; if(i

实验10指针做函数参数编程训练

实验10指针做函数参数编程训练 实验目的: 1.掌握指针的定义及使用; 2.体会使用指针的作用; 3.掌握指针做函数参数的作用; 4.掌握指针做函数参数的基本步骤; 实验题目: 1.输入某年某月某日,计算并输出它是这一年的第几天。 /*函数功能:对给定的某年某月某日,计算它是这一年第几天 函数参数:整型变量year,month,day,分别代表年,月,日 函数返回值:这一年的第几天*/ int DayofYear(int year,int month,int day); 2.输入某一年的第几天,计算并输出它是这一年的第几月第几日。 /*函数功能:对给定的某一年的第几天,计算它是这一年的第几月第几日函数入口参数:整型变量year,存储年 整型变量yearDay,存储这一年的第几天 函数出口参数:整型指针pMonth,指向存储这一年第几月的整型变量 整型指针pDay,指向存储第几日的整型变量 函数返回值:无*/ void MonthDay(int year,int yearDay,int *pMonth,int *pDay); 3.输出如下菜单,用switch语句实现根据用户输入的选择执行相应的操作。 1.year/month/day->yearDay 2.yearDay->year/month/day 3.Exit Please enter your choice: 参考程序及注释: #include #include int DayofYear(int year, int month, int day); void MonthDay(int year, int yearDay, int *pMonth, int *pDay); void Menu(void); int dayTab[2][13] = {{0,31,28,31,30,31,30,31,31,30,31,30,31}, {0,31,29,31,30,31,30,31,31,30,31,30,31}}; int main() { int year, month, day, yearDay; char c; Menu(); /* 调用Menu函数显示一个固定式菜单*/ c = getchar(); /* 输入选择*/ switch (c) /* 判断选择的是何种操作*/ { case '1': printf("Please enter year, month, day:"); scanf("%d,%d,%d", &year, &month, &day);

《C语言》实验指导书

内江职业技术学院 上机实验指导书 科目:C语言程序设计 系别:电商学院 班级:15软件1班 教师:王刚 2015—2016学年第一学期

《计算机基础》课程实验指导书 目录 实验一C语言概述 (1) 实验二基本数据类型 (3) 实验三输入输出和算法 (6) 实验四选择和循环结构 (10) 实验五循环结构和函数 (13) 实验六模块化设计 (14) 实验七一维数组和字符串 (18) 实验八多维数组和指针 (20) 实验九指针 (22) 实验十指针和结构体 (23) 实验十一链表和共同体 (26) 实验十二文件 (27) 教材和参考书 1、教材: 《谭浩强、张基温,《C/C++程序设计教程》,高等教育出版社。 2、参考书: (1)《(美)H.M.Deitel,P.J.Deitel著,薛万鹏译,《C程序设计教程》,机械工业出版社。 (2)杨路明,《C语言程序设计教程》,北京邮电大学出版社。

实验一C语言概述 一、实验目的 1、了解所用的计算机系统。 2、了解在该系统上如何进行编辑、编译、连接和运行一个C程序。 3、通过运行简单的C程序了解C程序的特点。 二、实验内容 1、熟悉C语言集成环境。 2、利用C语言集成环境进行编辑、编译、连接和运行一个C程序。 3、运行一个自己编写的程序,程序的功能是输出两行文字。 三、实验设备及环境 微机若干台,并安装有C语言软件。 四、实验步骤 1、熟悉所用的系统。了解Windows资源管理器的使用方法:文件的查看、复制、运行等方法,C所在目录,文本文件的建立方法。 2、进入C,并新建一个C源程序文件。 3、熟悉C的集成环境,了解各菜单项有哪些子菜单。 4、输入下面的程序,注意区分大小写。 #include void main() { printf("This is a C program.\n"); } 编译并运行程序。 5、关闭工作区,新建一个程序,然后输入并运行一个需要在运行时输入数据的

实验八实验报告_卓越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.了解或掌握运用指针处理数组。 二、实验内容: 第1题、分别用下标法和指针变量p访问数组a[5]={1,3,5,7,9},至少用三种方法输出数组各元素的值,每种方法输出的五个元素在一行上。 第2题、书上P211例10-4。并仔细体会P212“使用指针实现数组元素逆序存放”的指针移动思想。 第3题、编写程序,使用指针实现逆序打印一维整型数组所有元素的操作。 数组a: 1 3 7 2 9 6 5 8 2 0 4 8 2 0 4 第4题、书上P213冒泡排序。 第5题、编写一个函数s(a,n),其中a是一个指向整型的指针接受一维整型数组首地址,n 是数组长度,功能是通过指针求数组中元素的平均值,并编写主函数测试函数。 第6题、编写一个函数void sort(int *a, int n), 用选择法对数组a中的元素按降序排序。在main()函数中输入10个数,调用sort函数排序后,然后输出。

第7题、使用指针把从键盘输入的2个数按从大到小的顺序输出(不改变变量的值),请补充完整并上机调试。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 第8题、输入10个整数存入一维数组,然后逆置数组,最后输出。下面给出部分程序的内容,请将程序补充完整,然后上机调试。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 第9题、上机调试下面程序,看哪些程序实现了交换主函数中两个变量值的操作,哪些没有实现,并分析原因。 第10题、调试修改下面程序,函数fun的功能是:在含有10 个元素的s数组中查找最大数,及最大数所在位置(即,下标值),最大数可能不止一个。最大数作为函数值返回,最大数的个数通过指针变量n传回,所在位置由数组pos传回。例如: 若输入 2 8 5 7 8 4 5 3 2 8 则应输出:The max: 8 The positions: 1 4 9 请改正函数fun中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

C++上机实验报告(指针)

C++上机实验报告 实验名称:指针 专业班级: 姓名: 学号: 实验日期:

目录 1.实验目的 2.实验内容 3.程序代码 4.调试结果 5.实验心得

1.实验目的 (1)通过实验进一步掌握指针的概念,会定义和使用指针变量;(2)能正确使用数组的指针和指向数组的指针变量; (3)能正确使用字符串的指针和指向字符串的指针变量; (4)能正确使用引用型变量。 2.实验内容 编程序并上机调试运行程序(要求用指针或引用处理)。 (1)输入3个整数,按由小到大的顺序输出。编译一个程序,用指针变量作为参数。 (2)在上题的基础上将程序改为:输入3个字符串,按由小到大的顺序输出。 (3)用引用指针变量作为形参,实现3个整数由小到大输出。(4)有n个人围成一圈,顺序排号。从第1个人开始报数(从1~3报数),凡是到3的人退出圈子,问最后留下的人原来排在第几号。(5)在主函数中输入10个字符串。用另一个函数最它们排序。然后在主函数输出这10个已排好的字符串。 要求用以下方法编程: Ⅰ.指向一维数组的指针座函数参数; Ⅱ.用string数组方法。

3.程序代码 (1) #include using namespace std; int main() {void swap(int *p1,int *p2); int n1,n2,n3; int *p1,*p2,*p3; cout<<"input three integers n1,n2,n3:"; cin>>n1>>n2>>n3; p1=&n1; p2=&n2; p3=&n3; if(n1>n2) swap(p1,p2); if(n1>n3) swap(p1,p3); if(n2>n3) swap(p2,p3); cout<<"Now,the order is:"<

C语言实验指导书

《C语言程序设计》实验指导书 每次实验(10分)一共100分,最后折合成50分计入最终成绩。 第一次实验(一星期完成) ●内容一:熟悉编译环境和工具 在VS中键入以下的这段程序 1)关键字变色,自动缩近,智能提醒 2)代码风格和注释 3)编译出错,连接出错。修改错误 4)调试,断点,监控变量,进入函数,跳出函数。监控内存,监控堆栈 在linux中键入以下这段程序 1)熟悉VIM程序,gcc编译程序(开两个终端窗口) 2)熟悉GDB调试程序的基本技巧。(list,backstrac; break, watch,delete; next, continue, run; print,set,help) 其中,help命令是一个非常的参考,如果忘记了某条具体的命令,可以随时去参考help命令来得到相关的细节。 3)介绍《鸟歌的私房菜》这本书 ●内容二:登陆https://www.doczj.com/doc/b61620258.html,网站,在线提交。 1)熟悉基本的提交方法和规则 2)现场演示反作弊程序的效果 ●程序: 输入:两个整数,用空格分隔, 输出:两个整数的和,计算两个整数的和的功能,要求用函数实现,同时如果输入有错误,例如(12 abc)程序能够给出“error input”的提示。 参考输入: 12 33 参考输出: 45 参考输入: 12 abc 参考输出:

error input ●思考和扩展(无标准答案) 如果用户输入12 12abc 如何判断并终止程序,输出“error input”的提示 第二次实验(一星期完成) ●内容一:登陆ACM,演示OJ系统 1)介绍这个网站,有兴趣的同学可以去尝试一下() ●内容二:计算工资/小时程序 1)强制类型转换 2)一共有多少位的算法 3)整形数的溢出,以及针对特定问题,如何解决溢出问题 注意:linux编译下应该加上–lm 开关。 ●程序: 输入:工资数,小时数(整数,空格分隔)。 输出:工资/小时数(精确到小数点后2位),并根据四舍五入取整,然后将取整的数平方后计算一共有几位,后三位分别是什么? 参考输入: 2345 2 ←input (separate by space) 参考输出: 1172.50 ←average salary 1173 ← round off to integer 7 ← number of digit 0 2 5 ← the last three digit (separate by space) 第三次实验(两星期完成) ●内容一:介绍linux 下的grep,并给出相应的实例。重点介绍下面要用到的四个符号。 ●内容二:正则表达式 ^ 代表字符串开始 . 代表任意字符 $ 代表字符串末尾

实验七 指针

实验七指针(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);

实验十一指针应用二daan

实验十一指针应用(二) 一?实验目的 1.了解指针与函数的关系并能够初步利用指针处理函数问题。 2.了解指向数组的指针的概念及其使用方法。 3.了解指向指针的指针的概念及其使用方法。 二?实验学时数 1学时 三?实验步骤 (一)阅读程序 #include #include fun(char *s) {char a[7]; s=a; strcpy(a,"look"); puts(s); } main() {char *p; fun(p); 2.#include main() {int a[5]={2,4,6,8,10},*p,**pp; p=a; pp=&p; printf("%d",*p++); printf("%3d\n",**pp); }

3. #include main() {char *str[]={"Pascal","C language","Cobol","Dbase"}; char **p; int k; p=str; for(k=0;k<4;k++) printf("%s\n",*(p++)); 4. #include main() {int a[2][3]={2,4,6,8,10,12},(*p)[3],i,j; p=a; scanf("%d,%d",&i,&j); printf("a[%d][%d]=%d",i,j,*(*(p+i)+j)); } (二)调试程序 要求:分析下列程序是否正确,如有错,错在哪儿?应如何改正?如正确,运行结果如何?上机调试之。 1.调试下列程序,使之具有如下功能:任意输入2个数,调用两个函数分别求:⑴ 2个数的和,⑵ 2个数交换值。要求用函数指针调用这两个函数,结果在主函数中输出。 行号sum(int a,int b,int c) 1{ c=a+b; 2 return c;

实验10 指针2 (修复的)

《C语言程序设计》 实验报告 实验时间: 6月7号 实验班级:计算机双学位1501 实验报告总份(片)数: 1 份(片) 实验教师:饶东宁 计算机学院工一实验室 广东工业大学 《C语言程序设计》 实验报告 实验题目: 实验10 实验时间: 6月7号 实验班级:双学位1501

实验人学号: 3213010359 实验人姓名:梁雪卿 实验教师:饶东宁 计算机学院工一实验室 广东工业大学 实验10 指针2 1 实验目得 (1)进一步掌握指针得应用 (2)能正确使用数组得指针与指向数组得指针变量 (3)能正确使用字符串得指针与指向字符串得指针变量 (4)了解指向指针得指针得用法 2 实验内容 根据题目要求,编写程序(要求用指针处理),运行程序,分析结果,并进行必要得讨论分析。 (1)有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3得人退出圈子,问最后留下得就是原来得第几号得人。 算法说明:

#include int main { int i,k,m,n,num[50],*p; scanf("n=%d",&n); p=num; for(i=0;i

{ *(p+i)=0; k=0; m++; } i++; if(i==n) i=0; } while(*p==0) p++; printf("The last one is NO、%d\n",*p); return 0; } 运行结果: 分析与思考: 以1到n为序给每个人编号,i为每次循环时计数变量,k为按

C语言实验指导书

C语言程序设计实验指导书 沈岚岚吕元长编写 桂林电子科技大学信息科技学院 2012.03

前言上机实验的目的和要求 一上机实验的目的 上机实验的目的,绝不仅仅是为了验证教材和讲课的内容,或者验证自己所编程序正确与否。学习程序语言,上机实验的目的如下: 1 加深对讲授内容的理解,尤其是一些语法规定,光靠课堂讲授,既枯燥无味又难以记住,通过多次上机,就能自然、熟练地掌握语法规定。 2 了解和熟悉C语言程序开发环境。熟悉一两种环境(计算机系统的软件和硬件条件),再遇到其他的系统时便会触类旁通,很快学会。 3 学会上机调试程序,也就是善于发现程序中的错误,并且能很快地排除这些错误,使程序能够正确地运行。要真正掌握计算机应用技术,就不仅应当了解和熟悉有关理论和方法,而且要求自己动手实践能力强。 4 在做实验时千万不要在程序通过后就认为万事大吉,完成任务了,应当在通过的程序上做一些调试和修改,看看会得到什么结果。多动脑筋思考,将会对你有很大帮助。 二上机实验前的准备工作 1 了解所用的计算机系统的性能和使用方法; 2 复习和掌握与本实验有关的教学内容; 3 准备好上机所用的程序,切忌自己不思考、不编制程序或抄袭别人的程序; 4 准备好调试和运行时所需的数据。 三上机实验的步骤 1 调出C语言编译系统,进入C语言工作环境; 2 输入自己编制好的程序; 3 检查输入是否有错,及时更正; 4 进行编译和连接; 5 运行程序,分析结果。 四、实验结束,整理实验报告 实验报告应包括以下内容: 1 上机题目; 2 程序清单; 3 运行结果; 4 对结果的分析和本次获得的经验和体会。

实验报告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

实验11 指针(1)

实验11 指针(1) 一、实验目的: 1、通过查看变量地址,了解不同类型数据在内存存储情况;理解用指针获取内存数据的两个关键点:首地址、数据类型(决定占用的存储单元的个数、数据存储方式); 2、掌握指针变量的定义方法、=(赋值)、&(取地址)、*(取内容,间接访问); 3、能够用指针变量作函数参数,实现通过函数调用得到n个要改变的值: 4、掌握指针变量p的算术运算:p±n(n为整数)、p++(p--)、++p(--p),理解移动一个数据单位的真实含义; 5、能够用数组名或指针变量作函数形参,在函数中实现对数据的批量处理。 二、实验内容 1、(基础题)根据注释填写程序所缺代码,然后运行程序,并回答相关问题: #include int main() { char ch1='I',ch2='Q'; int n1=1, n2=6; double d1=1.25,d2=20.5; //定义两个指针变量pch_1、pch_2分别指向ch1、ch2 ___________(1)____________ //定义两个指针变量pn_1、pn_2分别指向n1、n2 ___________(2)____________ //定义两个指针变量pd_1、pd_2分别指向d1、d2 ___________(3)____________ //分别输出上述ch1、ch2、n1、n2、d1、d2六个变量的地址(即六个指针变量的值) ___ ________(4)__ _________ ___ ________(5)__ _________ ___ ________(6)__ _________ //用间接存取方式输出ch1、ch2、n1、n2、d1、d2六个变量的值 ___ ________(7)__ _________ ___ ________(8)__ _________ ___ ________(9)__ _________

C语言实验指导书

实验1 C语言初步与编程环境介绍(2学时) 1.目的要求 1)熟悉C语言基本结构, 2)熟悉VC控制台应用程序设计的使用方法。 2.实验内容 (1)创建项目,分别将教材P13和P14程序输入并编译。 (2)下列程序能正确运行吗?如果能,写出运行结果;如果不能,指出错误原因并改正。 Main() { printf("hello\n"); } 附:VC 6.0 环境的使用方法介绍 Microsoft Visual C++ (简称VC)是微软公司生产的基于其Windows系统的软件开发工具。它具有使用灵活,并与32位Windows内核(使用于Windows 95/98/NT/2000)高度兼容的特点,从而被Windows程序员们广泛使用。同时,VC同样可以加工处理C语言程序,与标准的ANSI C语言兼容。VC提供了一种控制台操作方式,本实验课程主要在控制台方式下进行设计运行。 一、什么是控制台程序? Win32控制台程序(Win32 Console Application)是一类Windows程序,它不使用复杂的图形用户界面,程序与用户交互时通过一个标准的文本窗口,通过标准的输入输出流(I/O Streams)进行。 一个最简单的控制台程序如下: #include // 包含使用标准输入输出库的头文件声明 main() { printf(”Hello World!”); //输出一个字符串 } 二、如何使用MSVC编写控制台程序?

控制台程序按照下面几个步骤进行。 1、打开VC集成开发环境。 双击桌面图标“Microsoft Visual C++ 6.0”,或者从系统菜单“开始”/“程序”/“Microsoft Visual Studio 6.0”/“Microsoft Visual C++ 6.0”(如图1),打开VC 开发环境(如图2)。 图 1 从开始菜单中打开VC开发环境 图 2 VC开发环境界面

《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++;

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