课程名称:结构化程序设计与C语言 开课实验室: 年 月 日
一、实验目的
用C语言编写和调试数组的程序,包括一维数组和二维数组。从而对数组的程序设计有比较深入的了解。
二、内容及结果
1、程序二 选择排序法
1)题目:用选择法对10个整数排序。
2)代码:
#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]);
printf("\n");
for(j=0;j<9;j++)
for(i=0;i<9-j;i++)
if(a[i]>a[i+1])
{t=a[i];a[i]=a[i+1];a[i+1]=t;}
printf("the sorted numbers:\n");
for(i=0;i<10;i++)
printf("%d",a[i]);
printf("\n");
return 0;
}
3)运行截图:
2、程序二 将一个数组中的值按逆序重新存放。
1)题目:将一个数组中的值按逆序重新存放。
2)代码:
# include <stdio.h>
int main ()
{
int a[5]={8,6,5,4,1};
int i,t;
for(i=0;i<=2;i++)
{
t=a[i];
a[i]=a[4-i];
a[4-i]=t;
}
for(i=0;i<=4;i++)
printf("%d ",a[i]);
return 0;
}
3)运行截图:
3、程序三 输出杨辉三角形(10行)
1)题目: 输出杨辉三角形(10行)
2)代码:
#include<stdio.h>
int main()
{
int yh[10][10]={0};
int i,j;
for(i=0;i<10;i++)
yh[i][0]=1;
for(i=1;i<10;i++)
for(j=1;j<10;j++)
yh[i][j]=yh[i-1][j-1]+yh[i-1][j];
for(i=0;i<10;i++)
{
for(j=0;j<i+1;j++)
printf("%5d",yh[i][j]);
printf("\n");
}
}
3)运行截图:
4、程序四 找出一个二维数组中的鞍点,即该位置上的元素在该行上最大、在该行上最小。也可能没有鞍点。
1)程序要求:找出一个二维数组中的鞍点,即该位置上的元素在该行上最大、在该行上最小。也可能没有鞍点。
2)代码:
#include<stdio.h>
int main()
{
int a[5][5],b[5],c[5],s[5][5],k=0,l=0;
int i,j;
printf("请你输入s[5][5]:\n");
for(i=0;i<5;i++)
for(j=0;j<5;j++)
scanf("%d",&s[i][j]);
for(i=0;i<5;i++)
for(j=0;j<5;j++,a[i][j]=s[i][j]);
for(i=0,k=0;i<5;i++,k++)
for(j=0;j<4;j++)
{
if(a[i][j]>=a[i][j+1])
b[k]=a[i][j+1]=a[i][j];
else
b[k]=a[i][j+1];
}
for(j=0,l=0;j<5;j++,l++)
for(i=0;i<4;i++)
{
if(a[i][j]<=a[i+1][j])
c[l]=a[i+1][j]=a[i][j];
else
c[l]=a[i+1][j];
}
for(i=0,k=0;i<5;i++,k++)
for(j=0,l=0;j<5;j++,l++)
if(s[i][j]-b[k]==0)
{
if(s[i][j]-c[l]==0)
printf("s[%d][%d]=%d\n",i,j,s[i][j]);
else
printf("s[%d][%d]=%d不是鞍点\n",i,j,s[i][j]);
}
return 0;
}
3)运行截图:
三、实验结果、分析和结论:
此次试验主要就是对数组的运用,同时也运用了if条件语句以及for循环语句的运用,让以前的知识点得到了复习。通过对数组的运用,我们首先学会的就是如何对一个数组的定义,然后就是数组的作用,我们运用数组对多个数进行排序和两个数的排序。而在数组中我们运用最多、最广的就是二维数组,所以我们掌握二维数组的相关信息,首先就是怎样定义一个二维数组,其次就是怎样引用二维数组中的元素以及对二维数组的初始化。还有一个重要的数组就是字符数组,此次虽未用到,但也是需要我们掌握的,因此只有我们掌握了各种数组的运用,我们才能正确的把它运用到解题中去。
仲恺农业工程学院实验报告纸
信息学院(院、系) 专业 班 C语言程序设计 课 实验目的:
(1)掌握一维和二维数组的定义、赋值和输入输出方法。
(2)掌握字符数组和字符串函数的使用。
(3)掌握与数组有关的算法。
实验内容与总结:
编程练习
1、输入一个字符串,统计其中字母、数字、空格和其他字符各多少个。
程序如下:
#include <stdio.h>
#define N 100
void main()
{
int i,letter,number,space,other;
char c[N]; letter=number=space=other=0; printf("请输入字符串:\n"); gets(c); for(i=0;i<N&&c[i]!='\0';i++) { if((c[i]>='a'&&c[i]<='z')||(c[i])>='A'&&c[i]<='Z') letter++; else if(c[i]>='0'&&c[i]<='9') number++; else if(c[i]==' ') space++; else other++; } printf("字母 %d 数字 %d 空格 %d 其它字符 %d\n",letter,number,space,other); }
(1)程序编制要点:
①一维数组的定义、赋值和输入输出方法;
②gets函数的表达。
(2)该题目涉及的知识点和难点:
①一维数组的输入输出;
②for语句的输入与使用;
③if语句的使用;
④gets函数的使用。
2、输出杨辉三角形。教材p153-7.6
程序如下:
#include<stdio.h>
#define N 10
void main()
{
int i,j,a[N][N]; /*数组为10行10列*/
printf("杨辉三角形的前10行如下:\n");
for(i=0;i<N;i++) { a[i][0]=1; /*使第1列的元素值为1*/ a[i][i]=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("%5d",a[i][j]); printf("\n");
}
(1)程序编制要点:
①二维数组的定义、赋值和输入输出方法;;
②用for语句实现循环;
(2)该题目涉及的知识点和难点:
①宏定义;
②二维数组的输入输出;
③for语句的输入与使用。
3、餐饮服务质量调查打分
在商业和科学研究中,人们经常需要对数据进行分析并将结果以直方图的形式显示出来。例如,一个公司的主管可能需要了解一年来公司的营业状况,比较一下各月份的销售收入状况。如果仅给出一大堆数据,这显然太不直观了,如果能将这些数据以条形图(直方图)的形式表示,将会大大增加这些数据的直观性,也便于数据的分析与对比。下面以顾客对餐饮服务打分为例,练习这方面的程序编写方法。
假设有20个学生被邀请来给自助餐厅的食品和服务质量打分,分数划分为1~5这5个等级(1表示最低分,5表示最高分),试统计调查结果,并用*打印出如下形式的统计结果直方图。
Grade Count
1
2
Histogram ***** ********** 第 2 页 共 3 页 5 10
3
...
程序如下: 7 *******
#include<stdio.h>
void main()
{
int score[20]; int count[6]={0}; int i,j; for(i=0;i<20;i++) { printf("请输入第%d位同学对自助餐厅食品和服务质量的打分(1~5分):\n",i+1); scanf("%d",&score[i]); count[score[i]]++; } printf("统计调查结果如下:\n"); printf("Grade Count Histogram\n"); for(i=1;i<=5;i++) { printf("%2d %6d ",i,count[i]); for(j=0;j<count[i];j++) printf("*");
printf("\n");
}
}
(1)程序编制要点:
①数组输入输出;
②用for语句实现循环。
(2)该题目涉及的知识点和难点:
①整型int,scanf函数;
②数组的输入输出及使用;
③for语句的输入与使用。
程序代码和运行情况描述:
在实验1中,当程序运行时,先初始化数据letter=number=space=other=0,输入字符串后,自动统计其中字母、数字、空格和其他字符各多少个。
在实验2中,先定义一个二维数组,然后用for语句实现循环,杨辉三角形的前10行的计算在循环中执行。
在实验3中,定义一个数组score[20]和count[6]。用for语句实现循环,统计的次数在循环中自增:第一个for语句用来实现对20个学生给自助餐厅的食品和服务质量的打分的输入与统计;第二个for语句统计输出的Grade与Count的数值;第三个for语句实现条形图(*)的长度。
学生实验报告学院软件与通信工程学院课程名称C语言与程序设计专业班级通信121姓名学号学生实验报告4一实验综述1实验目的及要求1一维…
北京联合大学信息学院程序设计基础课程调研研究报告题目姓名学号专业计算机科学与技术编制时间20xx528版本指导教师北京联合大学信息…
学生实验报告实验课名称数组函数综合实验实验项目名称数组函数综合实验专业名称测控技术与仪器班学级20xx240801号20xx240…
C语言程序设计实验报告数组1实验目的1熟练掌握一维数组二维数组的定义初始化和输入输出方法2熟练掌握字符数组和字符串函数的使用3掌握…
计算机科学与技术系C语言实验报告实验名称:指针及其应用日期:得分:指导老师:专业:班次:姓名:学号:实验目的(1)掌握变量的指针及…
学生实验报告实验课名称数组函数综合实验实验项目名称数组函数综合实验专业名称测控技术与仪器班学级20xx240801号20xx240…
学生实验报告学院软件与通信工程学院课程名称C语言与程序设计专业班级通信121姓名学号学生实验报告4一实验综述1实验目的及要求1一维…
北京联合大学信息学院程序设计基础课程调研研究报告题目姓名学号专业计算机科学与技术编制时间20xx528版本指导教师北京联合大学信息…
1编写power函数该函数的功能是得到从键盘输入的两个数的X值要求在主函数中调用power函数实现求解从键盘上输入二进制数字要求将…