实验六 指针程序设计

合集下载

实验六指针——精选推荐

实验六指针——精选推荐

实验6 指针一、实验目的1. 熟悉指针的概念,并掌握指针变量的定义及使用。

2. 掌握数组的指针和指向数组的指针变量及其应用。

3. 掌握字符串的指针和指向字符串的指针变量及应用。

4. 熟悉函数的指针、返回指针值的函数、指针数组及命令行参数等概念及应用。

二、实验内容步骤(一)按要求设计以下程序,并调试分析运行结果。

(此部分完成在实验报告上)1.已知数组{1,3,5,7,9},试编写一个程序sy6-1.c,在其中分别用下标法、地址法和指针法访问数组元素,将它们输出。

# include <stdio.h>void main(){int a[5]={1,3,5,7,9},i,*p;printf("下标法a[i]: ");for(i=0;i<5;i++)printf("%3d",a[i]);printf("\n 地址法*(a+i):*(a+i):");for(i=0;i<5;i++)printf("%3d",*(a+i));printf("\n指针法*p: ");for(p=a;p<a+5;p++)printf("%3d",*p);printf("\n");}运行结果2.有三个整形变量i,j,k。

请编写程序sy6-2.c,设置三个指针变量p1,p2,p3,分别指向i,j,k。

然后通过指针变量使i,j,k三个变量的值顺序交换,即原来i的值赋给j,把j的原值赋给k,把k的原值赋给i。

i,j,k的原值由键盘输入,要求输出i,j,k的原值和新值。

# include <stdio.h>void main(){int i,j,k,*p1,*p2,*p3,t;printf("请输入i,j,k: ");scanf("%d%d%d",&i,&j,&k);printf("交换前: i=%d j=%d,k=%d\n",i,j,k);p1=&i; p2=&j; p3=&k;//p1指向i,p2指向j,p3指向kt=*p3; *p3=*p2;*p2=*p1,*p1=t;//通过指针间接访问i,j,k并实现交换printf("交换后: i=%d j=%d k=%d\n",i,j,k);}运行结果:3.利用字符指针设计程序sy6-3.c,要求在一行文字:“I have 50 Y uan.”中,删去字符‘0’,使其变成:“I have 5 Y uan.”,并输出结果。

C语言实验报告——指针

C语言实验报告——指针

C语言实验报告——指针实验目的:1.掌握指针的基本概念与用法;2.熟悉指针的运算规则;3.理解指针与数组之间的关系。

实验设备:1.计算机;2.编程环境:C语言编译器。

实验内容:1.指针的声明与初始化;2.指针的运算;3.指针与数组。

实验原理:指针是C语言中非常重要的概念,它可以用来存储变量的地址。

通过指针,我们可以直接访问存储在内存中的变量,从而实现对变量的灵活操作。

指针的声明与初始化:在C语言中,指针的声明可以通过在变量名前添加一个"*"来实现。

指针的初始化可以通过给指针赋予一些变量的地址来实现。

指针的运算:指针可以进行递增和递减运算。

递增指针使其指向下一个位置,递减指针使其指向上一个位置。

这样可以方便地遍历数组或者对数组进行操作。

指针与数组:指针与数组有着密切的关系。

在C语言中,数组实际上是由连续的存储单元组成的。

指针可以通过指向数组的首元素来访问数组中的各个元素。

通过指针可以方便地对数组进行操作,例如遍历数组、修改数组元素等等。

实验步骤:1.声明一个整型变量并初始化;2.声明一个指向该整型变量的指针,并将其初始化为该整型变量的地址;3.输出指针所指向的变量的值;4.改变指针所指向变量的值,并输出;5.声明一个数组,并初始化;6.输出数组的每个元素;7.使用指针对数组进行递增和递减运算,并输出运算结果。

实验结果与分析:1.初始变量的值为10;2.指针所指向的变量的值为10;3.改变指针所指向变量的值为20;4.数组元素分别为1、2、3、4、5;5.指针的递增运算结果为2、3、4、5;6.指针的递减运算结果为4、3、2、1实验结论:通过本次实验,我掌握了指针的基本概念与用法。

指针可以用来存储变量的地址,通过指针可以访问变量的值。

指针还可以用来操作数组,方便地遍历数组、修改数组元素等。

指针的递增和递减运算可以方便地遍历数组。

在实际编程中,熟练掌握指针的使用将会事半功倍。

C语言实验报告之指针结构体等综合程序设计

C语言实验报告之指针结构体等综合程序设计

C语言实验报告之指针结构体等综合程序设计实验目的:1.掌握C语言中指针和结构体的基本概念和用法;2.综合运用指针和结构体,设计和实现一个复杂的程序。

实验内容:设计一个简单的图书管理系统,实现如下功能:1.添加图书:输入图书的名称、作者、出版社和价格,将图书信息保存到图书库中;3.修改图书价格:输入图书的名称,通过遍历图书库,找到要修改的图书,然后输入新的价格;4.删除图书:输入图书的名称,通过遍历图书库,找到要删除的图书并删除;5.显示所有图书:输出图书库中所有图书的信息。

实验步骤:1. 定义一个结构体类型Book,包含图书的名称、作者、出版社和价格;2. 声明一个指向Book结构体的指针bookPtr,用于操作图书库;3. 实现添加图书的函数addBook(,从控制台输入图书信息,将其保存到图书库中;5. 实现修改图书价格的函数changePrice(,从控制台输入要修改的图书的名称和新的价格,通过遍历图书库找到要修改的图书并更新价格;6. 实现删除图书的函数deleteBook(,从控制台输入要删除的图书的名称,通过遍历图书库找到要删除的图书并删除;7. 实现显示所有图书的函数displayBooks(,遍历图书库输出所有图书的信息;8. 定义主函数main(,在主函数中使用以上函数完成图书管理系统的交互操作;9.运行程序,测试图书管理系统的各项功能是否正常;10.编写实验报告,总结实验过程和实验结果。

实验结果:经过测试,图书管理系统的各项功能正常运行,可以成功添加、查找、修改和删除图书,同时可以显示图书库中所有图书的信息。

实验总结:通过本次实验,我进一步学习和掌握了C语言中指针和结构体的基本概念和用法。

通过设计和实现图书管理系统这个复杂的程序,我综合运用了指针和结构体,提高了编程能力,并加深了对C语言的理解。

实验中还遇到了一些问题,比如如何正确遍历图书库、如何确保输入的图书名称不重复等,通过分析和思考,我逐渐找到了解决问题的方法。

C语言程序实验报告指针

C语言程序实验报告指针

数学与软件科学学院 实验报告学期:2011至 2012__ 第_1 学期 2011 课程名称 : 程序设计基础教程 -C 语言实验编号: 08实验项目: C 语言程序实验报告 指针 指导教师、实验目的及要求(1) 掌握 C 语言环境下指针的声明、定义和使用方法;(2) 掌握指针和变量以及指针和数组的关系;(3) 掌握指针、数组之间的关系;(4) 掌握指针、函数之间的关系。

二、实验内容1. 熟悉指针的基本使用方法。

(1) 请仔细分析以下程序段,并上机测试运行结果,对测试结果进行分析说 明。

1) 程序段一: int main() {int i=3,j=6,k=9;printf( “ i=%dj =%d k=%d n ” ,*(&i),j,k); return 0;}2) 程序段二:int main(void) {int nA,*p;float fB,*q; p=&nA; q=&fB; scanf( “ %d,%f ” , p, q);*p=nA*(*q);printf( “ n ” ,n A, p,*p);printf( “ n ” ,n A, q,*q);printf( “ p+1=%d q+1=%d n ” ,p+1,q+1);return 0; }3) 程序段三:int main(void){int nA,*p,**q,***r; p=&nA;q=&p;r=&q; printf( “ Please inputn ” ); scanf( “ %d ” ,**r); printf(The results are : ” );printf( n “A ' value is %d,%d,%d,%dn ”n ,A,*p,**q,***r);printf( n “A,p,q,r ' s value is %d,%d,%d,%nd ”n ,A,p,q,r);return 0;}(2) 设计一个 C 语言程序,以测试以下表达式的运算顺序。

C语言指针实验报告-c语言指针心得

C语言指针实验报告-c语言指针心得
用字符串的指针与指向字符串的指针变量;
2
将一个任意整数插入到已排序的整形数组中,插入后,数组中的数仍然保持有序 要求:
(1) 整形数组直接由赋值的方式初始化,要插入的整数有seanf()函数数入;
(2)算法实现过程采用指针进行处理;
(3) 输入原始数据以及插入整数后的数据,并加以说明;
c语言程序设计实验报告实验名称指针机械工程与自动化专业班级机械1003任课教师实验时间实验内容将一个任意整数插入到已排序的整形数组中插入后数组中的数仍然保持有序要求
C
实验名称
指针
学院
机械工程与自动化
专业班级
机械1003
姓名
学号
任课教师
实验时间
1
(1)掌握指针的概念,会定义与使用指针变量;
(2) 能正确使用变量的指针与指向变量的指针变量;

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

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

一、实验项目名称指针二、实验目得1.掌握指针得基本概念与基本用法。

包括:变量得地址与变量得值,指针变量得说明、指针变量得初始化、指针得内容与定义格式、指针得基本运算等;2.掌握数组与指针得关系并能够利用指针解决数组得相关问题;3。

掌握字符串与指针得关系并能够利用指针处理字符串得问题;4。

掌握指针与函数得关系并能够利用指针处理函数问题;5.了解指向指针得指针得概念及其使用方法;6。

能够使用指针进行程序设计。

三、实验内容有关指针得程序设计1。

编程实现:任意输入得10个数,求其平均值。

要求:(1)10个数采用scanf语句读入。

(2)利用指针实现对这10个数得访问。

(3)要求平均值得精度为小数后面2位。

2。

编程实现:将一个任意整数插入到一个已排序得整数数组中,插入后数组中得数仍然保持有序.要求:(1)整数数组由初始化方式输入。

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

3。

编写函数newcopy(char *new,char *old),它得功能就是删除old所指向得字符串中得小写字母,并将所得到得新串存入new中。

要求:(1)在主函数中以初始化方式输入一个字符串;(2)调用newcopy()函数;(3)在主函数中输出处理后得结果.4。

编程实现:输入三个整数,按由大到小得顺序输出。

要求:(1)通过scanf函数输入三个数据并存入三个变量中;(2)利用指针实现从大到小输出;(3)修改程序,将三个整型数据改为字符型数据,输入三个字符,按从大到小数顺序输出;(4)修改程序,将三个字符型数据改为字符串数据,输入三个字符串,按从小到大顺序输出;(5)体会指针对不同数据处理得特点.四、实验步骤及结果一、#include <stdio、h〉voidmain(){ﻩint a[10],n,sum=0;ﻩfloat aver;/*定义平均数为浮点型*/int *p=a;/*初始化*/ﻩprintf("Pleaseinput 10 numbers:\n”);for (n=0;n<10;++n)ﻩscanf("%d",&a[n]);/*输入十个数*/ﻩfor(n=0;n<10;++n)ﻩsum=sum+*(p+n);/*使用指针访问数据*/ﻩaver=(float)sum/n;ﻩprintf(”Average is%、2f",aver);/*精确到小数点后两位*/}二、#include〈stdio、h>void arr(int *a,int n);/*定义排序函数*/void insert(int *a,int num);/*插入并排序函数*/intn=10;/*定义数据个数,可修改*/voidmain(){int*a,num,j,k,b[10];ﻩprintf("请输入个数据:\n");ﻩfor(j=0;j〈n;++j)scanf("%d",&b[j]);/*输入原始数据*/ﻩa=&b[0];/*初始化*/arr(a,n);/*调用排序函数*/ﻩprintf("排序好得数据为:\n");ﻩfor(j=0;j<n;++j)printf("%d",*(a+j));/*输出排序好得原始数据*/ ﻩprintf("\n请输入要插入得数:”);scanf(”%d",&num);printf("插入%d后得数据为:\n”,num);insert(a,num);/*调用插入并排序函数*/}voidarr(int*a,int n)/*排序函数*/{ﻩintk,j,h;ﻩfor (k=0;k〈10;++k)ﻩ for (j=0;j〈n-k—1;++j)ﻩif(*(a+1+j)<*(a+j)){ﻩﻩh=*(a+1+j);ﻩﻩﻩ*(a+1+j)=*(a+j);ﻩﻩ*(a+j)=h;ﻩ}}void insert(int *a,int num){ﻩvoidarr(int *a,intn);ﻩint j,k;*(a+n)=num;/*将插入得数排在数组最后一位*/arr(a,n+1);/*将新数组重新排序*/ﻩfor (j=0;j〈(n+1);++j)ﻩ if (*(a+j)==num){ﻩﻩﻩk=j;ﻩbreak;}/*找到插入得数在数组中得位置*/ﻩfor(j=0;j<(n+1);++j)ﻩﻩprintf(”%d",*(a+j));ﻩprintf("\n插入得数据排在数组得第%d位",k+1);}三、#include <stdio、h>void newcopy(char *new1,char *old);void main(){ﻩchar*new1,*old,a[10];/*new就是不能当做变量,所以用new1*/ old=a;new1=a;/*字符串得初始化*/ﻩprintf("请输入字符串:\n”);scanf("%s",a);ﻩnewcopy(new1,old);/*调用函数*/printf(”新得字符串为:\n");printf("%s”,new1);}void newcopy(char*new1,char*old){ﻩint n,j=0;for (;*old!=’\0';++old)ﻩif ((* old)>'z' ||(*old)〈'a’){ﻩﻩ*(new1+j)=* old;ﻩﻩ++j;}/*排除原字符串中得小写字母,将其她字符存入新字符串*/*(new1+j)='\0';/*结束新字符串,否则新字符串得输出会故障*/}四、#include <stdio、h>voidmain(){ﻩvoid exchange(int *q1,int *q2,int*q3);int a,b,c,*q1,*q2,*q3;ﻩprintf(”请输入个数:\n");ﻩscanf(”%d,%d,%d",&a,&b,&c);ﻩq1=&a;q2=&b;q3=&c;/*将三个数得地址存入q1q2q3中*/ ﻩexchange(q1,q2,q3);/*调用排序函数*/printf("3个数从大到小排列为:\n%d,%d,%d",a,b,c); }voidexchange(int *q1,int*q2,int *q3){ﻩvoid s*q1,int*q2);/*调用交换函数*/ﻩif (*q1〈*q2)ﻩﻩs);/*若*q1小于*q2,交换地址位置*/if (*q1〈*q3)ﻩs);if(*q2<*q3)ﻩs);}void s*q1,int*q2)/*交换函数*/{int n;n=*q1;ﻩ*q1=*q2;ﻩ*q2=n;}修改程序,将三个整型数据改为字符型数据,输入三个字符,按从大到小数顺序输出:只需将程序中得所有int改为char,将%d改为%c即可。

实验六 使用指针的程序设计

实验六 使用指针的程序设计

[实验内ቤተ መጻሕፍቲ ባይዱ] 实验内容]
从健盘接收一行字符串, 1. 从健盘接收一行字符串 , 然后按照字符顺序 从小到大进行排序后删除重复的字符。 从小到大进行排序后删除重复的字符。 补充:第十章习题 10.3,10.4 10. 10. 补充:
实验六 使用指针的程序设计
[实验目的] 实验目的]
1.进一步练习模块化设计的方法。 .进一步练习模块化设计的方法。 2.掌握使用指针变量的程序设计。 .掌握使用指针变量的程序设计。 3.掌握使用函数指针的程序设计。 .掌握使用函数指针的程序设计。 4.掌握使用指针数组的程序设计。 .掌握使用指针数组的程序设计。 5.掌握字符串排序的方法。 .掌握字符串排序的方法。

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

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

合肥师范学院实验报告册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语言程序设计—指针—实验报告

实验报告专业软件工程班级X 班学号_ _ 姓名实验日期:201X年X月X日报告退发(订正、重做)课程C程序设计实验实验名称指针一、实验目的二、实验环境(描述实验的软件、硬件环境)①软件环境:windows xp/win7等操作系统,Microsoft Visual C++ 6.0编译器;②硬件环境:PC机一台三、实验内容、步骤和结果分析题目一:输入3个整数,按由小到大的顺序输出要求:使用指针方法实现;#include <stdio.h>void function(int *a, int *b){int temp;if (*a<*b){temp = *a;*a = *b;*b = temp;}}int main(){int a, b, c;int *p1, *p2, *p3;p1 = &a;p2 = &b;p3 = &c;scanf("%d%d%d", &a, &b, &c);function(p1, p2);function(p1, p3);function(p2, p3);printf("%d %d %d\n", *p3, *p2, *p1);return 0;题目二:将长度为10的整型数组arr中的元素按照从小到大排列并输出要求:使用指针方法实现;#include <stdio.h>int main(){struct METRIC {float m;float cm;} m1, m2;struct BRITISH{float foot;float inches;} b1, b2;printf("Enter the info of m1(米,厘米):");scanf("%f%f", &m1.m, &m1.cm);printf("Enter the info of m2(米,厘米):");scanf("%f%f", &m2.m, &m2.cm);printf("\nEnter the info of m2(英尺,英寸):");scanf("%f%f", &b1.foot, &b1.inches);printf("Enter the info of m2(英尺,英寸):");scanf("%f%f", &b2.foot, &b2.inches);printf("\nSum of m1 and m2 is:%.2f(厘米)\n", (m1.m + m2.m) * 100 + m1.cm + m2.cm);printf("Sum of b1 and b2 is:%.2f(厘米)\n\n", (b1.inches + b2.inches)*30.48 + (b1.foot + b2.foot)*2.54);return 0;题目三:已知一个长度为10的一维数组arr,编写函数,求出第m个数到第n个数的和要求:使用指针方法实现。

C语言程序设计实验六指针上机报告

C语言程序设计实验六指针上机报告

《标准C语言程序设计》上机报告实验六指针程序设计专业:电子信息工程班级:电信1301学号:U*********姓名:**完成日期:2014/5/241一、实验目的1.进一步理解指针的概念,掌握指针变量间接地址访问的本质;2.掌握利用指向数组的指针变量表示一维数组元素及元素地址的方法;3.掌握利用指向二维数组的行指针变量表示二维数组元素及其地址的方法;4.掌握字符串的指针和指向字符串的指针变量;5.掌握指针数组和二级指针;6.熟悉通过动态内存分配实现动态数组,并体会指针在其中的作用。

二、实验内容及要求(鼓励一题多解)1.深入理解《上机实践训练教程》2.6实验六案例示范和有关概念文字描述中的知识点,给出你的理解。

数组名str实质可以作为首地址,是一个指针,而且还是一个常量指针。

char *str是指针变量,该变量取值为存放字符串的内存单元的第一个字节空间的地址值;而char str[]定义一个数组,将字符串存放进str数组。

str是数组名,代表数组空间的入口地址,作为指针常量2.用指向数组的指针编程实现:输入一个字符串,内有数字和非数字符号,如:a123x456 17960?302tab5876。

将其中连续的数字作为一个整数,依次存放到一个数组a中。

例如:123放在a[0]中,456放在a[1]中……试统计共有多少个整数,并输出这些数。

要求添加合适的注释。

#include <stdio.h>#include <string.h>void main(){char c[100],*p=c;int a[50],*q=a,num=0,i;//定义字符数组c和数组a,用p,q分别定义并赋初值printf("输入一个字符串,内有数字和非数字符号");gets(c);//录入字符串for(;*p!='\0';p++){if(*p>='0' && *p<='9'){*q=(*p)-'0';//指针实现c[]到a[]的赋值p++;if(*p>='0' && *p<='9')*q=(*q)*10+(*(p++)-'0');//将数字字符串变为数字存入num+=1;//if下的加1q++;}}for(i=0,q=a;i<num;i++,q++){printf("a[%d]=%d\n",i,*q);}putchar('\n');printf("一共输入了%d个数字。

指针实验实验报告

指针实验实验报告
;
return (m);
}
4.程序设计
(1)
#include<stdio.h>
#include<math.h>
#define MAX 32
int main()
{
long int n;
int i;
char s[MAX];
printf("please input a number:\n");
scanf("%ld",&n);
for(i=0;i<N;i++)
{
output(s[i]);
printf("%s\n",s[i]);
}
return 0;
}
void output(char*s)
{
int i,j;
for(i=0,j=0;s[i]!='\0';i++,j++)
{
if(isspace(s[i]))
{
for(;isspace(s[i]);i++)
int main(void)
{
char a[20],b[60]="there is a boat on the lack.";
printf("%s\n",strcpy(a,b));
return 0;
}
char *strcpy(char*s,char*t)
{
char *m;
m=s;
while(*s++=*t++)
printf("\t\t3 exit.\n");

C程序设计指针实验

C程序设计指针实验
N个人围成一圈,从第一个人开始循环报 数,凡报到3的人退出圈子,问最后留下 的人原来是第几号? 难点: 如何模拟循环报数? 要几个计数器? 退出圈子怎么表示?
围圈循环报数问题
#define MAX 100 main( ) {int i, k , m, n, num[MAX], *p; scanf(“%d”,&n); //输入人数 p=num; for(i=0;i<n;i++) *(p+i)=i+1; //给每人编号1~n
将一批书名用选择法排序
#include <stdio.h> #include <string.h> main( ) { void sort(char *name[ ], int n); void print(char *name[ ], int n); char *name[ ]={“FORTRAN”, “COBOL”, “PASCAL”, “BASIC”, “C”};
将一批书名用选择法排序
int n=5; sort(name,n); print(name,n); } void sort(char *name[], int n) {char *temp; int i, j, k;
将一批书名用选择法排序
for(i=0;i<n-1;i++) { k=i; for(j=i+1;j<n;j++) if(strcmp(name[k],name[j])>0) k=j; if(k!=i) {temp=name[i]; name[i]=name[k]; name[k]=temp;} } }
围圈循环报数问题
i=0; //每次的循环变量 k=0; //1~3报数时的计数器 m=0; //m为退出的人数 while(m<n-1) //只剩一人时结束循环 {if(*(p+i)!=0) k++; //模拟报数 if(k==3) {*(p+i)=0; //置退出标志 m++; k=0;}

西安交通大学计算机程序设计指针实验

西安交通大学计算机程序设计指针实验

西安交通大学实验报告课程_计算机程序设计_实验名称__指针__第页共页一.实验目的(1)掌握指针的概念,学会定义指针变量和使用指针变量进行间接引用;(2)掌握数组的指针和指向数组的指针变量;(3)掌握二维数组中行指针的概念和使用。

二.实验内容(一)编写程序,将一个输入位数不确定的正整数按照标准的3位分节格式输出,例如当用户输入8214235时,程序应输出82,142,235.1.要点分析略2.程序源代码#include <iostream>using namespace std;int main(){long n,i=1;char a[20], *p;p=a;cout<<"请输入待转换的整数:";cin>>n;do{if(i%4!=0){*p=n%10+'0';n=n/10;}else *p=',';p++;i++;}while (n!=0);cout<<"结果为:";do{p--;i--;cout<<*p;}while(i>1);cout<<endl;return 0;}3.实验结果(二)实验题目二:用指针编写一个程序,当输入一个字符串后,要求不仅能够统计其字符的个数,还能分别指出其中大、小写字母,数字以及其他字符的个数。

1.要点分析略2.程序源代码#include <iostream>using namespace std;int main(){char s[30],*ps=s;int a,b,c,d;cout<<"请输入一个任意字符串:";cin>>s;a=0; b=0; c=0; d=0;while (*ps!='\0'){if (*ps>='a'&&*ps<='z')a++;else if (*ps>='A'&&*ps<='Z') b++;else if (*ps>='0'&&*ps<='9') c++;else d++;ps++;}cout<<"该字符串字符个数为"<<a+b+c+d<<endl;cout<<"该字符串小写字母个数为"<<a<<endl;cout<<"该字符串大写字母个数为"<<b<<endl;cout<<"该字符串数字个数为"<<c<<endl;cout<<"该字符串其它字符个数为"<<d<<endl;return 0;}3.实验结果(三)实验题目三编写一个函数,用于将一个字符串转换为整型数值。

高级语言程序设计II实验报告-指针2

高级语言程序设计II实验报告-指针2

课程名称:高级语言程序设计II 班级:16电子班学号:姓名:日期:实验六:指针21、实验目的掌握定义和使用指针变量;能正确使用数组的指针和指向数组的指针变量。

2、实验题目有一个班4个学生,5门课程。

(1)求第一门课的平均分;(2)找出有两门以上课程不及格的学生,输出他们的学号和全部课程成绩及平均成绩;(3)找出平均成绩在90分以上或全部课程成绩在85分以上的学生。

分别编写3个函数实现以上3个要求,用指针传参完成。

3、问题分析定义学生结构体数组,四个学生和五门课程先求平均成绩函数再找出有两门成绩不合格的学生并输出相应信息然后找出满足条件的学生并输出最后输入学生信息并验证结果4、算法描述int i,j;void average(ST stu[])//求平均成绩函数void nopass(ST stu[])//找出有两门成绩不合格的学生并输出相应信息输出("\n有两门成绩不合格的学生有:\n");输出("姓名\t成绩1\t成绩2\t成绩3\t成绩4\t成绩5\t平均成绩\n");void select(ST stu[])//找出满足条件的学生并输出输出("\n平均成绩在90分以上或者全部成绩在85分以上的学生有:\n");输出("姓名\t成绩1\t成绩2\t成绩3\t成绩4\t成绩5\t平均成绩\n");5、编码实现(对代码简单进行分析说明)int i,j;void average(ST stu[])//求平均成绩函数{for(i=0;i<N;i++){stu[i].ave=0;for(j=0;j<M;j++){stu[i].ave+=stu[i].score[j];}课程名称:高级语言程序设计II 班级:16电子班学号:姓名:日期:stu[i].ave/=M;}}void nopass(ST stu[])//找出有两门成绩不合格的学生并输出相应信息{int count;printf("\n有两门成绩不合格的学生有:\n");printf("姓名\t成绩1\t成绩2\t成绩3\t成绩4\t成绩5\t平均成绩\n");for(i=0;i<N;i++){count=0;for(j=0;j<M;j++)if(stu[i].score[j]<60)count++;if(count==2){printf("%s\t",stu[i].name);for(j=0;j<M;j++){printf("%.2f\t",stu[i].score[j]);}printf("%.2f\n",stu[i].ave);}}}void select(ST stu[])//找出满足条件的学生并输出{int flag;printf("\n平均成绩在90分以上或者全部成绩在85分以上的学生有:\n");printf("姓名\t成绩1\t成绩2\t成绩3\t成绩4\t成绩5\t平均成绩\n");for(i=0;i<N;i++){flag=0;if(stu[i].ave>=90){flag=1;}else{for(j=0;j<M;j++)课程名称:高级语言程序设计II 班级:16电子班学号:姓名:日期:{if(stu[i].score[j]<85)break;}if(j>=M)flag=1;}if(flag==1){printf("%s\t",stu[i].name);for(j=0;j<M;j++){printf("%.2f\t",stu[i].score[j]);}printf("%.2f\n",stu[i].ave);}}}6、测试结果课程名称:高级语言程序设计II 班级:16电子班学号:姓名:日期: 7、问题及错误分析附件:源代码#include<stdio.h>#define N 4#define M 5typedef struct//定义学生结构体数组{char name[15];float score[M];float ave;}ST;ST stu[N];int i,j;void average(ST stu[])//求平均成绩函数{for(i=0;i<N;i++){stu[i].ave=0;for(j=0;j<M;j++){stu[i].ave+=stu[i].score[j];}stu[i].ave/=M;}}void nopass(ST stu[])//找出有两门成绩不合格的学生并输出相应信息{int count;printf("\n有两门成绩不合格的学生有:\n");printf("姓名\t成绩1\t成绩2\t成绩3\t成绩4\t成绩5\t平均成绩\n");for(i=0;i<N;i++){count=0;for(j=0;j<M;j++)if(stu[i].score[j]<60)count++;if(count==2){printf("%s\t",stu[i].name);for(j=0;j<M;j++){printf("%.2f\t",stu[i].score[j]);}printf("%.2f\n",stu[i].ave);}}}void select(ST stu[])//找出满足条件的学生并输出{int flag;printf("\n平均成绩在90分以上或者全部成绩在85分以上的学生有:\n");printf("姓名\t成绩1\t成绩2\t成绩3\t成绩4\t成绩5\t平均成绩\n");for(i=0;i<N;i++){flag=0;if(stu[i].ave>=90){flag=1;}else{for(j=0;j<M;j++){if(stu[i].score[j]<85)break;}if(j>=M)flag=1;}if(flag==1){printf("%s\t",stu[i].name);for(j=0;j<M;j++)课程名称:高级语言程序设计II 班级:16电子班学号:姓名:日期:{printf("%.2f\t",stu[i].score[j]);}printf("%.2f\n",stu[i].ave);}}}main(){for(i=0;i<N;i++)//输入学生信息{printf("请输入第%d个学生的姓名:",i+1);scanf("%s",stu[i].name);for(j=0;j<M;j++){printf("请输入该生第%d门成绩:",j+1);scanf("%f",&stu[i].score[j]);}}average(stu);//运行函数nopass(stu);select(stu);}。

C语言实验报告之指针结构体等综合程序设计

C语言实验报告之指针结构体等综合程序设计

C语言实验报告之指针、结构体等综合程序设计一、实验的目的、要求及内容1、通过实验掌握指针的概念,学会定义和使用指针变量。

2、能正确使用数组的指针和指向数组的指针变量。

3、能正确使用字符串指针和指向字符串的指针变量。

4、掌握结构体类型变量的定义和使用。

二、算法设计思想及内容本实验主要完成指针和结构体的应用训练,总共要求完成三个问题的源代码的编辑、编译、连接与运行,最终产生相关的运行结果,按规定要求提交相应的实验报告。

具体要求完成的问题如下:1、采用指针方式编写程序输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。

写3个函数:(1)输入10个数;(2)进行处理;(3)输出处理后的10个数。

2、采用指针方式在主函数中输入字符串,在函数中求出字符串的长度,然后输出求出的长度。

3、有5个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入5个学生的数据,要求输出3门课程的总平均成绩,以及最高分数的学生的数据(包括学号、姓名、3门课的成绩、平均分)。

三、所使用的软硬件平台软件平台:Microsoft Windows XP专业版SP3,Microsoft Visual C++ 6.0。

硬件平台:联想系列,Intel(R)Core(TM)i3,CPU 3.20Ghz,2.99GB内存,550GB 硬盘。

四、源程序代码1.#includeint main() {int a[10];void shuru(int a[10]); void chuli(int a[10]); void shuchu(int a[10]); printf(\请输入10个数:\ shuru(a); chuli(a);printf(\输出处理后的10个数为:\ shuchu(a); printf(\ return 0; }void shuru(int a[10]) {int i;for(i=0;i<10;i++) scanf(\}void chuli(int a[10]) {int i,*max,*min,t1,t2; max=min=a; for(i=0;i<10;i++) {if(*maxa[i]) min=&a[i]; }t1=*max; *max=a[9]; a[9]=t1; t2=*min; *min=a[0]; a[0]=t2; }void shuchu(int a[10]) {int i;for(i=0;i<10;i++) printf(\}2. #includech(char *a) {int count=0;char *p=a;while(*p++) count++; return count; }int main() {char a[32767];printf(\请输入一个字符串:\\n\gets(a);printf(\该字符串的长度为:%d\\n\return 0; }3. #include #define N 5 struct student {char number[6]; char name[8]; int score[3]; int average; }student[N]; int main()感谢您的阅读,祝您生活愉快。

实验六 指针.

实验六 指针.

实验六指针●实验目的1、进一步掌握指针的概念,会定义和使用指针变量。

2、能正确使用数组的指针和指向数组的指针变量。

3、能正确使用字符串的指针和指向宇符串的指针变量。

4、了解指向指针的指针的概念及其使用方法。

5、通过实验进一步理解指针和函数的几种关系。

● 实验内容1、输入两个整数,按由大到小的顺序输出。

输入以下程序并调试运行。

#include <iostream.h>int main(){int a,b;int *p=&a,*q=&b,*t;cout<<"请输入a和b:";cin>>a>>b;if(a<b){t=p;p=q;q=t;} //交换p和qcout<<"a="<<a<<",b="<<b<<endl;cout<<"*p="<<*p<<",*q="<<*q<<endl;return 0;}输入3组以上测试数据,分析运行结果。

2、将若干字符串按英文字典排序(由小到大)。

输入以下程序,补充完整,并调试运行。

#include <iostream.h>#include <string.h>int main(){char *p[]={"Rebacca","Heaven","Michael Chang","Linda Tsai"};//定义字符指针数组char *temp;int i,j,n=4;for(i=0;i<n-1;i++)for(j=0;j< ;j++)if(strcmp(p[j],p[j+1])>0){temp=p[j];p[j]=p[j+1];p[j+1]=temp;} //排序for(i=0;i<n;i++)cout<< <<endl; //输出排序后的字符串return 0;}3、输入三个整数,按由小到大的顺序输出,然后将程序改为:输入三个字符串,按由小到大顺序输出。

程序设计语言实验指导书12版

程序设计语言实验指导书12版

《程序设计语言》实验指导书徐东燕编北方民族大学计算机科学与工程学院2012年9月目录实验一 C语言编程环境熟悉及简单程序的编写(验证型实验,2学时) (3)实验二分支结构程序设计(设计型实验,2学时) (6)实验三循环结构程序设计(设计型实验,2学时) (8)实验四函数程序设计(设计型实验,2学时) (10)实验五数组程序设计((设计型实验,2学时) (12)实验六指针程序设计(设计型实验,2学时) (14)实验七结构体程序设计(设计型实验,2学时) (15)实验八程序结构与递归函数(综合性实验,2学时) (16)实验九指针进阶及综合程序设计(综合型实验,2学时) (17)实验十文件的程序设计(设计型实验,2学时) (18)参考文献 (20)课程编号:11101203 课程类别:专业基础课适用专业:计算机科学与技术、软件工程、网络工程、信管专业课程总学时:76 实验课学时:20开设实验项目数:10实验一C语言编程环境熟悉及简单程序的编写(验证型实验,2学时)一、实验目的与要求实验环境1.熟悉Cfree开发环境或Visual C++ 6.0的使用环境;2.掌握Cfree开发环境或Visual C++ 6.0环境下建立C程序的步骤;3.掌握C程序在Cfree开发环境或Visual C++ 6.0环境下的编辑、调试和运行的步骤、方法;4.理解C程序的一般结构;5.理解并掌握程序的顺序结构程序设计;6.在Cfree开发环境或Visual C++ 6.0环境下编写并运行基本的C程序;7.理解程序调试思想,能修改简单的C语法错误;8.掌握算术、赋值表达式,输入输入语句和简单数据处理方法。

二、实验环境1.微机每人一台,要求PⅢ以上处理器。

2.windows2000/xp操作系统。

3.Cfree开发环境或或Visual C++ 6.0开发环境。

三、实验预习与准备1.计算机基本操作练习。

2.Cfree开发环境或Visual C++ 6.0软件使用预习。

实验六 指针程序设计

实验六 指针程序设计

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

二、实验内容及步骤1、按要求完善程序下列程序的功能是分别求出数组中所有奇数之和以及所有偶数之和。

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

例如:数组中的值依次为:1,9,2,3,11,6;则利用指针odd返回奇数之和24;利用指针even返回偶数之和8。

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

程序代码如下所示:#include <stdio.h>#define N 20void fun(int *a,int n,int *odd,int *even){ int i;*even=0;*odd=0;for(i=0;i<n;i++){if(a[i]%2==0)*even=*even+a[i];else*odd=*odd+a[i];}}void main(){int a[N]={1,9,2,3,11,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);}运行结果:2.假设每班人数最多不超过30人,具体人数由键盘输入,试编程打印最高分及其学号。

指针程序设计

指针程序设计

电信学院《程序设计I》实验报告实验名称指针程序设计一、实验目的(1)理解指针、地址和数组间的关系。

(2)掌握通过指针操作数组元素的方法。

(3)掌握数组名作为函数参数的编程方式。

二、实验内容(1)找出最长的字符串。

输入5个字符串,输入其中最长的字符串。

输入字符串调用函数scanf(“%s”,sx).(2)删除字符串中的字符。

输入一个字符串s,再输入一个字符c,将字符串s中出现的所有字符c删除。

要求定义并调用函数delchar(s,c),它的功能是将字符串s中出现的所有c字符删除。

(3)编程判断输入的一串字符是否为“回文”。

所谓“回文”,是指顺读和倒读都一样的字符串。

(4)输入一行字符,输入其中的大写字母、小写字母、空格、数字以及其他字符的个数三、实验步骤1.C Free5文件选项下选择新建并另存为1.cpp和2.cpp。

2.根据思路编辑及保存代码;3.按F11进行编译;4.编译正确后保存代码。

四、实验结果与分析源代码1.cpp#include<stdio.h>#include<string.h>int main(){char a[5][10];int i,k;printf("input five strings:\n");for(i=0;i<5;i++)gets(a[i]);for(k=0,i=1;i<5;i++)if(strlen(a[k])<strlen(a[i])) /*通过函数strlen()比较a[k]与函数a[i]长度大小*/ {k=i; /* 找到长度最大的数组,并将其下标赋值给k*/ printf("the longest is:%s.\n",a[k]);return 0;}#include<stdio.h>void delchar(char*s,char c) /*定义函数delchar()*/ {char *p;for(p=s;*s;s++)if(*s!=c)*p++=*s;*p='\0';}int main(void) /*主函数main()*/ {char c,s[100];printf("Input a string:");gets(s);printf("Input a char:");scanf("%c",&c);delchar(s,c); /*调用函数delchar()*/ printf("After deleted,the string is:%s\n",s);return 0;}#include<stdio.h>int main(void){int i,n,m;char s[10];printf("Input a string:");i=0;while((s[i]=getchar())!='\n') /*输入以回车符结束的字符串*/ i++;s[i]='\0';for(n=0,m=i-1;n<m;n++,m--) /*判断回文*/if(s[n]!=s[m])break;if(n>=m)printf("YES\n");elseprintf("NO\n");return 0;}#include<stdio.h>int main(void){int x,y,t,s,other;char m;x=y=t=s=other=0;printf("Input a string:");m=getchar();while(m!='\n'){if(m>='a'&&m<='z'){ x++;m=getchar();}else if(m>='A'&&m<='Z'){ y++;m=getchar();}else if(m==' '){ s++;m=getchar(); }else if(m>='0'&&m<='9'){ t++;m=getchar(); }else{ other++;m=getchar(); }}printf("大写字母数为:%d\n,小写字母数为:%d\n,空格为:%d\n,数字为:%d\n, 其他字符为:%d\n",y,x,s,t,other);return 0;}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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

二、实验内容及步骤
1、按要求完善程序
下列程序的功能是分别求出数组中所有奇数之和以及所有偶数之和。

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

例如:数组中的值依次为:1,9,2,3,11,6;则利用指针odd返回奇数之和24;利用指针even返回偶数之和8。

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

程序代码如下所示:
#include <stdio.h>
#define N 20
void fun(int *a,int n,int *odd,int *even)
{ int i;
*even=0;
*odd=0;
for(i=0;i<n;i++)
{
if(a[i]%2==0)
*even=*even+a[i];
else
*odd=*odd+a[i];
}
}
void main()
{
int a[N]={1,9,2,3,11,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);
}
运行结果:
2.假设每班人数最多不超过30人,具体人数由键盘输入,试编程打印最高分及其学号。

要求:用一维数组和指针变量作函数参数,编程打印某班一门课成绩的最高分和学号。

请编写相应的程序代码,并调试运行出正确结果。

程序代码:#include <stdio.h>
int main()
{void fun(float*score,int n,int*k);
float score[30];
int num[30];
int i,n,k=0;
printf("请输入学生人数:");
scanf("%d",&n);
for(i=0;i<n;i++)
{printf("请输入第%d同学的学号,成绩:",i+1);
scanf("%d,%f",num+i,score+i);
}
fun(score,n,&k);
printf("\n最高分为:%.2f 学号为:%d\n",score[k],num[k]);
return 0;
}
void fun(float*score,int n,int*k)
{int i;
for(i=1;i<n;i++)
if(*(score+(*k))<*(score+i))
*k=i;
}
3.矩阵转置;
要求:从主程序中输入一个3*3的整形矩阵,调用一个函数,将此矩阵转置,用指针作为函数的形参,在主程序中输出转置后的矩阵。

程序代码:
#include <stdio.h>
int main()
{void a(int (*b)[3]);
int c[3][3];
int i,j;
printf("请输入一个3*3矩阵:\n");
for(i=0;i<3;i++)
{for(j=0;j<3;j++)
{scanf("%d",&c[i][j]);
}
}
printf("你输入的矩阵为:\n");
for(i=0;i<3;i++)
{for(j=0;j<3;j++)
{printf("%3d",c[i][j]);
}
printf("\n");
}
a(c);
printf("转置之后的矩阵为:\n");
for(i=0;i<3;i++)
{for(j=0;j<3;j++)
{printf("%3d",c[i][j]);
}
printf("\n");
}
return 0;
}
void a(int (*b)[3])
{int temp,i,j;
for(i=0;i<3;i++)
{for(j=0;j<i;j++)
{temp=*(*(b+j)+i);
*(*(b+j)+i)=*(*(b+i)+j);
*(*(b+i)+j)=temp;
}
}
}
运行结果:
4.从键盘输入一个字符串,实现利用字符指针将字符串的字符顺序逆置并输出。

(例如输入abcdef,输出fedcba)。

请编写相应的程序代码,并调试运行出正确结果。

程序代码:
#include <stdio.h>
#include <string.h>
#define SIZE 100
void main()
{
int i;
int length;
char sign[SIZE];
char s;
printf("请输入一个字符串:");
scanf("%s",sign);
length=strlen(sign);
printf("字符串逆序输出为:\n");
for(i=length;i>0;i--)
{s=sign[i-1];
printf("%c",s);
}
printf("\n");
}
运行结果:
5.编写在字串str1中找出所有非数字的字符串当成一个空格,存入字符数组str2中(所有数字字符也必须依次存入str2中),str1不变仍为原字串的程序。

例如,字符串str1为"$Ts!47&*s456 a23* +B9k",调用函数fun后,字符数组str2将存入" 47 456 23 9 ",str1仍然是"$Ts!47&*s456 a23* +B9k"。

程序代码:
#include<stdio.h>
void main()
{
void fun(char str1[],char str2[]);
char str1[80],str2[80];
printf("请输入一串字符串:\n");
gets(str1); fun(str1,str2);
printf("您输入的字符串str1为:\n");
puts(str1);
printf("转换后得到的字符串str2为:");
puts(str2);
printf("转换后,字符串str1为:\n");
puts(str1);
}
void fun(char str1[],char str2[])
{char *p=str1;
int i=0; while(*p!='\0')
{
if(*p<'0'||*p>'9')
{
if(i==0)
{
str2[i]=' '; i++; }
else if(i>0&&str2[i-1]!=' ')
{
str2[i]=' '; i++; }
}
else
{
str2[i]=*p; i++; } p++; } str2[i]='\0';
}
三、实验心得
通过本次的试验,基本上掌握了指针的概念,会定义和使用指针变量,还有就是能正确使用数组的指针和指向数组的指针,熟悉了指针做函数参数的方法,不过学习这章确实遇到了不少的麻烦,感觉这章学着比较吃力,相信经过不断的练习,能够熟练掌握。

相关文档
最新文档