实验六 数组程序设计
【实验目的】
1、掌握使用一维数组编程方法
2、掌握使用二维数组进行程序设计
【实验内容】
一、上机验证程序,并分析结果
要求:读懂程序,写出分析结果;上机运行程序,得到运行结果,比较之。
1、#include <stdio.h>
int main()
{ int a[ ]={1,2,3,4,5} , i, j, s=0 ;
j = 1;
for ( i = 4 ; i>=0 ; i--)
{
s = s+ a[i] * j ;
j = j * 10 ;
}
printf(" s= %d \n" , s );
return 0;
}
分析结果 | |
运行结果 | |
二、程序改错题
1.下面程序的功能,是从键盘输入一个数组〔数组长度为10〕,查数组中正数的个数。源代码如下,程序中存在错误,请将其改正。
#include <stdio.h>
int main()
{
int a(10);/*定义数组*/
int count,i;/* i循环变量 count 正数个数*/
for(i=0;i<=10;i++)
{/*循环输入*/
scanf("%d",a[i]);
}
count=1;
for(i=0;i<=10;i++)
{/*查正数*/
if(a(i)>0)
count++;
}
printf("数组中正数有:%d个\n",count);
return 0;
}
三 编写程序
1.编写程序要求输入30个学生的单科成绩,输出高于平均分的成绩。
#include <stdio.h>
#define N 30
int main()
{
float score[N],sum=0,aver;
int i;
for(i=0;i<30;i++)
{
scanf("%f",&score[i]);
sum=sum+score[i];
}
aver=sum/30;
printf("平均分为:%.2f\n",aver);
for(i=0;i<N;i++)
if(score[i]>aver)
printf("%.2f ",score[i]);
printf("\n");
return 0;
}
2.编写程序:假设有13位评委参与评分工作。计算每位歌手最终得分的方法是:去掉一个最高分和一个最低分,然后计算剩余11个分数的平均值,所得结果就是选手的最终得分。
#include<stdio.h>
#define N 13
int main()
{
int score[N],sum=0,i,high,low;
for(i=0;i<N;i++)
{
printf("请输入第%d位评委成绩:",i+1);
scanf("%d",&score[i]);
sum+=score[i];
}
high=score[0];
low=score[0];
for(i=0;i<N;i++)
{
if (high<score[i]) high=score[i];
if (low>score[i]) low=score[i];
}
printf("歌手最后得分为:%g\n",(float)(sum-high-low)/(N-2));
}
3. 假设给定一个书籍编号的数组〔数组大小和数据自己设定〕,查某本书是否在此数组中个,如果有,显示查成功以及该书在数组中的下标,否则显示查失败。
#include<stdio.h>
#define N 5
int main()
{
int a[N],i,flag=0,s;
printf("请输入书籍编号:\n");
for (i=0;i<N;i++)
scanf("%d",&a[i]);
printf("请输入需要查的书籍编号:\n");
scanf("%d",&s);
for (i=0;i<N;i++)
{
if(a[i]==s)
{ flag=1; break;
}
}
if(flag)
printf("查成功!编号为%d的书籍的位置是%d\n",s,i+1);
else
printf("查失败!请确认书籍编号是否正确!\n");
return 0;
}
4. 编写程序验证冒泡法排序
#include <stdio.h>
int main()
{ int a[11],i,j,t;
printf("Input 10 numbers:\n");
for(i=1;i<11;i++)
scanf("%d",&a[i]);
printf("\n");
for(i=1;i<=9;i++)
for(j=1;j<=10-i;j++)
if(a[j]>a[j+1])
{t=a[j]; a[j]=a[j+1]; a[j+1]=t;}
printf("The sorted numbers:\n");
for(i=1;i<11;i++)
printf("%d ",a[i]);
return 0;
}
5. 编写程序验证选择法排序
方法一:
#include <stdio.h>
int main()
{ int a[11],i,j,k,temp;
printf("Input 10 numbers:\n");
for(i=1;i<11;i++)
scanf("%d",&a[i]);
for(i=1;i<10;i++)
{ k=i;
for(j=i+1;j<11;j++)
if(a[j]<a[k]) k=j;
if(i!=k)
{ temp=a[i]; a[i]=a[k]; a[k]=temp;}
}
printf("The sorted numbers:\n");
for(i=1;i<11;i++)
printf("%d ",a[i]);
return 0;
}
方法二:
c语言二维数组表示方法#include <stdio.h>
#define NUM 10 /* 参与排序的数据个数 */
int main()
{
int data[NUM]; /* 存放参与排序的所有整数 */
int i, j, minValue, temp;
/* 通过键盘输入待排序的整型数列 */
printf("\nEnter %d integers.", NUM);
for (i=0; i<NUM; i++) {
scanf("%d", &data[i]);
}
/* 选择排序 */
for (i=0; i<NUM-1; i++) {
minValue = i;
for (j=i+1; j<NUM; j++) { /* 选择i~NUM-1之间的最小数值 */
if (data[j]<data[minValue])
minValue = j;
}
if (minValue!=i) { /* 交换 */
temp = data[i];
data[i] = data[minValue];
data[minValue] = temp;
}
}
/* 输出排序后的结果 */
printf("\nOrdering list is:\n");
for (i=0; i<NUM; i++) {
printf("%5d", data[i]);
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论