三、实验内容和步骤
1、下面的程序功能是求出任意两个数的最小值,填空完成程序。
1#include<>
2main()
3{floata,b,c;
4printf(“pleaseinputtwonumber);
5scanf(“___”,&a,&b);
6if(a
7elsec=b;
8printf(“thesmalleris_____”,c);
9}
调试无语法错误后,分别使用下列测试用例对上述程序进行测试:
(1)
运行结果:
____________________________
(2)-86
运行结果:
____________________________
(3)33000
运行结果:
____________________________
2、下面的程序功能是按照由小到大的顺序输出任意三个数,填空完成程序。
1#include<>
2main()
3{floata,b,c,t;
4scanf(“%f%f%f”,_________);
5if(a>b){t=a;a=b;b=t;}
6if(a>c){t=a;a=c;c=t;}
7if(b>c){t=b;b=c;c=t;}
8printf(“%,%,%”,___________);}
调试无语法错误后,分别使用下列测试用例对上述程序进行测试:
(1)
运行结果:
____________________________
(2)-86
运行结果:
____________________________
(3)33000
运行结果:
____________________________
3、下面的程序功能是从一个3行4列的矩阵中找出最小的那个元素的值,以及其所在的行号和列号,填空完成程序。
1main()
2{inti,j,row=0,colum=0,min;
3inta[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}};
4min=a[0][0];
5for(i=0;i<=2;i++)
6for(j=0;j<=3;j++)
7if(____________________)
8{min=a[i][j];
9row=i;
10colum=j;}
11printf(“min=%d,row=%d,colum=%d\n”,min,row,colum);}
输出结果为:
_______________________________________。
四、分析讨论
1、程序1的第6行和第7行可以用条件表达式_____________________代替。
2、假设a,b,c,d均为整型,以下语句借助于中间变量t把a,b,c,d的值进行交换,即把b中的值给a,把c中的值给b,把d中的值给c,把a中的值给d。
填空:
________________________________________________。
3、若有inti,j;对于一个二维数组a[5][6],若要显示第3行的所有元素(从第0行计数),引用语句为______________________________________。
五、进一步实验
编程实现找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小。
也可能没有鞍点。
实训二数学问题
一、目的和要求
1、学会利用C语言程序解决数学问题;
2、熟悉常用数学函数的作用及用法;
3、熟练掌握条件语句及循环控制等语句。
二、实验原理和程序算法
1、C语言系统提供了很多标准函数即库函数,用户不必关心这些函数的构成可以直接使用它们。
调用格式:
#include“”或#include“”。
2、数a判断条件a%2==0,奇数判断条件:
a%2==1。
3、和的做法sum+=t;通过循环语句改变加数t,不断增加sum的值。
三、实验内容和步骤
1、调用库函数,求以下的函数值:
1.cos2)lg903)4)
5)tan
1)
a)#include“”
b)main()
c){floatc;
d)c=cos;
e)printf(“c=%\n”,c);}
运行结果:
_____________________
参考库函数说明,完成其他程序,第4行分别表示为:
2)____________________________运行结果为:
_________________
3)____________________________运行结果为:
_________________
4)____________________________运行结果为:
_________________
5)____________________________运行结果为:
_________________
2、下程序能够求出0~100之间全部偶数之和。
1main()
2{intm,sum;
3sum=0;
4for(m=0;m<=100;________)
5______________________________
6printf(“sum=%d\n”,sum);}
运行结果为:
__________________________
3、用
公式求π的近似值,直到最后一项的绝对值小于10-4为止。
1#include“”
2main()
3{ints;
4floatn,t,pi=0;
5t=n=s=;
6while(fabs(t)>=1e-4)
7{pi=pi+t;
8n+=______;
9s=-s;
10t=________;}
11pi*=4;
12printf(“pi=%f\n”,pi);}
运行结果为:
_____________________________________________________
4、打印形状为直角三角形的九九表。
1
24
369
481216
510152025
61218243036
7142128354249
816243240485664
91827364554637281
1main()
2{inti,j,k;
3printf(“*”);
4for(i=1;i<10;i++)
5printf(“%4d”,i);
6printf(“\n”);
7for(j=1;j<10;j++)
8{printf(“%2d”,j);
9for(k=1;k<=j;k++)
10printf(“%4d”,______);
11printf(“\n”);}}
12
四、分析讨论
总结循环语句的不同类型和用法。
五、进一步实验编程求
实训三数学应用题
一、目的和要求
1、通过简单数学应用问题的解决,建立利用C语言解决实际问题的初步认识;
2、掌握基本语句的应用,以及特类问题的常用算法。
二、实验内容和步骤
1、输入矩形的两条边长,求矩形的面积。
1#include“”
2main()
3{floata,b,area;
4scanf(“%f,%f”,&a,&b);
5area=a*b;
6printf(“a=%f,b=%f,area=%f\n”,a,b,area);}
调试无语法错误后,分别使用下列测试用例对上述程序进行测试:
(1),运行结果:
____________________________
(2)160,55运行结果:
____________________________
2、以下程序能够判断任意年份是否闰年。
1main()
2{intyear,leap;
3scanf(“%d”,&year);
4if(_____________________________________________)leap=1;
5elseleap=0;
6if(______)printf(“%dis”,year);
7elseprintf(“%disnot“,year);
8printf(“aleapyear.\n”);}
调试无语法错误后,分别使用下列测试用例对上述程序进行测试:
(1)1996运行结果:
____________________________
(2)2000运行结果:
____________________________
(3)2003运行结果:
____________________________
3、递增的牛群:
若一头小母牛,从第四年开始每年生一头母牛,按此规律,第n年时有多少头母牛。
i.main()
ii.{
iii.inti,year,f,f1,f2,f3;
iv.printf(“enteryear:
”);
v.scanf(“%d”,&year);
vi.for(i=1;i<=year;i++)
vii.{if(i<4)f=f1=f2=f3=1;
viii.else{________________________________}
ix.printf(“i=%2d,n=%3d\n”,i,f);}}
调试无语法错误后,分别使用下列测试用例对上述程序进行测试:
(1)5运行结果:
____________________________
(2)7运行结果:
____________________________
4、换零钱。
把一元钱全兑换成硬币,有多少种兑换方法。
1main()
2{inti,j,k,n;
3n=100;
4k=0;
5for(i=0;i<=n/5;i++)
6for(j=0;___________;j++)
7{printf(“5cent=%d\t2cent=%d\t1cent=%d\n”,i,j,n-i*5-j*2);
8k++;}
9printf(“totaltimes=%d\n”,k);}
记录运行结果,其中totaltimes=_____________。
三、分析讨论
1、if(leap==1)可以等价为if(__________)或if(______________);if(leap==0)可以等价为if(________________)或if(_____________)等。
2、总结在printf函数中可以使用的各转义字符及其功能。
四、进一步实验
从键盘输入三个数,让它们代表三条线段的长度。
请写一个判断这三条线段所组成的三角形属于什么类型(不等边、等腰、等边或不能构成三角形)的C语言程序。
实训四字符串问题
一、目的和要求
1、学会利用C语言程序给字符串加密和解密;
2、学会利用C语言程序给字符串插入或删除指定字符;
3、熟悉常用的字符、字符串函数。
二、实验原理和程序算法
1、字符在计算机系统中的存放方式是ASCII码,用特定的ASCII码值代表特定字符。
A~Z:
(65-90),a~z:
(97~122)
2、字符串可以通过字符数组组织起来,例如:
a[30]=”student”;通过数组下标分别引用各个元素。
3、常见的字符函数有putchar(),getchar(),字符串函数有puts(),gets(),strcpy(),strcmp(),
strlen(),strlwr(),strupr()等。
三、实验内容和步骤
1、为了使电文保密,往往按照一定规律将其转换成密码,收报人再按照约定的规律将其译回原文。
例如有以下规律:
将A变成E,a变成e,即变成其后第4个字母,W变成A,X变成B,Y变成C,Z变成D。
任意输入一个字符串对其加密,完成程序。
1、#include<>
2、main()
3、{charc;
4、printf(“pleaseinputastring:
\n”);/*请输入一个字符串*/
5、while(c=getchar()!
=’\n’)
6、if(c>=’a’&&c<=’z’||c>=’A’&&c<=’Z’)
7、{c=_____________;
8、if(c>’Z’&&c<=’Z’+4||c>’z’)_____________;}
9、printf(“%d”,c);}}
调试无语法错误后,分别使用下列测试用例对上述程序进行测试:
(1)student运行结果:
____________________________
(2)holidy运行结果:
____________________________
2、编写一个函数del_str(chara[],charb[],intn),实现将指定位置的字符删除。
1、intLen=10;
2、voiddel_str(chara[],charb[],intn)
3、{inti,j=0;
4、for(i=0;i5、if(_______________)
6、{___________________;
7、__________________;}}
8、#include<>
9、main()
10、{charstr1[10],str2[10];
11、intn;
12、printf(“enterthestring:
”);
13、gets(str1);
14、printf(“enterthepositionofthestringdeleted:
”);
15、scanf(“%d”,&n);
16、del_str(str1,str2,n);
17、printf(“thenewstringis:
%s”,str2);
调试无语法错误后,分别使用下列测试用例对上述程序进行测试:
(1)student3运行结果:
____________________________
(2)happyholidy5运行结果:
____________________________
3、输入三个字符串,要求找出最大者,完成程序。
1、#include<>
2、main()
3、{charmax[20];
4、charstr[3][20];
5、inti;
6、for(i=0;i<3;i++)
7、gets(str[i]);
8、if(strcmp(str[0],str[1])>0)____________________;
9、else__________________________;
10、if(_____________________)strcpy(max,str[2]);
11、printf(“\nthelargetstringis:
\n”,max);}
调试无语法错误后,分别使用下列测试用例对上述程序进行测试:
(1)studentteacherstudy运行结果:
____________________________
(2)englishmathcprogram运行结果:
____________________________
四、分析讨论
1、程序1的第8行,完成什么功能____________________________。
2、字符数组长度若为10,当从键盘输入多于10个字符时,系统如何处理。
3、如何引用一维数组、多维数组以及字符数组
4、总结常用字符、字符串函数的用法。
五、进一步实验
1、有一行文字,要求删去某个字符。
此行文字和要删去的字符均由键盘输入,要删
去的字符以字符形式输入。
2、设计两个函数strupr(charstr[])和strlwr(charstr[])将一个字符串中的字母全部变成大写或小写。
实训五统计问题
一、目的和要求
1、学会利用C语言程序针对给定条件进行各类统计;
2、学会利用C语言程序给字符串插入或删除指定字符;
二、实验原理和程序算法
统计问题记载即查找整个范围,对满足条件的项目进行统计,一般要用到if条件语句和计数器变量。
三、实验内容和步骤
1、统计100以内的全部素数个数并逐个输出。
1、#include<>
2、main()
3、{intm,k,i,num=0;
4、for(m=3;m<100;m+=2)
5、{k=_______________;
6、for(_________;i<=k;i++)
7、if(m%i==0)break;
8、if(_________){printf(“%d”,m);num++;}
9、if(n%10==0)printf(“\n”);}
调试无语法错误后,运行结果:
____________________________
2、输入一行字符,统计其中有多少个单词,单词之间用空格隔开。
10、#include<>
11、main()
12、{charstring[81];
13、inti,num=0,word=0;
14、charc;
15、_______________________;/*从键盘接收一个字符串*/
16、for(i=0;(c=_____________)!
=’\0’;i++)
17、for(c==’‘)word=0;
18、elseif(word==0)
19、{word=1;
20、num++;}
21、printf(“Thereare%dwordsintheline.\n”,num);}
调试无语法错误后,分别使用下列测试用例对上述程序进行测试:
(1)iamastudent.运行结果:
____________________________
(2)icanusecomputerwell.运行结果:
_________________________
四、进一步实验
从键盘人一输入一个整数,求出其中0的个数和最大的数字。
实训六排序问题
一、目的和要求
熟练掌握C语言程序的各种排序方法。
二、实验原理和程序算法
1、起泡法排序原理:
将相邻两个数比较,将小的调到前头。
2、选择法排序原理:
将所有数中的最小数放到第一个位置,再从剩下的数中找出最大数放到第二个位置,以此类推。
三、实验内容和步骤
1、用起泡法对10个数排序(有小到大),完成程序。
1、main()
2、{inta[10];
3、inti,j,t;
4、printf(“input10numbers:
\n”);
5、for(i=0;i<10;i++)
6、scanf(“%d”,&a[i]);
7、printf(“\n”);
8、for(j=1;j<=9;j++)
9、for(i=0;_______________;i++);
10、if(____________________)
11、{t=a[i];a[i]=a[i+1];a[i+1]=t;}
12、printf(“thesortednumbers:
\n”);
13、for(______________;________________;i++);
14、printf(“%d”,a[i]);}
调试无语法错误后,分别使用下列测试用例对上述程序进行测试:
(1)2304167895运行结果:
____________________________
(2)9753124680运行结果:
____________________________
2、用选择法对数组中10个整数按由小到大排序。
编写sort(intarray[],intn)函数实现此功能。
1、voidsort(intarray[],intn)
2、{inti,j,k,t;
3、for(i=0;__________;i++)
4、{k=i;
5、for(_____________;j6、if(__________________)k=j;
7、{t=array[k];array[k]=array[i];array[i]=t;}
8、main()
9、{inta[10],i;
10、printf(“enterthearray:
\n”);
11、for(_______________________)/*从键盘输入10个数字存入a数组*/
12、scanf(______________________________);
13、sort(_______________________);/*函数调用*/
14、printf(“thesortedarray:
\n”);
15、for(_______________________________)/*输出数组*/
16、printf(______________________);
17、printf(“\n”);}
调试无语法错误后,分别使用下列测试用例对上述程序进行测试:
(1)2304167895运行结果:
____________________________
(2)9753124680运行结果:
____________________________
3、将一个数组中的值按照逆序重新存放。
例如,原来顺序为6,5,4,3,2。
要求改为2,3,4,5,6。
1、#defineLEN5
2、main()
3、{inta[LEN],b[LEN],i,j;
4、for(i=0;i5、scanf(“%d”,&a[i]);
6、for(