实验项目4:数组1
例项目名为:2013050201_***_01)
1.运行下面的c程序。
运行结果:
1 2 3 4 5 0
分析:
赋值的时候num[0]=1 num[1]=2 num[2]=3 num[3]=4 num[4]=5 num[5]=0
2.运行下面的c程序:
1)从键盘输入字符串:how are you,观察结果。
(4)如果现改为20个元素的数组,怎样修改程序?修改程序后,运行程序进行检查。如果需要数组元素不断改变,应怎样修改程序?
答:将数组a【10】扩大范围就可以,要输入2.个数,就把定义为a【20】
将输入函数改为随机数函数
#include<stdio.h>
int main()
{
int a[10],i,j,k,max,min;
a[0]=1;a[1]=1;i=2;
for(i=2;i<40;i++)
a[i]=a[i-1]+a[i-2];
for(j=0;j<39;j++)
{
if (j%8==0)printf ("\n");
printf("%9d ",a[j]);
}
return 0;
}
7.用冒泡法对20个整数排序。20个整数需要键盘键入。
源程序:
#include<stdio.h>
int main()
{
int a[10]={27,13,5,32,23,3,17,43,55,39};
int i;
int sort(int[],int);
sort(a,10);
for(i=0;i<10;i++)
printf("%6d",a[i]);
printf("\n");
}
9.编程实现:对任意一个一维数组,从中找出数组元素的最大值和最小值。要求:
(1)数组为整型数组(10个元素)。
(2)使用scanf函数实现数组元素的输入。在输入前给出必要的提示。
(3)输出时给出必要的说明,首先输出原始的10个元素,换行后输出最大值以及最大值在数组中的位置、最小值以及最小值在数组中的位置。
#include<stdio.h>
int main()
{
int a[10],i,z,f,l;
z=0;f=0;l=0;
for(i=0;i<=9;i++)
scanf("%d",&a[i]);
for(i=0;i<=9;i++)
{
if (a[i]>0) z=z+1;
if (a[i]==0) l=l+1;
if (a[i]<0) f=f+1;}
#include<stdio.h>
#define M 3
#define N 4
int main()
{
int max,i,j,r,c;r=0;c=0;
int a[M][N]={{323,94,-10,218},{3,9,10,-83},{45,16,44,-99}};
max=a[0][0];
for(i=0;i<M;i++)
#include<stdio.h>
int main()
{
int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
int b[4][3],i,j;
for(i=0;i<3;i++)
{for(j=0;j<4;j++)
{printf("%5d ",a[i][j]);
b[j][i]=a[i][j];}
#include<stdio.h>
int main()
{
int i;
char str[11]={'h','o','w','a','r','e','y','o','u'};
for(i=0;i<=10;i++)
printf("%c",str[i]);
return 0;
}
3.改错
有一个3×4的矩阵,要求输出其中值最大的元素的值,以及它的行号和列号。
ቤተ መጻሕፍቲ ባይዱprintf("请输入十个数");
for(i=0;i<10;i++)
{
scanf("%d ",&a[i]); }
max=min=a[0];
for(i=0;i<10;i++)
{
if(max<a[i])
max=a[i];
j=i;
if(min>a[i])
min=a[i];
k=i;}
for(i=0;i<10;i++)
(4)掌握冒泡排序、选择排序及查找算法。
(5)掌握字符窜的结束标志,正确使用字符串的结束标志对字符串进行处理。
通过编程和调试程序,加深对数组、字符数组和字符串函数应用的理解二、实验设备(环境)及要求
使用Visual C++ 6.0;windows系列操作系统的环境。
三、实验内容与步骤(要求以“学号_姓名_题号”为名建立项目;
printf("\n");} printf("\n");
for(i=0;i<4;i++)
{for(j=0;j<3;j++)
printf("%5d ",b[j][i]);
printf("\n");
}return 0;
}
11.编程实现“折半查找”的过程。折半查找的处理过程是:在一个数据已排好序的数组中,首先比较关键字与数组中间的元素,如果两者相等,则查找结束;如果前者比后者小,则要查找的数据必然在数组的前半部,此后只需在数组的前半部中继续折半查找;如果前者的数值比后者大,则要查找的数据必然在数组的后半部,此后只需在数组的后半部继续进行折半查找。
(6)修改程序,改为函数调用的形式。编写一个选择法排序函数,对无序数据进行排序;编写一个查找函数对已排好序的数据进行查找。在主函数中输入数据(无序),调用上述函数,输出结果。
#include<stdio.h>
int main()
{
int a[20]={1,2,3,5,6,8,12,13,15,18,19,26,27,29,34,36,38,40,42,46};
《C语言程序设计》实验报告
实验项目一:数组
学 号
姓 名
专业、班级
实验时间
2019.03.06
实验地点
机房6
指导教师
一、实验目的及要求
(1)正确理解数组的概念,熟练掌握一维数组和二维数组的定义和初始化方法。
(2)熟练掌握字符数组和字符串的区别和使用、字符串函数的使用。
(3)熟练掌握一维数组、二维数组以及字符串的输入和输出方法。
int x,low,mid,high,found;
low=0,high=19,found=0;
scanf("%d",&x);
while(low<high&&!found)
{mid=(low+high)/2;
if(x>a[low])
low=mid-1;
else if(x<a[mid])
high=mid-1;
for(j=0;j<N;j++)
if(a[i][j]>max)
{
max=a[i][j];
r=i;c=j;
printf("max=%d,行=%d,列=%d\n",max,r,c);
return 0;
4.改错
下面是用来将数组a中元素按升序排序后输出的源程序。分析源程序中存在的问题,并对源程序进行修改,使之能争取完成任务。
printf("%d",a[i]);
printf("\n");
printf("最大值为%d,在数组中的位置为%d\n",max,j);
printf("最小值为%d,在数组中的位置为%d",min,k);
return 0;
}
10.编写一个程序,从键盘读入数据,对一个3*4矩阵进行赋值,求其转置矩阵,然后输出原矩阵和转置矩阵。
}
for(j=0;j<=19;j++)
printf("%3d",a[j]);
printf("\n");
return 0;
}
8.用选择法对20个整数排序。20个整数需要键盘键入。
#include<stdio.h>
int main()
{
int a[20],i,j,t;
for(i=0;i<=19;i++)
要求:
(1)设定一个数组存放20个数据,用赋初值的方法在程序中给出(假设这些数据已排序)。
(2)用scanf函数输入一个要找的数。
(3)对查找的结果给出相应的说明,如果找到该数,则给出该数是数组中第几个元素。如果该数不在数组中,则输出“无此数”信息。
(4)任意输入一些数据,检查程序的正确性。