金陵科技学院C语言实验册_第1页
金陵科技学院C语言实验册_第2页
金陵科技学院C语言实验册_第3页
金陵科技学院C语言实验册_第4页
金陵科技学院C语言实验册_第5页
已阅读5页,还剩87页未读 继续免费阅读

下载本文档

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

文档简介

金陵科枚學院学生实验报告册(理工类)课程名称:C语言程序设计实验专业班级:NIIT学生学号:31学生姓名:徐正所属院部:软件工程学院指导教师:吴刚2016——2017学年第1学期金陵科技学院教务处制实验报告书写要求实验报告上交电子稿,标题采用四号黑体,正文采用小四号宋体,单倍行距。实验报告书写说明实验报告中实验目的和要求、实验仪器和设备、实验内容与过程、实验结果与分析这四项内容为必需项。教师可根据学科特点和实验具体要求增加项目。填写注意事项(1)细致观察,及时、准确、如实记录。(2)准确说明,层次清晰。(3)尽量采用专用术语来说明事物。(4)外文、符号、公式要准确,应使用统一规定的名词和符号。(5)应独立完成实验报告的书写,严禁抄袭、复印,一经发现,以零分论处。实验报告批改说明实验报告的批改要及时、认真、仔细,一律用红色笔批改。实验报告的批改成绩采用五级记分制或百分制,按《金陵科技学院课堂教学实施细则》中作业批阅成绩评定要求执行。金陵科技学院实验报告金陵科技学院实验报告金陵科技学院实验报告金陵科技学院实验报告实验项目名称:初级程序设计实验学时:6同组学生姓名:.一………一…—实验地点:工科楼A101实验日期:实验成绩:批改教师:吴刚批改时间:实验1初级程序设计一、实验目的和要求熟悉VisualC++集成环境,进行编辑、保存、编译、连接及运行,并能进行简单程序调试;掌握C语言中各种运算符的使用;掌握C语言中各种数据类型的区别与应用;熟练掌握C语言中变量的定义、赋值和使用,表达式语句、输入/输出语句的使用;掌握C语言中输入/输出函数的使用;掌握C语言中控制语句的使用,含if-else、for、while>do-while语句的使用。二、实验仪器和设备奔腾以上计算机,装有windowsXP以上版本操作系统和VisualC++软件。三、实验内容与过程1、程序调试#include<>main(){ints,t,p,sum;scanf(“%d%d%d”,&s,&t,&p);sum=s+t+p;printf(“sum=%d\n”,sum);}#include<>main(){intk=3;if(k=3)printf(“***”);elseprintf(“###”);}#include<>main(){intk=0;do{printf(“k=%d\n”,k);}while(k++>0);}2、程序改错下面是判断一个学生考试成绩及格与否的程序(成绩A,或B,或C者为及格;成绩为D者不及格),调试并改进如下程序使其能满足上述输出的需要。#include<>main(){charmark=“A”;switch(mark){case“A”:case“B”:case“C”:printf(“>=60\n”);case“D”:printf(“<60\n”);default:printf(“Error\n”);}}3、程序设计功能:编程实现使实型正数保留2位小数,并对第三位进行四舍五入。例如:实型数为,则函数返回;实型数为,则函数返回。功能:从键盘输入一个大写字母,要求改用小写字母输出。功能:编写函数计算下列分段函数的值:x2+x+6x<0f(x)=X25x+6OWx<10x2x1其它功能:判断整数x是否是同构数。若是同构数,函数返回1;否则返回0。X的值由主函数从键盘读入,要求不大于100。说明:所谓“同构数”是指这样的数,这个数出现在它的平方数的右边。例如:输入整数5,5的平方数是25,5是25中右侧的数,所以5是同构数。功能:功能:计算正整数n的所有因子(1和n除外)之和并输出。n的值由键盘输入。例如:n=120时,输出239。功能:计算并输出下列多项式的值S=1+1/1!+1/2!+1/3!+...+1/n!例如:键盘给n输入15,则输出为:s二。注意:要求n的值大于1但不大于100。功能:从低位开始取出长整型变量s奇数位上的数,依次构成一个新数放在t中。例如:当s中的数为:7654321时,t中的数为:7531。4、思考题功能:判断一个三位数是否〃水仙花数〃。在main函数中从键盘输入一个三位数,并输出判断结果。说明:所谓"水仙花数"是指一3位数,其各位数字立方和等于该数本身。例如:153是一个水仙花数,因为153=1+125+27。功能:计算并输出3到n之间所有素数的平方根之和。例如:键盘给n输入100后,输出为:sum=。功能:输出Fibonacci数列中大于s的最小的一个数。其中

Fibonacci数列F(n)的定义为:F(0)=0,F(1)=1F(n)=F(n-1)+F(n-2)例如:键盘输入s=1000时,输出1597。程序清单及流程图程序改错1)#inzl-ide<stdio.]i>)1314)1314charii.cik-“玄".switch'.mark.1case"止‘":case“L";case:]t-intf(":匸lUyn");break;caseffLi'':z60;break:default:kJi'ijiLr(Diiui\n,J、一,=年二IH行匚百.汕卜cnrk和I程序设计1)#include<>main(){floatn;scanf("%f",&n);printf("%.2f0000\n",n);2)#include<>main(){charn;printf("Inputan大写字母\n");scanf("%c",&n);n=n+32;printf("%c\n",n);}3)#include<>main(){intx,y;printf("PleseInputanX\n");scanf("%d",&x);if(x<0&&x!=(-3))y=x*x+x+6;if(x>=0&&x<10&&x!=2&&x!=3)y=x*x-5*x+6;elsey=x*x-x+1;printf("%d\n",y);金陵科技学院实验报告金陵科技学院实验报告金陵科技学院实验报告金陵科技学院实验报告(6)(6)(6)(6)}(4)此题不会(5)#include<>main(){intx,i,s;s=0;printf("PleseInputanX\n");scanf("%d",&x);for(i=2;i<x;i++){if(x%i==0)s=s+i;}printf("%d\n",s);}#include<>main()金陵科技学院实验报告金陵科技学院实验报告金陵科技学院实验报告金陵科技学院实验报告intx,i,j,k;floats;s=;printf("PleseInputanX\n");scanf("%d",&x);if(x<=0)printf("Eorr\n");for(i=1;i<=x;i++){k=1;for(j=1;j<=i;j++)k*=j;s=s+k;}printf("s=%f\n",s);}(7)#include<>main(){ints,t=0,i=1,a=1;scanf("%d",&s);while(s!=0){a=s%10;s=s/100;a=a*i;i=i*10;t=t+a;}printf("%d\n",t);}思考题(1)#include<>main(){ints,n,t=0,a=1;scanf("%d",&n);s=n;while(s!=0){a=s%10;s=s/10;a=a*a*a;t=t+a;}if(n==t)printf("n=YES\n");elseprintf("n=NO\n");}(2)#include<>#include<>main(){intn,i,j;floats=;scanf("%d",&n);for(i=3;i<=n;i++){for(j=2;j<i;j++)if(i%j==0)break;if(j>=i-1)s=s+sqrt(i);printf("%f\n",s);}(3)#include<>main(){inti,n,f0=0,f1=1,f2=1;scanf("%d",&n);for(i=1;;i++){f0=f1;f1=f2;f2=f0+f1;if(f2>=n)break;}printf("%d\n",f2);金陵科技学院实验报告金陵科技学院实验报告金陵科技学院实验报告金陵科技学院实验报告3)3)3)3)四、实验结果与分析(程序运行结果及其分析)程序调试1结果如下沁"C:\DOCU1ENTSABDSETTIV&SYADIINISTp23sum=6Pressanykey七ocontinueH程序调试2结果如下程序调试3结果如下程序设计1):2)ca^CiVDOCUlEKTSAffDSEITIHGSXInp讥aji大与字母HaPressanykeytocontinLie金陵科技学院实验报告金陵科技学院实验报告金陵科技学院实验报告金陵科技学院实验报告金陵科技学院实验报告金陵科技学院实验报告2)2)4)此题不会5)沁^CiXDOCUlEMTSAHDSETTINGS\A1FleseInputanX120G39Press己“日keytocontinueH6)(7)-C:\BOCU1EHTSAMDSETTJUGS(76543217531Ppessan^j]<E_ytocontinue思考题1)小*C:XDOCTJIE]nSANDSETTIHGSXAJ1153^i=VESPressan»^tocon七:Lnu・I"C:\Windows\system32\Dcbug\l.exe'160148.874268(Pressanyku乡tocontinue(3)'F;\C\l?ebugMzl.exc"1000U.597Pfeesanykeytocontinue五、实验体会(遇到问题及解决办法,编程后的心得体会)刚开始学习C语言的时候,面对复杂的数据语言,感觉无从下手,感觉让人很头大,不过经过一开始的艰苦学习之后,慢慢的发现了c语言的快乐,虽然还是有很多地方不懂,但是会继续加油的~实验项目名称:中级程序设计实验学时:8同组学生姓名:一一一……一…实验地点:工科楼A101实验日期:实验成绩:批改教师:吴刚批改时间:实验2中级程序设计一、实验目的和要求掌握函数的定义、调用及返回、声明的应用;熟练掌握一维数组的定义、初始化及使用;掌握二维数组的定义、初始化及应用;熟练掌握向函数传递一维数组的方法和应用;掌握向函数传递一维数组的方法和应用。二、实验仪器和设备奔腾以上计算机,装有windowsXP以上版本操作系统和VisualC++软件。三、实验内容与过程1、程序调试2、程序改错要求:1、改错时,只允许修改现有语句中的一部分内容,不允许添加和删除语句。#include<>intfunc(inta,intb){return(a+b);}main(){intx=3,y=8,z=4,r;r=func(func(x,y),z);printf(“r=%d\n”,r);}2、提示行下一行为错误行。功能:判断m是否为素数,若是返回1,否则返回0。#include<>/**********FOUND**********/voidfun(intn)inti,k=1;if(m<=1)k=0;/**********FOUND**********/for(i=1;i<m;i++)/**********FOUND**********/if(m%i=0)k=0;/**********FOUND**********/returnm;}voidmain(){intm,k=0;for(m=1;m<100;m++)if(fun(m)==1){printf("%4d",m);k++;if(k%5==0)printf("\n");}}功能:在一个已按升序排列的数组中插入一个数,插入后,数组元素仍按升序排列。#include<>#defineN11main(){inti,number,a[N]={1,2,4,6,8,9,12,15,149,156};printf("pleaseenteranintegertoinsertinthearray:\n");/**********FOUND**********/scanf("%d",&number)printf("Theoriginalarray:\n");for(i=0;i<N-1;i++)printf("%5d",a[i]);printf("\n");/**********FOUND**********/for(i=N-1;i>=0;i--)if(number<=a[i])/**********FOUND**********/a[i]=a[i-1];else{a[i+1]=number;/**********FOUND**********/exit;}if(number<a[0])a[0]=number;printf("Theresultarray:\n");for(i=0;i<N;i++)printf("%5d",a[i]);printf("\n");}找出一个二行三列二维数组中的最大值,输出该最大值及其行列下标,建议二维数组值由初始化给出。#include""#include""main(){inti,j,max,s,t;/**********FOUND**********/inta[2][]={1,34,23,56,345,7};clrscr();/**********FOUND**********/max=0;s=t=0;for(i=0;i<2;i++)/**********FOUND**********/for(j=1;j<3;j++)if(a[i][j]>max){max=a[i][j];s=i;t=j;}/**********FOUND**********/printf("max=a[%d][%d]=%d\n",i,j,max);}3、程序设计说明,所有题目均需添加main(),在main()中调用子函数并设计完整的输入输出才可调试通过。功能:编写函数floatfun(intn),求一分数序列2/1,3/2,5/3,8/5,13/8,21/13…的前n项之和。说明:每一分数的分母是前两项的分母之和,每一分数的分子是前两项的分子之和。例如:求前20项之和的值为。完成子函数intfun(intn),找出一个大于给定整数且紧随这个整数的素数,并作为函数值返回。说明,以下四个关于数组的题目,可以先用一个main()函数实现,然后相关内容学习后再利用数组作函数参数的子函数和main()函数共同实现。功能:编写函数voidfun(intn,inta[]),按顺序将一个4位的正整数每一位上的数字存到一维数组,然后在主函数输出。例如输入5678,则输出结果为5678。功能:编写函数voidfun(intarr[],intn)将一个数组中的值按逆序存放,并在main()函数中输出。例如:原来存顺序为18,2,50,43,69。要求改为:69,43,50,2,18。功能:程序定义了NXN的二维数组,并在主函数中自动赋值。请编写函数voidfun(inta[][N],intn),使数组a左下三角元素中的值乘以n。例如:若n的值为3,a数组中的值为|197||297|a=|238|则返回主程序后a数组中的值应为|468||456||81012|(6)功能:编写函数voidfun(intarray[3][3]),实现矩阵(3行3列)的转置(即行列互换)。例如:输入下面的矩阵:100200300400500600700800900程序输出:100400700200500800300600900五、实验注意事项(1)调用系统库函数要包含相应头文件;(2)函数可以嵌套调用,但不可以嵌套定义;(3)注意数组的越界问题;(4)找最大值(最小值)的算法:先将第一个值认为是最大(小)的,检索以后的值,判断如果当前数组元素值比保留在变量中的最大(小)值大(小),则用当前数组元素值替换该变量中的值。六、讨论、思考题1、功能:编写函数floatfun(),利用以简单迭代方法Xn+1二cos(Xn)求方程:cos(x)-x=0的一个实根。迭代步骤如下:取X1初值为;x0=x1,把x1的值赋给X0;x1二cos(xO),求出一个新的x1;若xO-x1的绝对值小于,执行步骤(5),否则执行步骤(2);所求x1就是方程cos(x)-x=0的一个实根,作为函数值返回。输出:程序将输出结果Root二。2、功能:编写floatfun(floatarray[],intn),统计出若干个学生的平均成绩,最高分以及得最高分的人数。例如:输入10名学生的成绩分别为92,87,68,56,92,84,67,75,92,66,则输出平均成绩为,最高分为92,得最高分的人数为3人。3、编写函数intfun(intlim,intaa[MAX]),该函数的功能是求出小于lim的所有素数并放在aa数组中,该函数返回求出素数的个数。4、功能:编写函数intfun(inta[M][M]),求5行5列矩阵的主、副对角线上元素之和。注意,两条对角线相交的元素只加一次。5、功能:请编一个函数voidfun(inttt[M][N],intpp[N]),tt指向一个M行N列的二维数组,求出二维数组每列中最小元素,并依次放入pp所指一维数组中。二维数组中的数已在主函数中赋予。程序清单及流程图:程序改错(1)金陵科技学院实验报告金陵科技学院实验报告金陵科技学院实验报告金陵科技学院实验报告3)3)3)3)tj'1'1-1^include<^tdio.h>/*****---»FQUHD******—intfun(int*n)n改为minti_k=1;it(n^=i)K=o;悝《■星亲日■葺骞•■鼻盖FOIJHD#*<*****«*/fOK(f"S;;1+*J改为壬■■"■■■"■FOUND"・■■・・・■*iffc-D;加上一个return血;mainOintn.k=B;fflr;n<1&9;n*•■Jif(Fun(nt)'-I]printF(,,tJi(lb\n);k+*;i.FCrt5—OJprintFCAn-);2)tiiwlude<5tdiOih>flinclud?<5tdlibxti>■defineH11nzin()CIntL,nunber,J[Np<1>2,4,6PB,91.1ZJ5>U9,154)-;printf("pleaseenteranintegertoinsertinthearray:\nb')帯FDU/scanFfF^d-jfc^rtjer);(血上)printF(lbTheoriginalarray:\n");F0r[i»B:l<lb1:i++)prLnHfW"軋丄]):print#("Xn-*);/■■■・■■肪・■■/DUND»««■"■»/tor(i=N-2sl>-u;i—)(i=改为ri-2)if(nLimbeK<=a[i])/“*F(1IIHD=a[i>1]-a[l]E改为3[i+1]-a[iJ)a[i+1J=nunber;break;(continue改为bredkjir(nuimbprl<a[町)□[0]-nunber;prilltf('Theresultarrayfor[i=8;1<H;i«PprlntfCWBa[l]);金陵科技学院实验报告金陵科技学院实验报告金陵科技学院实验报告金陵科技学院实验报告}}}}I'cb-alunicrmbeTS擬爭幽Hinclude"stdio-ri"Himclude1hconio」h"iuin(>intirjrsBt;f*■■・>■存鲁卷・i»F0IJND*#/liltd[2][3]=<1,3^,23,56,3^,99Sb;([]破成吹〉"CL^£C^(>;W•讥*屮uyMo»*».„**anj«--ai0][u];{n3K-flS!JiSnaM-a[fi]l&J)s-t~0~f«■DIJHD**■**-**■»■*for(j=isjojp+jlF(a(i]Ul>MK)〈mK^[i]Lj];s-i;t=j;f耒岌现帯误printfCH,nifiK-a[4d][tdJ-'SdX.n",i.],ium);>未发现错误程序设计1)#include""floatfun(intn){Inti;floatsum=,f1=,f2=,f3;for(i=2;i<=n;i++){f3=f1+f2;f2=f1;f1=f3;sum+=f1/f2;returnsum;金陵科技学院实验报告金陵科技学院实验报告金陵科技学院实验报告金陵科技学院实验报告金陵科技学院实验报告金陵科技学院实验报告}}}}}main(){inta;printf("pressinputanN(N>1):");scanf("%d",&a);printf("sum=%f\n",fun(a));}(2)#include""floatfun(intn){inti,j;for(i=n+1;;i++){for(j=2;j<i;j++)if(i%j==0)break;if(j>=i){printf("%d\n",i);break;}}main(){inta;printf("pressinputanN:");scanf("%d",&a);fun(a);}(3)#include""voidfun(intn,inta[]){Inti,b[4]={0};for(i=0;i<n;i++){b[i]=a[i];printf("a[%d]=%d\n",i,b[i]);}}main()intn,a[4]={0},i;printf("pressinputanN:");scanf("%d",&n);for(i=3;i>=0;i--){a[i]=n%10;n=n/10;}fun(4,a);}(4)#include""#defineN5voidfun(intarr[],intn){inti,j;for(i=0;i<=N/2;i++){j=arr[i];arr[i]=arr[N-i-1];arr[N-i-1]=j;}voidmain(){inti,a[]={8,6,5,4,1};fun(a,N);for(i=0;i<N;i++){printf("%2d",a[i]);}printf("\n");}(5)#include""#defineN3voidfun(inta[][N],intn){inti,j;for(i=0;i<N;i++){for(j=0;j<N;j++){if(j==i||i-j==1||i-j==2)金陵科技学院实验报告金陵科技学院实验报告金陵科技学院实验报告金陵科技学院实验报告(6)(6)(6)(6)a[i][j]*=3;}}}voidmain(){inti,j,a[][3]={1,9,7,2,3,8,4,5,6};fun(a,N);for(i=0;i<N;i++){for(j=0;j<N;j++){printf("%4d",a[i][j]);if(j==N-1)printf("\n");}}}#include金陵科技学院实验报告金陵科技学院实验报告金陵科技学院实验报告金陵科技学院实验报告#defineN3voidfun(inta[][N],intn){inti,j,k;for(i=0;i<N;i++){for(j=0;j<N/2;j++){k=a[i][j];a[i][j]=a[j][i];a[j][i]=k;}if(i+j==N){k=a[i][j];a[i][j]=a[j][i];a[j][i]=k;}}}voidmain(){inti,j,a[][3]={100,200,300,400,500,600,700,800,900};fun(a,N);for(i=0;i<N;i++){for(j=0;j<N;j++){printf("%6d",a[i][j]);if(j==N-1)printf("\n");}}}思考题(1)#include<>#include<>floatfun(){floatx1=,x0;inti;for(i=0;;i++)金陵科技学院实验报告金陵科技学院实验报告金陵科技学院实验报告金陵科技学院实验报告{{{{{x0=x1;x1=cos(x0);if(fabs(x0-x1)<break;}returnx1;}voidmain(){printf("Root=%f\n",fun());}2)#include<>#defineN10floatfun(floatarray[],intn){floatavg,sum=,k;inti,j=0,max=0;for(i=0;i<n;i++)sum+=array[i];金陵科技学院实验报告金陵科技学院实验报告金陵科技学院实验报告金陵科技学院实验报告金陵科技学院实验报告金陵科技学院实验报告}}}}{{if(array[i]>max)max=array[i];}for(i=0;i<n;i++){if(max==array[i])j++;}avg=sum/;printf("平均成绩=%.lf\n最高分=%d\n得最高分的人数=%d\n",avg,max,j);}voidmain(){floata[N]={92,87,68,56,92,84,67,75,92,66};fun(a,l0);}(3)#include<>#defineMAXl000intfun(intlim,intaa[MAX])Inti,j,m=1;for(i=3;i<lim;i++){for(j=2;j<i;j++){if(i%j==0)break;if(j>=i-1){m++;aa[m-1]=i;}}}returnm;}voidmain(){intn,a[MAX]={0};scanf("%d",&n);printf("%d\n",fun(n,a));金陵科技学院实验报告金陵科技学院实验报告金陵科技学院实验报告金陵科技学院实验报告{{{{(4)#include<>#defineM5intfun(inta[][M]){inti,j,sum1=0,sum2=0;for(i=0;i<M;i++){for(j=0;j<M;j++){if(i==j)sum1+=a[i][j];if(i+j==M-1)sum2+=a[i][j];}}printf(“主对角线=%d\n副对角线=%d\n",suml,sum2-a[M-3][M-3]);printf(“主对角线+付对角线=%d\n",suml+sum2-a[M-3][M-3]);}voidmain()inta[M][M]={l,2,3,4,l,金陵科技学院实验报告金陵科技学院实验报告金陵科技学院实验报告金陵科技学院实验报告金陵科技学院实验报告金陵科技学院实验报告2)2)2)2)}}6,1,8,1,1,2,3,1,5,6,7,1,9,1,2,1,4,5,6,1};fun(a);}(5)#include<>#defineM4#defineN5intfun(inttt[M][N],intpp[N]){inti,j,min=0;for(i=0;i<N;i++){for(j=0;j<M;j++){min=tt[0][i];if(tt[j][i]<min)min=tt[j][i];pp[i]=min;printf("pp[%d]=%d\n",i,pp[i]);}}voidmain(){inta[M][N]={1,5,3,4,5,6,7,8,9,1,2,2,1,5,6,7,2,9,5,2},b[N]={0};fun(a,b);}四、实验结果与分析(程序运行结果及其分析)程序改错(1)叫||"F:\Dffbug\cmm.exe'23571113171923293137414347535?616771737?S38997Pressanyke^tocontinue^金陵科技学院实验报告金陵科技学院实验报告金陵科技学院实验报告金陵科技学院实验报告金陵科技学院实验报告金陵科技学院实验报告4):4):■F:\Deb□g\cmm2.exa'pleaseenteranintegertoinsertInthearray:TheDriQfinalarray:1246891215149156Thepesultapray二12346S91215149156Pp&ss:an9kesjtocontinue^3)程序设计1):■'F:\Debug\2.exeppBssinputanN<N>1>:20suni=32.660259程序设计1):■'F:\Debug\2.exeppBssinputanN<N>1>:20suni=32.660259Pi*&ss&nykeytocontinue2):HF:\Debug\2.e^e"pressinputanN:3Pressanykeytocontinue3):F:\Debug\2,e?<e"F:\Debug\2,e?<e"pressinputanN:pressinputanN:5&?3a[0]=5*L1]=6|a[2J=7a[31=8PressanykeiftocantinueF:\Debug\Lexe"145GSPresssin野Itei/tocontinu.e5):3976g86g12Pressanykeytocontinue6):1'F^Debug^l.exe"10040070020050080S30060S90SPressainykeytocontinue思考题1)'F:\Debug\l-exe'Root=0_?39085Ppeesan^keytocontinue2)・'D:\Debug\l.exe'番坦馬绩£7J咼分的人数=?Pressanykey七ocon七inue思考题3:思考题4:■J'D:\Debug\l副不角线M主才角勢付对角线与_Pressani/kEytocontinue思考5:・■'F:\Debug\l-exe"pp[01=ltp[il=2pp[2J=3pp[3]=4pp[41=2Pressanykeytocontinue五、实验体会(遇到问题及解决办法,编程后的心得体会)还是经历了一段艰难的学习时间,对C语言还是有很多困惑,学习过程中还是有很多不懂的地方,不过学习就是不断克服困难的过程吧。实验项目名称:高级程序设计实验学时:6同组学生姓名:,一…一_实验地点:工科楼A101实验日期:实验成绩:批改教师:吴刚批改时间:实验3高级程序设计一、实验目的和要求理解C语言中指针的本质,区分指针与指针变量,掌握有关指针的应用;熟练掌握字符串常量和字符串的存储及字符串处理函数的使用;掌握字符指针的定义、使用等;掌握向函数传递字符串的方法;二、实验仪器和设备奔腾以上计算机,装有windowsXP以上版本操作系统和VisualC++软件。三、实验内容与过程1、程序调试main(){inta=10,b=20,x,*pa,*pb;pa=&a;pb=&b;printf(“%d,%d,%d,%d”,a,b,*pa,*pb);x=*pa;*pa=*pb;*pb=x;printf(“%d,%d,%d,%d”,a,b,*pa,*pb);}main(){inta=10,b=20,*p,*pa=&a,*pb=&b;printf(“%d,%d,%d,%d”,a,b,*pa,*pb);p=pa;pa=pb;pb=p;printf(“%d,%d,%d,%d”,a,b,*pa,*pb);}int*swap(int*a,int*b){int*p;p=a;a=b;b=p;return(a);}main(){intx=3,y=4,z=5;swap(swap(&x,&y),&z);printf(“%d,%d,%d”,x,y,z);}思考:上面程序中函数swap()预将两个数的值相互交换,但结果为什么没有交换2、程序改错要求:1、改错时,只允许修改现有语句中的一部分内容,不允许添加和删除语句。2、提示行下一行为错误行。功能:为一维数组输入10个整数;将其中最小的数与第一个数对换,将最大的数与最后一个数对换,输出数组元素。#include<>voidinput(int*arr,intn){int*p,i;p=arr;printf("pleaseenter10integers:\n");for(i=0;i<n;i++)/**********ERROR**********/scanf("%d",p);}voidmax_min(int*arr,intn){int*min,*max,*p,t;min=max=arr;for(p=arr+1;p<arr+n;p++)/**********ERROR**********/if(*p<*max)max=p;elseif(*p<*min)min=p;t=*arr;*arr=*min;*min=t;/**********ERROR**********/if(max=arr)max=min;t=*(arr+n-1);*(arr+n-1)=*max;*max=t;}voidoutput(int*arr,intn){int*p,i;p=arr;printf("Thechangedarrayis:\n");/**********ERROR**********/while(i=0;i<n;i++)printf("%3d",*p++);printf("\n");main(){inta[10];input(a,10);max_min(a,10);output(a,10);}功能:将s所指字符串的反序和正序进行连接形成一个新串放在t所指的数组中。例如:当s所指的字符串的内容为"ABCD〃时,t所指数组中的内容为DCBAABCD〃。#include<>#include<>#include<>/**********FOUND**********/voidfun{inti,d;(chars,chart)/**********FOUND**********/d=len(s);/**********FOUND**********/for(i=1;i<d;i++)t[i]=s[d-1-i];for(i=0;i<d;i++)t[d+i]=s[i];/**********FOUND**********/t[2*d]='/0';}main(){chars[100],t[100];printf("\nPleaseenterstringS:");scanf("%s",s);fun(s,t);printf("\nTheresultis:%s\n",t);}3、程序设计说明,所有题目均需添加main(),在main()中调用子函数并设计完整的输入输出才可调试通过。编写一main()函数,要求利用指针,实现从键盘输入三个数,然后按照由小到大的顺序输出此三个数。功能:编写函数floatfun(float*a,intn),用来计算n门课程的平均分,结果作为函数值返回。其中数组a中保存了n门课程的分数。例如:若有5门课程的成绩是:,72,80,,55,则函数的值为:。功能:请编写一个函数voidfun(int*s,intn,int*k),用来求出数组s中的最大元素在数组中的下标,用k带回。其中n为主函数数组中的数据个数。例如:在主函数中输入如下整数:876675896101301401980431451777则在主函数中输出结果为:6,980功能:编写函数voidlen_cat(charcl[],charc2[])将第二个串连接到第一个串之后,不允许使用strcat函数。功能:编写函数voidfun(char*str,charch)从字符串str中删除指定的字符ch。要求:本问题要求用两种算法分别实现,一是直接删除算法即查找符合删除条件的并逐次前移实现;二是间接删除算法即查找不符合删除条件的并保留下来,而保留的方法可以采用利用本数组和引入临时数组两种实现。说明:该字符可能多次和连续出现,算法应全面考虑。功能:编写函数longfun(char*p),将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数)。六、讨论、思考题功能:请编写函数voidfun(char(*s)[N],char*b),将M行N列的二维数组中的字符数据按列的顺序依次放到一个字符串中。例如:二维数组中的数据为:WWWWSSSSHHHH则字符串中的内容应是:WSHWSHWSHWSH。功能:编写函数voidfun(charstr[],inti,intn),从字符串str中删除第i个字符开始的连续n个字符(注意:str[0]代表字符串的第一个字符)。功能:编写函数voidfun(char*s,chart[]),将s所指字符串中除了下标为奇数、同时ASCII值也为奇数的字符之外,其余的所有字符都删除,串中剩余字符所形成的一个新串放在t所指的数组中。例如:若s所指字符串中的内容为:"ABCDEFG12345",其中字符A的ASCII码值虽为奇数,但所在元素的下标为偶数,因此必需删除;而字符1的ASCII码值为奇数,所在数组中的下标也为奇数,因此不应当删除,其他依此类推。最后t所指的数组中的内容应是:〃135〃。⑷功能:请编写函数intfun(char*s),统i^一行字符串中单词的个数作为函数值返回。规定所有单词由小写字母组成,单词之间由若干个空格隔开,一行的开始没有空格。(5)功能:编写函数voidfun(chars[])将一个由四个数字组成的字符串转换为每两个数字间有一个空格的形式输出。例如:输入“4567”,应输出“4口5口6口7”(□表示空格)。程序清单及流程图:程序改错(1)#include<>voidinput(int*arr,intn){int*p,i;p=arr;printf(〃pleaseenter10integers:\n〃);for(i=0;i<n;i++)/**********ERROR**********/scanf("%d",p++);P改为P++}voidmax_min(int*arr,intn){int*min,*max,*p,t;min=max=arr;for(p=arr+1;p<arr+n;p++)/**********ERROR**********/if(*p>*max)<改为>max=p;elseif(*p<*min)min=p;t=*arr;*arr=*min;*min=t;/**********ERROR**********/if(max==arr)max=min;此处不该用赋值=改为==t=*(arr+n-1);*(arr+n-1)=*max;*max=t;}voidoutput(int*arr,intn){int*p,i;p=arr;printf("Thechangedarrayis:\n");/**********ERROR**********/for(i=0;i<n;i++)while使用错误printf("%3d",*p++);printf("\n");}main(){inta[10];input(a,10);max_min(a,10);output(a,10);}(2)#include<>#include<>#include<>/**********FOUND**********/加上[]voidfun(chars[],chart[])加上[]{inti,d;/**********FOUND**********/d=strlen(s);len使用错误/**********FOUND**********/for(i=0;i<d;i++)赋值错误,应为0t[i]=s[d-1-i];for(i=0;i<d;i++)t[d+i]=s[i];/**********FOUND**********/t[2*d]='\0';}main(){chars[100],t[100];printf("\nPleaseenterstringS:");scanf("%s",s);fun(s,t);printf("\nTheresultis:%s\n",t);}程序设计(1)#include<>voidmain()inta,b,c,x;int*pa,*pb,*pc;pa=&a;pb=&b;pc=&c;printf("请输入3个整数\n");scanf("%d%d%d",pa,pb,pc);if(*pa>*pb){x=*pa;*pa=*pb;*pb=x;}if(*pa>*pc){x=*pa;*pa=*pc;*pc=x;}if(*pb>*pc){x=*pb;金陵科技学院实验报告金陵科技学院实验报告金陵科技学院实验报告金陵科技学院实验报告}}}}*pb=*pc;*pc=x;}printf(“这3个数由小到大的排列顺序为%d,%d,%d",*pa,*pb,*pc);}(2)#include<>#defineN10floatfun(float*a,intn);intmain(){inti,n;floatave,*p,a[N];p=&a[0];printf("请输入课程数目:");scanf("%d",&n);getchar();for(i=0;i<n;i++){printf("Pleaseinputthescore:");scanf("%f",&a[i]);金陵科技学院实验报告金陵科技学院实验报告金陵科技学院实验报告金陵科技学院实验报告}}ave=fun(p,n);printf("Theaverage=%f\n",ave);}floatfun(float*a,intn){inti;floats=,t;for(i=0;i<n;i++)s=s+*(a+i);s=(s*10)/;t=s/n;return(t);}(3)#include<>intfun(int*s,intt,int*k){inti;intmax=s[0];for(i=1;i<t;i++)if(s[i]>max){max=s[i];*k=i;}}returnmax;}intmain(){inti,m;intmax;inta[10]={876,675,896,101,301,401,980,431,451,777};for(i=0;i<10;i++){printf("%d",a[i]);}printf("\n");max=fun(a,10,&m);printf("%d,%d",m,max);getchar();return0;4))#include<>#include<>voidlencat(charc1[],charc2[]){inti,d,k;d=strlen(c2);k=strlen(c1);for(i=0;i<d;i++)c1[k+i]=c2[i];c1[2*d]='\0';}main(){chars[100],t[100];金陵科技学院实验报告金陵科技学院实验报告金陵科技学院实验报告金陵科技学院实验报告gets(t);gets(s);lencat(s,t);printf("\n结果是:%s\n",t);}(5)#defineN100#include<>voidfun(chars[],charc){inti;for(i=0;s[i]!='\0';i++)if(s[i]!=c)printf("%c",s[i]);printf("\n");}main(){chars[N];printf("\n请输入:");gets(s);fun(s,'c');}(6)#include<>longfun(char*p){longn=0;intflag=0;while(*p!='\0'){if(*p=='-')flag=1;elseif(*p=='+')flag=0;elsen=n*10+(*p-'0');p++;}if(flag==1)n=-n;returnn;}main()chara[5];longn;scanf("%s",a[5]);fun(a);printf("%d",n);}思考题(1)#defineN4#defineM3#include<>voidfun(char(*s)[N],char*b){inti,j;for(i=0;i<N;i++){b=s[i]-i*N;for(j=0;j<M;j++)printf("%c",*(b+j*N));}printf("\n");(2)#defineM300#include<>voidfun(intstr[],inti,intn){inta,j;for(a=0;a<12;a++)if(a<i-1)printf("%3d",str[a]);for(j=i+n-1;j<12;j++)printf("%3d",str[j]);printf("\n");}main(){ints[M]={1,2,3,4,5,6,7,8,9,10,11,12};inti,n;printf("Inputi:\n");scanf("%d",&i);printf("Inputn:\n");scanf("%d",&n);fun(s,i,n);}main(){chars[M][N]={'W','W','W','W','S','S','S','S','H','H','H','H'},*b;fun(s,b);}(3)#defineM300#include<>voidfun(char*s,chart[]){inti=0,j=0;char*p;p=s;while(*p!='\0'){if(i%2==1&&*p%2==1){t[j]=*p;j++;}i++;p++;}puts(t);}main(){chars[M]={1},t[M]={1};inti,n;gets(s);fun(s,t);}(4)#defineM300#include<>intfun(char*s){intj=1;char*p;p=s;while(*p!='\0'){if(*p==''&&*(p+1)!='')j++;p++;}printf("%d\n",j);}main(){chars[M]={1};inti,n;gets(s);fun(s);}(5)#include<>#include<>#include<>voidfun(chars[]){inti,len;len=strlen(s);for(i=len-1;i>0;i--){s[2*i]=s[i];s[2*i-1]='\0';}len=strlen(s);s[len]='\0';}main(){chara[8],*s;scanf("%s",a[8]);fun(a);printf("%s",s);}四、实验结果与分析(程序运行结果及其分析)程序调试1main(){inta=1B,b=28,sc,*pa,*pb;pa=&a;pb=&b;printFC'^dj^d,^d",a,b,*pa,*pb);x=*pa;*pa=*pb;*pb=x;prints,^d",b,*pa,*pb);I'F:\Debug\l.exe"10^20,10,2828^10,20,lBFressanykeytocontinue程序调试2main(){inta=1Q,b=20,*p,*pa=fta,*pb=&b;p广intF「喘d鳶d,id,^d",b,*pa,*pb);p=pa;pa=pb;pb=p;printF("^ds%d,甬d,^d",b,*pa,*pb);I'F:\DebugVl.ese"10,20,10,2010,20,ZO^lQPpessany1{日野tocontinue程序调试3:int*swjp(int*a,int*b)<int*p;p=a;xb;b=p;return(a);main()<intx=3,y=4,z=5;suap(su-ap(&x,说y),隹z);printf("^d,^d,^.d",x,y,z);I,RF:\Debiug\l.exe"a,4,5PpesEanytocontinlie思考:上面程序中函数swap()预将两个数的值相互交换,但结果为什么没有交换答:程序只是调换了指向对应值的指针,并没有对值进行调换。改错1:I'F:\Debug\l.eMe"pleaseenter10integers:15?1*215Thechangedarra^jis:132551682157PressanyIt巳屮t;ocontinu.eH2):编程1:请输入3个整数234这2个数由小到大的排列顺序为2,3,4Pressanykeytocontinue编程2:E青输入课程数目:3jPleaseinputthescore:606162pleaseinputthescore:Pleaseinputthescore:Theaverage=61.000000IPressanykeytocontinu日编程(3):8766758961013014019SQ431451777&980编程(4):编程(5):1青输入strPressanykeytocontinue编程(6):-1234Pressanykeytcicontinue思考题1):'U:\UeUSHU8HUSHUSHPressanpkey七。continlie(2):I'D:\Oebdg\l.exe"Inputi:3Inputn:21256789101112PiriEssdnykeiFt:ocuntLnue3):I'D:\Debiig\L.exe'RBCDEFGlLfJ4bb135PresskeyLuuuuLiiiuie(4):・‘D:\Debuyi启畑qweqweqweqwe4Pressany1[巳ytocontinue五、实验体会(遇到问题及解决办法,编程后的心得体会)编程是一个需要百分百精确度的东西,还要有良好的编程习惯,让自己编的程序更简单明了。也是一件很有意思的事情,对这门课程,我喜欢自己独立去实践和钻研这是一个极其享受的过程。实验项目名称:构造类型程序设计实验学时:4同组学生姓名:,一一―一实验地点:实验日期:验成绩:批改教师:批改时间:实验4构造类型程序设计一、实验目的和要求(1)熟悉结构体和共同体的概念;(2))熟悉并掌握结构体变量、数组和共同体变量的定义、赋值与使用;(3)掌握结构体指针的定义与引用;(4)掌握链表的概念,初步学会对链表进行操作;(5)熟悉文件打开、关闭、写入、读出的方法;学会使用文件操作函数。二、实验仪器和设备奔腾以上计算机,装有windowsXP以上版本操作系统和VisualC++软件。三、实验内容与过程1、程序调试(1)structaa{intx,*y;}*p;inta[8]={10,20,30,40,50,60,70,80};structaab[4]={100,&a[1],200,&a[3],10,&a[5],20,&a[7]};main(){p=b;printf(〃%d〃,*++p-〉y);printf(〃%d\n〃,++(p-〉x));}(2)strucSTU{charname[10];intnum;};voidf1(structSTUc){structSTUb={“LiSiGuo”,2042};c=b;}voidf2(structSTU*c){structSTUb={“SunDan”,2044};*c=b;}main(){structSTUa={“YangSan”,2041},b={“WangYin”,2043};f1(a);f2(&b);printf(“%d%d\n”,,;}2、程序设计学生记录由学号和成绩组成,结构体类型定义如下:typedefstruct{charnum[10];doubles;}STREC;功能:a所指向的数组中有N名学生的数据,请编写函数intfun(STRECa[],STRECb[]),把a数组中分数最高的学生数据放在b所指的数组中。分数最高的学生可能不止一个,函数返回分数最高的学生人数。要求在main函数完成数据输入,及输出最高分和所有分数最高的学生相关信息。求某一位学生的成绩平均分。某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出,请编写函数fun,其功能是:求出该学生的平均分,并放入记录的ave成员中。例如,学生的成绩是:,76,,85,91,72,,,则他的平均分应为。#include<>#defineN8typedefstruct{charnum[10];doubles[N];doubleave;}STREC;voidfun(STREC*a){}main(){STRECs={"GA005",,76,,85,91,72,,};inti;fun(&s);printf("The%s'sstudentdata:\n",;for(i=0;i<N;i++)printf("%\n",[i]);printf("\nave=%\n",;}从键盘输入一系列字符(以$作为输入结束标志),将其存入文件中,再从该文件中查找某个字符(该字符可以输入),如果查找成功将返回成功标志,否则返回不成功标志。五、实验注意事项1、结构体变量占用的存储空间是各成员占用空间之和;2、对链表的检索应从链表开始结点开始,顺着链一直找下去,直到找到符合要求的结点或到达链表结尾(链表指针为NULL)。六、讨论、思考题功能:a所指的数组中有N名学生的数据,请编写函数doublefun(STREC*a,STREC*b,int*n),把低于平均分的学生数据放在b所指的数组中,低于平均分的学生人数通过形参n传回,平均分通过函数值返回。要求在main函数完成数据输入,及输出平均分和低于平均分的学生相关信息。结构体声明如下:typedefstruct{charnum[10];doubles;}STREC;功能:N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。请编写子函数doublefun(STREC*h),找

温馨提示

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

评论

0/150

提交评论