实验五数组一、实验目的1.掌握一维数组与二维数组的定义、赋值及输入输出方法。
2.掌握字符数组和字符串函数的使用。
3.掌握与数组有关的算法。
二、实验要求1.熟悉环境;2.按照编程风格要求正确写源程序3.能得到正确的程序运行结果4.本实验要求写实验报告。
三、主要仪器及耗材计算机及软件四、基础实验1. 输入以下程序,查看输出结果。
#include <>void main(){int i,k=5,a[10],p[3];for(i=0;i<10;i++)a[i]=i;for(i=0;i<3;i++)p[i]=a[i*(i+1)];for(i=0;i<3;i++)k=k+p[i]*2;printf(“%d\n”,k);}输出:212. 输入以下程序,查看输出结果。
#include <>void main(){int a[2][3]={{1,2,3},{4,5,6}};int b[3][2],i,j;printf("矩阵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("矩阵b为:\n");for(i=0;i<3;i++){for(j=0;j<2;j++)printf("%5d",b[i][j]);printf("\n");}}输出:矩阵a为:1 2 34 5 6矩阵b为:1 22 53 6程序功能:输出一个二行三阶矩阵和一个三阶二行矩阵3. 程序改错设有4x4的方阵,其中的元素由键盘输入,求出主对角线上元素之和。
1 #include<>2 void main()3 {4 int a[4][4];5 int i,j,sum;6 printf("please input the numbers:");7 for(i=0;i<=4;i++)8 for(j=0;j<=4;j++)9 scanf("%d",&a[i][j]);10 for(i=1;i<4;i++)11 {for(j=1;j<4;j++)12 printf("%d",&a[i][j]);13 printf(“\n”);14 }15 printf("\n");16 for(i=0;i<4;i++)17 for(j=0;j<4;j++)18 if(i=j) sum=sum+a[i][j];19 printf("sum=%d\n",sum);20 }(1)请填写出错情况:(2)修改后的程序及运行结果:#include <>void main(){int a[4][4];int i,j,sum=0;printf("please input the numbers:");for(i=0;i<4;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);for(i=0;i<4;i++){for(j=0;j<4;j++)printf("%5d",a[i][j]);printf("\n");}printf("\n");for(i=0;i<4;i++)for(j=0;j<4;j++)if(i==j) sum=sum+a[i][j];printf("sum=%d\n",sum);}输出: please input the number:48 79 48 16 47 49 28 49 78 49 13 15 16 17 19 1748 79 48 1647 49 28 4978 49 13 1516 17 19 17sum=1274.编程。
设有3x3的方阵,对其中的元素值进行初始化,求出方阵中最大的元素。
输出示例:#include<>void main(){int a[3][3],i,j,max=0;printf("input the numbers:");for(i=0;i<3;i++){for(j=0;j<3;j++)scanf("%d",&a[i][j]);}for(i=0;i<3;i++){for(j=0;j<3;j++)printf("%5d",a[i][j]);printf("\n");}for(i=0;i<3;i++){for(j=0;j<3;j++)if(a[i][j]>max) max=a[i][j]; }printf("max=%d\n",max);}五、拓展实验1. 输入以下程序,查看输出结果。
#include <>void main(){char s1[10]=”ABCDEFG”,S2[10]=”ABCEGFE”;int i=0,n;while((s1[i]==s2[i])&&(s1[i]!=’\0’))i++;n=s1[i]-s2[i];printf(“%d\n”,n);}输出:2.程序填空输出以下图案,要求使用二维数组及双重循环。
#include<>void main(){{{'*','*','*','*','*',' ',' ',' ',' '},{' ','*','*','*','*','*',' ',' ',' '},{' ',' ','*','*','*','*','*',' ',' '},{' ',' ',' ','*','*','*','*','*',' '},{' ',' ',' ',' ','*','*','*','*','*'}};Char[5][9] ={0}; 序填空。
从键盘上输入一个字符串,要求统计并输出该字符串中各位数字、大写字母、小写字母、空格和其他字符出现的次数。
输出示例:#include <>void main(){char str[100];int i,num=0,space=0,capital=0,lowercase=0,other=0;/*num表示数字,space表示空格,capital表示大写字母,lowercase表示小写字母,other表示其他字符*/printf("请输入字符串:");gets(str);for( i=0;str[i]!='\0';i++ )if( str[i]>='0'&&str[i]<='9' ) num++;else if( str[i]=’’) space++;else if( str[i]>='a'&&str[i]<='z' ) capital++;else if(str[i]>='a'&&str[i]<='z') lowercase++;else other++;printf("数字数量为:%d\n大写字母数量为:%d\n小写字母数量为:%d\n空格数量为:%d\n其他字符数量为:%d\n",num,capital,lowercase,space,other);}4.编程。
实现简单密码检测程序,对用户输入的密码进行检测,检测正确才能执行后续程序段,否则要求用户重新输入密码,输入三次错误密码后退出程序(假定正确的用户密码为1234)。
输出示例:#include <>void main(){int n,flage=0,count;for(count=1;count<=3;count++){printf("请输入第%d次密码:",count);scanf("%d",&n);if(n==1234){flage=1;break;}else printf("错误密码!按任意键继续!\n");}if(flage==1)printf("密码正确,欢迎登陆!\n");else printf("对不起,你已经三次错误,拜拜!\n");}六、综合实验1.输入多个学生某一科的成绩,计算出平均成绩、最高分,最低分,不及格人数。
程序输出示例:#include <>void main(){int a[100];int i,n,sum,count=0;float average,max,t;printf("输入多少个人的成绩(最多100人):\n"); scanf("%d",&n);printf("输入%d个成绩:\n",n);for(i=0;i<n;i++){scanf("%d",&a[i]);sum=0;max=a[0];t=a[0];}for(i=0;i<n;i++){sum=sum+a[i];if(a[i]<60)count++;if(a[i]>max)max=a[i];if(a[i]<t)t=a[i];}average=(float)sum/n;printf("本科目的平均分为:%.2f\n不及格人数为:%.2f\n最高分为:%.2f\n最低分为:%d\n",average,count,max,t);}2.用选择法对10个整数排序,并对排序结果进行输出,要求10个整数用scanf 函数输入。