} 思考:
? 将A行改为下列程序段:
int n; cin>>n; int a[n]”
观察运行结果?分析原因。
? 将B行改为“for(i=1;i<=10;i++)”,观察现象。 2.应用二维数组打印如图5-1所示杨辉三角形。
分析:由杨辉三角形可以看出每行数存在以下规律:每行数据的个数与行序相同;每行的第一个数和最后一个数均为1;中间的数为上一行同一列的数和其前一列的数之和。
解:
1
#include
1 1
void main()
1 2 1
{
1 3 3 1
int y[5][5];
1 4 6 4 1
int i,j,n=5;
图5-1 杨辉三角形
for(i=0;i { } for(i=0;i<=8;i++) { for(j=i+1;j<=9;j++) { if(a[i] { t=a[i]; a[i]=a[j]; a[j]=t; } } } cout<<\排序结果为:\ for(i=0;i<=9;i++) cout<<\ y[i][i]=1; y[i][0]=1; } 1 for(i=2;i ? 添加语句输出如图5-2所示杨辉三角形。 3.从键盘输入两个字符串,将它们连接成一个字符串。 分析:建立两个变量i、j,先使i指向字符数组str1的第一个元素,然后移动i使其指向str1的末尾,即指向str1的最后一个元素‘\\0’;再使j指向字符数组str2的第一个元素,然后将str2中的元素分别赋给str1中相应位置的元素,直到str2结束为止,即j指向str2的最后一个元素‘\\0’;最后在str1的末尾添加一个结束标志‘\\0’。 程序如下: 解: #include char str1[40],str2[20]; //定义字符数组str1、str2 int i,j; cout<<\输入二个字符串:\ cin.getline(str1,20); //输入字符串1到str1中 cin.getline(str2,20); //输入字符串2到str2中 i=0; //使i指向str1的第一个元素 while (str1[i]!='\\0') //判断str1是否结束 i++; //str1没有结束,使i指向下一个元素 j=0; //使j指向str2的第一个元素 while (str2[j]!='\\0') //判断str2是否结束 { str1[i]=str2[j]; //str2没有结束,将str2[j]赋给;str1[i] i++; //使i指向str1的下一个元素 j++; //使j指向str2 的下一个元素 } str1[i]='\\0'; //在str1末尾添加结束标志‘\\0’ cout< 4.编程序将输入的字符串删去空格后输出。 分析:逐个读取每个字符,若为空格将其后面的字符和字符串结束标志前移一位,再从该位置开始,重复上述操作,直到字符串结束。 解: #include { if(str[i]==' ') { //B j=i; while(str[j]!=NULL) { str[j]=str[j+1]; j++; } } i++; } cout< ? 将程序中A行的“\”用“'”改写,观察现象。 ? 将程序中B行的“'”用“\”改写,观察现象。 ? 将程序中C行改写为: for(j=1;str[j]!=NULL;j++,cout< ? 编程序将输入字符串中出现的字符除空格外,按从大到小的顺序输出(每个字符只输出一次)。 (二)完成实验项目 1.编程实现将一十进制整数M转换为D进制数。 2.已知一int a[20]数组,编程将值为偶数的元素移到数组前端,值为奇数的元素移到数组后端。(要求元素比较、移动次数尽量最少) 3.求S?1?4?7?10?13???n,其中n≥20。 4.某班有10个学生,进行了“数学”、“语文”、“英语”、“C++语言”等科目的考试,编写程序: (1) 将考试成绩输入一个二维数组; (2) 求每门课的平均成绩、每门课的不及格学生的人数及每门课的最高分与最低分; (3) 求每个学生的平均成绩、总分、不及格门数; (4) 按学生平均成绩的高低排序并输出。 5.设计一个程序,打印杨辉三角形。(使用其它方法) 6.编写程序,实现str=str1+str2的操作,此处运算符“+”表示将二个字符串str1、str2连接成一个字符串str。用键盘将二个字符串输入字符数组str1与str2中,连接后的字符串存放在字符数组str中,并输出连接后的字符串str。 471013n四、课后作业 1. 设A、B、C为m行n列矩阵。设计矩阵加法程序,能完成C=A+B的操作。m与n用define定义为常量,其值由用户自定义。 2. 已有一按从小到大次序排序好的数组,现输入一数,要求用折半查找法找出该数在数组中的位置。 3. 撰写实验报告。 五、实验机时 4个标准学时。 实验六 函数调用 一、目的和要求 1.了解函数的定义方法,理解函数的调用; 2.初步掌握函数的递归、嵌套调用; 3.了解函数调用的实参与形参的传递,以及参数默认值的设置。 4.学习并了解重载函数、内联函数的基本概念。 二、实验设备及分组 1. Windows2000以上操作系统; 2. Visual C++6.0语言环境; 3. 每人一台PC机。 三、内容和步骤 (一)验证实验程序 1.编写一个函数,用递归的方法求1+2+3+4+?+n的值。在主函数中进行输入输出。 解: #include } void main(void) { int x,sum; cout<<\请输入X的值\ cin>>x; sum=fun(x); cout<<\求和结果为:\ }