中南大学C语言实验答案完整版.doc_第1页
中南大学C语言实验答案完整版.doc_第2页
中南大学C语言实验答案完整版.doc_第3页
中南大学C语言实验答案完整版.doc_第4页
中南大学C语言实验答案完整版.doc_第5页
已阅读5页,还剩17页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

实验一 熟悉Turbo C的编程环境一:目的要求1熟悉Turbo C的编程环境;2知道程序编辑、链接、执行的基本步骤;3学习如何查错并修改程序;4上机前预习编写好程序。二:实验内容与步骤调试以下两个程序/* The first C Program*/#include void main() printf(“Hello,World!n”);#include void main() int a, b, sum; a = 123; b = 456; sum = a + b; printf(“sum is %dn”, sum);调试通过后,自己修改程序,使程序出错,并读懂错误提示,进行修改。实验二 数据输入输出格式的程序设计一目的要求 1进一步熟悉调试程序的方法; 2熟练掌握格式输入与格式输出函数的使用。 3掌握字符与ASC值之间的转换方法。 4上机前预习编写好程序;二实验内容与步骤1按右图设计屏幕输出 2光标停在 Enter Number:之后,等待输入任一字符;3 输入字符1,则显示:Ch=1-49 ASC值 字符 4再接回车键, 则退出运行。三利用字符屏幕控制函数conio.h1clrscr();2gotoxy(x,y)。 行(125) 列(180)四、利用接口库函数dos.h的调用1类型定义结构类型struct date.d;2getdate(&d);3printf(“%d/%d/%d”,d.da_year, d.da_mon, d.da_day)。五、程序提示:#include#include main()char c1;struct date d;clrscr();getdate(&d); . getch(); 暂停等待输入任意字符(或按键) 解答:#include#include#includemain()char c1;struct date d;clrscr();getdate(&d);printf(tt%d/%d/%d,d.da_year, d.da_mon, d.da_day);printf(n* * * * * * * * * * * * *n);printf(* Menu *n);printf(* 1.Input *n);printf(* 2.Output *n);printf(* 3.End *n);printf(* * * * * * * * * * * * *n);printf( Enter Number= n);printf( Ch=- );gotoxy(20,8);c1=getch();gotoxy(20,8);putchar(c1);gotoxy(9,9);putchar(c1);gotoxy(20,9);printf(%d,c1);实验三 选择结构程序设计一:目的要求 1熟悉用关系运行与逻辑运行符的应用; 2掌握if语句与switch语句的使用; 3上机前按实验要求预习编写出完整的程序,才允许上机。二:实验内容与步骤1. 在书店买书 ,以100本为限。如果买 1 本不打折扣 ;买2本打折10%; 买3本折扣为 15 %,买3本以上折扣为 20 %。设书本数为 x,单价为 20.00元。请使用else if多分支结构或if嵌套结构设计实现该算法的C程序。2. 从键盘上输入一个百分制成绩score,按下列原则输出其等级:score90,等级为A;80score90,等级为B;70score80,等级为C;60score70,等级为D;score60,等级为E。请使用switch 语句实现上述功能。(提示:将成绩整除10,把score转变为处于110之间的整数,从而转化成switch语句中的case标号)三:选做实验实验指导书56页第二章选择结构的任意实验解答:一、#include#includemain()int n;float x,y;clrscr();printf(Please Enter The Number:);gotoxy(25,1);scanf(%d,&n);x=20.00;y=0;if (n0)printf(Sorry,you put the wrong number!);else if (n=0)printf(Please buy at least 1 book!);else if (n=1)y=x;printf(-You should pay:%.2f,y*n);else if (n=2)y=x*0.9;printf(-You should pay:%.2f,y*n);else if (n=3)y=x*0.85;printf(-You should pay:%.2f,y*n);else if (n100)printf(Sorry,you can buy less then 100 books.);二、#include#includemain()int t;float n;clrscr();printf(Please Enter The Score:);gotoxy(24,1);scanf(%f,&n);t=n/10;if (n100)printf(Is He A God?);elseswitch(t)case 10:printf(A+);break;case 9:printf(A);break;case 8:printf(B);break;case 7:printf(C);break;case 6:printf(D);break;default:printf(E);break;实验四 循环控制一:目的要求 1熟悉用while语句,do-while 语句和for语句实现循环的方法; 2掌握在程序设计中用循环方法实现各种算法; 3掌握计算程序运行所占机时的计算方法; 4上机前按实验要求预习编写出完整的程序,才允许上机。二:实验内容与步骤目标:100匹马驮100担货;假设:大马一匹驮3担,中马一匹驮2担,小马两匹驮一担;组合方法1:大马、中马、小马每种不能少于一匹;组合方法2:对马匹种类无限制,可以缺少一种或缺二种问题:1. 采用组合方法1,用while求解,输出所有组合法,输出组合的总数? 2采用2种组合,用do-while求解,输出所有组合法,输出组合的总数?3采用2种组合,用三重或二重for循环求解,输出所有组合法,输出组合的总数?4除打印结果和多少种组合法外,还要分别打印三种算法所费机时。提示:计算一种算法所占机时的程序提示:#include #include #include main()clock_t start,end; /* time_t start,end;*/int i,big,middle,small,ncount;clrscr();start=clock(); /* start = time();*/big=1; middle=1; small=2;ncount=0;printf(This a while programn);while (big=33) .end=clock(); /* end = time();*/printf(The num of method1 is: %dn,ncount);printf(and the time is: %5.1f timen,difftime(end,start);/*printf f(“”The difference is :%5.1f secondn”, difftime(end,start)/18.2);*/解答:一、#include #include #include main()clock_t start,end; /* time_t start,end;*/int i,big,middle,small,ncount,n;clrscr();start=clock(); /* start = time();*/big=1; middle=1; small=2,i=0,n=0;ncount=0;printf(This a while programn);while (big=33)for(small=2;small=100;small=small+2)for(middle=1;middle=100;middle+)n=big*3+middle*2+small/2;i=big+middle+small;if (n=100 & i=100)printf(Big=%d,Middle=%d,Small=%d,n=%d,i=%dn,big,middle,small,n,i);ncount+;big+;/*printf(n=%d ,n);printf(big=%d small=%d middle=%d ,big,small,middle);printf(n);*/end=clock();printf(The num of method1 is: %dn,ncount);printf(and the time is: %5.1f timen,difftime(end,start);二、#include #include #include main()clock_t start,end; /* time_t start,end;*/int i,big,middle,small,ncount,n;clrscr();start=clock(); /* start = time();*/big=0; middle=0; small=0,i=0,n=0;ncount=0;printf(This a while programn);dofor(small=0;small=100;small=small+2)for(middle=0;middle=100;middle+)n=big*3+middle*2+small/2;i=big+middle+small;if (n=100 & i=100)printf(Big=%d,Middle=%d,Small=%d,n=%d,i=%dn,big,middle,small,n,i);ncount+;big+;/*printf(n=%d ,n);printf(big=%d small=%d middle=%d ,big,small,middle);printf(n);*/while(big=34);end=clock();printf(The num of method1 is: %dn,ncount);printf(and the time is: %5.1f timen,difftime(end,start);三、#include #include #include main()clock_t start,end; /* time_t start,end;*/int i,big,middle,small,ncount,n;clrscr();start=clock(); /* start = time();*/big=0; middle=0; small=0,i=0,n=0;ncount=0;printf(This a while programn);for(big=0;big=34;big+)for(small=0;small=100;small=small+2)for(middle=0;middle=100;middle+)n=big*3+middle*2+small/2;i=big+middle+small;if (n=100 & i=100)printf(Big=%d,Middle=%d,Small=%d,n=%d,i=%dn,big,middle,small,n,i);ncount+;/*printf(n=%d ,n);printf(big=%d small=%d middle=%d ,big,small,middle);printf(n);*/end=clock();printf(The num of method1 is: %dn,ncount);printf(and the time is: %5.1f timen,difftime(end,start);实验五 函数一、 目的要求1. 掌握函数的定义和调用方法;2. 掌握函数实参与行参的对应关系的,以及“值传递”的方式;3. 掌握求最大公约数和最小公倍数的方法;4. 按实验内容要求完成全程程序设计后才允许上机。二、 实验内容与步骤1. 设计一个函数f,求二个数的最大公约数int f(int x,int y);2. 设计一个函数g,求二个数的最小公倍数int g(int x,int y);3. 从键盘输入三个浮点数,求三个数中最大数和最小数的差值。三、 函数的定义要求在main( )中实现下列操作1. a=inNumber( );2. b= inNumber( );3. c=f(a,b);4. d=g(a,b);5. 输出a,b,c,d。解答:一、#include#includevoid main()int a,b,c,d;clrscr();a=inNumber();b=inNumber();c=f(a,b);d=g(a,b);printf(a=%d,b=%d,c=%d,d=%dn,a,b,c,d);int f(int x,int y)int i,t,a;float p1,p2;if (x=y)t=y;elset=x;for (i=1;i=y)t=x; elset=y;for (i=t;i0)a=1;elseprintf(Wrong!n);a=0;return x;二、#includevoid main()float a3,x,y;int i,j;clrscr();for (i=0;i3;i+)scanf(%f,&ai);for (i=0;i3;i+)for (j=0;jaj+1)x=aj;aj=aj+1;aj+1=x;y=a2-a0;printf(ny=Maxai-Minai:nt%.3fnt(%f),y,y);实验六 数组二、 目的要求1. 掌握数组的定义、赋值和输入输出的方法;2. 掌握清屏函数clrscr()的调用方法;3. 掌握产生随机数函数randomize()的初始化及调用方法;4. 上机前按实验要求预习,完成全部程序设计后才允许上机。三、 实验内容与步骤已知二维数组a55,完成下列要求(1) 输入数据aij=random(100); /*产生100以内随机数*/(2) 显示数组各元素,要求整齐排列;(3) 将第1与第5行对调后,再显示之;(4) 求出每行元素的最大值,并指出其行号和列号。四、 输入随机数的要求#include #define RMAX 5#define cMAX 5#define nMAX 100main() . /*变量初始化说明*/.clrscr(); /*调清屏函数清屏*/randomize(); /*在初始化后调用产生随机数函数*/.aij=random(nMAX);.解答:#include #define RMAX 5#define cMAX 5#define nMAX 100main()int a55,i,j,temp15,t,max,x,y;/*定义变量为整型(我的程序里面有些定义的变量没用,懒得删除了)*/clrscr();/*清屏*/randomize();/*在初始化后调用产生随机数函数*/for (i=0;i5;i+)for(j=0;j5;j+)aij=random(nMAX);/*给数组aij赋随机值*/for (i=0;i5;i+)for(j=0;j5;j+) printf(%dt,aij);/*输出数组aij*/printf(n);/*在输出完一行后自动换行(不理解的话可以暂时删掉这句话,然后运行程序看结果)*/for(j=0;j5;j+)/*这个循环是用于换行的*/temp0j=a0j;/*将数组a的第一行的每个值都赋予temp(这里的temp是一个1*5的数组)*/a0j=a4j;/*将数组a的第一行的每个值替换成第五行的值*/a4j=temp0j;/*将数组a的第五行的每个值替换成temp的值*/printf(n);/*输出一个回车*/for (i=0;i5;i+)for(j=0;j5;j+) printf(%dt,aij);/*将换行后的新数组a输出出来*/printf(n);/*在输出完每一行后自动换行*/for (i=0;i5;i+) max=ai0;/*定义一个最大值变量max,令其暂时等于第i行的第一个数*/for (j=0;jmax) max=aij;for (j=0;j5;j+)/*令max和第i行的每个数进行比较,输出所有等于max的数及该数的坐标*/if(max=aij) printf(na%d%d=%d,i,j,max);实验七 指针一、 目的要求1. 掌握指针的定义和使用指针变量;2. 学会使用字符串的指针和指向数组的指针变量;3. 学会使用指向函数的指针变量;4. 按实验内容要求完成全程程序设计后才允许上机。二、 实验内容与步骤设计一个函数,它有三个形参(1) 被查找的字符串str;(2) 待查找的字符xCh;(3) 在字符串str中xCh出现的位置i0,1,它的返回值是在str中xCh 出现的次数(若str中无xCh,则返回值0)三、 上机要求1、 键入待查的字符xCh;2、 键入被查的字符串str;3、 调用该函数;4、 打印它的返回值和出现的位置;5、 允许重复执行,每次以清屏开始(用循环语句控制重复执行)。四、 提示xCh在str出现位置应设计为一整型指针,以便记下0N个位置(整数)。#includevoid main()char temp;int run(),j;int (*prun)();temp=Y;while(temp!=N|temp!=n)if(temp=Y|temp=y)prun=run;j=(*prun)();if (j=0)printf(Can Not Find The xCh! j=%d,j);elseprintf(nj=%d,j);printf(nPardenY/N:);fflush(stdin);temp=getch();if(temp=N|temp=n)break;if(temp!=Y&temp!=y)printf(Wrong!You can only put Y(N) or y(n)nPlease put again(Y/N):);fflush(stdin);temp=getch();int run (char xCh,char str100,int i)int j;char *p;clrscr();printf(xCh=);xCh=getch();printf(%cnstr=,xCh);gets(str);p=&str0;i=0;j=0;while(*p)if (*p=xCh)j+;printf(xCh :%dt,i);p=p+1;i+;return j;Mian()版:#includevoid main()int i,j;char xCh,str100,*p,temp;temp=Y;/*给temp赋初值Y,防止第一个while循环无法运行*/while(temp!=N|temp!=n)/*如果temp不等于n或N时,进行循环*/if(temp=Y|temp=y)/*当temp为y或Y时,进行下列循环,用于进行题目要求的操作*/clrscr();/*清屏*/printf(xCh=);/*在屏幕输出提示xCh=*/xCh=getch();/*从屏幕读取一个字符赋给xCh(getch()和getchar()的区别:前者只要输入一个字符就结束输入过程,后者需要按回车或空格后才结束输入过程)*/printf(%cnstr=,xCh);/*在屏幕xCh=后面输出刚才输入的xCh的值,并提示用户输入str(因为我们用getch(),输入完字符后会自动结束xCh的输入进入下一指令的执行(在本题中,下一指令是:printf(%cnstr=,xCh);),而不在屏幕输出刚才输入的字符)【不理解的话把该句改成printf(nstr=);看看输出结果就知道了】*/gets(str);/*输入str*/p=&str0;/*将指针地址指向str这个字符串的首字符位置*/i=0;j=0;while(*p)/*当p所指向的字符不为空字符时,进行判断循环*/if (*p=xCh)/*当p所指向的字符为所需寻找的xCh时,进行以下操作*/i+;/*i自加1,用于累计str中xCh的数目*/printf(xCh :%dt,j);/*输出xCh在str中出现的位置*/p=p+1;/*指针地址移向str的下个字符*/j+;/*j用于记录此时p的位置,在str中第一个字符时=0,第二个时=1,以此类推*/if (i=0)/*当str中没有xCh这个字符时,i=0*/printf(Can Not Find The xCh! i=%d,i);/*在屏幕中提示无法找到str中的xCh,并输出i=0*/elseprintf(ni=%d,i);/*n为换行*/printf(nPardenY/N:);fflush(stdin);/*清空计算机缓存*/temp=getch();/*从屏幕中读取一个字符赋给temp*/if(temp=N|temp=n)/*当temp为N或n时*/break;/*跳出循环*/if(temp!=Y&temp!=y)/*当输入的temp不为Y、y、N、n时*/printf(Wrong!You can only put Y(N) or y(n)nPlease put again(Y/N):);fflush(stdin);temp=getch();/*fflush(stdin)*/实验八 结构体与共用体一、 目的要求1、 掌握结构体类型变量与数组的定义和使用;2、 学会使用指针变量和结构体指针数组;3、 按实验内容要求完成全程程序设计后才允许上机。二、 实验内容与步骤1. 设计一个结构struct student long no; /*学号*/char name10;/*姓名*/char sex;/*性别*/int age;/*年龄*/float score;/*平均成绩*/2. 完成下列任务:(1) 输入实际学生人数n (2n4);(2)

温馨提示

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

评论

0/150

提交评论