C语言数组实验报告

loading 分享 2026-8-10 下载文档

,.

实验名: 数组

一、 实验目的

1、掌握数组定义的规则。 2、掌握 C语言数组的基本用法。

二、实验内容

(一)) 题目 1

1、编写程序,测试下列数组的定义方式是否正确 (1) main()

{

int n;

scanf( “%d”,&n); int a[n];

}

(2) main() {

const int n=10; int a[n]; }

(3) #include #define M 10 main() {

int a[M];

}

(4) main() {

int a[2+2*4];

}

(5) #include #define M 2 #define N 8 main() { int a[M+N];

}

通过这一实验 , 可以说明什么问题 ?

; .

,.

2、输入和输出信息描述及数据类型确定; (1)、输入数据

序号 (1) (2) (3) (4) (5)

输入数据描述 n,a[n] n a[n] a[M] 或a[10] a[2+2*4] a[M+N]

数据类型 int cons tint int int int int

3、程序调试 错误序号

错误信息(列出出错语句以及出错提示)

expression before '%' token| scanf( “%d”,&n);

(1-2 ) main.c|6|warning: unused

variable 'a'

[-Wunused-variable]| int a[n];

(5)

main.c|6|warning: unused variable 'a'

[-Wunused-variable]| int a[M+N];

是否 解决 是

解决方法

将%d两边的符号改为西文字符的引号scanf(\

(1-1 ) main.c|5|error: expected

将前面的 n的输入去掉,把 n改为具体数字

加上个scanf( “ %d”,&a[M+N]);

4、相关问题回答

通过这一实验 , 可以说明什么问题 ?

1、( 2)( 3)( 4)( 5)对,( 1)错,( 1)中 a[n] 的数组定义的【】里的常量表达式不能是变量。 2、一维数组定义的时候【】里的常量表达式包括常量和符号常量,但不能是变量。

(二)) 题目 2

1、运行下面的 C程序 , 根据运行结果 , 可以说明什么 ? main( )

{ int num[5]={1,2,3,4,5}; inti i;

for(i=0;i<5;i++) printf( “%d”,num[i]); }

2、输入和输出信息描述及数据类型确定;

输入数据 序号 1

输入数据描述 num[5],i 出数据 序号 1

输出数据描述 num[i]

数据类型 int 数据类型 int

3、程序源代码(填写程序调试正确后的代码) #include int main( )

; .

{

int num[5]={1,2,3,4,5}; /* 定义 num[5]*/ int i;

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

下标应该是 0到4*/

printf(\

/* 依次输出 num[0] 至num[4]*/

return 0; }

4、程序调试

错误 错误信息(列出出错语句以及出错

是否解决

解决方法

序号 提示)

1 格式不对

2 main.c|5|error: unknown type 是

改为 int i;

name 'inti'| inti i;

3 main.c|7|error: expected 是

将引号改为西文字符

expression before '%' token| printf( “%d”,num[i]);

4

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

去掉等号

5、相关问题回答运行结果: 12345

根据运行结果 , 可以说明什么 ?

说明:数组元素的下标从 0开始,比定义的时候会小一个。

(三)) 题目 3

1、操作符 &用以求一个变量的地址,这在函数 scanf 中已经使用过了。现在要你设计一个程序,返回一个3 * 5 的二维数组各元素的地址 , 并由此说明二维数组中各元素是按什么顺序存诸的。

2、输入和输出信息描述及数据类型确定;

输入数据

序号 输入数据描述 数据类型 1 a[3][5],i.j int

2

adress 整型指针变量

出数据

序号 输出数据描述 数据类型 1

adress

int

3、程序源代码(填写程序调试正确后的代码) #include int main() {

int a[3][5];

int *adress; //

定义并初始化 adress

int i,j;

for(i=0;i<3;i++) //

每行循环

{

printf(\for(j=0;j<5;j++) //

每列循环

{

adress=&a[i][j];

//

将adress 赋值为整型指针变量

printf(\

; .

,.

,.

} } return 0; }

4、测试与结果分析 (1)、测试数据与结果 源文 件名

可执行文件 名

测试 序号 1

测试用例选取原 因 无

测试输入 数据 无

测试输出结果

是否 正确 是

结果分析

无误

(四)) 题目 4

为一个起泡排序程序设计测试用例,并测试之。1、程序源代码(填写程序调试正确后的代码) #include int main( ) {

int a[10]; int i,j,k; printf(\

//

请输入 10个数字 :\\n\

//

// // // //

//

定义一维数组 a[10]

for(i=0;i<=9;i++) scanf(\ printf(\for(j=0;j<9;j++) for(i=0;i<9-j;i++) if(a[i]>a[i+1]) { k=a[i]; a[i]=a[i+1]; a[i+1]=k; } printf(\

排序后的数字为: \\n\

//

依次输出排序后的数字

for(i=0;i<=9;i++) printf(\printf(\return 0; }

依次输入数组的数字 换行

进行 9次循环,实现 9趟比较 在每一趟中进行 9-j 次比较 相邻两数比较

若后一个比前一个大,则交换位置

2、输入和输出信息描述及数据类型确定;

输入数据 序号 1

输入数据描述 a[10],i,j,k 出数据 序号

输出数据描述

数据类型 数据类型 int

; .

,.

1 a[i] int

3、程序调试 错误 序号 1

错误信息(列出出错语句以及出错 提示)

输出结果间无空格

是否 解决是

在最后一个 printf(

“ %d”的 d后面加空格

解决方法

4、测试与结果分析

(1)、测试数据与结果

源文 可执行文件 测试 测试用例选取原 测试输入 测试输出结果

是否 件名 名

序号 因 数据 正确 1

测试用例

1 12 13 14 1 12 13 14 15 67 是

15 56 67

78 80 89

78 89 80

(五)) 题目 5

1、1983年, 在ACM图林奖颁奖大会上 , 杰出的计算机科学家 ,UNIX 的鼻祖 ,C 语言的创始人 之一, 图林大奖得主 ,Ken Thompson 上台的第一句话是 : “我是一个程序员 , 在我的 1040表上 , 我自豪地写上了我的职业。作为一个程序员,我的工作就是写程序,今天我将向大家提供一个我曾经写过的最精练的程序。”这个程序如下: char s []={ ‘\\t ’, ‘0’, ‘\\n ’, ‘} ’, ‘; ’, ‘\\n ’, ‘\\n ’, ‘/ ’, ‘* ’, ‘\\n ’,

/* (213 lines deleted)*/ 0 } ; /*

* The string is a

* representation of the body * of this program from ‘0’

* to the end */ main( ) { int i;

printf( “char

” };

; .

结果分析

无误


C语言数组实验报告.doc 将本文的Word文档下载到电脑
搜索更多关于: C语言数组实验报告 的文档
相关推荐
相关阅读