C语言程序设计实验报告(一)

合集下载

《C语言程序设计》实验报告(实验1-12)

《C语言程序设计》实验报告(实验1-12)

《C语⾔程序设计》实验报告(实验1-12)《C语⾔程序设计》实验报告2013~2014学年第⼆学期班级姓名学号指导教师实验⼀实验项⽬名称:C程序的运⾏环境和运⾏C程序的⽅法所使⽤的⼯具软件及环境:Visual C++ 6.0⼀、实验⽬的:1.了解在Visual C++ 6.0环境下如何编辑、编译、连接和运⾏⼀个C程序;2.通过运⾏简单的C程序,初步了解C源程序的特点。

⼆、预习内容:教材《C语⾔程序设计教程》第1章。

三、实验内容:1. 在Visual C++ 6.0环境下输⼊并运⾏下⾯的程序:#includeint main( ){printf("This is a C program.\n");return 0;}2. 在Visual C++ 6.0环境下输⼊下⾯的程序(有语法错误),编译、连接、调试该程序,直⾄程序⽆语法错误,然后运⾏程序,并观察分析运⾏结果。

#includeint main( ){int a,b,suma=3;b=4;sun=a+b;print(“%d+%d=%d\n”,a,b,sum);return 0;}四、实验结果:1. 运⾏结果(或截图):This is a C program.Press any key to continue2. (1) 改正后的源程序:#includeint main( ){int a,b,sum;a=3;b=4;sum=a+b;printf("%d+%d=%d\n",a,b,sum);return 0;}(2) 运⾏结果(或截图):3+4=7五、思考题:1. ⼀个C程序上机的步骤有哪些?答:上级输⼊与编辑源程序—对原程序进⾏编译–与库函数链接–运⾏可执⾏的⽬标程序。

2. 组成C程序的基本单位是函数,⼀个函数包括哪⼏个部分?答:⼀个函数包括两部分:分别为函数头或函数⾸部和函数体。

成绩指导教师签名实验⼆实验项⽬名称:数据类型、运算符和表达式所使⽤的⼯具软件及环境:Visual C++ 6.0⼀、实验⽬的:1.掌握整型、实型与字符型这三种基本类型的概念;2.掌握常量及变量的使⽤⽅法;3. 掌握基本算术运算符及其表达式的使⽤⽅法;4. 掌握++、--运算符、赋值运算符及其表达式的使⽤⽅法。

C语言程序设计实验报告 实验一 简单程序设计

C语言程序设计实验报告 实验一 简单程序设计

C语言程序设计实验报告实验一简单程序设计班级 2017231 学号 201723128 姓名郭鹏博一、实验目的1、熟悉VC6.0编程环境。

2、掌握使用VC6.0输入源程序、编译连接和运行程序的基本过程。

3、练习C调试程序的方法。

4、熟练使用赋值运算、算术运算等表达式。

5、熟练使用标准输入、输出函数及各种数据类型的格式说明符。

二、实验内容及步骤1、分析程序,根据要求写出结论:课本P83页第4题、第5题;第4题(1)c1=a,c2=bc1=97,c2=98原因:字符变量实质上是一个字节的整形变量,由于它常用来存储字符,所以称为字符变量。

可以把0到127之间的整数赋给一个字符变量。

在输出字符变量的值时,可以选择以十进制整数形式或字符形式输出。

(2)c1=?c2=?c1=-59,c2=-58原因:Visual C++系是把char默认为signed char类型的,而signed char类型的变量允许存储的值为—128~127,但字符的代码不可能为负值,所以在存储字符时实际上只用到0~127这一部分,其第1位都是0。

给字符型变量赋值197和198时,所赋之值超出了字符变量的取值范围,导致无论是以以十进制整数形式输出还是以字符形式输出,输出结果均错误。

(3)c1=a,c2=bc1=97,c2=98原因同(1)第5题2、程序改错下面程序的功能是计算球体的表面积和球体的体积,程序中有多处错误,并且指定必须按下面的形式输入、输出数据。

请对程序做相应的修改。

#include <stdio.h>main{double r,s,v;int pi=3.14;scanf("%d",r);S=4*pi*r*r; /*计算球体的表面积*/V=4.0*pi*r*r*r/3.0; /*计算球体的体积*/printf("%d",r);printf("s=%f\n",s,"v=%d\n",v);}当程序运行时,要求屏幕的显示和指定的输入形式如下:input r:2.0<回车> (此处的2.0是由用户输入的数据)r=2.000000 (此处要求的是输出形式)s=50.24000000,v=33.49333333具体要求:(1)在VC6.0环境中输入上述源程序。

C语言程序设计

C语言程序设计

C语言程序设计上机实验报告实验一一、实验名称: C程序的运行环境和运行C程序的方法二、实验目的:了解在C编译系统上如何编辑、编译、连接和运行一个C程序三、实验内容:(1). 输入并运行一个简单的C程序。

(2). 设计程序,对给定的两个数求和。

(3). 设计程序,对给定的两个数进行比较,然后输出其中较大的数。

四、源程序代码:代码1:#include<stdio.h>int main(){printf("hello world!\n");return 0;}运行结果1:程序分析1:代码2:#include<stdio.h> int main(){int a=5,b=6,c;c=a+b;printf("c=%d\n",c);return 0;}运行结果2:程序分析2:代码3:#include<stdio.h>int main(){int a=5,b=6,c;if(a>b){c=a;}else{c=b;}printf("%d\n",c);return 0;}运行结果3:程序分析3:五.实验总结C语言程序设计上机实验报告实验二一、实验名称:顺序结构程序设计二、实验目的:正确使用常用运算符(算术运算符、赋值运算符)的用法,熟练掌握算术运算符及其表达式,逻辑运算符和逻辑表达式。

三、实验内容:(1). 编写程序,实现小写字母转大写。

(2). 编写程序,实现输入两个不同类型数据后,经过适当的运算(加、减、乘、除)后输出。

(3). 编写程序,计算三角形面积、立方体的体积和表面积、圆的面积和周长。

(4). 编写程序,实现单字符getchar和putchar输入输出。

(5). 编写程序,实现十进制、八进制、十六进制不同数制的输出。

四、源程序代码代码1:#include<stdio.h>int main(){char c1,c2;c1=getchar();printf("%c,%d\n",c1,c1);c2=c1-32;printf("%c,%d\n",c2,c2);return 0;}运行结果1:程序分析1:代码2:#include<stdio.h>int main(){int a=5,c1,c2;double b=3.141592653,c3,c4;c1=a/b;c3=a/b;c2=a+b;c4=a+b;printf("%d,%d,%lf,%lf\n",c1,c2,c3,c4);return 0;}运行结果2:程序分析2:代码3:#include<stdio.h>int main(){here: printf("计算三角形的面积请输入‘1’,立方体的体积和表面积请输入‘2’,圆的面积和周长请输入‘3’.\n");int a;scanf("%d",&a);if(a==1){double l,h,s;printf("请输入三角形的底边长和所在底边的高.");scanf("%lf%lf",&l,&h);s=l*h/2;printf("三角形的面积为%.16f\n",s);}else if(a==2){printf("请输入立方体的长宽高.");double b,c,d,v,s;scanf("%lf%lf%lf",&b,&c,&d);v=b*c*d;s=b*c+b*d+c*d;printf("立方体的体积为%.16f,表面积为%.16f\n",v,s);}else{double r,s,c,m;printf("请输入圆的半径");scanf("%lf",&r);m=3.141592653;s=m*r*r;c=2*m*r;printf("圆的面积为%.16f,圆的周长为%.16f\n",s,c);}goto here;}运行结果3:程序分析3:代码4:#include<stdio.h> int main(){getchar();putchar('b');return 0;}运行结果4:程序分析4:代码5:#include<stdio.h>int main(){int a;printf("请输入任意十进制整数:");scanf("%d",&a);printf("转换为八进制数为:%o\n转化为十六进制数为:%x\n",a,a); return 0;}运行结果5:程序分析5:五、实验总结C语言程序设计上机实验报告实验三一、实验名称:选择结构程序设计二、实验目的:正确使用逻辑运算符和逻辑表达式,熟练掌握if 语句和switch 语句,学习调试程序。

C语言程序设计实验报告1

C语言程序设计实验报告1

C语言程序设计实验报告实验序号:1【实验目的】(1) 熟悉 Microsoft Visual C++ 6.0 或 Code::Blocks 集成开发环境;(2) 掌握不同类型的变量的定义及赋值;(3) 能实现简单的程序结果的屏幕输出;(4) 初步了解 C 程序的基本结构。

【实验内容】打开 Microsoft Visual C++ 6.0 或 Code::Blocks 集成开发环境,熟悉环境界面和有关菜单的使用方法。

完成以下内容: 1. 屏幕输出在 Microsoft Visual C++ 6.0 或Code::Blocks 中编辑、编译、链接和运行程序。

#include <stdio.h>int main() {printf("Hello,World!\n");printf("Hello,China!\n");printf("Hello,Welcome to China!\n");return 0; }操作提示:一个编程任务完成后关闭工作区空间(切记!!!)2. 变量定义及赋值书例 2.1b,体会变量的使用及屏幕输出。

3.不同类型的变量所占内存空间书例 2.2,了解不同类型变量的表数范围,正确进行变量定义4. 程序设计(1)计算半圆弧的周长及半圆的面积。

题目内容:编程并输出半径 r=5.3 的半圆弧的周长及该半圆弧与直经围成的半圆的面积,的取值为 3.14159。

要求半径 r 和必须利用宏常量表示。

输出格式:半圆的面积输出格式: "Area=%f\n"半圆弧的周长输出格式: "circumference=%f\n"输出样例: Area=44.123632 circumference=16.650427(2)计算长方体体积题目内容:编程并输出长 1.2、宽 4.3、高 6.4 的长方体的体积。

c语言程序设计_实验一实验报告

c语言程序设计_实验一实验报告

实验项目名称:实验一C 语言的运行环境的使用实验目的及要求:1. 了解 Windows 系统下 C 语言的运行环境,熟悉 C 程序编辑、调试、运行的基本操作方法。

2. 熟练掌握编辑、编译、连接和运行 C 程序的方法。

3. 通过运行简单的 C 程序,初步了解 C 源程序的特点。

4. 初步理解 C 语言的数据类型,了解变量定义、变量赋值以及简单运算方法,了解程序运行结果的基本输出方法。

实验内容(方法和步骤):1、编程实现在屏幕上显示如下三行文字Hello, world !Wolcome to the C language world!Everyone has been waiting for程序代码:#include <stdio.h>int main(){printf("Hello,World!\n");printf("Welcome to the C language world!\n");printf(Everyone has been waiting for.\n");return 0;}运行结果:2、编写程序,将两个整数相加,并输出结果。

程序代码:#include <stdio.h>int main(){int a,b,c;a=12;b=26;c=a+b;printf("c=%d\n",c);return 0";}运行结果:3. 编写程序,要求从键盘输入2 个整数,输出其中较大的数程序代码:#include <stdio.h>int main(){int max(int x,int y);int a,b,c;scanf("%d,%d",&a,&b);c=max(a,b);pintf("max=%d",c);return 0;}int max(int x,int y){ int z;if (x>y) z=x;else z=y;return(z);}运行结果:4.输入并运行下程序,观察运行结果。

《C语言程序设计》实验报告

《C语言程序设计》实验报告

《C语言程序设计》实验报告学院:专业:学号:姓名:成绩:课程代码: 2001301指导教师:实验中心:电气信息专业试验中心日期:目录实验总体要求实验一………………………………………………C语言的运行环境和运行过程实验二………………………………………………数据类型、运算符与表达式实验三………………………………………………程序结构(顺序、选择和循环) 实验四………………………………………………数组实验五………………………………………………函数实验六………………………………………………指针实验七………………………………………………结构体实验八………………………………………………类和对象实验总体要求C语言程序设计课程是一门实践性很强的课程,为了培养学生的计算机应用能力,除了课堂理论教学外,必须加强程序设计课程实验的教学环节。

1、课程实验教学目的通过C语言程序设计的课程实验教学,学生应具有使用计算机解决相关问题的能力,同时为学生今后学习其他计算机应用课程打下良好的程序设计基础。

⑴分析问题和解决问题能力的训练课程实验教学将课本上的理论知识和实际应用有机地结合起来,达到训练学生分析问题解决实际问题的能力,提高学生应用计算机知识开发应用系统的综合能力。

⑵逻辑思维能力的训练通过课程实验教学,使学生正确地掌握C语言的基本知识,较好掌握基本的程序算法,以及描述方法。

培养学生在程序设计解题思路、算法的描述、编程构思等方面的计算机逻辑思维能力。

⑶程序设计技能的训练通过C语言环境下的应用实例,训练学生编写程序的能力,掌握编程的思路和方法,掌握结构化程序设计的基本概念和基本技能。

通过课程实验教学,使学生掌握C程序设计语言的语法规则,数据结构的应用,掌握算法描述及相应代码描述,掌握结构化程序设计的基本方法,能熟练编写一般的应用程序。

2、课程实验教学要求⑴要求通过解题、程序设计和上机实践,加深对所学概念的理解,提倡理论与实践相结合的学习方法。

周信东主编版C语言程序设计基础实验一实验报告

周信东主编版C语言程序设计基础实验一实验报告

周信东主编版C语言程序设计基础实验一实验报告实验报告:C语言程序设计基础实验一一、实验目的本实验的主要目的是让学生熟悉C语言的基本语法和数据类型,培养运用C语言进行编程的能力。

通过实验,学生将深入理解C语言的程序结构、变量的定义和赋值、数据类型的转换、运算符的使用等基本知识点,并能够独立编写简单的C程序。

二、实验内容本实验主要包括以下三个部分:1.简单的输入与输出程序:要求用户输入姓名和年龄,然后输出用户的个人信息。

2.简单的数值运算程序:用户输入两个整数,程序计算并输出这两个整数的和。

3.三个整数排序程序:用户输入三个整数,程序对这三个整数进行排序,并输出结果。

三、实验过程与结果1.简单的输入与输出程序:实验过程:首先,我们使用`scanf(`函数从用户输入中获取姓名和年龄,然后使用`printf(`函数输出用户的个人信息。

实验结果:例如,用户输入姓名为“张三”,年龄为18,则程序输出“姓名:张三,年龄:18”。

2.简单的数值运算程序:实验过程:首先,我们使用`scanf(`函数从用户输入中获取两个整数,然后使用`+`运算符将这两个整数相加,并将结果保存在一个变量中。

最后,使用`printf(`函数输出这两个整数的和。

实验结果:例如,用户输入整数1和整数2分别为3和5,则程序输出“整数1+整数2的和:8”。

3.三个整数排序程序:实验过程:首先,我们使用`scanf(`函数从用户输入中获取三个整数,然后使用条件语句和循环语句对这三个整数进行排序。

最后,使用`printf(`函数输出排序后的结果。

实验结果:例如,用户输入的三个整数为2、1和3,则程序输出“排序后的结果为:1、2、3”。

四、实验总结通过本实验,我进一步熟悉了C语言的基本语法和数据类型,并通过实际编写程序来加深对这些知识的理解。

在实验过程中,我遇到了一些问题,例如如何正确使用`scanf(`函数从用户输入中获取数据,如何使用条件语句和循环语句对数据进行处理等。

程序设计基础(C语言)实验报告

程序设计基础(C语言)实验报告

程序设计基础(C语言)实验报告课程名称:程序设计基础(C语言)姓名:学号:年级:专业:指导教师:实验地点:目录实验一顺序结构程序设计实验二选择结构程序设计实验三循环结构程序设计实验四数组及其应用实验五函数及其应用实验六指针及其应用实验(一)顺序结构程序设计一、实验目的1.掌握顺序结构程序的设计思想,领会顺序结构的程序执行时顺次执行的特点。

2.掌握赋值语句的特点、功能。

3.掌握各种类型数据的输入输出的方法,能正确使用各种格式转换符。

4.掌握编写程序和调试程序的方法。

二、实验内容及要求1.用下面的scanf函数输入数据使a=3,b=7,x=8.5,y=71.82,c1=’A’,c2=’a’。

#include <stdio.h>int main(){int a,b;float x,y;char c1,c2;scanf("a=%db=%d",&a,&b);scanf("%f%e",&x,&y);scanf("%c%c",&c1,&c2);printf("a=%d,b=%d,x=%.1f,y=%.2f,c1=%c,c2=%c\n",a,b,x,y,c1,c2);return 0;}运行时分别按以下方式输入数据,观察输出结果,分析原因(□表示空格,↙表示回车)。

(1)a=3,b=7,x=8.5,y=71.82,A,a↙(2)a=3□b=7□x=8.5□y=71.82□A□a↙(3)a=3□b=7□8.5□71.82□A□a↙(4)a=3□b=7□8.5□71.82Aa↙(5)3□7□8.5□71.82Aa↙(6)a=3□b=7↙8.5□71.82↙A↙a↙(7)a=3□b=7↙8.5□71.82↙Aa↙(8)a=3□b=7↙8.5□71.82Aa↙通过此题,总结输入数据的规律和容易出错的地方。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C语言程序设计实验报告专业:班级:日期:成绩:实验组别:第次实验:指导教师:学生姓名:学号:同组人姓名:实验名称:指针实验一、实验目的(1)熟练掌握指针的说明、赋值、使用。

(2)掌握用指针引用数组的元素,熟悉指向数组的指针的使用。

(3)熟练掌握字符数组与字符串的使用,掌握指针数组及字符指针数组的用法。

(4)掌握带有参数的main函数的用法。

二、实验内容及要求1.源程序改错下面的源程序中是否存在错误?如果存在,原因是什么?如果存在错误要求在计算机上对这个源程序进行调试修改,是之能够正确执行。

源程序:#include <stdio.h>int main(void){float * p;scanf("%f",p);printf("%f\n",*p);return 0;}2.源程序修改替换(1)下面源程序的功能是,通过函数指针和菜单选择来调用字符串拷贝函数或字符串连接函数。

请在程序中的下划线处填写合适的表达式、语句或代码片段来完善该程序。

源程序:#include <stdio.h>#include <string.h>int main(void){____________________________char a[80],b[80],c[160],*result=c;int choice,i;do{printf("\t\t1 copy string.\n");printf("\t\t2 connect string.\n");printf("\t\t3 exit.\n");printf("\t\tinput a number(1-3)please! \n");scanf("%d",&choice);}while(choice<1||choice>5);switch (choice){case 1:p=strcpy;break;case 2:p=strcat;break;case 3:goto down;}getchar();printf("input the first string please! \n");i=0;_______________________printf("input the second string please!\n");i=0;_______________________result=____(a,b);printf("the result is %s\n",result);down:;return 0;}(2)请上机运行第(1)题程序使之能按下面要求输出结果(注:(输入)表示该行数据是键盘数据):1.copy string。

2.Connect string。

3.Exit。

Input a number(1-3)please!2(输入)Input the first string please!The more you learn,(输入)Input the second string please!The more you get.(输入)The result is the more you learn,the more you get.3.跟踪调试程序请按下面的要求对所给源程序进行操作,并回答问题和排除错误。

(1)单步执行源程序。

进入strcpy时,watches窗口中s为何值?返回main时,watches窗口中s为何值?(2)排除源程序中的错误,使程序输出结果为:there is a boat on the lake.源程序:#include <stdio.h>char * strcpy(char*,char*);int main(void){char a[20],b[60]="there is a boat on the lack.";printf("%s\n",strcpy(a,b));return 0;}char *strcpy(char*s,char*t){while(*s++=*t++);return (s);}4.程序设计编写并上机调试运行能实现以下功能的程序或函数:(1)已知一个长整形变量占四个字符,其中每个字节又分高四位和低四位。

试编写一个程序,从该长整形变量的高字节开始,依次取出每个字节的高四位和低四位并以数字字符的形式进行显示。

(2)利用大小为n的指针数组指向用gets函数输入的n行,每行不超过80个字符。

试编写一个函数,它将每一行中连续的多个空格字符压缩为一个空格字符。

在调用函数中输出压缩空格后的各行,空行不予输出。

(3)编写一个程序,输入n个整数,排序后输出。

排序的原则由命令行可选参数-d决定,并且有参数-d时按递减顺序,否则按递增顺序排序。

要求将排序算法定义成函数,利用指向函数的指针是该函数实现递增或递减排序。

(4)设每个班有n个学生,每个学生所修的M门课程的成绩,并且都存放到相应的数组中,试编写以下函数:①计算每个学生各门课程平均成绩②计算全班每门课程的平均成绩③分别统计低于全班各门课程平均成绩的人数④分别统计全班各门课程不及格的人数和90分以上(包含90)的人数。

在调用函数中输出结果(要求都用指针操作,不得用下标)5.选做题(1)编写并上机调试运行能实现以下功能的程序:设有N位整数和M位小数(N=20,M=10)的两个数据a,b。

编程计算a+b并输出结果。

如:12345678912345678912.1234567891+98765432109876543210.0123456789(2)编写一个使用复杂声明的“char *(*p[2])(const char*,const char *);”的程序。

提示:p中元素可为strcmp,strstr等函数名。

三、实验步骤及结果1.源程序改错错误:悬挂指针,指针未初始化改后程序:#include<stdio.h>int main(void){float *p,a;p=&a;scanf("%f",p);printf("%f\n",*p);return 0;}2.源程序完善、修改、替换#include<stdio.h>#include<string.h>int main(void){char *(*p)(char *a,char *b);char a[80],b[80],c[160],*result=c;int choice,i;do{printf("\t\t1 copy string.\n");printf("\t\t2 connect string.\n");printf("\t\t3 exit.\n");printf("\t\tinput a number(1-3)please!\n");scanf("%d",&choice);}while(choice<1||choice>5);switch(choice){case 1:p=strcpy;break;case 2:p=strcat;break;case 3:goto down;}getchar();printf("input the first string please!\n");i=0;while((a[i]=getchar())!='\n')i++;a[i]='\0';printf("input the second string please!\n");i=0;while((b[i]=getchar())!='\n')i++;b[i]='\0';result=(*p)(a,b);printf("the result is %s\n",result);down:;return 0;}3.跟踪调试程序#include <stdio.h>char * strcpy(char*,char*); int main(void){char a[20],b[60]="there is a boat on the lack.";printf("%s\n",strcpy(a,b));return 0;}char *strcpy(char*s,char*t){char *m;m=s;while(*s++=*t++);return (m);}4.程序设计(1)#include<stdio.h>#include<math.h>#define MAX 32int main(){long int n;int i;char s[MAX];printf("please input a number:\n");scanf("%ld",&n);if(n>=-2147483647&&n<=2147483647) ;else{printf("wrong:the number is too large");return -1;}if(n>=0){for(i=0;n!=0;i++){s[i]=n%2+'0';n/=2;}for(;i<=MAX-1;i++)s[i]='0';}else{n=-(n+1);for(i=0;n!=0;i++){s[i]=n%2+'0';n/=2;}for(;i<=MAX-2;i++)s[i]='0';for(i=0;i<MAX-1;i++)if(s[i]=='1')s[i]='0';else if(s[i]=='0')s[i]='1';s[i]='1';}for(i=31;i>=28;i--)putchar(s[i]);putchar('\t');for(i=27;i>=24;i--)putchar(s[i]);putchar('\t');for(i=23;i>=20;i--)putchar(s[i]);putchar('\t');for(i=19;i>=16;i--)putchar(s[i]);putchar('\t');for(i=15;i>=12;i--)putchar(s[i]);putchar('\t');for(i=11;i>=8;i--)putchar(s[i]);putchar('\t');for(i=7;i>=4;i--)putchar(s[i]);putchar('\t');for(i=3;i>=0;i--)putchar(s[i]);putchar('\t');return 0;}(2)#include<stdio.h>#include<stdlib.h>#include<ctype.h>#define N 3void output(char*s);int main(void){int i;char *s[N];printf("please input your massage:\n");for(i=0;i<N;i++){s[i]=malloc(80);gets(s[i]);}printf("your massage has been changed into;\n");for(i=0;i<N;i++){output(s[i]);printf("%s\n",s[i]);}return 0;}void output(char*s){int i,j;for(i=0,j=0;s[i]!='\0';i++,j++){if(isspace(s[i])){for(;isspace(s[i]);i++);s[j++]=' ';s[j]=s[i];}elses[j]=s[i];}s[j]=s[i];}(3)#include<stdio.h>#define MAX 5void swap(int v[],int i,int j);void qsort(int v[],int left,int right);int main(int argc,char *argv[]){int i=0,s[MAX];if(--argc>0&&(*++argv)[0]=='-'){if((*argv)[1]=='d'){while(i<MAX)scanf("%d",&s[i++]);qsort(s,0,MAX-1);for(i=MAX-1;i>=0;i--)printf("%d\t",s[i]);}elseprintf("wrong:\n");}else{while(i<MAX)scanf("%d",&s[i++]);qsort(s,0,MAX-1);for(i=0;i<MAX;i++)printf("%d\t",s[i]);}return 0;}void qsort(int v[],int left,int right) {int i,last;void swap(int v[],int i,int j);if(left>right)return;swap(v,left,(left+right)/2);last=left;for(i=left+1;i<=right;i++)if(v[i]<v[left])swap(v,++last,i);swap(v,left,last);qsort(v,left,last-1);qsort(v,last+1,right);}void swap(int v[],int i,int j){int temp;temp=v[i];v[i]=v[j];v[j]=temp;}(4)#include <stdio.h>#define N 5#define M 3struct course{char *s;int d[N];} sm[M];void saverage(struct course *sm);void caverage(struct course *sm);void summary_below(struct course *sm);void summary_both(struct course *sm);int main(void){int i;printf("Please input the names of the %d courses.\n",M);for(i=0;i<M;i++)if(gets((sm+i)->s=malloc(10))==NULL)printf("ERROR");for(i=0;i<M;i++){int k;printf("Please input the grades of %d students of the %s subject\n",N,(sm+i)->s);for(k=0;k<N;k++)scanf("%d",(sm+i)->d+k);}saverage(sm);caverage(sm);summary_below(sm);summary_both(sm);return 0;}void saverage(struct course *sm){double sum=0,av;int i,k;for(i=0;i<N;i++){printf("This is the %d student's average grade\t",i+1);for(k=0;k<M;k++){sum+=*((sm+k)->d+i);}av=sum/M;printf("%lf\n",av);sum=0;}}void caverage(struct course *sm){double sum=0,av;int i,k;for(i=0;i<M;i++){printf("This is the average grade of %s\t",(sm+i)->s);for(k=0;k<N;k++){sum+=*((sm+i)->d+k);}av=sum/N;printf("%lf\n",av);sum=0;}}void summary_below(struct course *sm){double sum=0,av;int i,k;for(i=0;i<M;i++){for(k=0;k<N;k++){sum+=*((sm+i)->d+k);}av=sum/N;printf("In %s the number of below-average student is\t",(sm+i)->s);for(sum=0,k=0;k<N;k++)if(*((sm+i)->d+k)<av)sum++;printf("%d\n",(int)sum);sum=0;}}void summary_both(struct course *sm){int i,k;int fsum=0,esum=0;for(i=0;i<M;i++){printf("The course is %s\t",(*(sm+i)).s);for(k=0;k<N;k++){if(*((sm+i)->d+k)<60)fsum++;if(*((sm+i)->d+k)>90)esum++;}printf("the failed is %d,while the above 90 is %d\n",fsum,esum);fsum=0,esum=0;}}5.选做题(1)#include<stdio.h>int main(void){int i,t=0;char a[]="12345678912345678912.1234567891";char b[]="98765432109876543210.0123456789";int s[32];s[0]=0;for(i=0;i<32;i++)s[i]=0;for(i=30;i>=0;i--){if(a[i]=='.')i--;int m,n,k;m=a[i]-'0'+t;n=b[i]-'0';k=m+n;if(k>=10){t=k/10;s[i+1]=k%10;}else{s[i+1]=k%10;t=0;}k=0;}s[0]=t;for(i=0;i<32;i++){if(i==21)printf(".");elseprintf("%d",s[i]);}return 0;}(2)#include<stdio.h>#include<string.h>#include<stdlib.h>int main(void){int n;char *(*p[2])(const char*,const char*);char *a;char *b;char *c;printf("please input string one:\n");a=malloc(20);gets(a);printf("please input string two:\n");b=malloc(20);gets(b);printf("please input a number:\n0 to choose the strcpy\n1 to choose the strcat\n");scanf("%d",&n);p[0]=strcpy;p[1]=strcat;if(n>2||n<0){printf("wrong");return -1;}elsec=(*p[n])(a,b);printf("now the string is:\n%s\n",c);return 0;}四、实验体会知道了指向数组的指针的用法,明白了指向函数的指针的用途。

相关文档
最新文档