实验四字符数组与字符串
一、实验目的
●了解并掌握一维数组与二维数组的定义方法
●了解并掌握一维数组与二维数组的初始化方法及元素的引用方法
●了解并掌握字符串、字符串数组以及字符串函数的使用方法
二、实验环境
●个人计算机一台,PIII500(或同等性能)以上CPU,128MB以上内存,500MB以
上硬盘剩余空间。
●Windows2000、Windows XP或Win 7操作系统
●Code::Blocks(版本12.11或近似版本,英文版)
三、实验内容
1. 冒泡排序
编写程序,实现如下功能:从键盘上输入整数n(n<=100),再输入n个整数,以冒泡排序算法将n个整数按从小到大的顺序进行排序。
/*example-14.c*/
#include "stdio.h"
int main()
{
int num[100], n, i, j, t;
/*输入整数的数量n*/
printf("Input n(<=100):");
scanf("%d", &n);
/*输入n个整数*/
printf("Input %d numbers:\n", n);
for(i=0; i<n; i++)
scanf("%d", &num[i]);
/*排序前先输出n个整数,检查输入是否有误*/
printf("Before sorting:\n");
for(i=0; i<n; i++)
printf("%d ", num[i]);
printf("\n");
/*按从小到大的顺序进行冒泡排序*/
/*输出排序后的数据*/
printf("After sorting:\n");
for(i=0; i<n; i++)
printf("%d ", num[i]);
return 0;
}
2. 选择排序
编写程序,实现如下功能:从键盘上输入整数n(n<=100),再输入n个整数,选择泡排序算法将n个整数按从小到大的顺序进行排序。
/*example-15.c*/
#include "stdio.h"
int main()
{
int num[100], n, i, j, t;
/*输入整数的数量n*/
printf("Input n(<=100):");
scanf("%d", &n);
/*输入n个整数*/
printf("Input %d numbers:\n", n);
for(i=0; i<n; i++)
scanf("%d", &num[i]);
/*排序前先输出n个整数,检查输入是否有误*/
printf("Before sorting:\n");
for(i=0; i<n; i++)
printf("%d ", num[i]);
printf("\n");
/*按从小到大的顺序进行选择排序*/
/*输出排序后的数据*/
printf("After sorting:\n");
for(i=0; i<n; i++)
printf("%d ", num[i]);
return 0;
}
3. 矩阵
在以下程序的横线中填上适当的语句或表达式,并上机运行。
下列程序定义了N×N的二维数组,并已在主函数中复制,如下所示。
请求出该二维数组周边元素的平均值。
0 1 2 7 9
1 9 7 4 5
2 3 8 3 1
4 5 6 8 2
5 9 1 4 1
该矩阵的周边元素是第0行、第4行、第0列和第4列上的所有元素。
其平均值为3.375。
/*example-16.c*/
#include <stdio.h>
#define N 5
main()
{
/*二维数组赋初值*/
int a[N][N] = {{0,1,2,7,9}, {1,9,7,4,5}, {2,3,8,3,1},
{4,5,6,8,2}, {5,9,1,4,1}};
int i, j;
/*sum存放累加和,ave存放平均值*/
float sum, ave;
/*清零*/
/*累加第0行的元素*/
for(i = 0; i < N; i++)
/*累加第N-1行的元素*/
for(i = 0; i < N; i++)
/*累加第0列的元素*/
for(i = 1; i < N - 1; i++)
/*累加第N-1列的元素*/
for(i = 1; i < N - 1; i++)
/*求平均值*/
printf("The average is: %f\n", ave);
}
【解题提示】
注意四个角上元素,a[0][0]既属于第0行又属于第0列,a[0][N-1]既属于第0行又属于第N-1列,a[N-1][0]既属于第N-1行又属于第0列,a[N-1][N-1]既属于第N-1行又属于第N-1列,不要累加两次。
4. 字符串操作
从键盘上输入两个字符串str1和str2,若str1>str2,则将str2连接到str1的后面;若相
等,则将str2复制到str1中;若str1<str2,则将str1连接到str2的后面。
最后将结果输出。
例如,输入abcde和abcda,则输出abcdeabcda;若输入abcde和abcdf,则输出abcdfabcde;若输入abcde和abcde,则输出abcde。
/*example-17.c*/
#include "stdio.h"
#include "string.h"
int main()
{
char str1[100], str2[100];
printf("Input one string:");
/*消除输入上一个字符串时最后的回车*/
getchar();
printf("Input another string:");
if( >0)
{
;
printf("%s", str1);
}
if( ==0)
{
printf("%s", str1);
}
if( <0)
{
printf("%s", str2);
}
return 0;
}
四、总结与思考
数组是程序设计当中最常用到的数组结构,它可以模拟各种线性结构以及矩阵。
掌握数组,可以大大地提高程序设计能力,解决许多实践当中的问题。
字符串是文本处理问题当中经常要用到的,对于字符串的问题一定要把握好字符数据的本质以及字符串的结束标记。