桂 林 理 工 大 学

实  验  报  告

班级 计算机类20 学号32020520 姓名  实验名称实验 数组 日期 2020年 11月28

一、实验目的:

  1. 熟悉掌握一维数组和二维数组的定义和使用
  2. 了解各种数组的输入输出
  3. 了解字符数组和字符串函数的使用
  4. 掌握和数组有关的算法(排序算法)

二、实验环境:

    PC + Windows +Visual C++6.0  

三、实验内容:

(主要内容的文字及贴图)

例题:请上机调试以下例题,并理解算法思想

例 6.3冒泡法排序选择法

#include <stdio.h>

int main()

{

int a[10];

int i,j,t;

printf("input 10 numbers :\n");

for(i=0;i<10;i++)//for循环输出数组

scanf("%d",&a[i]);

printf("\n");

//开始冒泡排序

for(j=0;j<9;j++)//外层循环控制比较的趟数,一般为数组长度-1

for(i=0;i<9-j;i++)//内存循环控制每一趟比较多少次,一般为数组长度-外层循环变量-1

if(a[i]>a[i+1])//升序,如果前面大于后面则交换

{t=a[i];a[i]=a[i+1];a[i+1]=t;}//引入变量作为交换媒介

for(i=0;i<10;i++)//for循环输出数组

printf("%d ",a[i]);

printf("\n");

return 0;

}

例 6.3选择法排序

#include <stdio.h>

int main()

{

int a[10];

int i,j,t;

printf("input 10 numbers :\n");

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

{

scanf("%d",&a[i]);

}

for(i=0;i<10-1;i++)//只用比较9个数

{

for(j=i+1;j<10;j++)//第一个数与后面的数逐个比较

{

if(a[i]>a[j])

{

t=a[i];a[i]=a[j];a[j]=t;

}

}

}

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

{

printf("%d ",a[i]);

}

return 0;

}

例 6.4  矩阵的行列互换

#include <stdio.h>

int main()

{

int a[2][3]={{1,2,3},{4,5,6}};

int b[3][2],i,j;

printf("array a:\n");

for(i=0;i<2;i++)//行

{

for(j=0;j<3;j++)//列

{

printf("%5d",a[i][j]);

b[j][i]=a[i][j];

}

printf("\n");

}

printf("array b:\n");

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

{

for(j=0;j<2;j++)//列

{

printf("%5d",b[i][j]);

}

printf("\n");

}

return 0;

}

例6.9  比较三个字符串的大小

#include <stdio.h>

#include <string.h>

int main()

{

char str[3][20];

char string[20];

int i;

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

gets (str[i]);

if(strcmp(str[0],str[1])>0)//strcmp-字符串比较函数,若str[0]>str[1]

strcpy(string,str[0]);//strcpy-字符串复制函数,把str[0]的字符串赋给字符数组string

else

strcpy(string,str[1]);//否则把str[1]的字符串赋给字符数组string

if(strcmp(str[2],string)>0)//若str[2]>str[0]

strcpy(string,str[2]);//把str[2]的字符串赋给字符数组string

printf("\nthe largest string is :\n%s\n",string);

return 0;

}

习题:

  1.  实现选择法排序 
  2. 求一个n*n(n<10)数组左下三角(包括主对角线)元素的和。

输入格式:

先输入n(n<10)值,然后再输入各个数组元素值。

###输入样例:

2

1 2

3 4[回车]

输出格式:

输出左下三角(包括主对角线)全部元素的和。

### 输出样例:

8

#include<stdio.h>

int main()

{

int a[10][10],n;

int i,j;

int sum = 0;

scanf("%d",&n);

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

{

for(j = 0; j < n; j++)

{

scanf("%d",a[i]+j);

}

}

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

{

for(j = 0; j <= i; j++)//不给(0,1)相加 0,0 0,1 1,0 1,1

sum +=  a[i][j];

}

printf("%d\n",sum);

return 0;

}

3.

#include <stdio.h>

#define N 100

int main()

{

int i,j,n,a[N][N];

printf("输入一个n*n的整型n:\n");

scanf("%d",&n);

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

for(j=0;j<n;j++)

scanf("%d",&a[i][j]);

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

for(j=0;j<n-i-1;j++)

a[i][j]=10;

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

{

for(j=0;j<n;j++)

{

if(a[i][j]>9)

{

printf("  ");

}

else printf("%d ",a[i][j]);

}

printf("\n");

}

return 0;

}

4

#include <stdio.h>

#define N 100

int main()

{

int i,j,n,a[N][N];

printf("输入一个n*n的整型n:\n");

scanf("%d",&n);

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

for(j=0;j<n;j++)

scanf("%d",&a[i][j]);

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

{

for(j=0;j<n-i;j++)

{

printf("%d ",a[i][j]);

}

printf("\n");

}

return 0;

}

  1. 输入一行字符,统计各种字母、数字、空格的个数

#include <stdio.h>

#define N 100

int main()

{

int i,letter=0,space=0,number=0,other=0;

char a[N];

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

{

a[i]=getchar();

if(a[i]==' ')

space++;

else if(a[i]>='a'&&a[i]<='z'||a[i]>='A'&&a[i]<='Z')

letter++;

else if(a[i]>='0'&&a[i]<='9')

number++;

else

other++;

}

printf("letter=%d,space=%d,number=%d,other=%d",letter,space,number,other);

return 0;

}

  1. 判断N阶矩阵是否为对称矩阵,对阵矩阵任意下标i和j的元素满足A[i][j]等于A[j][i] (习题6.4)

#include<stdio.h>

#define m 10

int main()

{

int A[m][m],i,j,flag=0,n;

printf("请输入n*n矩阵:\n");

scanf("%d",&n);

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

for(j=0;j<n;j++)

scanf("%d",&A[i][j]);

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

{

for(j=0;j<n;j++)

{

if(A[i][j]!=A[j][i])

flag=1;

break;

}

if(flag==1)

break;

}

if(flag==1)

printf("\n%d阶矩阵是为非对称矩阵\n",n);

else printf("\n%d阶矩阵是为对称矩阵\n",n);

return 0;

}

7 杨辉三角

#include <stdio.h> //1.各行第一个数都是1

#define N 10//2.各行最后一个数都是1

int main()//从第3行起,除上面指出的第1个数和最后一个数外,其余各数是上一行同列和前一列两个数之和

{

int i,j,a[N][N];

for(i=0;i<N;i++)//数组为10行10列

{

a[i][i]=1;//使对角线元素的值为1

a[i][0]=1;//使第1列元素的值为1

}

for(i=2;i<N;i++)//从第3行开始处理

for(j=1;j<=i-1;j++)

a[i][j]=a[i-1][j-1]+a[i-1][j];//精华公式

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

{

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

printf("%6d",a[i][j]);

printf("\n");

}

printf("\n");

return 0;

}

8输入一个字符串,统计有多少其中有多少个单词(习题6.8)

#include<stdio.h>

int main()

{

char string[81];

int i,num=0,word=0;//提供变量

char c;

gets(string);//输入字符串函数,输入一个字符串给字符数组string

for(i=0;(c=string[i])!='\0';i++)// \0字符串结束标志,空字符串

if(c==' ')//如果当前字符为空格,

word=0;//提供变量

else if(word==0) //如果当前字符不为空格并且前一字符为空格(word=0)

{word=1;//提供变量

num++;

}

printf("There are %d words in this line.\n",num);

return 0;

}

9、IP地址转换(一个IP地址是用四个字节(每个字节8个位)的二进制码组成。请将32位二进制码表示的IP地址转换为十进制格式表示的IP地址输出。

输入格式:输入在一行中给出32位二进制字符串。

输出格式:在一行中输出十进制格式的IP地址,其由4个十进制数组成(分别对应4个8位的二进制数),中间用“.”分隔开。

输入样例:

11001100100101000001010101110010

输出样例:

204.148.21.114

#include<stdio.h>

#include<math.h>

int main()

{

int b=0,c=0,d=0,e=0,j=7;

int i;

char a[32];

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

scanf("%c",&a[i]);

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

{

b=(a[i]-'0')*pow(2,j)+b;

j=j-1;

}

printf("%d.",b);

j=7;

for(i=8;i<16;i++)

{

c=(a[i]-'0')*pow(2,j)+c;

j=j-1;

}

printf("%d.",c);

j=7;

for(i=16;i<24;i++)

{

d=(a[i]-'0')*pow(2,j)+d;

j=j-1;

}

printf("%d.",d);

j=7;

for(i=24;i<32;i++)

{

e=(a[i]-'0')*pow(2,j)+e;

j=j-1;

}

printf("%d",e);

return 0;

}

四、心得体会(150字以上)

通过本次实验,熟悉掌握一维数组和二维数组的定义和使用,了解各种数组的输入输出,了解字符数组和字符串函数的使用,掌握和数组有关的算法(排序算法)。

桂 林 理 工 大 学实 验 报 告实验五 数组相关推荐

  1. 桂 林 理 工 大 学实 验 报 告 实验名称实验六 函数

    桂 林 理 工 大 学 实  验  报  告 班级 计算机类2 学号320205 姓名  实验名称实验六 函数 日期 2020年 12月7日 一.实验目的: 掌握定义函数.声明函数的方法. 掌握调用函 ...

  2. 桂 林 理 工 大 学实 验 报 告实验四 选择结构程序设计

    桂 林 理 工 大 学 实  验  报  告 班级 计算机类 学号3202052 姓名  实验名称实验四 选择结构程序设计          日期  2020年 11月22 日 一.实验目的: 熟悉掌 ...

  3. 桂林理工大学 计算机网络 实 验 报 告 静态路由实验

    桂 林 理 工 大 学 实  验  报  告 班级   计算机类   学号   3202052  姓名       同组实验者   无    实验名称             静态路由实验       ...

  4. c#语言程序设计上机实验,《C#语言程序设计》实 验 报 告

    <<C#语言程序设计>实 验 报 告>由会员分享,可在线阅读,更多相关<<C#语言程序设计>实 验 报 告(20页珍藏版)>请在人人文库网上搜索. 1. ...

  5. 计算机网络基础北邮,北邮 大三下 计算机网络技术实践 实验五_图文

    北邮 大三下 计算机网络技术实践 实验五_图文 更新时间:2017/1/22 21:54:00  浏览量:691  手机版 实验报告 课程名称: 计算机网络技术基础 实验名称: 实验五 以太网数据传输 ...

  6. 大数据技术原理与应用实验五

    实验:五 实验题目:熟悉常用的HDFS操作-利用Java API编程实现 1.实验目的 · 熟悉HDFS操作常用的Java API. 2.实验平台 · Hadoop 2.7.1 · Eclipse · ...

  7. 南京邮电大学电工电子基础B实验五(串联谐振电路)

    RLC串联谐振电路 一. 实验目的 1.研究RLC串联谐振电路的幅频特性: 2.加深理解品质因数Q与电路其他参量的关系: 二. 主要仪器设备及软件 硬件:函数信号发生器.示波器.万用表.电阻.电感.电 ...

  8. 大学计算机实验在林学的应用,大学计算机实验6实验报告.pdf

    深 圳 大 学 实 验 报 告 课程名称: 计算机基础 实验名称: 演示文稿制作 学院: 建筑与城市规划学院 专业: 建筑学 报告人: XXX 学号: 2015XXX 班级: XXXXXX 同组人: ...

  9. 沈阳工程学院计算机网络实训报告,计算机网络实验报告(2).pdf

    精品文档 沈 阳 工 程 学 院 学 生 实 验 报 告 (课程名称:计算机网络) 实验题目: 2 网络拓扑结构设计及组网实验 班 级 计算机 161 实验地点 信息学院网络实验室 姓 名 刘强 阎书 ...

最新文章

  1. removeAllViews()和removeAllViewsInLayout()之间的区别?
  2. [EntLib]微软企业库5.0 学习之路——第七步、Cryptographer加密模块简单分析、自定义加密接口及使用—上篇...
  3. 使用 cout 输出数据之控制输出格式(二)
  4. 你们考试,我们都有点紧张呢…
  5. Java后端开发需要具备哪些知识结构
  6. Web.config的配置
  7. Android Wear计时器开发
  8. 【Python3爬虫】快就完事了--使用Celery加速你的爬虫
  9. mac scp工具_Mac远程ssh连接乌班图并实现爬虫操作
  10. [POJ 1273]Drainage Ditches
  11. 我想去做机器学习 接下来发一些机器学习实战的算法
  12. mybatis学习笔记(10)-一对一查询
  13. 安装php-zbarcode的步骤方法
  14. linux命令应用大词典.pdf,Linux命令应用大词典
  15. 燕山大学高数AⅠ复习资料
  16. windows平台使用Docker搭建分布式hadoop集群
  17. 【数据挖掘】2022年2023届秋招奇虎360机器学习算法工程师 笔试题
  18. 网页加载Java特别慢_打网页打开速度慢,教你3分钟解决
  19. 计算机考研数学考数学二的专业,2018考研数学:过来人教你如何数学二考到130!...
  20. 理解计算:从根号2到AlphaGo 第3季 神经网络的数学模型

热门文章

  1. 弄懂这56个Python使用技巧,掌握Python高效开发
  2. php 中文转义问题
  3. VBA中数组72变(随心所欲复制)
  4. 2022K+全球软件研发行业创新峰会议题海选精彩进行中
  5. 冷门又实用的Excel技巧知识,还不来看看嘛
  6. 《超越感觉:批判性思考指南》读书笔记
  7. APS智能排产帮助LNG船舶生产厂家充分利用产能,提升生产效益
  8. 欧姆龙NX1P2编程学习(1)-编写功能块注意事项
  9. python和excel相关的是什么知识点_Python 与 Excel 不得不说的事
  10. 单片机胡汉才第四版答案_单片机课后习题答案__胡汉才编