指针实验-陈正宁-2015123349_第1页
指针实验-陈正宁-2015123349_第2页
指针实验-陈正宁-2015123349_第3页
指针实验-陈正宁-2015123349_第4页
指针实验-陈正宁-2015123349_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、淮海工学院计算机科学系实验报告书课程名: C语言程序设计 题 目: 实验9 指针 班 级: 软嵌151 学 号: 2015123349 姓 名: 陈正宁 评语:成绩: 指导教师: 批阅时间: 年 月 日1C语言程序设计实验报告1、 实验内容或题目(1)设计一个程序,将两个变量的值进行交换,要求通过函数和指针实现。具体要求:编写一个函数swap(int *p,int *q),交换两个参数指针所指的数据,再编写main主函数,通过调用swap()函数将两个变量的值进行交换。(2)编写一个程序,判断用户输入的两个字符串是否相同,其中字符串可能含有空格等,以回车键表示输入结束。(不允许使用strcmp

2、函数)(3)设计一个程序,用选择法或冒泡法将若干字符串按字母顺序进行排序。要求用函数和指针完成。具体要求:编写一个函数strsort(char *p,int n),对一组给定的字符串进行排序(非递减)。其中p的每一个元素为一个字符串指针,长度n。最后编写main主函数对下列单词进行排序后输出:include,define,main,if,else,for,while,switch,break,continue。(4)教材p291页习题的第11题。(5)教材p292页习题的第12、第15第18题。2、实验目的与要求 进一步掌握指针的概念,会定义和使用指针变量。 能正确地使用数组的指针和指向数组的

3、指针变量。 能正确地使用字符串的指针和指向字符串的指针变量。3、 实验步骤与源程序 实验步骤(1) 、(2) 、(3) 、(4)、(5-1)、(5-2)、(5-3)、 源代码(1)、#include <stdio.h>void swap(int *p,int *q) int t; t=*p; *p=*q; *q=t; /交换p1和p2所指向的内容 void main()int a,b;int *pointer_1, *pointer_2;printf("请输入两个数字a b Enter:");scanf("%d%d",&a,&

4、b);pointer_1=&a;pointer_2=&b;swap(pointer_1,pointer_2); /函数调用,指针作为实参 printf("n则交换以后为:%d %dn",a,b);(2)、#include<stdio.h>#include<string.h>int main()char a255='0',b225='0'printf("请输入第一个字符串:");gets(a);printf("请输入第二个字符串:");gets(b);int i;i

5、f(strlen(a)=strlen(b)for(i=0;i<(int)strlen(a);i+)if(ai!=bi)break;if(i=(int)strlen(a)printf("两个字符串相同n");elseprintf("两个字符串不相同n");(3)、#include<stdio.h>#include<string.h>void strsort(char *p) int i,j; char *temp; for(i=0;i<9;i+)/注意是i<9 for(j=0;j<9;j+)/注意是j<

6、9,因为下面要+1和后面的那个字符串比较 if(strcmp(pj,pj+1)>0)/字符串比较:>0表示前面的字符串比后面的大则交换 temp=pj; pj=pj+1; pj+1=temp; void print(char *p) int i; for(i=0;i<10;i+) printf("%s ",pi); int main() char*p="include","define","main","if","else","for",

7、"while","switch","break","continue" printf("原来的序列是:n"); print(p); strsort(p); printf("n排序后的序列是:n"); print(p); printf("nn"); return 0;(4)、#include<stdio.h>#include<string.h>void sort(char *s) char *temp; int i,j; for(i=

8、0;i<9;i+) for(j=0;j<9-i;j+) if(strcmp(*(s+j),*(s+j+1)>0) temp=*(s+j); *(s+j)=*(s+j+1); *(s+j+1)=temp; void main() int i; char str106, *p10; printf("请输入10个等长的字符串:n"); for(i=0;i<10;i+) pi=stri; for(i=0;i<10;i+) scanf("%s",pi); sort(p); printf("则已经排好序的字符串为:n"

9、;); for(i=0;i<10;i+) printf("%sn",pi); getchar();(5-1)、#include<stdio.h>#include<string.h>void sort(char *s) char *temp; int i,j; for(i=0;i<9;i+) for(j=0;j<9-i;j+) if(strcmp(*(s+j),*(s+j+1)>0) temp=*(s+j); *(s+j)=*(s+j+1); *(s+j+1)=temp; void main() int i; char str1

10、06, *p10; printf("请输入10个不等长的字符串:n"); for(i=0;i<10;i+) pi=stri; for(i=0;i<10;i+) scanf("%s",pi); sort(p); printf("则已经排好序的字符串为:n"); for(i=0;i<10;i+) printf("%sn",pi); getchar();(5-2)、#include <stdio.h>int main()void avsco(float *,float *); void av

11、cour1(char (*)10,float *); void fali2(char course510,int num,float *pscore,float aver4); void good(char course510,int num4,float *pscore,float aver4); int i,j,*pnum,num4; float score45,aver4,*pscore,*paver; char course510,(*pcourse)10;printf("Please input course:");pcourse=course;for (i=0;

12、i<5;i+)scanf("%s",coursei);printf("Please input NO. and scores:n");printf("NO.");for (i=0;i<5;i+)printf(" %s",coursei);printf("n");pscore=&score00;pnum=&num0;for (i=0;i<4;i+)scanf("%d",pnum+i);for (j=0;j<5;j+)scanf("

13、;%f",pscore+5*i+j);paver=&aver0;printf("nn"); avsco(pscore,paver); / 求出每个学生的平均成绩 avcour1(pcourse,pscore); / 求出第一门课的平均成绩 printf("nn");fali2(pcourse,pnum,pscore,paver); / 找出2门课不及格的学生 printf("nn");good(pcourse,pnum,pscore,paver); / 找出成绩好的学生 return 0;void avsco(flo

14、at *pscore,float *paver) / 求每个学生的平均成绩的函数int i,j;float sum,average;for (i=0;i<4;i+)sum=0.0;for (j=0;j<5;j+)sum=sum+(*(pscore+5*i+j); /累计每个学生的各科成绩average=sum/5; /计算平均成绩*(paver+i)=average;void avcour1(char (*pcourse)10,float *pscore) / 求第一课程的平均成绩的函数 int i;float sum,average1;sum=0.0;for (i=0;i<

15、4;i+)sum=sum+(*(pscore+5*i); /累计每个学生的得分average1=sum/4; /计算平均成绩printf("course 1:%s average score:%7.2fn",*pcourse,average1);void fali2(char course510,int num,float *pscore,float aver4) / 找两门以上课程不及格的学生的函数 int i,j,k,labe1;printf(" =Student who is fail in two courses= n");printf(&quo

16、t;NO. ");for (i=0;i<5;i+)printf("%11s",coursei);printf(" averagen");for (i=0;i<4;i+)labe1=0;for (j=0;j<5;j+)if (*(pscore+5*i+j)<60.0) labe1+;if (labe1>=2)printf("%d",numi);for (k=0;k<5;k+)printf("%12.2f",*(pscore+5*i+k);printf("%11.

17、2fn",averi);void good(char course510,int num4,float *pscore,float aver4)/ 找成绩优秀学生(各门85以上或平均90分以上)的函数 int i,j,k,n;printf(" =Student who is fail in two courses= n"); printf("NO. "); for(i=0;i<5;i+)printf("%11s",coursei); printf(" average:n"); for(i=0;i&l

18、t;4;i+) n=0; for(j=0;j<5;j+)if(*(pscore+5*i+j)>85.0) n+;if(n=5)|(averi>=90)printf("%d",numi);for(k=0;k<5;k+)printf("%12.2f",*(pscore+5*i+k); printf("%11.2fn",averi); (5-3)、#include<stdio.h>#include<stdlib.h>void main()int n;char*name12="January","February","March","April","May","June","July","August","September","October","November","December"printf("请输入月份:");scanf(&quo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论