预备实验 C语言的函数数组指针结构体知识_第1页
预备实验 C语言的函数数组指针结构体知识_第2页
预备实验 C语言的函数数组指针结构体知识_第3页
预备实验 C语言的函数数组指针结构体知识_第4页
预备实验 C语言的函数数组指针结构体知识_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

预备实验C语言的函数数组指针结构体知识一、实验目的1、复习C语言中函数、数组、指针、结构体与共用体等的概念。2、熟悉利用C语言进行程序设计的一般方法。二、实验预习说明以下C语言中的概念函数:数组:3、指针:4、结构体5、共用体6、给下面一段代码加注释#include<stdio.h>defineok1defineerror0defineMAXSIZE100/*顺序表的容量*/typedefintElemType;typedefstruct{ElemTypeelem[MAXSIZE];/*存放顺序表的元素*/intlast;/*顺序表的最后一个元素的下标*/}SqList;typedefstruct{ElemType*elem;/*存放顺序表的元素*/intlength;/*顺序表的实际长度*/}SqList;三、实验内容和要求1、(1)调试以下程序:输出100以内所有的素数(用函数实现)。#include<stdio.h>#include<math.h>intisprime(intn){/*判断一个数是否为素数*/intm,;for(m=2;m*m<=n;m++)//m<=sqrt(n)if(n%m==0)return0;return1;}#include<stdio.h>intmain(){/*输出100以内所有素数*/inti,s=0;printf("\n");for(i=2;i<100;i++)if(isprime(i)if(isprime(i)==1)printf("%4d",i);return0;}运行结果:⑵模仿(1),编写程序,求1!+2!+3!+……+n!(n=10),要求阶乘用函数实现。#include<stdio.h>intisfac(intn){/*求阶乘*/intm,p=1;for(m=2;m<=n;m++)//m<=sqrt(n)p=p*m;returnp;}intmain(){/*输出1!+2!+3!++n!(n=10)*/inti,s=0;printf("\n");for(i=1;i<=10;i++)s=s+isfac(i);printf("%4d",s);return0;}2、(1)调试程序:对一维数组中的元素进行逆序排列。(2)修改所给的程序,设计三个函数:input(a)、output(a)、invert(a),分别实现一维数组的输入、输出和数据元素逆序排列运算,并在主函数中调用。#include<stdio.h>#defineN10intmain(){inta[N],i,temp;//={0,1,2,3,4,5,6,7,8,9}printf("\ntheoriginalArrayis:\n");//输出原始数组元素0,1,2,3,4,5,6,7,8,9for(i=0;i<N;i++)scanf(“%d”,&a[i]);for(i=0;i<N;i++)printf("%4d",a[i]);for(i=0;i<N/2;i++){/*交换数组元素使之逆序*/temp=a[i];a[i]=a[N-i-1];a[N-i-1]=temp;}printf("\nthechangedArrayis:\n");//输出改变顺序后数组元素9,8,7,6,5,4,3,2,1,0for(i=0;i<N;i++)printf("%4d",a[i]);return0;}(1)运行结果:(2)运行结果:#include<stdio.h>#defineN10voidinput(inta[]);voidinvert(inta[]);voidoutput(inta[]);intmain(){inta[N];input(a);output(a);invert(a);output(a);return0;}voidinput(int*a){intb[]={0,1,2,3,4,5,6,7,8,9},i;for(i=0;i<N;i++)*a++=b[i];//inti;//for(i=0;i<N;i++)//scanf("%d",&a[i]);printf("\n");return;}voidoutput(int*a){inti;printf("\nTheArrayis:\n");//输出数组元素for(i=0;i<N;i++)printf("%4d",a[i]);printf("\n");return;}voidinvert(inta[]){inti,temp;for(i=0;i<N/2;i++){/*交换数组元素使之逆序*/temp=a[i];a[i]=a[N-i-1];a[N-i-1]=temp;}printf("\n");return;}3、(选做)(1)调试程序:在二维数组中,若某一位置上的元素在该行中最大,而在该列中最小,则该元素即为该二维数组的一个鞍点。要求从键盘上输入一个二维数组,当鞍点存在时,把鞍点找出来。(2)修改所给的程序,用函数实现:编写输入函数:从键盘上输入一个二维数组。编写查找鞍点函数:找到则返回鞍点值,没找到则返回“二维数组没有鞍点”。编写输出函数:在屏幕上输出二维数组。#include<stdio.h>#defineM3#defineN4intmain(){inta[M][N],i,j,k;printf("也请输入二维数组的数据:\n");for(i=0;i<M;i++)for(j=0;j<N;j++)scanf("%d",&a[i][j]);for(i=0;i<M;i++){/*输出矩阵*/for(j=0;j<N;j++)printf("%4d",a[i][j]);printf("\n");}for(i=0;i<M;i++){k=0;

for(j=1;j<N;j++)/*找出第i行的最大值*/if(a[i][j]>a[i][k])k=j;for(j=0;j<M;j++)/*判断第i行的最大值是否为该列的最小值*/if(a[j][k]<a[i][k])break;if(j==M)/*if(j==M)/*在第i行找到鞍点*/printf("%d,%d,%d\n",a[i][k],i,k);}return0;}运行结果:4、(1)调试程序:利用指针输出二维数组的元素。(2)修改程序:用三种方法输出二维数组中的元素(用函数实现)。#include<stdio.h>intmain(){inta[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};int*p;for(p=a[0];p<a[0]+12;p++){if((p-a[0])%4==0)printf("\n");printf("%4d",*p);}return0;}运行结果:5、(1)调试程序:设有一个教师与学生通用的表格,教师的数据有姓名、年龄、职业、教研室四项,学生有姓名、年龄、专业、班级四项,编程输入人员的数据,再以表格输出。(2)修改所给程序,设计二个函数:input(s)、output(s),用指针实现输入和输出人员的数据,并在主函数中调用。#include<stdio.h>#defineN10structstudent{charname[8];/*姓名*/intage;/*年龄*/charjob;/*职业或专业,用s或t表示学生或教师*/union{intclass;/*班级*/charoffice[10];/*教研室*/}depa;}stu[N];intmain(){inti,n;printf(\n请输入人员数(<10):\n);scanf(“%d”,&n);for(i=0;i<n;i++){/*输入n个人员的信息*/printf("也请输入第%d人员的信息:(nameagejobclass/office)\n",i+1);scanf("%s,%d,%c",stu[i].name,&stu[i].age,&stu[i].job);if(stu[i].job==’s’)scanf("%d",&stu[i].depa.class);elsescanf("%s",stu[i].depa.office);}printf(“nameagejobclass/office”);for(i=0;i<n;i++){/*输出*/if(stu[i].job==’s’)printf("%s%3d%3c%d\n",st

温馨提示

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

评论

0/150

提交评论