c语言实验报告之欧阳术创编

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

四川师范大学计算机科学学院
《C语言程序设计》




2012年2月
年级: 2011级
专业:电子商务
班级: 04班
姓名:罗桂清
学号: 2009110438
指导教师:廖雪花
《C语言程序设计》实验课程简介
课程名称:C语言程序设计实验
课程性质:专业必修课
课程属性:专业必修课
学时学分:学时32 学分1
开课实验室:软件实验室
面向专业:网络工程、软件工程、计算机科学与技术
一、课程的任务和基本要求
C语言程序设计实验是面向计算机相关专业学生开设的《C语言程序设计》实验课,是配合《C语言程序设计》课程而开设的实验性教育环节。

本课程的主要任务是让学生充分掌握C语言程序设计的基本概念、各种数据类型的使用技巧、模块化程序设计的方法等。

C语言程序设计实验对课程中所涉及的知识进行验证,同时也是学生很好地学习课程的辅助手段。

通过C语言上机
实验的教学活动,使学生真正全面掌握C语言的基础知识,培养和提高学生的程序开发能力。

二、实验项目
【实验一】最简单的C程序---顺序程序设计
【实验二】逻辑运算和判断选取控制
【实验三】循环结构程序设计(一)
【实验四】循环结构程序设计(二)
【实验五】函数
【实验六】数组(一)
【实验七】数组(二)
【实验八】指针
【实验九】结构体、共用体和文件
【实验十】C程序综合性实验
三、有关说明
1、与其它课程和教学环节的联系:
先修课程:计算机文化
后续课程:面向对象程序设计、Java程序设计、数据结构、软件工程
2、教材和主要参考书目:
(1)教材:
《C程序设计习题解答与上机指导》,谭浩强吴伟民著,北京:清华大学出版社,2003年。

(2)主要参考书目:
《C语言程序设计》谭浩强主编,清华大学出版社,2003年。

三、实验内容
实验一最简单的C程序---顺序程序设计
(验证性实验 2学时)
(一)、实验目的
1.熟悉win-tc程序运行环境
2.掌握运行一个C程序的步骤,理解并学会C程序的编辑、编译、链接方法
3.掌握C语言中使用最多的一种语句——赋值语句
4.掌握数据的输入输出方法,能正确使用各种格式控制符(二)、实验内容
1.写出下列程序的运行结果
(1)#include <stdio.h>
void main()
{
printf(“*****************\n”);
printf(“This is a c program. \n”);
printf(“****************\n”);
}
运行结果及分析:
运行结果:
*****************
This is a c program
*****************
分析:
1. c程序中的#include<stdio.h>是指一个标准输入输出文件,它包含了标准输入输出函数。

2. 一个c程序中必须只能有一个main函数,void main()是指子最后不给程序返回任何值;
3. 这个程序中的prinft函数是用来显示输出的,这三条命令全都会显示输出。

将程序中的\n去掉后,运行结果及分析:
运行结果:
************************This is a program***************************
分析:
1. 一个c程序中必须只能有一个main函数,void main()是指子最后不给程序返回任何值;
2.c程序支持一些特殊的反斜杠字符常量,这些常量常用于输出函数中,\n是指换行输出,所以将\n去掉后,printf中的三条语句就不会换行输出,只显示在一排。

(2)#include <stdio.h>
void main()
{
int a=100,b=20,sum,sb;
sum=a+b;
sb=a/b;
printf("sum=%d,sb=%d",sum,sb);
}
运行结果及分析:
运行结果:
sum=120.sb=5
分析:
1.这是一个关于数的简单加法计算和除法计算并显示出结算结果的c程序;一个c程序中必须只能有一个main函数,void main()是指子最后不给程序返回任何值;
2.用int将变量定义成了整型变量;
3.在定义变量时就将a和b初始化了值用于后面计算;
4.将a和b的和赋值到了sum中,将a和b 的商赋值到了sb 中,并显示输出;
5.%d是指输出的时候是输出整数型
(3)#include <stdio.h>
void main()
{
char c1,c2;
c1=97;c2=98;
printf("%c ,%c\n",c1,c2);
printf("%d,%d\n",c1,c2);
printf("%c %c\n",c1+1,c2+2);
}
运行结果及分析:
运行结果:
a b
97, 98
c, d
分析:
1.一个c程序中必须只能有一个main函数,void main()是
指子最后不给程序返回任何值;
2.用char将c1和c2定义成字符变量,并给其赋值;所以;
3.用printf("%c ,%c\n",c1,c2)输出c1和c2所对应的字符,而97、98所对应的ASCII值是a和b
4.用printf("%d,%d\n",c1,c2)输出所对应的值;
5. printf("%c %c\n",c1+1,c2+2)是指将c1和c2中的值加上1和2后所对应的字符值输出。

(4)#include <stdio.h>
void main()
{
int i=8,j=10,m,n;
m=++i;n=j++;
printf("%d,%d,%d,%d",i,j,m,n);
}
运行结果及分析:
运行结果:
9,11,9,10
分析:
1.一个c程序中必须只能有一个main函数,void main()是指子最后不给程序返回任何值;
2.用int将i,j,m,n定义成整型变量;
3.m=++i是指将i加1后赋值给m和i,n=j++是指先将j 的值赋给n,然后j=j+1;
4.用printf("%d,%d,%d,%d",i,j,m,n)显示输出各变量所对应的值。

再将本程序的第3行改为m=i++;n=++j;
运行结果及分析:
运行结果:
9,11,8,11
分析:1.一个c程序中必须只能有一个main函数,void main()是指子最后不给程序返回任何值;
2.用int将i,j,m,n定义成整型变量;
3.m=i++是指先将i的值赋给m,然后i=i+1的值;n=j++是指将j+1的值赋给j和m;
4.用printf("%d,%d,%d,%d",i,j,m,n)显示输出各变量所对应的值。

2.程序填空
任意输入一个有五位数字的正整数x,分别输出每一数位上的数字(由高到低分别用b5,b4,b3,b2,b1表示),请将程序补充完整。

#include <stdio.h>
main()
{
int b1,b2,b3,b4,b5;
long int x;
Scanf( “ %ld ”,&x);
b5=(x/10000)%10;
b4=(x/1000)%10;
b3= (x/100) %10;
b2=(x/10)%10;
b1= x %10;
printf(“the number is %ld \n”,x);
printf(“its bit is:%d,%d,%d,%d,%d\n”,b5,b4,b3,b2,b1);
}
程序分析:
1.由于此程序要输出一个五位数,所以应将变量的类型定义成long int,以免超出范围后导致乱码输出;
2.scanf函数用于键盘输入,此命令将用户输入的值赋给x;
3.将输入的五位数的每一位的值通过运算公式转换成数,并用prinft函数显示输出。

3.程序改错(注意:题中的编号为行序号,并非程序本身)
计算任意一个半径为r的圆的面积和周长(结果保留两位小数)
(1)#include <stdio.h>
(2)main()
{
(3)float r; p=3.14,c,area;
(4)printf(“input r:”);
(5)scanf(“%f”, r);
(6)c=2p*r;
(7)area=p*r*r
(8)printf(“c=%-7.2f,area=%-7.2f”,c,area);
(9)}
错误语句的行号:(3)
改正后的语句全行:float r, p=3.14, c, area;
错误语句的行号:(5)
改正后的语句全行:scanf(“%f”, &r);
错误语句的行号:(6)
改正后的语句全行:c=2*p*r;
错误语句的行号:(7)
改正后的语句全行:area=p*r*r;
改错分析:
1.在c程序中,一个语句中声明多个变量是需要用“,”隔开;
2.用scnf函数时,变量前面必须加操作符&,指明该变量的地址;
3.乘法表示要用*号表示;
4.每一个执行语句结束后必须用分号“;”结束。

实验二逻辑运算和判断选取控制
(验证性实验 2学时)
(一)、实验目的
1.了解逻辑量在C语言中的表示方法
2.学会使用逻辑运算符和逻辑表达式
3.熟练掌握if语句和switch语句
(二)、实验内容
1.写出下列程序的运行结果
(1)#include <stdio.h>
void main( )
{
int a,b,x=10,y=9;
a=(--x == y++)? --x : ++y;
b= y;
printf(“%d,%d\n”,a,b);
}
运行结果及分析:
运行结果:
8,10
分析:
1.此程序是关于逻辑运算符、递增和递减运算符以及条件运
算符的应用;
2.void main()是指程序结束后不返回任何值;
3.int a,b,x=10,y=9;是定义int类型的整数变量及给想x和y
初始化值;
4.a=(--x == y++)? --x : ++y;是指当x-1的值等于y的值时
x=x-1,否则x=++y,因为—x=9=y,所以条件成立,a的值就等于—x,而在前面的运算中x=9、y=10,因此—x=8;b=y=9;
5.printf函数显示输出所运算出来的结果。

(2)#include <stdio.h>
void main()
{
int a=2,b=-1,c=2;
If(a<b)
if(b<0)c=0;
else c+=1;
else
printf(“%d\n”,c);
}
运行结果及分析:
运行结果:
2
分析:
1.此程序时关于if函数和c+=1类型的复合函数语句的应
用;
2.当if条件成立时就执行if下面的语句,不成立时则直接执
行else语句,此程序中的if(a<b)不成立,所以直接执行else c+=1;
3.c+=1;是指c=c+1,
(3)#include <stdio.h>
void main( )
{
int a=0,b=0,c=0;
if(++a > 0 || ++b > 0)++c;
printf(“\na=%d,b=%d,c=%d”,a,b,c);
}
运行结果及分析:
运行结果:
a=1, b=0, c=1;
分析:
1. 此程序是关于if函数和递增运算符的应用;
2. int a=0,b=0,c=0;是定义整形变量并给其赋值;
3.if(++a > 0 || ++b > 0)++c;是值当++a > 0 和 ++b > 0同时满足时,执行后面的++才,因为前面条件满足,所以执行++c;因此a=1,c=1,而因为在逻辑条件成立时,值进行前面的运算,所以b还是等于0;
4.Printf输出运算结果。

(4)#include <stdio.h>
void main()
{
int x=-1;
switch (x)
{
default: printf(“a”);
case 1: printf(“b”);
case 2: printf(“c”);
}
}
运行结果及分析:
运行结果:
abc
分析:
1.此程序是关于switch语句的应用,在C语言中它经常跟
Case一起使用,是一个判断选择代码。

其功能是控制业务流程流转的;
2.void main()是指程序结束后不返回任何值;intx=-1,是
指定义整形变量并给其赋值;
3.在switch()开始时,从default处开始执行,输出a,在往
下执行,不满足case1,输出b,再执行case2,也不满足,因此输出c。

在case 1:printf(“b”);后加上break;语句,结果如何?修改程序并上机调试。

运行结果及分析:
运行结果:
ab
分析:
1. 此程序是关于switch语句的应用,在C语言中它经常跟Case一起使用,是一个判断选择代码。

其功能是控制业务流程流转的;
2. void main()是指程序结束后不返回任何值;intx=-1,是指定义整形变量并给其赋值;
3. 在switch()开始时,从default处开始执行,输出a在往下执行,不满足case1出c.
在遇到break时退出执行。

2.程序填空
输入两个整数,从用户处获取这两个整数,显示其中较大的数,在其后跟随“is larger”。

如果这两个数相等,显示“These numbers are equal.”。

请在_____内填入正确内容。

#include <stdio.h>
void main( )
{
int a,b;
printf(“please input two numbers, a, b! “);
scanf(“%d%d”,&a,&b);
if(a>b) printf(“%d is larger”, a );
else if(______a=b________) printf(“These numbers are equal”);
else _____printf(“%d is larger”,b);
}
填空①:a>b
填空②:__a=b__
填空③: _printf(“%d is larger”,b);
结果分析:
运行结果:
5 is larger
分析:
1.此程序涉及到了scanf键盘输入和if条件语句的应用;
2.scanf(“%d%d”,&a,&b)指用户输入两个数保存到a和b中;
3.if(a>b) printf(“%d is larger”, a );
else if(______a=b________) printf(“These numbers are equal”);
else _____printf(“%d is larger”,b);指当a>b成立时输出a is larger,若a=b时输出These numbers are equal,若前面都不成立,a<b时,输出b is larger.;
3.编写程序
(1)编写一个程序,读入5个整数,然后确定并显示这组数中的最大整数和最小整数。

程序清单:
#include<stdio.h>
void main()
{
int max,min,x,n;
printf("please input the first number:");
scanf("%d",&x);
max=min=x;
for(n=2;n<=5;n++)
{
printf("please input the %d number:",n);
scanf("%d",&x);
if(x>max) {max=x;continue;}
if(x<min) min=x;
}
printf("the biggest number is:%d;the smallest number is:%d.\n",max,min);
getch();
}
程序编写注意事项:
1.此程序要连续输入五个数,可用for循环输出五条printf函数;
2.五个数排列大小,在输入第一个数的时候这个数既是最大数也是最小数,在之后没输入一个是数的时候就与前一个数进行比较,大的储存在max里,小的话就存在min里,直到第五个数比较完后输出结果,printf("please input the %d number:",n);
scanf("%d",&x);
if(x>max) {max=x;continue;}
if(x<min) min=x;实现了这个功能。

(2)编写程序,读取一个整数,判断并显示出这个整数是奇数还是偶数。

(提示:使用求模运算符。

偶数是2的倍数。

任何2的倍数除以2时,余数均为零。


程序清单:
#include <stdio.h>
void main()
{
int n;
printf("please input a number");
scanf("%d",& n);
if(n%2==0)
printf("This number is even number");
else
printf("This number is odd number");
getch();
}
程序编写注意事项:
1. 键盘输入函数不能丢掉位置控制符号&;
2. %是模运算符,取两数相处的余数;
3. 判断是奇数还是偶数要用条件运算符if 。

else 语句。

(3)编写一个程序,从键盘中输入3个不同的整数,然后显示这3个整数的和、平均数、积、最小数和最大数。

(用if 语句)屏幕中的对话内容如下所示:
程序清单:
#include <stdio.h> void main() { int a ,b , c, m, n;
printf("Input three different integers:\n");
printf("Input first number:");
scanf("%d,",& a);
printf("Input scend number:");
scanf("%d,",& b);
printf("Input third number:");
scanf("%d,",& c);
printf("Sum is %d\n",a+b+c);
printf("Average is %d\n",(a+b+c)/3);
printf("Product is %d\n", a*b*c);
if(a>b && a>c)m=a;
else m=b;
Input three different integers: 13 27 14
Sum is 54 Average is 18 Product is 4914 Smallest is 13 Largest is 27
if(b>c)m=b;
else m=c;
printf("Max is %d\n", m);
if(a<b)n=a;
else n=b;
if(b<c)n=b;
else n=c;
printf("Min is %d\n", n);
getch();
}
程序编写注意事项:
1.函数要在main函数中进行定义,然后用scanf函数给定义好的三个变量赋值;
2.对函数进行算术运算是要用c语言中特定的运算符,乘号用*表示,除号用/表示,括号代表优先级运算;
3.比较三个数大小的时候要用if..else条件函数进行比较;4.如果要在一条语句中显示,要注意c语言中的运算顺序。

实验三循环结构程序设计(一)
(验证性实验 2学时)
(一)、实验目的
1.熟悉用while语句、do-wile语句和for语句实现循环的方法2.掌握在程序设计中用循环方法实现的算法
(二)、实验内容
1.写出下列程序的运行结果
(1)#include <stdio.h>
void main()
{
int count=1;
while(count<=10)
{
count++;
print f(“%s\n”,count%2? “****”: “++++++++++”);
}
}
运行结果及分析:
运行结果:
++++++++++
******
++++++++++
******
++++++++++
******
++++++++++
******
++++++++++
******
分析:
1.while是入口控制循环语句,先计算测试条件,如果该条
件为真,那么就运行其循环体语句,运行完后,再次计算测试条件,如果仍为真,则继续计算循环体,直到条件为假,所以在本程序中,直到将count++运行到count等于10时停止运算;
2.在prinrf语句中,count%2是对count进行求模运算,并
用?条件语句,当count%2时输出******,否则就输出++++++++++。

因为count一直循环到10,所以就各出了五次。

(2)#include <stdio.h>
void main()
{
int row=10,Column;
while(row>=1)
{
Column=1;
while(Column <=10)
{
printf(“%s”,row%2 ? “<”: “>”);
Column++;
}
row--;
printf(“\n”);
}
}
运行结果及分析:
运行结果:
>>>>>>>>>>>
<<<<<<<<<<<
>>>>>>>>>>>
<<<<<<<<<<<
>>>>>>>>>>>
<<<<<<<<<<<
>>>>>>>>>>>
<<<<<<<<<<<
>>>>>>>>>>>
<<<<<<<<<<<
分析:
1.while是入口控制循环语句,先计算测试条件,如果该条件
为真,那么就运行其循环体语句,运行完后,再次计
算测试条件,如果仍为真,则继续计算循环体,直到
条件为假;
2.while可进行循环的嵌套,在本程序中就进行了循环的嵌
套,在第一个循环下,再进行while循环,第二个循环
是对Column进行求模和用?判断输出<>,一直循环到
Column=10为止,第一个while循环是控制换行输出
的,直到row>=1时退出循环。

(3)#include <stdio.h>
void main()
{
int y=9;
for(; y>0 ; y--)
if(y%3==0)printf("%d\n" , --y);
}
运行结果及分析:
运行结果:
8
5
2
分析:
1.for语句也是一种入口控制循环,在本程序中for(; y>0 ; y-
-)是循环条件,先将y初始化为9,每执行一次后面的循环体y就自减一次,知道y>=0是停止循环;
2.if(y%3==0)printf("%d\n" , --y);是循环体,意识是当y除以
3没有余数时就输出y-1的值;
3.该程序是关于for循环和求模运算的应用。

2.编写程序
(1)利用循环语句来显示如下所示的数值表:
程序清单如下:
#include <stdio.h>
void main()
{
int n;
printf("N\t10*N\t100*N\t1000*N\n") ;
n=1;
while(n<=10)
{printf("%d\t %d\t %d\t %d\n ",n,10*n,100*n,1000*n );
n++;
}
getch();
}
程序编写注意事项:
1.此程序的输出要用到循环语句,可以选择用for循环或者
while循环;
2.在编写程序时考虑到格式的美观可以用\t使各个数之间保持
一定的间距。

(2)编写一程序,能够输入一组10个数字,判断并显示出这些数字中的最大数。

提示:程序中应该使用如下的3个变量:Counter:能够记数到10的记数器。

Number:当前输入到程序中的数字。

Largest:迄今为止所发现的最大数字。

程序清单:
#include <stdio.h>
void main()
{
int Counter, Number, Largest;
printf("please input the first number:");
scanf("%d", & Number);
Largest=Number;
for(Counter=2;Counter<=10;Counter++)
{
printf("please input the %d number:",Counter);
scanf("%d", & Number);
if(Number>Largest)Largest=Number;
else Largest=Largest;
}
printf("the largest number is %d", Largest);
getch();
}
程序编写注意事项:
1.首先要定义好所需要的三个变量,即Counter:能够记数到10
的记数器,Number:当前输入到程序中的数字和Largest:迄今为止所发现的最大数字;counter在循环时用来计数,number 存储从键盘输入的数字,largest就是用来存储比较后最大的那个数字;
此程序涉及到循环输出和比较大小,所以就要用for或者while语句来是想循环,且在循环是要注意没输入一个数时(第一个数除外)都要和之前输入的数进行比较,比较时就要用到if条件语句。

3. 要注意printf语句的位置,是在循环输入和比较之后再进行输出。

(3)请开发一个程序来输入每油箱的行程里程和所用的汽油。

能够计算并显示出对于每个油箱每加仑汽油的行驶里程。

处理输入信息后,计算并显示所有油箱每加仑汽油的行驶里程。

以下是一个事例的输入/输出:
程序清单:
#include <stdio.h>
void main()
{
float Gallon,Miles;
printf("Enter the gallons used <-1 to end>:") ; scanf("%f", &Gallon);。

相关文档
最新文档