实验4 数组
姓名: 学号: 实验日期:
1. 实验目的和要求
(1)掌握一维数组与二维数组的定义、使用及初始化方法。
(2)学习数组作为函数参数的用法。
(3)掌握字符数组和字符串函数的使用方法。
(4)掌握与数组有关的常用排序算法,进一步理解模块化程序设计的方法。
(5)掌握字符、字符串的输入/输出方法。
(6)掌握字符数组的使用。
(7)学会使用字符串的指针和指向字符串的指针变量。
2. 实验内容:实验指导书中的实验六、实验七
3. 实验步骤
实验六数组部分:
6-1:我使用的算法:定义一个数组s[i],用s[1]~s[5]代表5个等级,然后采用循环将20个评价分别对数组进行累加,即可得出结果
程序的运行测试结果如下图所示(考虑各种情况下的运行结果):
#include<stdio.h>
void main()
{
int s[6];
int i,n;
for(i=1;i<=5;++i)
s[i]=0;
printf("请输入数据:\n");
for(i=1;i<=20;++i)
{
scanf("%d",&n);
if(!n)break;
++s[n];
}
printf("\n\n评价结果是:\n");
for(i=1;i<=5;++i)
printf("%4d %d\n",i,s[i]);
}
6-2:该程序的功能是:将数组xx(有n个元素)的前k(k<n)个元素变为后k个元素,且两段元素顺序不变
程序运行结果如下图所示:
#include<conio.h>
#include<stdio.h>
void main()
{
int n,k,xx[20];
int i,j,t;
printf("\nPlease enter a number:");
scanf("%d",&n);
printf("\nPlease enter %d numbers:",n);
for(i=0;i<n;i++)
scanf("%d",&xx[i]);
printf("\nPlease enter another number:");
scanf("%d",&k);
for(i=0;i<k;i++)
{
t=xx[0];
for(j=1;j<n;j++)
xx[j-1]=xx[j];
xx[n-1]=t;
}
printf("\nAfter moving:\n");
for(i=0;i<n;i++)
printf("%3d",xx[i]);
printf("\n");
}
6-3 :该程序的功能是:对数组a中n种商品价格进行统计,并将各个价格段的商品个数存入对应数组b中
程序运行结果如下图所示:
6-4.:我使用的算法为:先对10个数进行排序输出,再输入一个数,再与之前排序后的数进行比较,并插入其中
程序运行结果如下图所示:
#include<stdlib.h>
int main()
{
int a[10],b[11],i,j,t,k;
printf("请输入10个整数:\n");
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<10;i++)
{
for(j=0;j<9;j++)
{
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
for(i=0;i<10;i++)
{
printf("%-5d",a[i]);
}
printf("\n");
for(i=0;i<11;i++)
{
b[i]=a[i];
}
printf("请输入一个整数k:\n");
scanf("%d",&k);
b[10]=k;
for(i=0;i<11;i++)
{
for(j=0;j<10;j++)
if(a[j]>b[j+1])
{
t=b[j];
b[j]=b[j+1];
b[j+1]=t;
}
}
printf("\n新数列是:\n");
for(i=0;i<11;i++)
{
printf("%-5d",b[i]);
}
printf("\n");
return 0;
}
6-5:我使用的算法为:比较数组s与数组str元素是否相同,相同则n+1,最后输出
程序运行结果如下图所示:
main()
{
char str[20],s;
int i,n=0;
printf("请输入字符串:\n");
gets(str);
printf("输入需要统计的字符串s:\n");
s=getchar();
for(i=0;i<=20;i++)
if(str[i]==s)
n++;
printf("%d\n",n-1);
}
6-6 (选作):我使用的算法为:请用文字描述一下
程序运行结果如下图所示:
6-7 (选作):我使用的算法为:请用文字描述一下
程序运行结果如下图所示:
7-1 该程序的功能是:
程序运行结果如下图所示:
void main()
{
char a[40],b[40];
int i,j;
printf("Enter the string:");
scanf("%s",a);
i=j=0;
while(a[i]!='\0')
{
if(!(a[i]>='0'&&a[i]<='9'))
{
b[j]=a[i];j++;
}
++i;
}
b[j]='\n';
printf("%s",b);
}
7-2:我使用的算法为:请用文字描述一下
程序运行结果如下图所示:
main()
{
char a[20],b[20];
int i,j;
printf("请输入一个字符串:\n");
gets(a);
printf("请输入另一个字符串:\n");
gets(b);
for(i=0;i<20;i++)
{
if(a[i]==0)
break;
}
for(j=0;j<20;j++)
{
if(b[j]!=0)
{
a[i]=b[j];
}
if(b[j]==0)
break;
i++;
}
a[i]='\0';
printf("%s",a);
}
7-3:我使用的算法为:请用文字描述一下
程序运行结果如下图所示:
main()
{
char a[100];
int b[3],i;
for(i=0;i<3;i++)
b[i]=0;
printf("请输入一个字符串:\n");
gets(a);
for(i=0;i<100;i++)
{
if(a[i]>='a'&&a[i]<='z')
b[0]++;
else if(a[i]>='0'&&a[i]<='9')
b[1]++;
else b[2]++;
if(a[i]==0)
break;
}
printf("小写字符:%-5d数字:%-5d其他字符:%-5d",b[0],b[1],b[2]);
}
7-4:我使用的算法为:请用文字描述一下
程序运行结果如下图所示:
main()
{
char a[20],b;
int i;
printf("请输入一个字符串:\n");
gets(a);
printf("请输入一个字符:\n");
scanf("%c",&b);
for(i=0;i<20;i++)
if(a[i]==b)
printf("首次出现的位置是:%d\n",i+1);
}
7-5:我使用的算法为:请用文字描述一下
程序运行结果如下图所示:
main()
{
int i,j,k=0;
char s[255];
while((s[k]=getchar())!='@') k++;
for(j=0;s[j]!='@';j++)
{
if(s[j]<='Z'&&s[j]>='A')
s[j]+=32;
if(s[j]<='w'&&s[j]>='a')
s[j]+=3;
else
if(s[j]=='x'||s[j]=='y'||s[j]=='z')
s[j]-=23;
}
printf("译码后结果:");
for(i=0;s[i]!='@';i++)
printf("%c",s[i]);
printf("\n");
getchar();
}
7-6:我使用的算法为:请用文字描述一下
程序运行结果如下图所示:
main()
{
int i=0;
char str1[255],str2[255];
printf("请输入一个字符串:\n");
scanf("%s",str1);
printf("请输入另一个字符串:\n");
scanf("%s",str2);
while(1)
{
if(str1[i]==str2[i])
{
i++;
continue;
}
else
break;
}
printf("%d\n",str1[i]-str2[i]);
}
4实验小结
熟悉,基本掌握了数组的定义,使用以及字符串的输入,输出的方法;了解到在程序设计中用数组作为函数参数的用法;还学到了字符数组和字符串函数的基本使用方法。通过多次的实验操作,我的操作能力有了很大的进步,课本知识得到了进一步巩固;但仍有许多地方不够熟练和掌握,还要继续努力学习
第二篇:C语言数组上机实验报告3
C语言程序设计实验报告
1 实验目的
2 实验内容
3 算法描述流程图
4 源程序
#include<stdio.h>
main()
{
int a[9][9];
int j,i,n,t,max,min,nmax=0,nmin=0;
printf("\nplease input n of a[]:\n");
scanf("%d",&n);
printf("为矩阵赋值(%d):\n",n);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
min=max=a[0][0];
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
if(a[i][j]>max)
{
max=a[i][j];
nmax=i;
}
else if(a[i][j]<min)
{
min=a[i][j];
nmin=i;
}
}
for(j=0;j<n;j++)
{
t=a[nmax][j];
a[nmax][j]=a[nmin][j];
a[nmin][j]=t;
}
printf("输出结果:\n");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%d ",a[i][j]);
printf("\n");
}
}
5 测试数据
第一组:
1 2 3
4 5 6
7 8 9
第二组:
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
6 运行结果
7 出现问题及解决方法
8 实验心得