实 验 报 告
####院 ######专业 2009级 20##至 2012学年度 第1学期
学号:######### 姓名:###### 20##年10月8日 第3~4节 综合楼 325教室
《C语言程序设计》
实验报告
2012~20##学年第二学期
实验一
实验项目名称:C程序的运行环境和运行C程序的方法
所使用的工具软件及环境:Visual C++ 6.0
一、实验目的:
1.了解在Visual C++ 6.0环境下如何编辑、编译、连接和运行一个C程序;
2.通过运行简单的C程序,初步了解C源程序的特点。
二、预习内容:
教材《C语言程序设计教程》第1章。
三、实验内容:
1. 在Visual C++ 6.0环境下输入并运行下面的程序:
#include <stdio.h>
int main( )
{
printf("This is a C program.\n");
return 0;
}
2. 在Visual C++ 6.0环境下输入下面的程序(有语法错误),编译、连接、调试该程序,直至程序无语法错误,然后运行程序,并观察分析运行结果。
#include <stdio.h>
int main( )
{
int a,b,sum
a=3;
b=4;
sun=a+b;
print(“%d+%d=%d\n”,a,b,sum);
return 0;
}
四、实验结果:
1. 运行结果(或截图):
2. (1) 改正后的源程序:
(2) 运行结果(或截图):
五、思考题:
1. 一个C程序上机的步骤有哪些?
答:
2. 组成C程序的基本单位是函数,一个函数包括哪几个部分?
答:
成绩 指导教师签名
实验二
实验项目名称:数据类型、运算符和表达式
所使用的工具软件及环境:Visual C++ 6.0
一、实验目的:
1.掌握整型、实型与字符型这三种基本类型的概念;
2.掌握常量及变量的使用方法;
3. 掌握基本算术运算符及其表达式的使用方法;
4. 掌握++、--运算符、赋值运算符及其表达式的使用方法。
二、预习内容:
教材《C语言程序设计教程》第2章。
三、实验内容:
1. 在Visual C++ 6.0环境下输入下面的程序,编译、连接、调试该程序。
main( )
{
char m,n;
m=280;
n=320;
printf(“%d\t%d\n”,m,n);
printf(“%c\t%c\n”,m,n);
}
2. 在Visual C++ 6.0环境下输入并运行下面的程序,观察分析运行结果。
#include <stdio.h>
int main( )
{
int a=3,b=4,c=8;
float d,e;
d=a+b/c;
e=a+(float)b/c;
printf("d=%f,e=%f\n",d,e);
}
3. 在Visual C++ 6.0环境下输入并运行下面的程序,观察分析运行结果。
#include <stdio.h>
main( )
{
int a,b,c,d,i,j,m,n;
a=b=c=d=3;
i=a++;
j=++b;
m=c--;
n=--d;
printf("a=%d,b=%d,c=%d,d=%d,i=%d,j=%d,m=%d,n=%d\n",a,b,c,d,i,j,m,n);
}
4. 在Visual C++ 6.0环境下输入并运行下面的程序,观察分析运行结果。
#include <stdio.h>
main( )
{
int a=4;
a+=a-=a*a+a;
printf("a=%d\n",a);
}
四、实验结果:
1. 运行结果(或截图):
2. 运行结果(或截图):
3. 运行结果(或截图):
4. 运行结果(或截图):
五、思考题:
1. 给变量命名应该注意哪些问题?
答:
2. 程序2的运行结果中,d和e的值为什么不同?
答:
3. 程序3的运行结果中,i和j的值为什么不同?m和n的值为什么不同?
答:
4. 请分析表达式a+=a-=a*a+a的运算过程(写出运算步骤)。
答:
成绩 指导教师签名
实验三
实验项目名称:简单的输入输出及顺序程序设计
所使用的工具软件及环境:Visual C++ 6.0
一、实验目的:
1. 掌握整型、实型与字符型数据的正确输入方法(scanf函数的使用);
2. 掌握整型、实型与字符型数据的正确输出方法(printf函数的使用);
3. 掌握编写顺序程序的方法。
二、预习内容:
教材《C语言程序设计教程》第3章。
三、实验内容:
1. 编写C程序,按下列公式计算并输出S的值,其中a和b的值有键盘输入。
main()
{ int a,b;
float s;
scanf(“%d,%d”,&a,&b);
s=2.0*a*b/(a+b) /(a+b);
printf(“s=%f\n”,s);
}
①输入并调试。
②将scanf函数改为scanf(“%d%d”,&a,&b);再编译,运行。
③观察结果。
2. 在Visual C++ 6.0环境下输入并运行下面的程序,观察分析程序运行过程及结果。
#include <stdio.h>
int main( )
{
int a,b,sum;
printf("请输入第一个整数:");
scanf("%d",&a);
printf("请输入第二个整数:");
scanf("%d",&b);
sum=a+b;
printf("%d+%d=%d\n",a,b,sum);
}
3. 设圆半径r=1.5,编写程序求圆周长、圆面积和圆球的体积。要求用scanf语句输入半径,输出时取小数点后两位。
四、实验结果:
1.
2. 运行结果(或截图):
3. (1) 程序中用到的变量(类型)
(2) 算法(用伪代码描述或自然语言)
(3) 源程序清单
(4) 运行结果(或截图)
五、思考题:
scanf(“%d,%d”,&a,&b)与scanf(“%d%d”,&a,&b)输入数据的方式有什么不同?从两种输入方式的对比中你得到什么启发?
答:
成绩 指导教师签名
实验四
实验项目名称:选择结构程序设计
所使用的工具软件及环境:Visual C++ 6.0
一、实验目的:
1. 正确使用关系运算符和关系表达式;
2. 正确使用逻辑运算符和逻辑表达式;
3. 熟练使用if语句实现选择结构程序;
2. 熟练使用switch语句实现多分支选择结构程序。
二、预习内容:
教材《C语言程序设计教程》第4章。
三、实验内容:
1. 下面程序的功能是:输入学生成绩,若成绩在90分以上,输出“Excellent!”;若成绩在60—89分之间,输出“Pass!”;若成绩在60分以下,输出“Fail!”。请将程序补充完整,并上机运行程序。
#include <stdio.h>
int main( )
{
int score;
printf("请输入分数(0--100):");
scanf("%d", );
if(score>100 || score<0) printf("Input Error!\n");
else if( ) printf("Excellent!\n");
else if( ) printf("Pass!\n");
printf("Fail!\n");
}
运行该程序4次,分别输入4个不同的数据,对应4种不同的情况,记录运行结果:
2. 有如下分段函数:
请输入x的值,求解对应的y值。
3. 给出一个百分制成绩,要求输出成绩等级’A’、 ’B’、 ’C’、 ’D’、 ’E’。90-100为’A’,80-89为’B’,70-79为’C’,60-69为’D’,60分以下为’E’。用switch语句写。
四、程序中所用的变量及其类型:
2.
3.
五、算法(用伪代码或自然语言描述):
2.
3.
六、源程序清单:
2.
3.
七、实验结果:
2. 运行结果(执行程序3次,分别输入不同的3个数,对应3种不同的情况):
3. 运行结果(执行程序5次,分别输入5组不同的数据,对应5种不同的情况):
成绩 指导教师签名
实验五
实验项目名称:简单循环程序设计
所使用的工具软件及环境:Visual C++ 6.0
一、实验目的:
1. 掌握循环程序的基本结构;
2. 熟练掌握while、do—while及for语句,并会用来编写循环结构程序。
二、预习内容:
教材《C语言程序设计教程》第4章。
三、实验内容:
1.编写一个程序,计算并输出数列:1,3,5,…,2n-1,…的前几项之和,其中n由键盘输入。要求分别用3种循环语句实现。
方法1:用for语句实现。
main()
{ long s,n,k,i;
scanf(“ “,&n);
k=2*n-1;
;
for(i=1;i<=k; ) s+=i;
printf(“1+3+…+%ld=%ld\n”,k,s);
}
方法2:用while语句实现。
main()
{long ,n,i=1;
scanf(“%ld”,&n);
while( )
{s+=i;
;}
printf(“1+3+…+%ld=%ld\n”,2*n-1,s);
}
方法3:用do-while语句实现。
main()
{long s=0,n,i=1;
scanf(“%ld”,&n);
do
{s+=i;
i=i+2;}
while( );
printf(“1+3+…+%ld=%ld\n”,2*n-1,s);
}
填上所缺的空,运行程序,写出结果。
2.输入两个正整数,求其中最大公约数和最小公倍数。
四、程序中所用的变量(类型及其初值):
2.
五、算法(用伪代码描述):
2.
六、源程序清单:
2.
七、实验结果:
1. 在下表中写出输入的数据及其运行结果:
2. 运行结果(或截图):
成绩 指导教师签名
实验六
实验项目名称:多层循环程序设计及break、continue语句在循环程序中的应用
所使用的工具软件及环境:Visual C++ 6.0
一、实验目的:
1. 掌握多层循环程序的执行过程及设计方法;
2. 掌握break及continue语句在循环程序中的使用方法。
二、预习内容:
教材《C语言程序设计教程》第4章。
三、实验内容:
1. 百马百担问题。有100匹马,驮100担。大马驮3担,中马驮2担,两个小马驮1担。问大、中、小马各多少?(考虑适当减少循环次数)
2. 编程输出100以内的所有素数。
3. 编程输出所有水仙花数(所谓“水仙花数”,是指一个3位数,其各位数字的立方和等于该数本身,例如,153=13+53+33,所以153是一个水仙花数)。
四、程序中所用的变量(类型及其初值):
1.
2.
3.
五、算法(用伪代码或自然语言描述):
1.
2.
3.
六、源程序清单:
1.
2.
3.
七、实验结果:
1. 运行结果(或截图):
2. 运行结果(或截图):
3. 运行结果(或截图):
成绩 指导教师签名
实验七
实验项目名称:一维、二维和字符数组程序设计
所使用的工具软件及环境:Visual C++ 6.0
一、实验目的:
1. 掌握一维数组和二维数组的定义、赋值和输入输出的方法;
2. 掌握字符数组的使用。
二、预习内容:
教材《C语言程序设计教程》第5章。
三、实验内容:
1. 从键盘输入一个整数n(n<=10)和n个整数,存入数组a中,先依次输入各个数组元素的值,然后对数组a的所有元素值从小到大的顺序重新排列后,再依次输出。
main()
{int a[10],n,i,j,min,ax;
printf(“input n=”);
scanf(“%d”,&n);
printf(“input array[0]a[1]…a[%d]:\n”,n-1);
for(i=0;i<n;i++)
scanf(“%d”, );
printf(“before sort:array\n”);
for(i=0;i<n:i++)
printf(“%d”,a[i]);
printf(“\n”);
for(i=0;i< ;i++)
{min=i;
for(j= ;j<n;j++)
if(a[j]<a[min]) ;
ax= ; ;
=ax;}
printf(“after sort:array\n”);
for(i=0;i<n;i++)
printf(“%d”,a[i]);
}
2. 打印出以下杨辉三角形(要求打印出10行)。
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
……
3.将两个字符串连接起来,不要用strcat函数。
四、程序中所用的变量(类型及其初值):
2.
3.
五、算法(用伪代码描述):
2.
3.
六、源程序清单:
2.
3.
七、实验结果:
1. 运行结果(执行程序3次,分别输入不同的n,对应3种不同的情况):
2. 运行结果(或截图):
3. 运行结果(或截图):
成绩 指导教师签名
实验八
实验项目名称:函数调用和参数传递
所使用的工具软件及环境:Visual C++ 6.0
一、实验目的:
1. 掌握定义函数的方法;
2. 掌握函数实参与形参的对应关系。
二、预习内容:
教材《C语言程序设计教程》第6章6.1~6.4节。
三、实验内容:
1. 求2~100间的素数。
int prime(int);/* prime函数声明*/
main( )
{ int m,flag;
for(m=2;m<=100;m+=1)
{ flag=prime(m);
if( )
printf(“%4d”,m);
}
}
int prime( )
{
int i,flag;
for(i=2;i<a;i++)
if(a%i==0)
;
if(i==a) flag=1;
else flag=0;
return ;
}
2.求方程ax2+bx+c=0的根,用3个函数分别求当b2-4ac大于0、等于0和小于0时的根,并输出结果。从主函数输入a,b,c的值。
四、算法(用伪代码或自然语言描述):
2.
五、源程序清单:
2.
七、实验结果:
1. 运行结果:
2. 运行结果(执行程序3次,分别输入不同的a,b,c,对应3种不同的情况):
成绩 指导教师签名
实验九
实验项目名称:函数与预处理
所使用的工具软件及环境:Visual C++ 6.0
一、实验目的:
1. 掌握数组名作为函数参数;
2. 掌握全局变量与局部变量;
3.掌握宏,文件包含的用法。
二、预习内容:
教材《C语言程序设计教程》第6章6.5~6.9节。
三、实验内容:
1. 从键盘输入10个数存入数组a中,调用fmax求数组中的最大值并输出。
#include <stdio.h>
main( )
{ int a[10],i,jmax;
for(i=0;i<10;++i)
scanf(“%d”,&a[i]);
jmax=fmax( ,10);
printf(“%d”,jmax);
}
fmax(int b[],int t)
{
int i,imax;
imax=b[0];
for(i=1;i<t;i++)
if(b[i]>imax) ;
return ;
}
2.用“冒泡法”对输入的10个字符排序后按从小到大的次序输出。
#define N 10
char str[N];
sort( )
{ int i,j;
char t;
for(j=1;j<N;j++)
for(i=0;i<N-j;i++)
if(str[i]> )
{ t=str[i];
_____ ______;
______ ______;
}
}
main()
{
int i;
for(i=0;i<10;i++)
scanf("%c",&str[i]);
sort( );
for(i=0;i<N;i++)
printf("%c",str[i]);
printf("\n");
}
3.输入10个学生5门课程的成绩,分别用函数求:①每个学生平均分,并输出;②每门课的平均分,并输出。
4.定义一个带参数的宏,使两个参数的值互换,并写出程序,输入两个数作为使用宏时的实参。输出已交换后的两个值。
四、程序中所用的变量(数据类型):
3.
4.
五、算法(用伪代码或自然语言描述):
3.
六、源程序清单:
3.
4.
七、实验结果:
1. 运行结果(或截图):
2. 运行结果(或截图):
3. 运行结果(或截图):
4. 运行结果(或截图):
成绩 指导教师签名
实验十
实验项目名称:指针
所使用的工具软件及环境:Visual C++ 6.0
一、实验目的:
1.通过实验进一步掌握指针的概念,会定义和使用指针变量。
2.能正确使用数组的指针和指向数组的指针变量。
3.能正确使用字符串的指针和指向字符串的指针变量。
4.了解指向函数的指针变量。
二、预习内容:
教材《C语言程序设计教程》第7章。
三、实验内容:
1.输入2个整数,交换顺序后输出,程序要求使用指针处理。
程序提示:
自定义交换函数:
void swap(int *p1,int *p2) //实现*p1与*p2交换
{
}
//main函数结构如下:
int n1,n2;
int *q1,*q2;
//输入2个数,q1,q2分别指向这n1,n2这2个数
swap(q1,q2); //调用函数swap
printf(“%5d%5d”,n1,n2); //输出交换后的值
2. 将一个数组的10个元素反序,用一函数实现。
程序提示:在主函数中用for循环通过scanf函数输入数组元素值,调用函数,用for循环输出结果。
void inverse(int *p)
{
循环for(i=0;i<10/2;i++)
*(p+i)与*(p+9-i)交换,就能实现反序
}
3.下面程序是用指针法将一个字符串a复制到字符串b中,修改程序实现问题(1)(2)。
main()
{
char a[]="I am a boy.",b[20], *p1,*p2;
int i;
p1=a;p2=b;
for( ; *p1!=’\0’;p1++,p2++)
*p2=*p1;
*p2=’\0’;
printf("string a is:%s\n",a);
printf("string b is:");
for(i=0;b[i]!=’\0’;i++)
printf("%c",b[i]);
}
(1)将第一个for循环改为while循环;
(2)分别用指针变量p1和p2输出字符串a 和b。
4. 用一个函数实现两个字符串的比较,自定义compare函数已给出,编写main函数:
设p1指向字符串s1,p2指向字符串s2。要求当两个字符相同时返回0,若两个字符串不相等,则返回返回它们二者第一个不同字符的ASCII码的差值。两个字符串s1,s2由主函数输入,compare函数的返回值也由主函数输出。
程序提示:使用以下函数进行比较:
int compare(char *p1,char *p2)
{
int i;
for(i=0;*(p1+i)!=’\0’;i++)
if(*(p1+i) != *(p2+i))
break; //不相等,循环结束
return *(p1+i)-*(p2+i);
}
main()
{
}
5.下面的程序的功能是将字符数组ch中第2维下标是偶数的元素取出后,构成一个十进制整数。
#include<stdio.h>
main()
{
char ch[2][5]={"1213","8421"},*p[2];
int i,j,s=0;
for(i=0;i<2;i++)
p[i]= ;
for(i=0;i<2;i++)
for(j=0;p[i][j]>'\0'&& p[i][j]<='9';j+=2)
s= ;
printf("%d",s);}
四.重要变量用途说明:
1.
2.
3.
4.
5.
五、源程序补充后完整清单:
1.
2.
3.
4.
5.
六、实验结果(写出典型测试数据输入和输出)
1. 运行结果:
2. 运行结果:
3. 运行结果:
4. 运行结果:
5. 运行结果:
成绩 指导教师签名
实验十一
实验项目名称:结构体与共用体
所使用的工具软件及环境:Visual C++ 6.0
一、实验目的:
1.掌握结构体的概念;
2.学会通过结构体成员来使用结构体;
3.正确使用结构体数组;
4.学会共用体成员值的输出。
二、预习内容:
教材《C语言程序设计教程》第8章。
三、实验内容:
1. 读懂并输入程序,完成填空后输出结果。
建立学习成绩单结构,并建立一个同学王林(wanglin)的记录。
#include <stdio.h>
main()
{struct grade /* 定义结构体类型 */
{int number;
char name[10];
int math;
int english;
};
struct wanglin; /* 结构体变量 */
printf("Please input the number, name, math, english:\n");
scanf("%d%s%d%d", , wanglin.name, ,&wanglin.english);//输入数据
printf("wangling grade is: %d%s%d%d\n", wanglin.number,wanglin.name,wanglin.math,
wanglin.english);
}
2.编写一个程序,处理5个学生的信息,每个学生的信息包括:学号、姓名、三门成绩。要求输出成绩表(包括每个学生的学号、姓名、三门成绩及平均分数),并输出平均分在前3名的学生的姓名及平均分。
处理5个学生的信息的参考程序:
#include "stdio.h"
struct STU
{
int sn;
char name[20];
int score[3];
float average;
} students[5]={ {1,"A",81,80, 80,0},
{2,"B",51,80, 80,0},
{3,"C",61,80, 80,0},
{4,"D",71,80, 80,0},
{5,"E",41,80, 80,0}
}; //5个学生数据初始化
void main()
{
int i, j;
struct STU t;
for(i=0; i<5; i++)
{ for(j=0; j<3; j++)
students[i].average += students[i].score[j]; //三门课成绩和
students[i].average /= 3.0; //三门课成绩平均
}
for(i=0; i <4; i++)
for(j=0; j<4-i; j++)
if(students[j].average<students[j+1].average) //冒泡排序
{
t = students[j];
students[j] = students[j+1];
students[j+1] = t; // students[j]与 students[j+1]通过第三方t交换。
}
printf( "输出平均分在前3名的学生的姓名及平均分:\n");
for(i=0; i<3; i++)
{
printf("%20s", students[i].name);
printf("%10.2f\n", students[i].average );
}
}
3.输入和运行以下程序:
#include "stdio.h"
union data
{
int i[2];
int b; //vc中整型占4字节
char c[5]; //vc中字符型占1字节
}u;
void main( )
{
scanf("%d%d",&u.i[0],&u.i[1]);
printf("%d,%d,%d,%c%,%c\n", u.i[0],u.i[1],u.b,u.c[0],u.c[4]);
}
输入两个整数97 67给u.i[0]和u.i[l],分析运行结果。
四.结构体、共用体说明(作用、成员类型,初始值等):
1.
2.
3.
五、源程序补充后完整清单:
1.
六.实验结果
1.运行结果(写出典型测试数据输入和输出):
2.运行结果(写出输出结果):
3.运行结果(分析运行结果)
成绩 指导教师签名
C++程序设计实验报告学号:姓名:班级:指导老师:实验一、字符和格式的输出实验一,实验目的1、重点把握各种内部数据类型、数值和逻辑…
C语言程序设计实验报告1实验目的(1)掌握函数的定义方法、调用方法、参数说明以及返回值;(2)掌握实参与形参的对应关系,以及参数之…
学生实验报告册(理工类)课程名称:JAVA程序设计实验专业班级:M11计算机科学与技术II学生学号:学生姓名:所属院部:XX学院指…
西南交通大学程序设计综合实验实验地点实验学期学生班级学生学号学生姓名任课教师龚勋信息科学与技术学院20xx年4月实验一ATM机用户…
C语言程序设计实验报告学号不告诉你哦班级信管一班姓名你猜猜哈哈一实验题目一编程实验猜数问题输入两个整数并求这两个整数的和输入所猜的…
C程序设计实验报告实验名称控制结构综合程序设计学时安排2课时实验类别上机操作型实验要求1人1组一实验目的1熟练掌握分支结构循环结构…
C课程设计报告题目小学算术运算测试设计者刘星刘俊良凌锋专业班级计算机网络0901班学号343337指导教师任长安所属系部计算机与信…
海南大学三亚学院信息管理与信息系统专业课程设计实验报告题目C语言程序设计实习分院管理分院专业信息管理与信息系统班级信管0902姓名…
程序设计基础课程设计C课程设计报告贪吃蛇院系:计算机学院网络工程系班级:122班姓名:指导教师:20##年12月25日程序设计基础…
C语言程序设计实验报告专业班级日期11月26日成绩实验组别第327次实验指导教师李开学生姓名学号同组人姓名实验名称数组实验一实验目…
C语言实验内容及说明20xx级13班实验报告填写说明实验课程C语言程序设计设课形式非独立课程学分4实验室名实验楼A309实验目的和…