第4次上机作业

更新时间:2023-10-13 19:23:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

华 中 科 技 大 学

《计算机基础与程序设计(C++)》

实 验 报 告

实验名称:第四次上机实验 实验学时: 姓名: 学号: 实验日期: 一、实验目的

? 掌握一维数组的定义、输入、输出和基本操作。 ? 掌握二维数组的定义、输入、输出和基本操作。 ? 掌握字符串的存储和访问。

? 使用数组处理解决实际问题的能力。 ?

动态数组的访问

二、实验内容 1.阅读程序

1)#include

#include using namespace std; int main() { int n=5; int i,a[n]; for(i=0;i>a[i]; cout<

return 0;

}

运行上述的程序,改正其中的错误,并解释错误原因。 正确代码:

#include #include using namespace std; int main() { int i; int a[5];

班级: 教师批阅签字: for(i=0;i<5;i++) { cin>>a[i]; cout<

调试错误:

Subscript requires array or pointer type. 原因:数组元素个数不能是实数?

2)#include

#include using namespace std; int main()

{ int i,a[5]={0,1,2,3,4}; for(i=0;i<=5;i++) cout<

运行上述的程序,其结果是否正确,如不确请修改正确,并解释原因。

正确代码:

#include #include using namespace std; int main() { int i,a[5]={0,1,2,3,4}; for(i=0;i<=5;i++) cout<

3) #include

using namespace std; int main( ) { char rstr[10 ]=\ int i;

for(i=0; rstr[i]!='\\0'; i++) //循环条件可以写成 rstr[i]!=0; 或 rstr dstr[i]=rstr[i];

cout<<\输出字符串dstr:\ return 0; }

上述程序的功能是将字符串rstr复制到目标串dstr中,运行该程序结果是否正确,如不正确请修改正确,并解释原因。

正确代码:

#include using namespace std; int main( ) { char rstr[10]=\ int i;

for(i=0; rstr[i]!='\\0';i++) //循环条件可以写成 rstr[i]!=0; 或 rstr dstr[i]=rstr[i]; dstr[i]='\\0';

cout<<\输出字符串dstr:\ return 0; }

解释原因:

因为赋值时原串的’\\0’并没有赋值给目标串,所以循环结束后一定要加上语句dstr[i]='\\0';否则程序运行会出现异常。

4) #include

using namespace std; int main( ) {

char name1[]={'a','b','c','d'}; char name2[]=”abcd”; for(i=0;i<4;i++) cout<

cout<

运行上述程序,比较三种输出的异同,并解释原因。

输出1和输出2:字符数组name1的处理与数值型数组没有差异,因为结尾没有’\\0’,没有构成c++字符串,若用输出2语句“cout<

输出3:输出的是字符串,初始化时直接用字符串常量赋值。 5)#include

using namespace std; int main( )

{int a=10, b=20,*p=&a,*q; cout<

cout<

*q=b;

cout<

编译调试上述程序,如有错误请修改,并解释原因。

5)int a[5]={1,2,3,4,5}; int *p=a;

在上述语句的基础上,请用5种方式输出数组a的各元素。参考教材P142页

for(i=0;i<5;i++)

cout<

cout<<*(p+i)<<””; //指针表示法 for(i=0;i<5;i++)

cout<<*(a+i)<<””; //下标表示法 for(i=0;i<5;i++)

cout<

cout<<*(p++)<<””; //通过移动指针p指向不同的元素

2. 编程题

1)定义包含 10 个元素的一维数组,输入输出各元素的值,然后求出最大值将其与第一个数交换位置后再输出。 要求:

? 程序原代码。(直接粘贴在此) #include #include using namespace std; int main() {

int a[10];

int i,max,j,temp;

cout<<\请输入10个数:\

for(i=0;i<10;i++)

cin>>a[i]; max=a[0];

for(i=0;i<10;i++) { if(max

max=a[i]; j=i; } }

temp=a[0];

a[0]=a[j]; a[j]=temp;

cout<<\交换后数组\for(i=0;i<10;i++) {

cout<

cout<

? 解决本题的算法思路描述

利用了经典交换语句实现最大值和第一个数交换,其中j是最大值下标:

temp=a[0];

a[0]=a[j]; a[j]=temp;

? 调试过程的记载(包括出现的错误,以及修改过程)

? 归纳本题应用的知识点或算法

2)编写一个程序,定义 5 行 4 列二维数组,并对前 4 行 4 列的元素赋值,计算二维数组前 4 行各列之和,且将每列之和放于各列最后一行的位置,然后输出该二维数组(按行列的格式输出)。 要求:

? 程序原代码。(直接粘贴在此)

#include #include using namespace std; int main( ) {

int i, j; int a[5][4];

cout<<\请输入\请输入前四行四列元素:\

本文来源:https://www.bwwdw.com/article/hs1f.html

Top