第一篇:C语言实验程序、总结 实验七 指针大全
一 实验目的
实验七 指针 了解指针的概念,学会定义和使用指针变量。2 掌握指针、变量和数组的关系及使用方法。3 学会使用指向函数的指针变量。
二 实验内容 编写函数fun(float *sn,int n),其功能是:根据以下公式计算s,计算结果通过形参sn传回;n通过实参传入,n的值大于等于0。上机运行并记录输入输出(主函数已给出)。
s11111 3572n1fun(float *sn,int n){ 定义变量:和s,通项w,符号f,循环控制变量i; /* 其中s、f要初始化 */ 循环求累加和s { 改变符号;/* 由负变正或由正变负 */ 求通项w;累加:s+=w;} 形参指针变量sn赋值;/* 通过形参sn传回累加和s */ } main(){ float s;int n;printf(“n=”);scanf(“%d”,&n);fun(&s,n);printf(“s=%fn”,s);}
完整程序如下:
#include
输出结果如下图: 想使指针变量pt1指向a和b中的大者,pt2指向小者,以下程序能否实现此目的? swap(int *p1,int *p2){ int *p;p=p1;p1=p2;p2=p } main(){ int a,b;int *pt1,*pt2;scanf(“%d,%d”,&a,&b);pt1=&a;pt2=&b;if(a
上机调试此程序。如果不能实现题目要求,指出原因并修改之。
子函数swap改成下面程序方可实现目的,主函数不变: swap(int *p1,int *p2){ int p;p=*p1;*p1=*p2;*p2=p;} 下面的程序用来实现将一个3×3的矩阵转置。#include 程序修改如下: #include 应改为: printf(“%cn”,*pt++); 实验总结:本次实验主要掌握指针的概念,学会定义和使用指针变量,掌握指针、变量和数组的关系及使用方法,学会使用指向函数的指针变量,通过本次实验,很好的了解了指针的使用,加深了对指针的认识。 C语言程序设计实验七:函数、数组、指针 1、程序运行后,用户任意输入一个字符串,求出字符串长度,然后输出字符串内容及个 数。不能使用strlen函数。 求字符串长度函数的函数原型必须如下: int MyStrLenPt(char *str) 若输入:nihao123! 则输出:nihao123!:9 chars2、编写一个对一维数组进行排序的程序。 要求: 写两个函数,一个主函数,一个sort函数。在主函数中完成数组的输入和输出,通过调 用sort函数对数组进行排序。 sort函数的原型为:voidsort(int*p, intn); 说明: (1)请大家按学号来坐,便于考勤和管理。 (2)请珍惜宝贵的实验时间!不要做与实验无关的事情,比如聊QQ、上网或打游戏。 (3)直接把C语言代码粘贴到相应的实验题目下方,上交实验报告时只交word文档。 (4)文档名称:班级+学号后2位+姓名+实验编号,例如11电1班12张山实验七.doc。 C语言程序设计实验十——指针 【实验1】 实验题目: 1、下列代码片段哪里有错误? char var1,ptr1; var1 = „x‟; ptr1 = &var1; 2、设有如下定义: Double var1, *ptr1, *ptr2; Float* ptr3; Int var2, *var4; 那么,var1, *ptr1, ptr2,*ptr2,ptr3,* ptr3,var2, var4,*var4个属于哪种数据类型? 3、下列代码片段在哪里有错误? Char c = ‟ A ‟; Char * p; p = c;或*p=‟A‟; 4、下列代码片段的输出结果是什么? charvar1 = „ S „; charvar2 = „ X ‟; char*ptr1, *ptr2; ptr1 = &var1; ptr2 = &var2; *ptr2 = *ptr1; printf(“%ct%cn”, *ptr1, var2); 【实验2】 实验题目:输入3个整数,按由小到大的顺序输出。 【实验3】 实验题目:输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。 实验要求:写3个函数:(1)输入10个数;(2)进行处理;(3)输出10个数。 【实验4】输入年和天数,输出对应的年、月、日。 例如:输入2000和61,输出2000-3-1。 要求:都用指针实现。 实验7 函数程序设计 一、实验目的 1、掌握函数定义的方法。 2、掌握函数实参与形参的传递方式。 3、掌握函数的嵌套调用和递归调用的方法。 4、了解全局变量和局部变量、动态变量、静态变量的概念和使用方法。 二、实验内容 1.改错题 (1)下列sub函数的功能为:将s所指字符串的反序和正序进行连接形成一个新串放在t所指的数组中。例如,当s所指字符串的内容为“ABCD”时,t所指数组中的内容为“DCBAABCD”。纠正程序中存在的错误,以实现其功能。程序以文件名sy7_1.c保存。#include int i,d; d=strlen(s); for(i=1;i t[i]=s[d-1-i]; for(i=0;i t[2*d]=’ ’;} main(){ char s[100],t[100];printf(“Please enter string s:”);scanf(“%s”,s);sub(s,t);printf(“nThe result is:%sn”,t);}(2)下列程序的功能为:将字符数组中的字符串逆序输出。纠正程序中存在的错误,以实现其功能。程序以文件名sy7_2.c保存。#include char a[ARR_SIZE];printf(“Please enter a string:”);gets(a);Inverse(char a[]);printf(“The inversed string is :”);puts(a);} void Inverse(char str[]){ int len,i=0,j; char temp; len=strlen(str); for(j=len-1;i { temp=str[i]; str[j]=str[i]; str[j]=temp; } } (3)下列程序的功能为:求整数n的阶乘。纠正程序中存在的错误,以实现其功能。程序以文件名sy7_3.c保存。#include static int p=1; p=p*n; return p;} void main(){ int n,i; int f=0; printf(“input member:”); scanf(“%d”,&n); for(i=1;i<=n;i++) f=f*fun(i);printf(“%d!=%dn”,n,f);} 2.程序填空题 (1)下列sum()函数的功能是:计算数组x前n个元素之和。在主函数中,输入10个任意整数和下标i1、i2的值(设1<=i1<=i2<=9),调用sum()函数计算从第i1元素到第i2元素的和,并输出结果。补充完善程序,以实现其功能。程序以文件名sy7_4.c保存。#include int i,s=0; for(i=0;______________;i++) s=____________; return s;} void main(){ int i,i1,i2,result; int x[10]; for(i=0;i<10;i++) scanf(“%d”,&x[i]); scanf(“%d%d”,&i1,&i2); result=sum(x+i1,___________);printf(“Sum=%dn”,result);} (2)以下程序的功能是:输入一个字符数小于100的字符串string,然后将string所保存字符串中的每个字符之间加一个空格。补充完善程序,以实现其功能。程序以文件名sy7_5.c保存。 #include char string[MAX]; scanf(“%s”,string); Insert(_______________); printf(“%s”,string);} void Insert(char srcStr[]){ char strTemp[MAX]; int i=0,j=0; strcpy(strTemp,srcStr); while(________________________) { srcStr[i]=strTemp[j]; i++; _______________________ srcStr[i]=’ ‘; i++; } srcStr[i]=’ ’;}(3)下列程序的功能为:输出如下图所示的图形。补充完善程序,以实现其功能。程序以文件名sy7_6.c保存。#include int j,k; for(j=1;j<=30-i;j++)printf(“%c”,’ ‘); for(k=1;k<=_________;k++)printf(_____________); printf(“n”);} void main(){ int i; for(i=1;i<=7;i++)____________; for(i=6;i>=1;i--)_____________;} 222 33333 4444444 555555555 66666666666 7777777777777 66666666666 555555555 4444444 33333 222 3.编程题 (1)从键盘输入10个数,用函数编程实现将其中最大数与最小数的位置对换后,再输出调整后的数组。程序以文件名sy7_7.c保存。 (2)编写一函数,判断一字符串是否为回文。所谓“回文”是指顺读和倒读都一样的字符串,如“deed”和“level”是回文。在主函数中对输入的5个字符串统计其中回文的个数。程序以文件名sy7_8.c保存。 (3)编写一函数,实现将一个十进制转换成二进制数。程序以文件名sy7_9.c保存。 实验一 C语言结构体与指针 一、实验内容 1)学生信息的显示,具体要求如下: 定义一个结构体描述学生信息(学号,姓名,性别,年龄,住址); 设计一个函数,用于显示单个学生信息,函数的参数为前面定义的结构体类型; 设计一个主函数,在主函数中输入学生的信息,并调用前面定义的函数进行显示(学生人数不少于5人)。 2)输入若干个整数作为数组元素值,然后按输入时顺序的就地逆置排序,最后打印出逆置后的元素值。要求用指针和动态内存分配方法实现。例如 输入:10 2 30 4 5,逆置后显示为:5 4 30 2 10。 二、代码 1)#include struct Student { int studentID;char name[20];char sex[2];//m=male f=female int age;char address[50];}; void showTheDetail(struct Student s){ printf(“%dn”,s.studentID);printf(“%sn”,s.name);printf(“%sn”,s.sex);printf(“%dn”,s.age);printf(“%snn”,s.address);} void main(){ int i;struct Student student[5];for(i=0;i<5;i++){ printf(“student%dn”,i); scanf(“%d”,&student[i].studentID); } scanf(“%s”,&student[i].name);scanf(“%s”,&student[i].sex);scanf(“%d”,&student[i].age);scanf(“%s”,&student[i].address);} for(i=0;i<5;i++){ showTheDetail(student[i]);} 2)#include int temp,i,j,m=(n-1)/2; for(i=0;i<=m;i++) { j=n-1-i; temp=x[i];x[i]=x[j];x[j]=temp; } return;} int main(){ int n,i;printf(“please insert the amount of the numbers:n”);scanf(“%d”,&n);int array[n];printf(“please insert the numbers:n”);for(i=0;i scanf(“%d”,&array[i]);} change(array,n);for(i=0;i printf(“%d”,array[i]);} } 三、心得体会 复习了c语言中的数组,结构体的知识,编程中没有出现问题。第二篇:C语言程序设计实验七:函数、数组、指针
第三篇:C语言程序设计实验十指针
第四篇:C语言实验七[范文模版]
第五篇:C语言结构体与指针实验