实验名:数组一、实验目的1、掌握数组定义的规则。
2、掌握C语言数组的基本用法。
二、实验内容) 题目11、编写程序,测试下列数组的定义方式是否正确(1) main(){int n;scanf(“%d”,&n);int a[n];……}(2) main(){const int n=10;int a[n];}(3) #include <stdio.h>#define M 10main(){int a[M];}(4) main(){int a[2+2*4];}(5) #include <stdio.h>#define M 2#define N 8main(){ int a[M+N];}通过这一实验,可以说明什么问题?2、输入和输出信息描述及数据类型确定;、输入数据序号输入数据描述数据类型(1)n,a[n] int(2)na[n] cons tint int(3)a[M]或a[10] int (4)a[2+2*4] int (5)a[M+N] int 3、程序调试错误序号错误信息(列出出错语句以及出错提示)是否解决解决方法(1-1)main.c|5|error: expectedexpression before '%' token|scanf(“%d”,&n);是将%d两边的符号改为西文字符的引号scanf("%d",&n);(1-2)main.c|6|warning: unusedvariable 'a'[-Wunused-variable]|int a[n];是将前面的n的输入去掉,把n改为具体数字(5) main.c|6|warning: unusedvariable 'a'[-Wunused-variable]|int a[M+N];是加上个scanf(“%d”,&a[M+N]);4、相关问题回答通过这一实验,可以说明什么问题?1、(2)(3)(4)(5)对,(1)错,(1)中a[n]的数组定义的【】里的常量表达式不能是变量。
2、一维数组定义的时候【】里的常量表达式包括常量和符号常量,但不能是变量。
) 题目21、运行下面的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 int(2)输出数据序号输出数据描述数据类型1 num[i] int3、程序源代码(填写程序调试正确后的代码)#include <stdio.h>int main( ){int num[5]={1,2,3,4,5}; /*定义num[5]*/int i;for(i=0;i<5;i++) /*下标应该是0到4*/ printf("%d",num[i]);/*依次输出num[0]至num[4]*/return 0;}4、程序调试错误序号错误信息(列出出错语句以及出错提示)是否解决解决方法1 格式不对是2 main.c|5|error: unknown typename 'inti'|inti i;是改为 int i;3 main.c|7|error: expectedexpression before '%' token|printf(“%d”,num[i]);是将引号改为西文字符4 for(i=0;i<5;i++) 是去掉等号5、相关问题回答运行结果:12345根据运行结果,可以说明什么?说明:数组元素的下标从0开始,比定义的时候会小一个。
) 题目31、操作符&用以求一个变量的地址,这在函数scanf中已经使用过了。
现在要你设计一个程序,返回一个3 * 5 的二维数组各元素的地址,并由此说明二维数组中各元素是按什么顺序存诸的。
2、输入和输出信息描述及数据类型确定;、输入数据序号输入数据描述数据类型1 a[3][5],i.j int2 adress 整型指针变量(2)输出数据序号输出数据描述数据类型1 adress int3、程序源代码(填写程序调试正确后的代码)#include <stdio.h>int main(){int a[3][5];int *adress; //定义并初始化adressint i,j;for(i=0;i<3;i++) //每行循环{printf("\n");for(j=0;j<5;j++) //每列循环{adress=&a[i][j]; //将adress赋值为整型指针变量printf("%d ",adress);}}return 0;}4、测试与结果分析、测试数据与结果源文件名可执行文件名测试序号测试用例选取原因测试输入数据测试输出结果是否正确结果分析1 无无是无误) 题目4为一个起泡排序程序设计测试用例,并测试之。
1、程序源代码(填写程序调试正确后的代码)#include <stdio.h>int main( ){int a[10]; //定义一维数组a[10]int i,j,k;printf("请输入10个数字:\n");for(i=0;i<=9;i++)scanf("%d",&a[i]); //依次输入数组的数字printf("\n"); //换行for(j=0;j<9;j++) //进行9次循环,实现9趟比较for(i=0;i<9-j;i++) //在每一趟中进行9-j次比较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("%d ",a[i]); //依次输出排序后的数字printf("\n");return 0;}2、输入和输出信息描述及数据类型确定;、输入数据序号输入数据描述数据类型1 a[10],i,j,k int(2)输出数据序号输出数据描述数据类型1 a[i] int3、程序调试错误序号错误信息(列出出错语句以及出错提示)是否解决解决方法1 输出结果间无空格是在最后一个printf(“%d”的d后面加空格4、测试与结果分析、测试数据与结果源文件名可执行文件名测试序号测试用例选取原因测试输入数据测试输出结果是否正确结果分析1 测试用例 1 12 13 1415 56 6778 89 801 12 13 14 15 6778 80 89是无误) 题目51、1983年,在ACM图林奖颁奖大会上,杰出的计算机科学家,UNIX 的鼻祖,C 语言的创始人之一,图林大奖得主,Ken Thompson 上台的第一句话是:“我是一个程序员,在我的1040表上, 我自豪地写上了我的职业。
作为一个程序员,我的工作就是写程序,今天我将向大家提供一个我曾经写过的最精练的程序。
”这个程序如下:char s []={‘\t’,‘0’,‘\n’,‘}’,‘;’,‘\n’,‘\n’,‘/’,‘*’,‘\n’,/* (213 lines deleted)*/};/** The string is a* representation of the body* of this program from ‘0’* to the end*/main( ){ int i;printf(“char \ts[]={\” };for (i=0;s[i];i++)printf(“\t%d,\n”,s[i]);printf(“%s”,s);}请上机运行这个程序,指出它的功能和运行结果。
2、程序源代码(填写程序调试正确后的代码)#include<stdio.h>char s []={'\t','0','\n','}',';','\n','\n','/','*','\n',/* (213 lines deleted)*/};/** The string is a* representation of the body* of this program from '0'* to the end*/int main( ){int i;printf("char \ts[]={\n" );for (i=0;s[i];i++)printf("\t%d,\n",s[i]);printf("%s",s);return 0;}3、程序调试错误序号错误信息(列出出错语句以及出错提示)是否解决解决方法1 所有的引号和逗号格式不对是都改为西文字符2 main.c|22|error: expected '=',',', ';', 'asm' or'__attribute__' before '{'token|是在main前加int3 main.c|23|warning: missingterminating " character[enabled by default]|printf("char \ts[]={\" }; 是改为printf("char \ts[]={\n" );4 格式不完整是加上include,return 0;4、相关问题回答请上机运行这个程序,指出它的功能和运行结果。
答:功能输出字符串的数值。
5、测试与结果分析、测试数据与结果源文件名可执行文件名测试序号测试用例选取原因测试输入数据测试输出结果是否正确结果分析1 测试用例是无误) 题目61、题目内容描述在下面的 5×5 魔方矩阵中,每一行、每一列、每一对角线上的元素之和都是相等的,试编写程序将这些魔方矩阵中的元素读到一个二维整型数组中,然后,检验其是否为魔方矩阵,并将其按如下格式显示到屏幕上。