C语言实训指导书钱明珠doc.docx
《C语言实训指导书钱明珠doc.docx》由会员分享,可在线阅读,更多相关《C语言实训指导书钱明珠doc.docx(29页珍藏版)》请在冰豆网上搜索。
![C语言实训指导书钱明珠doc.docx](https://file1.bdocx.com/fileroot1/2023-2/3/177b35cc-3299-4435-ae20-063e3f104869/177b35cc-3299-4435-ae20-063e3f1048691.gif)
C语言实训指导书钱明珠doc
c语言实训指导书
实训一熟悉TurboC实验环境
【实训目的】
1、熟悉TurboC实验环境
2、掌握C语言程序的基本结构
3、掌握C语言程序的编辑、调试和运行过程
【实训内容】
1、TurboC实验环境的进入和退出的方法
2、C语言程序的输入(LOAD)和编辑、调试及运行的方法
3、熟悉TurboC常用的信息提示
【实训步骤】
一、上机改错题
(输入以下程序,改正错误所在,并写出程序的结果和功能)
1、#include"stdio.h"
main()
inta,b,c;
scanf("Pleaseinputtwointegerumbers:
",&a,&b);
c=a+b;
printf("%d\n",c)
本题错误有:
修改错误后再完成以下操作:
从键盘输入4,5,程序的运行结果是:
从键盘输入123,765,程序的运行结果是:
从键盘输入659,3789,程序的运行结果是:
从以上结果可以看出,程序的功能是:
2、#include"stdio.h"
main()
{
scanf("%d%d",&a,&b);
a=a+b;b=a-b;a=a-b;
printf("a=%db=%d",a,b)
}
本题错误有:
修改错误后再完成以下操作:
从键盘输入8,3,程序的运行结果是:
从键盘输入25,4,程序的运行结果是:
从以上结果可以看出,程序的功能是:
【思考与练习】
1、在结束一个程序的的运行,开始新程序编辑之前,应做何操作?
2、运行程序和查看程序的运行结果的快捷键是什么?
实训二数据类型、运算符和表达式
【实训目的】
1、熟悉C语言数据类型的概念,熟悉如何定义整型、字符型和实型变量
2、掌握C语言中的算术运算符
【预习内容】
1、C语言中类型定义的标志符int、short、unsigned、char、float、double……
2、C语言中的运算符所能实现的操作
【实训内容及步骤】
1.上机改错题。
main()
{floatr,s;
scanf("%f",&r);
main()
s=3.14159*r*r;
printf("%d\n",s);}
程序纠错后,若从键盘输入3.5,则程序的运行结果为。
2.上机验证题
main()
{charc1='b',c2='e';
inti=1,j=1;
printf("%d,%c\n",c2-c1,c2-'a'+'A');
printf("%d,%d\n",i++,++j);
}
程序运行结果:
main()
{intx=10,y=3,z;
printf("%d%d\n",x/y,x%y);
}
程序运行结果:
3.上机编程题
1、从键盘上任意输入两个整型数据a和c,要求将其交换输出a和c的值。
如从键盘输入a=10,c=30,程序运行后输出a=30,c=10。
[程序清单]
[程序运行过程]
实训三输入和输出
【实训目的】
1、学会使用C语言的不同数据类型
2、理解C语言表达式的写法
3、熟练掌握C语言中的赋值语句
4、进一步理解掌握转义字符的使用
5、通过运行简单的C程序,进一步熟悉上机环境
【实训内容及步骤】
1、输入并运行下面的程序。
#include
main()
{charc1='x',c2='y',c3='z',c4='\101',c5='\102';
printf("x-%c\ty-%c\tz-%c",c1,c2,c3);
printf("\nc4=%c,c5=%c",c4,c5);
printf("\n\tend\n");
}
程序运行结果
c4,c5分别代表什么字符?
如何求得?
本程序中,一共有多少转义字符,分别表示什么含义?
2、编程,已知有一个三位的整数,计算其每位数字的累加之和。
例如:
整数123的每位数字累加之和为6(1+2+3)
方法一:
a)题目已经明确是一个整数,因此在第一步变量定义的时候,应该把变量定义成整型,变量名任意。
b)这个三位的整数可以通过赋值的方式直接给变量赋值
c)每一位数字可以通过整除(/)和求余(%)的方式取得
提示:
若这个整数为123,然后分别用变量a、b、c来存放这个三位整数的个位、十位和百位的值,则
a=123%10;(即将123除以10后的余数赋值给变量a)
b=123/10%10;(即123整除10后的结果为12,然后在对12余10,结果赋值给十位数变量b)
c=123/100;(即将123整除100,后求得百位数赋值给变量c)
最后把结果通过输出函数printf输出
3、编程:
从键盘输入两个数,比较大小后,在屏幕上输出比较大的一个数。
提示:
在此需要同学们预习条件判断的语句。
条件判断用if语句,如果要判断变量a的值是不是大于b,可以使用如下方法进行思考:
【实训后记(必写)】
收获与体会
出现的错误与解决(概述)
希望
实训四顺序结构程序设计
【实训目的】
1、熟悉C语言表达式语句、空语句和复合语句
2、能编写简单的顺序结构的程序
【预习内容】
1、输入输出函数的调用语句getchar()、putchar()、scanf()、printf()
【实训内容及步骤】
1.上机改错题
main()
{inta,b;
scanf("%d%d",a,b);
printf("%d\n",a/b);}
程序纠错后,若从键盘输入15,4,则程
序的运行结果为。
2.上机验证题
main()
{intsum=5,pad=5;
pad=sum++,pad++,++pad;
printf("%d\n",pad);
}
程序运行结果:
main()
{intn=65536;
n++;
printf("%d\n",n);
}
程序运行结果:
3.上机编程题
1、编程从键盘任意输入一个三位数组成的整数,将其个位、十位和百位分离后输出,例输入256,则输出a=2,b=5,c=6。
[程序清单]
[程序运行结果]
实训五分支程序设计
一、实训目的
1、掌握C语言表示逻辑量的方法(0表示“假”,1或非0表示“真”)
2、学会正确使用关系运算表达式和逻辑表达式
3、熟练使用if语句、if-else、switch语句
二、预习内容
1、熟悉关系表达式和逻辑表达式的表示和使用
2、熟悉if语句和if-else、switch语句的格式、作用和用法
三、上机内容
1、找出程序中的错误,并加以简化
#include"stdio.h"
main()
{scanf("%f,%f,%f",&max,&min,&median);
if(max==0)
{min=0;
median=(max-median)/2;}
else
min=max/2;
}
修改程序后:
(1)若从键盘输入0,5,8
则程序的运行结果为。
(2)若从键盘输入5,8,11
则程序的运行结果为。
#include"stdio.h"
main()
{inta;
scanf("%d",&a);
ifa>0
ifa<10
printf("a>0anda<10\n");
}
修改程序后:
(1)若从键盘输入3
则程序的运行结果为。
(2)若从键盘输入-5
则程序的运行结果为。
#include"stdio.h"
main()
{inta=1,b=1,c;
if(c=(a-b))
printf("cis%d\n",c);
}
修改程序后,程序的运行结果为。
2、上机验证程序,并分析结果
main()
{inta=2,b=-1,c=2;
if(a
if(b<0)c=0;
elsec++;
printf(“%d\n”,c);
}
该程序的运行结果是
main()
{inta;
scanf(“%d”,&a);
if(a>50)printf(“%d\n”,a);
if(a>40)printf(“%d\n”,a);
if(a>30)printf(“%d\n”,a);
}
该程序的运行结果是
main()
{intx=10,y=20,t=0;
if(x==y)t=x;x=y;y=t;
printf(“%d%d\n”,x,y);
}
该程序的运行结果是
main()
{intn;
scanf(“%d”,&n);
if(n++<10)printf(%d\n”,n);
elseprintf(“%d\n”,n--);
}
该程序的运行结果是
3、编程题
(1)从键盘任意输入四个int类型的整数,要求将其中的最大数输出。
(2)从键盘任意输入三个int类型的整数,要求将它们按从小到大的顺序输出。
(3)用switch编写一个简单的计数器。
功能:
完成加、减、除运算,但输入“#”时退出。
实训六循环程序设计
一、实训目的
1、掌握while语句、do-while语句和for语句实现循环的方法
2、理解循环结构程序段中语句的执行过程
3、进一步掌握循环结构程序的应用
二、预习内容
熟悉以下语句:
while语句、do-while语句、for、break、continue语句
三、上机内容
1、阅读以下程序,先预测其结果,再上机运行验证:
① main()
{intx=-1;
do{
x=x*x;
}while(!
x);
printf("%d\n",x);
}
运行结果是
③ #include"stdio.h"
main()
{inta,s,n,count;
a=2;s=0;n=1;count=1;
while(count<=7)
{n=n*a;s=s+n;++count;}
printf("s=%d",s);
}
运行结果是
② main()
{inti=1,s=3;
do{s+=i++;
if(s%7==0)continue;
else++i;
}while(s<15);
printf("%d",i);
}
运行结果是
④ #include"stdio.h"
main()
{
intnum=0;
while(num<=2)
{
num++;
printf("%d\n",num);
}
}
运行结果是
1、编程与程序分析
① 编程求1-3+5-7+9-11+……-99+101的值。
② 求出100~999之间的所有水仙花数。
所谓的水仙花数是指其各位数的立方和等于此数本身,例371=33 +73 +13
③ 从键盘输入一组十进制整数,以9999结束,统计其中正数的个数和其中的正数之和。
分析程序的结构:
程序的运行结果:
④ #include"stdio.h"
main()
{intx=1,y=0,a=0,b=0;
for(x=1;x<=4;x++)
{switch(x)
{case1:
switch(y)
{case0:
a++;break;
case1:
b++;break;
}
case2:
a++;b++;break;
case3:
a++;b++;
}
printf("a=%d,b=%d\n",a,b);
}
}
2、思考题
(1)若有语句while(!
x),则退出循环的条件是。
(2)若有语句while(x%2&&y>100),则继续循环条件是,而退出循环的条件是。
(3)while(x=0)与while(x==0)两条语句的循环条件有何区别?
一、实训目的
1、进一步理解分支程序的执行过程
2、进一步理解循环结构程序段中语句的执行过程
3、掌握分支和循环的综合应用程序设计
二、预习内容
熟悉以下语句:
if-else、switch、while语句、do-while语句、for、break、continue语句
三、上机内容
1.完成程序填空
(1)将用户输入的字母以大写字母的形式输出。
main()
{charc;
scanf("%c",&c);
if()
printf("%c\n",c);
}
(2)以下程序打印菱形图案,程序运行时,输入4给变量n,试完整程序(提示:
可以分解为两个三角形)。
main()
{intn,i,j;
printf("ENTERn:
);
scanf();
for(i=1;i<=n;i++)
{for(j=1;;j++)printf("");
for(j-1;;j++)printf("*");
}
for(i=1;i<=n-1;i++)
{for(j=1;;j++)printf("");
for(j-1;;j++)printf("*");
}
}
2.完成以下程序的编程:
(1)编程计算:
(2)“百马百担”问题。
有一百匹马,驮一百担货,大马驮三担,中马驮2担,两匹小马驮一担,试编程计算共有多少种驮法。
实训七一维数组的应用
一、实训目的
1、掌握一维数组的定义、数组元素的引用形式和赋值的方法
2、掌握一维数组的输入和输出的
3、掌握和一维数组有关的典型算法,如求菲波那契数列、最大数、查找、排序等
二、预习内容
1、预习一维数组的定义及引用的一般方法
2、熟悉循环语句和数组处理语句结合的方法
三、实训内容
1、分析和记录以下程序运行结果,并上机验证:
main()
{
intv[5];
inti;
v[0]=197;v[2]=-100
v[4]=350;v[5]=v[0]+v[2];
--v[4];
for(i=0;i<5;i++)
printf("v[%d]=%d\n",i,v[i]);
}
该程序的运行结果是
#include"stdio.h"
main()
{intt,i;
inta[10]={1,2,3,4,5,6,7,8,9,10};
t=a[9];
for(i=9;i>1;i-=2)
a[i]=a[i-2];
a[1]=t;
for(i=0;i<10;i++)
printf("%3d",a[i]);
}
该程序的运行结果是:
2、将程序补充完整,以完成以下功能,并上机调试。
(1)以下程序以每行输出4个数据的格式输出a数组。
(中等难度题)
#include"stdio.h"
{inta[12],i;
for(i=0;i<12;i++)scanf("%d",);
for(i=0;i<12;i++)
{if();
printf("%6d",a[i]);
}
printf("\n");
}
(2)以下程序将数组中的数据按逆序存放。
(中等难度题)
#include"stdio.h"
#defineSIZE12;/*SIZE为常量12*/
main()
{inta[SIZE],i,j,t;
for(i=0;ii=0;j=;
while(i{t=a[i];;;i++;j;}
for(i=0;iprintf("\n");
}
(3)以下程序实现将数组a中的元素按从小到大的顺序排列。
#include"stdio.h"
main()
{inti,j,temp,a[10];
for(i=0;i<10;i++);
for(i=0;;i++)
for(;j
if(){;;;}
for()printf("%d",a[i]);
}
7、编程题:
(1)读入10个整数,求出非负数个数及其和,并将10个整数按从小到大的次序输出。
(2)利用随机函数,生成10个50~60之间的随机整数,并判断是否有55,若有输出它在数组中的下标,否则输出“NODATA!
”。
一、实训目的
1、掌握二维数组的定义和引用;
2、掌握字符串的定义以及它和一维字符数组之间的关系和区别;
3、掌握字符串处理函数的功能和应用。
二、预习内容
1、二维数组的定义和二重循环之间的关系
2、字符串的概念
三、实训内容
1、分析和记录以下程序运行结果,并上机验证:
main()
{intnum[4][4]={11,22,33,44,1,2,3,4,10,20,30,40,12,22,32,42};
inti,j,s=0;
for(j=0;j<3;j++)该程序的运行结果是:
for(i=0;i<3;++i)
if(i==j)s+=num[j][i];
printf("%d\n",s);
}
main()
{inti,j,m,n,a,x[3][4]={43,32,22,13,11,22,33,44,55,11,32,31};
m=n=0;a=x[m][n];
for(i=0;i<3;i++)该程序的运行结果是:
for(j=0;j<4;j++)
if(a>x[i][j]){m=i;n=j;a=x[m][n];}
printf("a=%d,m=%dn=%d\n",a,m,n);
}
2、若有三个字符串s1、s2和s3,其中s1="abcdef",s2="123456",要求用字符数组实现将s1的内容复制到s3中,交将s2的内容添加到s3的后面,最后输出s3。
main()
{chars1="abcdef",s2="123456",s3[20]="";
i=0;j=0;
while()
{s3[i]=s1[i];i++;}
i--;
while(s2[j]!
='\0')
{;j++;}
for()printf("%c",s3[i]);
}
3、下列是打印杨辉三角形的程序,试将程序补充完整,并上机验证:
main()
{inti,j,a[6][6]={0};
for(i=0;i<5;i++)
{a[i][0]=1;;
for(j=1;;j++)
;
}
for(i=0;i<5;i++)
{for(j=0;;j++)
printf("%6d",a[i][j]);
;}
}
4、编程题
(1)从键盘输入十个数对一个一维数组赋值,并将其中的奇数存放到另一个数组中后再输出,并输出奇数的个数。
如:
从键盘输入:
13141734455556767799
则输出:
131745557799
count=6
(2)编程求一个m*n的二维数组中所有元素的最大值,元素可随机产生。
实训八函数的应用
一、实训目的
1、掌握定义函数的方法;
2、掌握函数实参和形参的对应关系,以及“值传递”的方法;
3、掌握数组名作为实参时,实参和形参之间的传递方法
二、预习内容
函数的概念、定义格式、变量的作用域以及调用过程中数据的传递方法。
三、实训内容
1、分析和记录以下程序运行结果,并上机验证:
#include"stdio.h"
main()
{intx=2,y=4;
intswap(int,int);
printf("
(1)inmain:
x=%d,y=%d\n",x,y);
swap(x,y);
printf("(4)inmain:
x=%d,y=%d\n",x,y);
}
swap(inta,intb)
{intt;
printf("
(2)inswap:
a=%d,b=%d\n",a,b);
t=a;a=b;b=t;
printf("(3)inswap:
a=%d,b=%d\n",a,b);
}
运行结果:
2、若将以上程序中的形参a、b对应改为x和y,使其与实参变量同名,记录并分析结果。
4、分析程序运行结果,并验证程序。
staticintx=20;
voidfun1(intx)
{x+=10;
printf("%d......fun1()\n",x);}
fun2()
{x+=10;
printf("%d......fun2()\n",x);}
main()
{intx=10;
fun1(x);
fun2();
printf("%d......main()\n",x);}
运行结果:
3、预测以下程序结果,并上机验证。
voidfun1()
{intx=5;
printf("x=%d\n",x);}
voidfun2()
{printf("x=%d\n",++x);}
main()
{intx=2;
fun1();
fun2(x);
printf("x=%d\n",x);}
运行结果:
6、分析程序运行结果,并验证程序。
intk;/*k为全局变量*/
main()
{k=3;
fun();
printf("%d\n",k);
}
fun()
{k=k*k;}
运行结果:
5、