实验6 数组

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
{ change=0; for(j=0;j<=i;j++)
if(a[j]>a[j+1]) {
t=a[j]; a[j]=a[j+1]; /*调试时设置断点*/ a[j+1]=t; change=1; } }
printf("Sorted data:\n");
/*调试时设置断点*/
for(i=0;i<num;i++)
int i,j,num,a[num]; int change,t;
printf("Enter Number: "); scanf("%d",&num); printf("Enter Data: \n"); for(i=0;i<num;i++)
scanf("%d",&a[i]); for(i=num-1,change=1;i>0 && change;i--)
4. 编程:输入一个m*n矩阵,求他们的各行元素之和。例如:
Input m , n: 2 2 Input 2*2 matrix: 45 56
sum[0]=9 sum[1]=11
5. 编程:判断一个二维数组是否存在鞍点,若存在,则输出鞍点及 其行号和列号;否则输出没有鞍点信息。“鞍点”是指这样的元素:它在 本行是最大元素,而在本列是最小的元素。
如:输入: this is a cat! 输出: 4个单词; 每个字母出现次数t:2 h:1 i:2 s:2 a:2 c:1 This Is A Cat!
源代码(有错误的程序) #include <stdio.h> #include <string.h> void main() {
int i,j; char s[80],result[80]; printf("Enter a string:\n"); gets(s); for(i=strlen(s)-1,j=0;i>=0;i--,j++) {
二、二维数组实验
1. 以下程序功能为:将下列矩阵中的元素向右移动一列,最后一列 移至第一列。找出并改正以下源程序中错误,通过调试得出正确的运行 结果。
146 8 10 12 源程序(有错误的程序) #include <stdio.h> #define ROW 2 #define COL 3
intБайду номын сангаасmain() {
读入三个字符串str1,str2,str3
输出这三个字符串
分别求出这三个字符串的长度;
比较str1和str2的大小;
将str2连接到str1之后,并输出连接后的str1;
复制str3到str1,并输出复制操作后的str1;
选作题:
输入一个小写字母组成的英文句子,统计该句子有几个英文单 词,并统计每个字母出现的次数,并将句子中每个单词的首字母大写 后输出。
Input a string: adg4521gadg4adg number: 5 6. 编程:从一个字符串中删除从某个特定字符开始的所有字符。例 如原字符串为"abcdefg",特定字符为'd',删除后的字符串为"abc"。 7. 编程:编写程序,从一个输入的字符串中抽取一部分(从第n个字 符开始,抽取m个字符)构成一个新的字符串,并输出。要求:n和m都 由用户输入。 8. 编程:利用字符串库函数puts, gets, strcat, strcmp, strcpy, strlen完成 下述操作:
result[j]=s[i]; } printf("This is reverse string:\n"); puts(result); } 运行结果(改正后的程序) Enter a string : asdfg This is the reverse string:
gfdsa 2. 编程:任意输一个字符串保存在一维字符数组中,求其长度(不 用strlen函数)。例如: Input a string: aadfdg length=6 提示:字符串的有效长度就是有效字符的个数,即数组中第一 个‘\0’前面的字符个数。 3. 编程:任意输入两个字符串分别保存在一维字符数组中,把第二 个字符串连接到第一个字符串末尾(不用strcat函数)。例如: Input two string: asdfg erty after strcat: asdfgerty 4. 编程:从键盘读入两个字符串分别保存在一维字符数中,比较两 个字符串大小(不用strcmp函数),输出较大的字符串。 5. 编程:任意输入一个字符串保存在一维字符数组中,判断里面数 字字符的个数。例如:
Input n: 6 1 11 121 1331 14641 1 4 10 10 5 1 提示:第一列及对角线上的元素都是1,其他元素通过计算得出:
如果用i表示行,j表示列,则第i行j列的元素
3. 编程:通过键盘输入3行4列的二维数组,分别按行和按列输出数 组。例如:
Input numner: 1234 5678 9 10 11 0 output by row: 1 2 3 4 5 6 7 8 9 10 11 0 output by col: 1 5 9 2 6 10 3 7 11 4 8 0
5. 编程:用两种方法输出斐波那切数列的前40项(参考例6-4)。 要求: (1)方法1:不使用数组;
(2)方法2:使用一维数组。 6. 编程:输入n个(1<n<=10)float型的数据并保存到数组中,用冒 泡法或选择法将它们从大到小排序后输出。例如:
Input n: 5 Input 5 number: 8.5 2.3 5.1 1.4 4.9 After sorted: 8.50 5.10 4.90 2.30 1.40 7. 在上题基础上(输入n个float型的数据并保存到数组中,用冒泡 法或选择法将它们从大到小排序后输出)完成:在已经排好序的数组 (长度不足10)中插入一个数m(键盘输入)后输出,保持数组的降序 排列。
printf("%d ",a[i]);
printf("\n");
}
运行结果(改正后程序的运行结果)
Enter Number:6
Enter Data:23 77 14 89 6 68
Sorted data:6 14 23 68 77 89
说明: 程序编译时出现的错误信息是指定义数组a时,数组长度必须是常 量,把a[num]改为a[50]即可,重新编译连接没有错误,但是输出结果有 误。为了找出程序的问题,关闭运行窗口,准备调试程序。 调试程序的步骤: (1)设置断点:设置2个断点,具体位置见源程序的注释。
实验6 数组
【实验目的】
1. 熟练掌握使用数组编程的方法。 2. 熟练掌握排序算法。 3. 熟练掌握字符串的存储和操作方法。
【实验内容】
一、一维数组实验
1. 以下程序功能为:输入一个正整数n,再输入n个整数,将它们排 序后由小到大输出。找出并改正以下源程序中错误,得出正确的运行结 果。
源程序(有错误的程序) #include <stdio.h> void main() {
int a[ROW][COL]={1,4,6,8,10,12}; int i,j,temp;
for(i=0;i<ROW;i++)
{
temp=a[i][COL-1];
for(j=COL-2;j>=0;j--)
{
a[i][j]=a[i][j+1]; /*调试时设置断点*/
}
a[i][0]=temp;
/*调试时设置断点*/
在当前光标所在行设置或取消断点
(2)点击调试工具栏上的
(Go)按钮,输入2个数据:22 止。观察数组a中的数据正确。
,11;程序运行到第一个断点处停
变量值显示 调试工具栏,可以进行单步执行,终止调试等操作
(3)继续点击
(Go)按钮,观察a中数据是否正确,直到程序运行到第二个断点: a[1]中的数据有问题,为什么呢?本来数组真正存储了2个元素,但是后 面交换的时a中第2个元素交换了a中的第3个元素,而a中第3个元素是一 个随机值,所以结果不正确了。
}
for(int i=0;i<ROW;i++) {
for(j=0;j<COL;j++) printf("%6d",a[i][j]);
printf("\n"); } return 0; } 运行结果(改正后程序的运行结果) 614 12 8 10
2. 编程:利用二维数组计算并打印一个n行的杨辉三角。例如:
3. 编程:输入n个(1<n<=10)正整数并保存到数组中,求出最大 值、最小值、平均值,以及最大值、最小值在数组中的下标分别是多 少。例如:
Input n: 5 Input 5 integer: 8 2 5 1 4 max=8 index=0 min=1 index=3 average=4
4. 编程:青年歌手参加歌曲大奖赛,有10个评委对她(他)进行打 分,试编程求这位选手的平均得分并输出(去掉一个最高分和一个最低 分)。
Input m , n: 2 2 Input 2*2 matrix: 45 56 i=0, j=1, saddle point: 5 提示:找鞍点需要处理三件事情:(1)找每行中最大值所在的列 下标;(2)判断该元素在本列上是否为最小;(3)判断是否找到了鞍 点,若找到,输出。
三、字符串实验
1. 以下程序功能为:输入一个字符串,将其逆序输出。找出并改正 以下源程序中错误,通过调试得出正确的运行结果。
(4)找出问题后,点击调试工具栏
(Stop
Debugging)按钮停止调试,把程序中的“j<=i”改为“j<i”后,重
新编译并运行程序,得到正确结果。
2. 编程:输入长度为10的整型数组并输出;然后将其逆序存放后再 输出。例如:
Input 10 number: 0 1 2 3 4 5 6 7 8 9 After reversed: 9 8 7 6 5 4 3 2 1 0
相关文档
最新文档