当前位置:文档之家› C语言实验报告

C语言实验报告

湖南大学程序设计训练报告
HUNAN UNIVERSITY
程序设计训练 报 告
学生姓名 学生学号 专业班级 指导老师 ) 院 长 (系 主 任 2010 年 6 月 23 日
第 1页
湖南大学程序设计训练报告


1 2 3 4 5 6 7 8
实训 1 实训 2 实训 3 实训 4 实训 5 实训 6 实训 7 实训 8
第 14页
湖南大学程序设计训练报告
{ ts=area(x,y,z); printf("area=%f\n",ts); } else
printf("data error!"); } 调试结果:

实训结论 定义函数时其形式一般为
【存储类型符】 【返回值类型符】 函数名(形参表) { 语句体 }
第 15页
实训源程序代码和调试过程
四 程序模板和调试
第 3页
湖南大学程序设计训练报告
第 4页
湖南大学程序设计训练报告
实 训 2 表达式的计算
一 实训目的
(1)掌握 C 语言数据类型,熟练掌握变量定义 (2)使用 scanf()输入变量的值,使用 printf()输出变量的值 (3)掌握运算符与表达式的使用方法及其优先级和结合规律 (4)加强对程序的分析能力。
} printf("Result:\n"); for(i=0;i<N;i++) printf("%d ",*(p+i)); printf("\n"); for(i=0;i<N;i++) printf("%d ",q[i]); printf("\n"); printf("The memory addess of p,a,q are: %x %x %x",p,a,q); free(q);

问题描述
编写程序,从键盘输入 10 个整数, 按升序排序它们并输出。 流程图: (如右)

实训分析
(1)利用循环语句输入或输出 10 个整数, 用数组元素的下标来表示不同的数组元素。 (2)对于数组元素重要的是他的只而不是他的名, 如当 i=j=3 时,a[i]和 a[j]表示同个值。 (3)排序函数时无返回值的, 所以它的类型时 void 型的。 (4)该程序是升序排序,所以 if 语句中的条件是: 若位于前面的数大于后面的数,就交换。

实训源程序代码和调试过程

实训结论
(1)分段函数的程序表示需要用到判断语句。 (2)条件真假的判断用到 else if 语句。
第 8页
湖南大学程序设计训练报告
实训 4
一 实训目的
if 语句的应用
(1)掌握 C 语言逻辑运算与关系运算规则 (2)学会正确使用关系表达式和逻辑表达式 (3)掌握 if/else 语句的使用方法
结束
(5)交换时需要一个中间变量。 (6) 排序要用到双重循环,外循环用于确定数组中某个数组元素,内循环则是
第 16页
湖南大学程序设计训练报告
进行比较。

实训源程序代码和调试过程
#include"stdio.h" void sort1(int s[],int n) { int i,j; int temp; for(i=0;i<n-1;i++) for(j=9;j>=i+1;j--) if(s[j]<s[j-1]) { temp=s[j]; s[j]=s[j-1]; s[j-1]=temp; } } void main() { int i,a[10]; printf("请输入 10 个整数:\n"); for(i=0;i<10;i++)

问题描述
2 计算并输出表达式(b+ b 2a )/(a-b)的值。其中 a 和 b 的值从键盘输入。
具体要求:
(1) a,b 以键盘输入且输入前有提示信息。 (2) 输入结果的小数点后去 2。 (3) 变量 a,b 定义为单精度类型。

实训分析
(1)输入 a,b。 (2)C 语言表达式为: (b+sqrt(b*b+2*a))/(a-b)。 (3)将计算值赋给 x 变量,然后输出 x。
第 12页
湖南大学程序设计训练报告
实训 6 函数的定义和调用
一 实训目的
(1)调用 area()函数求三角形面积 (2)在求面积函数中运用海伦公式

问题描述
编写程序,从键盘输入三角形的3边,调用三角形面积函数求其面积,并输出结 果。
流程图:
开始
开始
输入三角形 3 边 a,b,c S=(a+b+c)/2 a,b,c, 构成三角形三边 T Area=sprt(p) ts=area() 输出错误提示 F
第 19页
湖南大学程序设计训练报告
{ int *p,*q,a[N]; int i,tmp; p=a; q=(int*)malloc(N*sizeof(int)); printf("Please Input the first group:"); for(i=0;i<N;i++) scanf("%d",p+i); printf("Please Input the second group:"); for(i=0;i<N;i++) scanf("%d",&q[i]); for(i=0;i<N;i++) if(*(p+i)>*(q+i)) { tmp=*(p+i); *(p+i)=*(q+i); *(q+i)=tmp;
第ห้องสมุดไป่ตู้17页
湖南大学程序设计训练报告
scanf("%d",&a[i]); sort1(a【】,10); printf(" 排序后的输出为:\n"); for(i=0;i<10;i++) printf("%d ",a[i]); } 调试结果:

实训结论
(1)一维数组的定义格式为:存储类型 数据类型 数组名[长度]。 (2)对一维数组的初始化规则是:当对数组中全体元素赋值时,可不必指明数 组的元素个数。 (3)数组元素下标从 0 开始。

实训分析
(1)将指针指向数组时,只需将数组名赋给指针变量即可。 (2)由于数组在内存中的存放时连续的,因此可以通过指针运算实现对数组元 素的访问。 (3)使用宏定义可以实现对任意多个元素的数组进行动态存储处理。

实训源程序代码和调试过程
#define N 5 #include<stdio.h> #include<malloc.h> int main()
输出
第 7页
结束
湖南大学程序设计训练报告

实训分析
(1)程序需要接收一个浮点数,因此用 float 表示。 (2)使用 scanf 语句接收用户输入的 x 的值,并保存在变量 x 中。 (3)判断变量 x 的值是否小于 1,如果是,根据函数公式 1,将 x 的值赋给 y; 如果不是,则进一步判断 x 的值是否小于 10,是则根据函数公式 2 计算 y 的值;不是则根据公式 3 计算 y 的值。 (4)用 printf 语句输出 y 的值。
第 18页
湖南大学程序设计训练报告
实训 8 指针基础及指针运算
一 实训目的
本实验旨在加强学生对指针数据类型的理解,熟悉指针的定义,指针与数组的管 理以及间接访问变量的值,了解内存地址的访问方法。

问题描述
(1)定义一个整型指针变量 p,使它指向一个 5 个元素的一维数组。 (2)使用指针移动的方式,输入 5 个整型数组元素。 (3)定义一个整型指针变量 p,使用 malloc 函数动态分配 5 个整型数的地址空 间。 (4)使用数组下标的方式输入 5 个整型元素。 (5)使用指针 p 和 q 分别访问两组数据,如果第一组数据对应位置的值大于第 二组,则交换对应位置的值。 (6)分别输出交换后的两组数。 (7)按十六进制方式输出 p,a 和 q 的地址。
P=s*(s-a)(s-b)(s-c)
结束
输出 ts
开始

实训分析
(1)程序要用到开方的函数,将头文件 math.h 包含进来 (2)要判断输入的三条边能否构成三角形,不能的话,输出错误提示 (3)根据输入的三条边长度,可有海伦公式求出面积。设 p=(a+b+c)/2 则面积就
第 13页
湖南大学程序设计训练报告
一 实训目的
用 for 语言实现循环
开始
掌握 for 语言实现循环的方法
输入 k; i=0

问题描述 编写一程序,求出 1,1+2,1+2+3,…数列中 前 n 项的值 流程图: (如右)
i+1 i<=k T 计算第 i 项
F

实训分析
结束
(1)数列的第 k 项为 1+2+3+……+k。
第 10页
湖南大学程序设计训练报告
(2)从键盘输入 k 的值以后吧, 用一个 for 循环来计算每一项的值,然后输出。

实训源程序代码和调试过程
#include<stdio.h> #include<conio.h> main() { int i,j=0,k,s=0,a[50]; printf("Enter a number:"); scanf("%d",&k); for(i=1;i<=k;i++) { s=s+i; a[j]=s; printf("%d ",a[j]); j++; } getch(); }
相关主题