c语言实验大纲_第1页
c语言实验大纲_第2页
c语言实验大纲_第3页
c语言实验大纲_第4页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

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

文档简介

#include,'stdio.h,,main()charcl,c2,c3,c4,c5;cl='C;c2=H;c3=ir;c4='nf;c5='a*;cl=cl+4;c2=c2+4;c3=c3+4;c4=c4+4;c5=c5+4;printf(Hcl=%d,c2=%d,c3=%d,c4=%d,c5=%dM,cI,c2,c3,c4,c5);GlnrePressanykeytocontinue《c语言程序设计》实验教学大纲学时课程总:64学时课程总:64学分:4实验学时:24实验个数:9课程性质:必做 适用专业:实验学分:1.5计算机科学技术、网络工程、软件エ程、电子商务、教育技术教材及参考书:《C语言程序设计与实践实验指导》,谢满得邵俊编著,机械工业出版社,2014工业出版社,2014年1月大纲执笔人:廖雪花大纲审定人:一、实验课的性质与任务C语言程序设计实验是面向计算机相关专业学生开设的《C语言程序设计》实验课,是配合《C语言程序设计》课程而开设的实践性教育环节。本课程的主要任务是让学生充分掌握C语言程序设计的基本概念、各种数据类型的使用技巧、模块化程序设计的方法等。C语言程序设计实验对课程中所涉及的知识进行验证,同时也是学生很好地学习课程的辅助手段。通过C语言上机实验的教学活动,使学生真正全面掌握C语言的基础知识,培养和提高学生的程序开发能力。二、实验课程目的与要求.实验目的通过实验课程的学习实践,加深学生对所学的基本概念、基础理论和知识的理解,熟悉使用VisualC++6.0集成环境进行C语言的编写、编译与调试。同时,通过项目开发全过程的全方位指导,从需求分析、算法设计到程序编写和过程调试,以项目实训的形式引导和帮助学生解决实际问题,提髙学生解决具体问题的能力,以及培养学生用多函数、多文件组织程序的思维习惯,为今后的后继课程学习和实际工作打下良好基础。.实验要求(1)掌握C语言程序的基本格式,了解C程序的开发过程和C语言中的ー些常用概念。(2)掌握常量和五种基本数据类型变量的使用。(3)掌握C表达式和运算符的正确使用,熟练掌握数据输入、输出函数。(4)掌握条件转移语句if-else和选择分支语句switch;掌握三种程序跳转的方法,即break语句、continue语句、return语句。(5)掌握循环语句(for语句;do-while语句;while语句)的正确使用,认真体会应该如何组织循环。(6)掌握数组的定义、赋值,ー维数组与二维数组的使用。(7)掌握函数的定义、函数的调用以及函数的类型说明。(8)掌握局部变量、全局变量的定义和使用。(9)掌握指针的基本概念以及数组与指针、指向指针的指针的基本用法。(10)掌握结构体变量的定义,引用结构体中成员的方法,应用结构数组解决实际问题;共用体的概念,引用共用体中成员的方法。(11)掌握链表的类型定义及其基本操作。(12)掌握文件的打开、读写及关闭,并能运用文件提高编程的效率。(13)理解项目式程序开发的过程。三、实验项目及内容提要(C语言程序设计》实验课程 (1107142019)序号实验项目编号实验名称学时必做选做学分数实验类型内容提要基本操作验ill-徐厶设计1实验数据类型和表达式211、了解C语言中数据类型的意义。2、理解常用运算符的意义。3、掌握C语言表达式的运行规则2实验分支结构程序设计21了解和掌握分支语句的使用,包括if语句的各种形式以及switch语句3实循环结构22VV1、使用循环语句完成

验二程序设计累乘、图像输出的程序编写。2,掌握较复杂结构程序的编写。3,掌握程序调试的方法4实验四数组程.序设计427V掌握ー维和二维数组的使用技巧5实验五函数5J2VV1、学习函数的编程思想,编写ー个包括ゴ4个函数的程序。2、掌握函数中参数传递的两种方式和函数的相互调用6实验-A..指针3V2V1、用指针作为函数参数完成字符串的传递。2、掌握函数中参数传递的两种方式7实验七字符串与指针21JV1、掌握用指针进行函数参数传递的方法。2、掌握指针数组和二维数组间的关系以及进行参数传递时的写法8实验ハ结构体217V1、掌握结构体的定义、数据输入方法。2、掌握结构体成员变量的两种访问方法。3、掌握编写程序完成单链表的建立和査询方法9实验九文件操作21JV1、掌握文件的打开和关闭。2、精通文件的读写操作。3、了解文件的定位操作及文件的检测函数。4、掌握文件的应用四、实验内容安排:实验・数据类型和表达式实验(验证性实验2学时)1、目的要求:(1)了解C语言中数据类型的意义。(2)理解常用运算符的意义。(3)掌握C语言表达式的运行规则。(4)编写实验报告。2、实验内容(参考实验指导书):(1)计算山键盘输入的任何两个双精度数据的平均值。#include<stdio.h>voidmain()(printf("请任何两个数");doublea,b,c;scanf(n%lf%lf',&a,&b);c=(a+b)/2;printf(H%ir,c);请任何两个数121.500000Pressanykeytocontinue(2)写一个输入7个数据的程序,把输入的数据代入a+b*(c-d)/e*f-g表达式进行运算。#include<stdio.h>voidmain(){inta,b,c,d,e,f,g,h;scanf(n%d%d%d%d%d%d%d",&a,&b,&c,&d,&e,&f,&g);h=a+b*(c-d)/e*f-g;printf("%d”,h);1234567-6Pi*essanykeytocontinue(3)编写ー个C语言程序,测试下列各表达式:i,ji+1J+1i++,j++++i,++ji+++++j#includeHstdio.h"voidmain()(inti=l,j=2;inta,b,c,d,e,f,g;a=i+1;b=j+l;c=i++;d=j++;e=++i;「=++j;g=(i++)+(++j);printf("a=%d,b=%d.c=%d,d=%d,e=%d,f=%d,g=%d",a,b,c,d,e,f,g);}・マ "c\Mioo«oftVoualStudio\MyPn>iccti'AK>)AD<bu9'Muoy^«"p=2,b=3,c=1,d=2,e=3,f=4,g=8Pi*essanykeytocontinue■・输入存款金额money,存期year和年利率rate,根据下列公式计算存款到期时的利息interest(税前)输出时保留2位小数。interest=money(1+rate)year-money#include<stdio.h>#include<math.h>voidmain(){intyear;doublemoney,ratejnterest;scanf(,'%lf%d%lf\&money,&year,&rate);interest=money*pow(1+rate,year)-money;printf(,'money(14-rate)Ayear-money=%lf,,interest);100010.25250.00Pressanykeytocontinue(5)输入华氏温度,输出对应的摄氏温度。计算公式如下:c=5*(f-32)/9其中,c表示摄氏温度,f表示华氏温度。#include<stdio.h>voidmain()(doubleEa,c;printf("输入华氏温度”);scanf("%F,&F);c=5/9*(F-32);printf("摄氏温度=%f",c);实验二分支结构程序设计实验(验证性实验 2学时)1、目的要求:(1)了解和掌握分支语句的使用,包括if语句的各种形式以及switch语句。(2)编写实验报告。2、实验内容(参考实验指导书):(1)编写ー个程序完成输入ー个整数,输出它的符号。#include<stdio.h>voidmain()printf(nqingshuruyigezhenshun);inta;scanf(n%d';&a);if(a>0)printf(M+w);elseprintf(M-M);(2)请编写居民应交水费,并提供各种测试数据。居民应交水费y(元)与月用水量x(吨)的函数关系式如下:“0 x<0y=f(x)=イ4x/3 〇くxW15#include<stdio.h> Ivoidmain()(intx,y;scanf("%dH,&x);if(x<0){y=0;printf(”%d”,y);)elseif(x>15)(y=2.5*x-10.5;printf(”%d”,y);)else{y=(4*X)/3;printf(H%dM,y);2.5x-10.5x>15(3)请根据输入的学生成绩给出成绩等级的判断,判断规则如下:如果输入的成绩大于等于90,则输出优秀;如果输入的成绩小于90、大于等于80,则输出良好;如果输入的成绩小于80、大于等于70,则输出中等;如果输入的成绩小于70、大于等于60,则输出及格;其他输出不及格。#include"stdio.h"main()(intscore;printf("请输入第一个学生的成绩つ;scanf("%d",&score);if(score>=90){printf("优秀");)elseif(score<90&&score>=80){printf("良好");)elseif(score<80&&score>=70){printf("中等");)elseif(score<70&&score>+60)(printf("及格");)elseif(score<60)printf("不及格");

cr>MCFosonvisualstuatovMyvn青里人第一个学生的成绩10。(4)运输公司对用户计算运费。s(4)运输公司对用户计算运费。s=250km250kmWsv500km500kmWs<1000km1000kmWs<2000km2000kmWs<3000km3000kmWs路程(s)越远,每公里运费越低。标准如下:没有折扣2%折扣5%折扣8%折扣10%折扣15%折扣设每公里每吨货物的基本运费为p,货物重为W,距离为S,折扣为d,则总运费的计算公式为:f=p*w*s*(l-d)请编程实现:从键盘输入基本运费P,货物重W,距离S,计算输出用户最终需要支付的运费。#include<stdio.h>voidmain()doubles,p,w,d,f;printf("货物重为:\nH);scanf(H%ir,&w);printf("基本运费为:\nn);scanf(n%ir,&p);printf("路程为:\n");scanf(H%ir,&s);if(s<=250)d=0;f=p*w*(l-d);printf(”运费为:%ll\n”,f);)elseif(s>250&&s<500)d=0.02;f=p*w*(l-d);printf(”运费为:%lf\n\f);)elseif(s>=500&&s<1000)d=0.05;f=p*w*(l-d);printf(”运费为:%lAn\f);)elseif(s>=1000&&s<2000){d=0.08;f=p*w*(l-d);printf(“运费为:%lf\n\f);}elseif(s>=2000&&s<3000)d=0.1;f=p*w*(l-d);printf(”运费为:f);}elseif(s>=3000)(d=0.15;f=p*w*(l-d);printf(”运费为:%lf\nM,f);}getchar();getchar();实验三循环结构程序设计实验(验证性综合性实验2学时)1、目的要求:(1)使用循环语句完成累乘、图像输出的程序编写。(2)掌握较复杂结构程序的编写。(3)掌握程序调试的方法。(4)编写实验报告。2、实验内容(参考实验指导书):(1)已知xyz+yzz=532,其中x、y、z都是数字(〇〜9),编写ー个程序求出x、y、z分别代表什么数字。#include"stdio.h"voidmain()(intx,y,z;for(x=1;x<l0;x++)(for(y=l;y<10;y++)(for(z=l;z<l0;z++)(if((x*l00+y*10+z)+(y*l00+z*l0+z)==532)

printf("x=%d,y=%d,z=%d\n",x,y,z);))}}(2)编写ー个程序打印如下对称图形(行数由键盘输入1〜9范围的值),例如下面是输入的数字4时的情形:4444444333332221222333334444444#include"stdio.h"voidmain()intn,ij,k;printf(“请输入ー个数”);scanf(H%dH,&n);for(i=n;i>=l;i—)(for(j=l;j<=4-i;j++)printf(い);for(k=l;k<=2*i-l;k++)printf(M%dM,i);printf(M\nM);}for(i=l;i<=n-l;i++)(for(j=l;j<=3-i;j++)printf(い);for(k=l;k<=2*i+l;k++)printf(n%dH,i+l);prinlf(ヽ”);'cVMicroso请输入ー个数44444444333332221222333334444444(3)学校有近千名学生,在操场上排队,5人一行余2人,7人一行余3人,3人一行余1人,编写一个程序求该校的学生人数。#include"stdio.h"voidmain()(inta;for(a=1;a<1000;a++)if((a%5==2&&a%7==3&&a%3=l)&&(a>900&&a<1000))printf("人数为%d\n",a);,c\Mcro»o#tVisualStudioXMyProjects*人数为997Pressanykeytocontinue(4)学校某班A、B、C、D四位同学中的一位做了好事不留名,表扬信来了之后,班主任问这四位是谁做了好事,四位回答如下:A说:不是我。B说:是C。C说:是D。D说:他胡说。已知三个人说的是真话,一个人说的是假话。请根据这些信息,找出做了好事的人。#include"stdio.h"voidmain()(inti;for(i=,A,;i<=,D,;i++)(if((i!=,A')+(i==,C,)+(i==,D')+(i!=D')=3)printf("好人是%c\n”,i);・c\1M-18c朮Vtsu*0Pressanykeytocontinue实验四数组程序设计实验(验证性综合性实验4学时)1、目的要求:(1)掌握ー维和二维数组的使用技巧。(2)编写实验报告。2、实验内容(参考实验指导书):(1)从键盘输入ー个长度为N(比如10)的整型数组,而后将数组中小于零的元素移动到数组的前端,大于零的元素移到数组的后端,等于零的元素留在数组中间。比如原来数组为:2-5-89750-89093480.经过处理后的数组为:-5-89-890007593482。由于不要求数组有序,所以不允许用排序方法。提示:1)输入N个数据,构建数组。2)按照要求确定数据的位置,需要注意循环条件的确定、0数据元素往中间推的实现过程以及数组处理的方向。#include"stdio.h"#defineN10voidmain()(inti,j,m;inta[N],b[N]={0};printf("请任意输入10个数\n");for(i=0;i<N;i++)scanf(M%dw,&a[i]);printf(',\nH);primf("你输入的数组为\n");for(i=0;i<N;i++)printf(H%5d",a[i]);printf("\nH);j=N-l;m=0;for(i=0;i<N;i++)(if(a[i]>0)(b|j]=a[i];elseif(a[i]<0)(b[m]=a[i];m++;printf("现在的数组为\n”);for(i=0;i<N;i++)printf(H%5dH,b[i]);printf(',\nH);"c:\MicrosoftVisualStudio\MyProjects\1111\Debug\111请任意输入10个数9-2056-34046-28934你输入的数组为9 -2 0 56 -34 0 46 -28 9 34现在的数组为-2 -34 -28 0 034 9 46 56 9Pressanykeytocontinue(2)设数组a的定义如下:inta[20]={2,4,6,8,10,12,14,16};已存入数组中的数据值已经按由小到大的顺序存放,现从键盘输入ー个数据,把它插入到数组中,要求插入新数据以后,数组数据仍然保持有序。请编写ー个程序实现上述功能。提示:1)定义整型数组并初始化。2)从键盘输入一个数据。3)将该数据插入到数组中,由于要保证插入的数组仍然有序,所以需要查找插入的位置。4)输出插入数据以后的数组。#include"stdio.h"voidmain(){inti,j,k,m,n;inta[9]={2,4,6,8,10,12,14,16);printf("现在的数组为\n“);for(i=0;i<8;i++)printf("%5d”,a[i]);printfCXn");printf("请输入你要插入的数n=n);scanf(n%dH,&n);m=n;printf(M\nn);for(i=7;i>=0;i-)if(a[i]<=n)break;j=i;for(k=8;k>j;k-)(a[k+l]=a[kl;}a[i+l]=m;primf("现在的数组为\n");for(i=0;i<9;i++)printf,%5d”同i]);printf(H\nH);B3"c:\MicrosoftVisualStudio\MyProjects\q\Debug\<现在的数组为2 4 6 8 10 12IM16请输入你要插入的数n=5现在的数组为2 4IPressanykey5 6 8 10 12 14 16tocontinue(3)写ー个3x5矩阵的转置程序,输出其原矩阵的值和转置以后的结果。提示:1)定义一个二维数组及相关变量。2)对二维数组赋值,可以由键盘输入,也可以通过其他方式赋值。3)输出转置前的二维数组。4)对二维数组中的值进行转置。5)输出转置后的二维数组中的值。#include"stdio.h"voidmain()inti,j;inta[3][5];printf("请输入3*5的矩阵)for(i=0;i<3;i++)for(j=0;j<5;j++)(printf("a[%d][%d]=",i,j);scanf("%d",&a[i][j]);printf("转置前的矩阵为\n");for(i=0;i<3;i++)(for(j=0;j<5;j++)printf("%5d",a[i][j]);printf("\n");}printf("转置后的矩阵为\n");for(j=0;j<5;j++)(for(i=0;i<3;i++)printf("%5d",a[i]|j]);printf("\n");"C\MicrotoftVisualStudio\MyPrayects\iH\Debwg\aL0][2]=3a[0][3]=4a[0J[4]=5a[l][0]=6a[l][l]=7a[l][21=8atl][3J=9a[l]C4]=10aC2][0]=lla[2][U=12a[2H2]-13&C21C31-14a[2][4]=15转置前的矩阵为TOC\o"1-5"\h\z1 2 3 4 56 7 8 9 1011 12 13 14 15转置后的矩阵为6 117 128 139 1410 15Pressanykeytocontinue微软拼音简捷半: (4)编程实现随机产生10个位于区间[100200]互不相等的整数,并将其按降序排序和输出。#includenstdio.hM#includeustdlib.h"#includeHtime.h"voidmain(){inti,j,temp;inta[10J;srand((unsigned)time(NULL));printf("产生的随机数如下”);for(i=0;i<=9;i++){a[i]=rand()%100+101;)for(i=0;i<=9;i++)printf("%5d",a[i]);printf("\n");for(i=0;i<=9;i++)TOC\o"1-5"\h\z{for(j=0;j<=9;j++){if(a|j]<a[j+l]){temp=a[j];a[j]=a[j+l];a[j+l]=temp;}}}printf("降序排列后的顺序为)for(i=0;i<=9;i++)printf("%5d",a[i]);printf("\n");)'CAMicmoftVisualStudio\MyPrajects\iiADebug\w*w«iie'产生盟隐机麴如上200186167132148186195151123128降序排列后的顺序为200195186186167151148132128123Pressanykeytocontinue实验五函数实验(验证性综合性实验5学时)1、目的要求:(1)学习函数的编程思想,编写ー个包括3〜4个函数的程序。(2)掌握函数中参数传递的两种方式和函数的相互调用。(3)编写实验报告。2、实验内容(参考实验指导书):(1)写ー个函数intdigit(intn,intk),它返回数n的从右向左的第k个十进数字值。例如,函数调用digit。234,2)将返回值3。#include,'stdio.h"inidigit(intm,intk);voidmain()intm,k,n;printf("请输入n的值和k的值、バ);scanf("%d%d",&n,&k);m=digit(n,k);if(m>0)printf("这个位置上的数为%d\n”,m);elseprimf("数%d是ー个小于%d位数的数、n”,n,k);)intdigit(intn,intk)(inta;for(a=1;a<k;a++)(n=n/10;}if(n!=O&&a==k)retum(n%10);elsereturn(-l);,cS.M-cros请输入n的值和k的值这个位置上的数为3Pressanykeytocontinue@j ec\MicrasoftV请输入n的值和k的值数1234是一个小于5位数电数Pressanykeytocontinue(2)写ー个函数intisprime(intn),当n是质数时,函数返回非零值;当n是合数时,函数返回零值。#include,'stdio.h,,intisprime(inln);voidmain()intn,w;primf("请任意输入ー个数”);scanf("%d'*,&n);w=isprime(n);if(w==O)|printf(H%d不是质数\n”,n);)else(printf("%d是质数\n”,n);intisprime(intn)(intj;for(j=2;j<n;j++)(if(n%j==O)return0;}return1;}(3)写ー个函数reverse(charsロ),将字符串s口中的字符串倒序输出。试分别用递归和非递归两种形式编写。(4)写ー个主函数输入测试数据(自己指定),并调用上述函数,检查函数功能的正确性。非递归的方法#include,'stdio.hH#include,,string.h,,charreverse(chara[100],intn);voidmain()(inti,n;chara[100];printf("请输入字符串a\nH);gets(a);n=strlen(a);primf(“你输入的字符为)for(i=0;a[i]!=W;i++)printf(n%5cH,a[il);printf(H\nH);printf("倒叙后的字符串为)reverse(a,n);)charreverse(chara[5],intn)(inti;for(i=n-l;i>=0;i—)printf(n%5c",a[i]);printf(,,\nH);return0;)iJl "c:\MicrosoftVisualStudio\MyProjects\q\Debug\q.e:请输入字符串aabcedfgh你输入的字符为 abcedfgh倒叙后的字符串为 hgfdecbaPressanykeytocontinue递归的方法ttinclude#stdio.h"Sinclude"string.h"charreverse(chara[100],intn);voidmain()(inti,n;chara[100];printf("请输入字符串a\n");gets(a);n=strlen(a);printf("你输入的字符为つ;for(i=0;a[i]!=‘、0';i++)printf("%5c",a[i]);printf("\n");printf(“倒叙后的字符串为“);reverse(a,n);}charreverse(chara[100],intn)(inti;if(n=0)return0;reverse(a,n-l);printf("\n");return0;(5)ー个数如果从左到右和从右到左读,数字是相同的,则称这个数字为回文数,比如898、1221>1565I都是回文数。求:既是回文数又是质数的5位十进制数有多少个?要求:回文判断和质数判断都需要通过子函数实现,输出的时候要求5个数字一行。#include<,stdio.hH#includeMmath.hninthuiwen(inti);intprime(inti);voidmain(){inti,m,n,count=0;for(i=10000;i<=99999;i++)(m=huiwen(i);n=prime(i);if(m+n=2)(printf(M%8dn,i);count++;if(count%5==0)printf(H\nM);}}printf(n\n");)inthuiwen(inti)(inta,b,c,d,e;a=i/10000;b=i/1000-10*a;c=i/100-100*a-10*b;d=i/10-1000*a-100*b-10*c;e=i%10;if(a==e&&b==d)return1;elsereturn0;intprime(inti)(intj;for(j=2;j<sqrt(i);j++)(if(i%j==0)return0;)return1;,c\Micn»oftVisualStudio\.MyProiects,,SXX<.Debwg\^eX«xe*1020110301105011060111311114111242112721128211333113831139311434114741154511555116061163611656116661174711797118181184811939119891199913010330203304033070330803310133151332323324233353334543348433505335153353533575336263365633727337573380833818338783392937020770507706077131771917722277272773037732377363774047747477555776367766677737777477779777848778787788877939779697799979070991019931399323993739940499424994349946499484994949959599626996469967699737997579978799838998689Pressanykeytocontinue(5)在n个已排好序(设为从小到大)的数据(数或字符串)中查找某ー个数据,如果找到了,就指出其在n个数中的位置;否则给出无该数据的信息。请用递归的方法实现二分查找来实现这ー查找过程。提示:采用二分法求解本问题的基本思路是:设数列为aba2,...,an,被查找的数为x,则查找首先对a„,(m=(n+l)/2)进行,于是得到三种情形。若X>am,则X只可能在区间[am+1,%]若xvam,则x只可能在区间⑶,am-1]若X二am,则am即为查找的数,求解结束。从上面的分析发现,这个过程很适合用递归来实现。不递归#includeHstdio.h,,interfen(inta[10],intn);voidmain()(inta[10];inti,n,m;printf("请输入从小到大的!0个数”);for(i=0;i<10;i++)scanf(M%d\&a[i]);printf("\n");printf("你输入的数组为)for(i=0;i<10;i++)printf(M%5dM,a[i]);printf(n\nn);printf("请输入你要查找的数n二");scanf(”%d”,&n);m=(erfen(a,n));if(m==-l)(printf("没有找到没");printf(”你要找的数是第%d个数\n”,m+l);interfen(inta[10],intn)intlow=0,high=9;intmedium;while(low<=high)medium=(low+high)/2;if(a[medium]>n)high=medium-l;

}elseif(a[medium]==n)returnmedium;}else(low=medium+l;return-1;g, 'CAMicrosaftVisualStudioゝMy»cjects\'%x\Debug'"到exe.请输入从小到大的10个豹0123456789SBy组查是SBy组查是ke数y的备an人入找s要es・你pr■1卽=4数continue递归#include<stdio.h>voidSearch(intp[],intlow,intheight,intkey);voidmain()inta[5];inti,j;printf("请输入从小到大的5个数\n)for(j=0;j<5;j++)(scanf(M%d\&a(j]);}for(j=0;jv5;j++)printf(H%5dH,a[j]);printf(H\nn);printf("请输入你要插入的数i=");scanf(H%dM,&i);Search(a,0,4,i);)voidSearch(inta[],intlow,iniheight,inikey)(intmiddle=(low+height)/2;if(low>height){primf("这个数不存在!”);return;)if(a[middle]==key){printf("找到了在第%d位”,middle+1);return;}elseif(a[middle]>key)(Search(a,low,middle-1,key);)elseif(a[middle]<key)(Search(a,middle+1,height,key);))"c:\MicrosoftVisualStudio\MyProjects\1111\Debug\11请输入从小到大的5个数135791 3 5 7 9请输入你要插入的数い7找到了在第4位Pressanykeytocontinue实验六指针实验(验证性综合性实验 4学时)1、目的要求:(1)用指针作为函数参数完成字符串的传递。(2)掌握函数中参数传递的两种方式。

(3)编写实验报告。2、实验内容(参考实验指导书):字符删除,(1)编写ー个函数char*delk(char*sp),把sp所指向的字符串中所有的并把处理后的字符串字符删除,include"stdio.h"char*delk(char*sp);voidmain()(chars[10];printf("请输入ー串字符串”);gets(s);delk(s);printf(H%s\n'\s);)char*delk(char*sp){char*p=sp,*q=sp;while(*p)(if(*p++!='$'){q++;)*q=*p;}returnsp;(2)写ー个函数intfind(char*sl,char*s2).函数find的功能是查找串s!中是否包含指定的词(s2指向),如果存在则返回第1次出现的位置,否则返回一1.约定串中的词由1个或1个以上的空格符分隔。#include,'stdio.hn#include^,string.h'^intfind(char*s1,char*s2,inln);voidmain()(intn,m;charsi[20];chars2[10];prinlf("请输入sl=');gets(sl);prinlf("请输入你要查找的s2ゴ);gets(s2);n=strlen(sl);m=find(sl,s2,n);if(m==-l)printf("sl中没有s2所含词)elseprintf("找到了,在第%d位”,m);)intfind(char*sl,char*s2,intn)(inti,sum=0;for(i=0;i<=n;i++){if(*(sl+i)==r*)sum++;elseif(*(s1+i)!=l\0'&&*(s1+i)!=*s2)continue;elseif(*(sl+i)!='\0'&&*(sl+i)==*s2)break;elseif(*(sl+i)==W)break;)if(i==n)return-1;elseif(i!=n)return(i+l-sum);"c\Micro»oftVis"Studio\MyProjects\zhahen92,Debug\zll育4l育4刖ノIsT=abcdef请爲入你要查殺對了,在第s2=fressanykeytocontinue'c\Micrc»oftVisualStudio\.MyPpects、ホaheng2\Debug,ホspespe的词c找含b杳所=a要S2SI你有人人没anukeytocontinue(3)编程实现将输入的十进制整数n通过函数DtoH转换为十六进制数,并将转换结果以字符形式输出。例如:输入十进制数79,将输出十六进制数4f。有返回值#incIude“stdio.h"intDtoH(intn,int*p);voidmain()(inti,k,n;inta[20];printf("请输入一个10进制数nゴ);scanf("%d",&n);k=DtoH(n,a);printf("转换为16进制数=”);for(i=k-1;i>=0;i~)printf("%c",a[i]);printf("\n");intDtoH(intn,int*p)(inti=0;while(n!=0)[*(p+i)=n%16;if(*(p+i)<10)*(p+i)=,0f+(*(p+i));eIse*(p+i)=,a'+(*(p+i))-10;n=n/16;i++;}returni;)没有返回值#includez/stdio.h"voidDtoH(char*p,intn);voidmain()(intn;chara[10];printf(“请任意输入ー个数nゴ);scanf("%d",&n);DtoH(aFn);)voidDtoH(char*p,intn)(inti,j;二〇;whiIe(n>16)(*(p+i)=n%16;n=n/16;i++;)*(p+i)=n;j=i;for(i=0;i<=j;i++)(if(♦(p+i)<10)*(p+i)ゴ。’+(*(p+i));eIse*(p+i)='a'+(*(p+i))-10;)for(i=j;i>=0;i-)printfC%c/Z,*(p+i));printf("\n");return;13"c:\MicrosoftVisualStudio\MyProje«请输入ー个1。进制数112345转换为16进制数;3039Pressanykeytocontinue"c:\MicrosoftVisualStudio\MyPr请注意输入ー个数n二79n转换为16抵制后的数为Pressanykeytocontinue(4)定义函数voidMerge(intaロ,intn,intbロ,intm),参数a、b为ー维数组,数组中的数据为升序排列,n和m分别为它们的元素个数。函数的功能为:将数组a和b合并为ー个数组,合并后的结果存放于数组a中,要求合并后的数组a仍旧为升序排列。请编程实现,并编写main函数对其测试。#include,'stdio.huvoidMerge(int*pl,intn,int*p2,intm);voidmain()(intn,m,i;inta[20];intb[10];printf("请输入a的元素的个数n=:H);scanf("%d”,&n);for(i=0;i<n;i++)scanf(M%dM,&a[i]);}printf("请输入b的元素mゴ);scanf(H%dH,&m);for(i=0;i<m;i++){scanf(H%dn,&b[i]);)Merge(a,n,b,m);for(i=0;i<n+m;i++)printf(”%5d”,a[i]);printf(H\nM);}voidMerge(int*pl,intn,int*p2,intm)(inti,j,k,t;for(i=0;i<m;i++){*(p1+n+i)=*(p2+i);)for(j=0;j<n+m;j++)(for(k=j;k<n+m;k++){if(*(p1+j)>*(p1+k))(t=*(pl+k);*(pl+k)=*(pl+j);*(pl+j)=t;}}}return;'c\Micros©ftVin3Studio.MyProjects\zh<zheng2,\Debug\zhizhe^9Zexe'请输入a的元素的个数ア:6682417请输入b的元素m=:528102841 2 2 446 78 8 10 28Pressanykeytocontinue实验七字符串与指针实验(验证性综合性实验2学时)1、目的要求:(1)掌握用指针进行函数参数传递的方法。(2)掌握指针数组和二维数组间的关系以及进行参数传递时的写法。(3)编写实验报告。2、实验内容(参考实验指导书):(1)编写ー个书名排序程序,输入10个书名存入一个二维数组,用函数voidsortstring(char*name[],intn)实现它们的字典顺序。#include<stdio.h>#include<string.h>charsortstring(charbook[][20]);voidmain(){inti;charbook[10][20];printf("请输入你要输入的书名Xn”);for(i=0;i<10;i++)(printf("第%d本的名字メ,i+1);gets(book[i]);)sortstring(book);printf("排序后的书名顺序为Xn");for(i=0;i<10;i++)printfC第%d本书是,i+1);printf("%s\n”,book[i]);)charsortstring(charbook[][20])/・二维数组・/(intk,j;chartemp[20];for(k=l;k<10;k++)(for。=0;j<10-k;j++){if(strcmp(book[j],book[j+1])>0)(字符串要用strcpy进行交换ッstrcpy(temp,book[j]);strcpy(book[j],book[j+1]);strcpy(book[j+ILtemp);return0;"c:\MicrosoftVisualStudio\MyProjects\111j请输入你要输入的书名第1本的名字=daxue|第2本的名字=lunyu|第3本的名字::mengzi第1I本的名字;zhon9y第5本的名字::yingyu第6本的名字=shuxue第ア本的名字::zhuanye第8本的名字:xinxinjiansuo第9本的名字:mianbao第10本的名字マgaoshu排序后的书名顺序为第1本书是daxue第2本书是gaoshu第3本书是lunyu第4本书是mengzi第5本书是mianba。第6本书是shuxue第7本书是xinxinjiansuo常8本书是yingyu第9本书是zhongy第1。本书是zhuanyePressanykeytocontinue微软拼音简捷半:(2)编写函数voidsearch(char*sl,char*s2,char*s3)o函数search。从已知的两个字符串si与s2中找出它们都包含的最长的单词放入字符串S3,约定字符串中只有小写字母和空格字符,单词用1个或1个以上空格分隔。#include”stdio.h"#include,,string.h,,voidsearch(char*sl,char*s2,char*s3,intn,intm);voidmain。(intn,m;charsi[20];chars2[20];chars3[10];printf("请输入siゴ);gets(sl);printf("请输入s2ゴ);gets(s2);n=strlen(sl);m=strlen(s2);search(sI,s2,s3,n,m);)voidsearch(char*sl,char*s2,char*s3,intnjntm)(inti,j,p,flag,sum=0,k=0;inta[20J;intmax=-100;for(i=0;i<n;i++)(for(j=0;jvm;j++){if(*(s1+i)!=*(s2+j))continue;else(*(s3+k)=*(s2+j);k++;sum++;)})if(sum==0)

printf("sl和s2没有相同的单词)elseprintf("找到了,最长单词是");for(p=0;p<k;p++)printf(n%cH,*(s3+p));printf("\n”);)sl=ababcabeds2=abcd・最长单词是ababcabcdanykeytocontinue•c\M<ro»oftVisualStudk>\MyPrpjesl=ababcabeds2=abcd・最长单词是ababcabcdanykeytocontinue•c\M<ro»oftVisualStudk>\MyPrpje请输入si=abcdghi礴[入s2=gh找封了,最区单词是ghPressanykeytocontinue隔・寢入si=abcdef请输入s2=enn找至了.最长星词是 ePressanykeytocontinue人入了程序无法避免单词的重复,改了很多种方法,最终还是未能运行出来(3)编写ー个主函数,测试上述两个函数的正确性。(4)输入一个字符串,内有数字和非数字字符,例如:A123cdf456.78cpc876.9er849.1将其中连续的数字作为ー个实数,依次存放到ー数组a中。例如123存放在a[0],456.78存放在a[2],依次类推,统计共有多少个数,并输出这些数。#include"sldio.h"voidtrans(char*p);voidmain()(chara[20];printf("请输入ー串字符和非字符串ゴ);gets(a);trans(a);}voidtrans(char*p){floata[80];intnum=0,power,i;floatvalue=O;while(ヤ!=・〇')(for(;!(*p>=,0,&&*p<=f9');p++);value=0;for(value=0;*p>='0,&&*p<='9f;p++)value=value*10+*p-,0*;if(*p==7)P++;for(power=1;*p>='0'&&*p<=*9';p++)(value=value*l0+*p-,0*;power二power*10;)value=value/power;a[num++J=value;}for(i=0;i<num;i++)printf("%.2f",a[i]);printf("\n");"c:\MicrosoftVisualStudio\MyProjects\test3\Debug\test3请输入一串字符和非字符串"123cde456.7cf89123.00456.7089.00Pressanykeytocontinue实验ハ结构体实验(验证性综合性实验2学时)1、目的要求:(1)掌握结构体的定义、数据输入方法。(2)掌握结构体成员变量的两种访问方法。(3)掌握编写程序完成单链表的建立和查询方法。(4)编写实验报告。2、实验内容(参考实验指导书):(1)编写ー个建立单链表的函数,设链表的表元素信息包含学号、姓名、ー门课的成绩;写ー个按照学号查学生成绩的函数;最后写ー个主函数,它先调用建立函数,再调用查询函数,显示查到学生的姓名和成绩。#include,'stdio.hn#includeHstdlib.h"#include,'string.h,,structstudent*creat」ist();voidquery_list(structstudent*head,charunumber[]);voidprint_list(structstudent*head);structstudent(charnumber[10];charname[20];chargrade[10];structstudent*next;};voidmain()structstudent*head;charunumber[10];head=creat_list();print_list(head);printf(ninputstudent'snumberforquery:");scanf("%s",unumber);query_list(head,unumber);return;)structstudent*creat_list(){structstudent*q,*p,*head;charunumber[10];head=q=NULL;while(l){printf("pleaseinputstudent'snumber:");scanf("%s",unumber);if(strcmp(unumber,"#")==O)break;p=(structstudent*)malloc(sizeof(structstudent));printf("pleaseinputstudent'sname:");scanf("%s",p->name);printf("pleaseinputstudent'sgrade:");scanf("%s",p->grade);strcpy(p->number,unumber);if(q==NULL)head=q=p;else{q->next=p;q二P;}}q->next=NULL;returnhead;)voidprint_list(structstudent*head)(structstudent*p;for(p=head;p!=NULL;p=p->next)printf("%s,%s,%s\n",p->number,p->name,p->grade);voidquery_list(structstudent*head,charunumber[J)structstudent*p;for(p=head;p!=NULL;p=p->next)if(strcmp(p->number,unumber)==O)break;if(p!=NULL)printf(Mstudent*snumber:%s,name:%s,grade:%s\n",unumber,p->name,p->grade);elseprintf("nothisstudent\nn);return;'c:\MicrosoftVisualStudio\MyProjects\test4\Debug\te:pleaseinputstudent'snumber:001pleaseinputstudent'sname:yanguixiupleaseinputstudent'sgrade:100pleaseinputstudent'snumber:002pleaseinputstudent'sname:zhanglianpleaseinputstudent'sgrade:99pleaseinputstudent'snumber:003pleaseinputstudent'sname:yansisipleaseinputstudent'sgrade:98pleaseinputstudent'snumber:#001,yanguixiuf100002,zhanglian,99003,yansisi,98inputstudent1snumberforquery:003student'snumber:003,name:yansisi,grade:98Pressanykeytocontinue(2)编ー程序,能把从终端输入的ー个字符串中的小写字母全部转换成大写字母,要求输入的字符的同时指定该字符在字符串中的序号(即字符在字符串中的顺序号,例如第1个字符的序号为1),字符和序号存入结构体中,字符串存入结构体数组中,然后显示结构体数组的结果(用字符!表示输入字符串的结束)。#include<stdio.h>#include<string.h>structstr{intnum;charch;};typedefstructstrstr;main()str s[100];int i;charch;int num=0;printf(“请输入ー串小写字符串,以!结束\n)scanf(n%c",&ch);while(ch!='!')(if(ch<='z'&&ch>='a')ch=ch-32;s[num].ch=ch;s[num].num=num+l;num++;scanf("%c,,,&ch);}printf("转换后的字符为\n");for(i=0;i<=num-1;i++)(printf("%5c%d\n",s[i].ch,s[i].num);}"c:\MicrosoftVisualStudio\MyProjects\1111\Debug\1请输入ー串小写字符串,以,结束abcdefgh!转换后的字符为A1B2C3D4E5F6G7H8Pressanykeytocontinue(3)在本实验的实验内容1的基础上,实现在链表元素index之前插入元素的操作Insert(structnode*head,intindex)和删除指定位置元素的操作Delete(structnode*head,intindex),并编写主函数测试。#includestdio.h"#include*stdlib.h"#include*string.h"structstudent*creat_list();voidprint_list(structstudent*head,charunumber[]);voidquery_list(structstudent*head,charunumber[]);structstudent*insert_list(structstudent*head,charunumber[],charuname[],charugrade[]);structstudent*delete_list(structstudent*head,charunumber[]);structstudenticharnumber[10];charname[20];chargrade[10];structstudent*next;);voidmain()(structstudent*head;charunumber[10];charuname[20];charugrade[10];head=creat_list();printflnumbernamegrade\n*);print_list(head,unumber);printf("inputstudent*snumberfordelete:\n");scanf("%s",unumber);head=delete_list(head,unumber);printf("inputstudent*snumberforquery:");scanf("%s",unumber);printf("numbernamegrade\n");query_list(head,unumber);printf("inputstudent,sunumber,unameandugradeforinsertAn"*);scanf("%s%s%s",unumber,uname,ugrade);head=insert_list(head,unumber,uname,ugrade);printf("numbernamegrade\n");print_list(head,unumber);structstudent*creat_list0structstudent*q,*p,*head;charunumber[10];head二q二NULL;whiled)printf(^pleaseinputstudent*snumber:*);scanfunumber);if(strcmp(unumber,"#")=0)break;p=(structstudent*)malloc(sizeof(structstudent));printf("pleaseinputstudent*sname:*);scanf("%s”,p->name);printf("pleaseinputstudent,sgrade:");scanf(*%s",p->grade);strcpy(p->number,unumber);if(qニニNULL)head二q二p;else!q->next=p;q二P;})q->next二NULL;returnhead;voidprint_list(structstudent*head,charunumber[])structstudent*p;for(p=head;p!=NULL;p=p->next)(printf(*%s%s %s\n”,pー〉number,pー)name,pー)grade);voidquery_list(structstudent*head,charunumber[])(structstudent*p;for(p=head;p!=NULL;p=p->next)if(strcmp(p->number,unumber)=0)break;if(p!=NULL)printf("student'snumber:%s,name:%s,grade:%s\n",unumber,p->name,p->grade);elseprintf("nothisstudent\n");return;}structstudent*insert_list(structstudent*head,charunumber[],charuname[],charugrade口)structstudent*q,*p;for(q=head;q!=NULL;q=q->next)if(strcmp(q-〉number,unumber)==0)break;if(q==NULL)(p=(structstudent*)malloc(sizeof(structstudent));strcpy(p->name,uname);strcpy(p->number,unumber);strcpy(p->grade,ugrade);p->next=head;head=p;)returnhead;jstructstudent*delete_list(structstudent*head,charunumber[])Istructstudent*q,*p;for(p=head,q=NULL;p!=NULL;q=p,p=p一〉next)if(strcmp(p->number,unumber)=0)break;if(p!=NULL)if(q==NULL)head=p->next;elseq->next=p->next;free(p);}returnhead;"c:\MicrosoftVisualStudio\MyProjects\1111\Debug\111pleaseinputstudentsnumber:1pleaseinputstudent1sname:yanguixiupleaseinputstudent1sgrade:98pleaseinputstudent1snumber:2pleaseinputstudent'sname:zhanglianpleaseinputstudent'sgrade:100pleaseinputstudent'snumber:Unumbernamegrade1yanguixiu9£i2zhanglian100inputstudent1'snumberfordelete:iinputstudent'snumberforquery:1numbernamegradenothisstudentinputstudent'sunumber,unameandugradeforinsert:3yangsisi99numbernamegrade3yangsisi992zhanglian100Pressanykeytocontinue微软拼音简捷半:

实验九文件操作实验(验证性综合性实验1学时)1、目的要求:(1)掌握文件的打开和关闭。(2)精通文件的读写操作。(3)了解文件的定位操作及文件的检测函数。(4)掌握文件的应用。(5)编写实验报告。2、实验内容(参考实验指导书):(1)编写一个程序,读取磁盘上的一个C语言程序文件,要求加上注释后再存放到磁盘上,文件可以另外命名。#include<stdio.h>#include<stdlib.h>voidmain()(inti=0;chara[8O]={,,dsafF,1;FILE*p;if((p=fopen("old.txt,,;,rn))==NULL)fscanf(p,M%sM,a);fclose(p);if((p=fopen(',new.txt,';,wH))==NULL){printf(Mcan'topenthefile*1);exit(l);)fputs(7*\p);fprintf(p,a);fputs(”ザ,p);fclose(p);)"c:\MicrosoftVisualStudio\MyProjeccan't

温馨提示

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

评论

0/150

提交评论