实验数组参考标准答案
作者:
日期:
上机实验八二维数组与字符数组一参考答案
1.目的要求
1.掌握二维数组的基本概念,如何定义二维数组,如何初始化二维数组。
2.掌握二维数组的基本操作:引用数组元素、行(列)求和,ቤተ መጻሕፍቲ ባይዱ(列)最大最小值,整个
数组的输入输出等。
3.掌握与二维数组有关的算法,如找最大最小值(或位置)、矩阵转置等。
其他字符
}
d=0 ;〃二-十进制转换
for( i=0; i<8; i++ ) d= d*2+s[i]- 0';//二进制:逢2进1
prin tf("digit=%d\n", d);//输出十进制整数d
}
思考:如果改为输入一个4位长度的十六进制字符串,如”2f3a”要输出对应的十进制整数,上面的程序
需要如何修改?-
5)输出该矩阵的下三角,即得出杨辉三角的前10行。
源程序:
#include <stdio.h>
void mai n()
{ int i, j, int a[10][10];
for (i=0; i<10; i++)〃各行的第0列元素与主对角线元素赋1
a[i][0]=a[i][i]=1;
for( i=2; i<10; i++ )〃为第2~9行的夹在第0列与主对角线之间的元素赋值
for(j=1;j< i ;j++)
a[i][j]=a[i-1][j-1]+ a[i-1][j];
for (i=0; i<10; i++){〃输出矩阵中的下三角矩阵
for (j=0; j <=i; j++)
printf("%5d", a[i][j]);
prin tf("\n");//Li ne 12
}
}
问:如果删除Line 12,程序运行结果有何不同?
答:不换行
成对应的大写字母。
提示:三项任务:
1、输入字符串,并存储在字符数组中;
2、 遍历字符串的每个元素,如果是小写字母(’a'97〜'z'122),则更换成大写字母
3、输出更新后的字符串
源程序:
#i nclude<stdio.h>
void mai n()
源程序:
#include<stdio.h>
void mai n() { int i,d;
char ch,b[8];
prin tf("I nput 8-bit bin ary:\n");〃输入二进制字符串
i=0;
while(i<8){〃输入8位二进制字符
ch= getchar();
if( ch=='0'|| ch=='1') s[ i++ ]=ch ;//输入'O'或'1'则存入数组b,忽略
运行结果:sum1=,sum2=
【实验题
2】
程序填空:打印杨辉三角形前10行:
1
1 1
1 2
1
1 3
3
1
1 4
6
4
1
1 5
10
| 10
5 1
算法提示:分析一个10行的杨辉三角,需要一个10X10的二维矩阵a,则:
1)杨辉三角为下三角矩阵,只需要求出第i行(i=0,1,2,…,9)前i+1个元素,即a[i][j]!=0 (j=0…i).
2)每行的第0列元素均为1,即a[i][0]=1;
3)每行的主对角线元素也均为1,即a[i][i]=1;
4)从第2行开始,每行夹在第0列元素与主对角线元素之间的元素a[i][j]( i=2,3,…,9,j=1,..,i-1)等于其
左上方元素a[i-1][j-1]与正上方元素a[i-1][j]之和,即a[i][j]=a[i-1][j-1]+a[i-1][j];
for( i=0; s[i]!='\0'; i++ )putchar( s[i] );//输出字符串
prin tf("\n");
I
运行程序,输入:
}
Tom&Jack-s10
【实验题3】程序改错:
输入一个以回车结束的字符串(有效长度少于
80),将其中的小写字母统一更换
输出结果:
【实验题4】.程序填空:二-十进制转换:输入一个8位二进制字符串b(由字符'‘和'0'组成),输出对应 的十进制整数。例如,输入二进制字符串10010001,输出十进制整数145
算法提示:
1、由于二进制字符串b的长度固定为8,因此定义字符数组char b[8]即可,每个元素对应一个二 进制位;
2、循环1:输入二进制字符,输入的每一个字符先暂存在字符变量ch中,检查ch是否是''或''
是则存入数组b,并令数组下标i增1,不是则跳过该字符。
3、循环2:二-十进制转换:从前往后,带权累加数组b各元素对应的数值b[i]-0'd= dx2+b[i]-
4.掌握字符串与字符数组的基本应用方法
5.掌握字符串有关的算法,如字符转换、查询、统计和进制转换等
2.实验内容
【实验题1】程序填空:输入一个4X4矩阵,求出主对角线上的元素之和suml、副对角线上的元素之和
sum2,并输出结果。
提示:每一行只有一个主对角线元素a[i][i](特征:i==j),也仅有一个副对角线元素a[i][n-i-1](特征:i+j==n-1,
scan f("%d",&a[i][j]);
for (i=0; i<4; i++ ){〃计算suml和sum2
suml +=_a[i][i];
sum2 += a[i][3-i];
}
prin tf("sum仁%d, sum2=%d\n", sum1,sum2);〃输出结果
}
运行程序,并输入数据:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
源程序:
#in clude<stdio.h>
void mai n()
{ int i,d,k;
char ch,h[4];
即j=n-1-i)
源程序:
#include <stdio.h>
void mai n()
{in t i,j,sum1=0,sum2=0, a[4][4];
prin tf("I nput a 4*4 matrix:' n");
for (i=0;i<4;i++)//输入矩阵元素
for ( j=0;j<4;j++)
{int i;
char s[80];
i=0;
while( (s[i]=getchar() ) != '\n')i++;//输入字符串
s[i]=\0';
for( i=0;s[i]!= '\0'; i++ )//将遍历字符串,将小写字母转换成大写
字母
if( s[i]>='a'&&a[i]<='z')s[i]=s[i]-32;
实验4 数组答案
实验四数组实验课程名: 高级语言程序设计4 数组专业班级:学号:姓名:实验时间:2016年4月27日实验地点:K4 指导教师:一、实验目的及要求1.掌握一维数组与二维数组的定义、赋值与输入输出的方法;2.掌握字符数组与字符串函数的使用;3.掌握与数组有关的算法(特别就是排序算法)。
二、实验任务:(一)(1)程序代码:#include <stdio、h>#define N 10void main( ){int i,a[N];float av=0;for(i=0;i<N;i++)scanf("%d",&a[i]);for(i=0;i<N;i++){ printf("%d",a[i]);printf(" ");if(i%3==0)printf("\n");}for(i=0;i!=N;i++)av+=a[i];printf("av=%f\n",av/10);}(2)运行结果:(3)结果分析:当i能被3整除时,就换一次行。
(二)实验任务2(1)程序代码:#include <stdio、h>void main( ){int i,a[5],sum=0;for(i=0;i<=4;i++)scanf("%d",&a[i]);for(i=0;i<=4;i++)sum+=a[i];printf("sum=%d\n",sum);}(2)程序运行结果:(3)程序分析:使用for循环依次输入5个数,并使5个数相加。
(三)实验任务3(1)程序代码:#include <stdio、h>int main( ){ int i,j,row=0,colum=0,max;int a[3][4] = {{1,2,3,4}, {9,8,7,6}, {-10,10,-5,2}};max=a[0][0];for(i=0;i<=2;i++)for (j=0;j<=3;j++)if(a[i][j]>max){max=a[i][j];row=i;colum=j;}printf(" Max=%d, Row=%d, Colum=%d\n", max, row, colum);return 0;}(2)程序运行结果:(3)程序分析:分别将这12个元素同max相比较,当某个元素的值大于max时,则将此元素的值赋值给max,最后输出max及最大值的下标。
实验报告07答案
实验报告07:数组一、实验目的1.理解数组的作用是用于保存大批量数据。
2.能够使用一维数组编写程序。
二、实验内容1.语句“Dim A(-2 To 3) As Integer”定义的数组包括__ 6 个数组元素。
2.定义一个类型为字符型的一维数组A,共有5个元素,语句为Dim A(4) as String 。
3.要使本窗体中数组缺省的下界为1,必须在窗体的通用部分输入语句Option Base 1 。
4.引用一维数组中的元素,下标可以是__ D ____。
(A)常量(B)变量(C)表达式(D)以上都行5.下面程序定义了一个包含10个元素的数组,并将a(1)赋值为1、a(2)赋值为3、a(3)赋值为5、……、a(10)赋值为19。
请完成该程序。
Dim a(1 to 10) As IntegerFor k=1 To 10a(k)=2*k-1Next k6.以下程序段的输出结果是 2 12 30 56 90 。
Private Sub Command1_Click()Dim num(1 To 10) As Integer, k As IntegerFor k = 1 To 10num(k) = k * (k + 1)Next kFor k = 1 To 10 Step 2Print num(k);Next kEnd Sub7.以下程序段的输出结果是8 42 。
Private Sub Command1_Click()Dim num(1 To 5) As Integer, k As Integernum(1)=1For k =1 To 4num(k+1) = num(k)*2 + k Next kPrint num(3); num(5)End Sub 班级:姓名:学号:三、思考题1.求斐波拉契数列的前20项。
其数列形式为:1,1,2,3,5,8,13,21,34,……要求:事件代码由窗体的单击事件触发。
在窗体中每行输出10个数。
实验4数组(答案解析)
实验四数组实验课程名:高级语言程序设计4 数组专业班级:学号:姓名:实验时间:2016年4月27日实验地点:K4 指导教师:(3)结果分析:当i能被3整除时,就换一次行。
(二)实验任务2(1)程序代码:#include <stdio.h>void main( ){int i,a[5],sum=0;for(i=0;i<=4;i++)scanf("%d",&a[i]);for(i=0;i<=4;i++)sum+=a[i];printf("sum=%d\n",sum);}(2)程序运行结果:(3)程序分析:使用for循环依次输入5个数,并使5个数相加。
(三)实验任务3(1)程序代码:#include <stdio.h>int main( ){ int i,j,row=0,colum=0,max;int a[3][4] = {{1,2,3,4}, {9,8,7,6}, {-10,10,-5,2}};max=a[0][0];for(i=0;i<=2;i++)for (j=0;j<=3;j++)if(a[i][j]>max){max=a[i][j];row=i;colum=j;}printf(" Max=%d, Row=%d, Colum=%d\n", max, row, colum);return 0;}(2)程序运行结果:(3)程序分析:分别将这12个元素同max相比较,当某个元素的值大于max时,则将此元素的值赋值给max,最后输出max及最大值的下标。
(四)实验任务4(1)程序代码:#include <stdio.h>void main( ){ int i, x, a[10]={1,2,3,4,5,6,7,8,9,10};scanf("%d",&x); /*输入x变量的值*/for ( i=0; i<10; i++ )printf("%4d",a[i]);printf("\n");for(i=0;i<10;i++) /* 循环查找与x相等的元素*/if ( x==a[i] )printf("%d\n",i); /* 输出查找结论,输出下标值*/else printf("Not found %d\n",x);}(2)运行结果:(3)程序分析:通过for循环查找与x相等地元素。
实验7 数组的应用(参考答案)
实验七数组的应用(参考答案)[实验任务一]:程序跟踪调试实例7-1:error7_1.c参考答案程序跟踪调试实例7-2:error7_2.c参考答案[实验任务二]:程序填空实例7-1:blank7_1.c参考答案程序填空实例7-2:blank7_2.c参考答案程序填空实例7-3:blank7_3.c参考答案程序填空实例7-4:blank7_4.c参考答案程序填空实例7-5:blank7_5.c参考答案[实验任务三]:编程实例7-1:meld.c参考答案编程实例7-2:DtoB.c参考答案编程实例7-3:match.c参考答案编程实例7-4:matrix.c参考答案编程实例7-5:rewrite.c参考答案编程实例7-6:string.c参考答案编程实例7-7:phalanx.c参考答案编程实例7-8:yanghui.c参考答案[实验任务四]:设计程序实例7-1:学生成绩统计cjtj.c(一维数组和函数综合编程练习)参考答案#include <stdio.h>#define ARR_SIZE 30int ReadScore(int num[], float score[]);int GetFail(int num[], float score[], int n);float GetAver(float score[], int n);int GetAboveAver(int num[], float score[], int n);void GetDetail(float score[], int n);void main(){int n, num[ARR_SIZE], fail, aboveAver;float score[ARR_SIZE];printf("Please enter num and score until score<0:\n");n = ReadScore(num, score);printf("Total students:%d\n", n);fail = GetFail(num, score, n);printf("Fail students = %d\n", fail);aboveAver = GetAboveAver(num, score, n);printf("Above aver students = %d\n", aboveAver);GetDetail(score, n);}/*函数功能:从键盘输入一个班学生某门课的成绩及其学号,当输入成绩为负值时,输入结束函数参数:整型数组num,存储学生学号 ; 实型数组score,存储学生成绩函数返回值:学生总数*/int ReadScore(int num[], float score[]){int i = 0;scanf("%d%f", &num[i], &score[i]);while (score[i] >= 0){i++;scanf("%d%f", &num[i], &score[i]);}return i;}/*函数功能:统计不及格人数并打印不及格学生名单函数参数:整型数组num,存储学生学号实型数组score,存储学生成绩整型变量n,学生总数函数返回值:不及格人数*/int GetFail(int num[], float score[], int n){int i, count;printf("Fail:\nnumber--score\n");count = 0;for (i=0; i<n; i++){if (score[i] < 60){printf("%d------%.0f\n", num[i], score[i]);count++;}}return count;}/*函数功能:计算全班平均分成绩函数参数:实型数组score,存储学生成绩整型变量n,学生总数函数返回值:平均分*/float GetAver(float score[], int n){int i;float sum = 0;for (i=0; i<n; i++){sum = sum + score[i];}return sum/n;}/*函数功能:统计成绩在全班平均分及平均分之上的学生人数并打印其学生名单函数参数:整型数组num,存储学生学号实型数组score,存储学生成绩整型变量n,学生总数函数返回值:成绩在全班平均分及平均分之上的学生人数*/int GetAboveAver(int num[], float score[], int n){int i, count;float aver;aver = GetAver(score, n);printf("aver = %f\n", aver);printf("Above aver:\nnumber--score\n");count = 0;for (i=0; i<n; i++){if (score[i] >= aver){printf("%d------%.0f\n", num[i], score[i]);count++;}}return count;}/*函数功能:统计各分数段的学生人数及所占的百分比函数参数:实型数组score,存储学生成绩整型变量n,学生总数函数返回值:无*/void GetDetail(float score[], int n){int i, j, stu[6];for (i=0; i<6; i++){stu[i]=0;}for (i=0; i<n; i++){if (score[i] < 60){j = 0;}else{j = ((int)score[i] - 50) / 10;}stu[j]++;}for (i=0; i<6; i++){if (i == 0){printf("< 60 %d %.2f%%\n", stu[i],(float)stu[i]/(float)n*100);}else if (i == 5){printf(" %d %d %.2f%%\n", (i+5)*10, stu[i],(float)stu[i]/(float)n*100);}else{printf("%d--%d %d %.2f%%\n", (i+5)*10,(i+5)*10+9,stu[i],(float)stu[i]/(float)n*100);}}}程序运行结果如下:Please enter num and score until score<0 for no more than 30 students:99010 90↙99011 66↙99012 78↙99013 88↙99014 45↙99015 100↙99016 97↙99017 87↙99018 76↙99019 83↙99020 -1↙Total students:10Fail:number--score99014-------45Fail students = 1aver = 81.000000Above aver:number--score99010------9099013------8899015------10099016------9799017------8799020------83Above aver students = 6< 60 1 10.00%60-69 1 10.00%70-79 2 20.00%80-89 3 30.00%90-99 2 20.00%100 1 10.00%设计程序实例7-2:成绩排名次cjrank.c(二维数组、函数和常用算法综合编程练习)参考答案#include <stdio.h>#define STU 30#define COURSE 3void Input(long num[],int score[][COURSE],int n);void GetSumAver(int score[][COURSE],int n,int sum[],float aver[]);void Sort(long num[],int score[][COURSE],int n,int sum[],float aver[]);void Print(long num[],int score[][COURSE],int n,int sum[],float aver[]);int Search(long num[], int n, long x);main(){int n, score[STU][COURSE], sum[STU], pos;long num[STU], x;float aver[STU];printf("Please enter the total number of the students(n<=30):");scanf("%d", &n); /*输入参加考试的学生人数*/printf("Enter No. and score as: MT EN PH\n");Input(num, score, n); /*输入学生成绩*/GetSumAver(score, n, sum, aver); /*计算总分和平均分*/printf("Before sort:\n");Print(num, score, n, sum, aver);Sort(num, score, n, sum, aver); /*排名次*/printf("After sort:\n");Print(num, score, n, sum, aver);printf("Please enter searching number:");scanf("%ld", &x); /*以长整型格式输入待查找学生的学号*/ pos = Search(num, n, x); /*名次查寻*/if (pos != -1){printf("position:\t NO \t MT \t EN \t PH \t SUM \t AVER\n");printf("%8ld\t%4ld\t%4d\t%4d\t%4d\t%5d\t%5.0f\n", pos+1,num[pos], score[pos][0],score[pos][1],score[pos][2],sum[pos],aver[pos]);}else{printf("Not found!\n");}}/* 函数功能:输入某班学生期末考试三门课程成绩函数参数:长整型数组num,存放学生学号整型数组score,存放学生成绩整型变量n,存放学生人数函数返回值:无*/void Input(long num[], int score[][COURSE], int n){int i, j;for (i=0; i<n; i++){scanf("%ld", &num[i]);for (j=0; j<COURSE; j++){scanf("%d", &score[i][j]);}}}/* 函数功能:计算每个学生的总分和平均分整型变量n,存放学生人数整型数组sum,计算得到的每个学生的总分实型数组aver,计算得到的每个学生的平均分函数返回值:无*/void GetSumAver(int score[][COURSE], int n, int sum[], float aver[]){int i, j;for (i=0; i<n; i++){sum[i] = 0;for (j=0; j<COURSE; j++){sum[i] = sum[i] + score[i][j];}aver[i] = (float)sum[i] / COURSE;}}/* 函数功能:按总分成绩由高到低排出成绩的名次函数参数:长整型数组num,存放学生学号整型数组score,存放学生成绩整型变量n,存放学生人数整型数组sum,存放每个学生的总分实型数组aver,存放每个学生的平均分函数返回值:无*/void Sort(long num[],int score[][COURSE], int n, int sum[], float aver[]) {int i, j, k, m;int temp1;long temp2;float temp3;for (i=0; i<n-1; i++){k = i;for (j=i+1; j<n; j++){if (sum[j] > sum[k]) k = j;}if (k != i){temp1 = sum[k]; sum[k] = sum[i]; sum[i] = temp1;temp2 = num[k]; num[k] = num[i]; num[i] = temp2;temp3 = aver[k]; aver[k] = aver[i]; aver[i] = temp3;for (m=0; m<COURSE; m++){temp1 = score[k][m];score[k][m] = score[i][m];score[i][m] = temp1;}}}}/* 函数功能:打印出名次表,表格内包括学生编号、各科分数、总分和平均分整型数组score,存放学生成绩整型变量n,存放学生人数整型数组sum,存放每个学生的总分实型数组aver,存放每个学生的平均分函数返回值:无*/void Print(long num[], int score[][COURSE], int n, int sum[],float aver[]){int i, j;printf(" NO \t| MT \t EN \t PH \t SUM \t AVER\n");printf("----------------------------------------------------\n");for (i=0; i<n; i++){printf("%4ld\t| ", num[i]);for (j=0; j<COURSE; j++){printf("%4d\t", score[i][j]);}printf("%5d\t%5.0f\n", sum[i], aver[i]);}}/* 函数功能:在学号数组中顺序查找学生的学号函数参数:长整型数组num,存放学生学号整型变量n,存放学生人数长整型变量x,存放待查找学生的学号函数返回值:找到时,返回学生学号再学号数组中的下标位置否则,返回值-1*/int Search(long num[], int n, long x){int i;for (i=0; i<n; i++){if (num[i] == x) return(i);}return (-1);}程序运行结果如下:Please enter the total number of the students(n<=30):5↙Enter No. and score as: MT EN PH99010 80 87 83↙99011 90 95 93↙99012 67 78 87↙99013 76 89 81↙99014 60 56 45↙Before sort:NO | MT EN PH SUM AVER--------------------------------------------------------------99010 | 80 87 83 250 8399011 | 90 95 93 278 9399013 | 76 89 81 246 8299014 | 60 56 45 161 54After sort:NO | MT EN PH SUM AVER-------------------------------------------------------------- 99011 | 90 95 93 278 9399010 | 80 87 83 250 8399013 | 76 89 81 246 8299012 | 67 78 87 232 7799014 | 60 56 45 161 54Please enter searching number:99012↙position: NO MT EN PH SUM AVER4 99012 67 78 74 232 77。
实验5-数组答案
VB程序设计实验五实验目的●掌握一维数组和二维数组的操作●学习跟数组相关的控件:列表框和组合框复习1.列表框列表框(ListBox)控件允许用户查看和选择列表中的多个元素。
表5-11 列表框的常用属性和事件2.组合列表框(ComboBox)整合了列表框和文本框的功能,以一个文本框控件(TextBox)右边加上一个向下箭头的样式显示。
有Simple(简单组合框)、DropDown(下拉组合框)和DropDownList(下拉列表框)。
其中,Simple选项不显示下拉箭头,而是在控件的旁边显示一个滚动条;DropDown风格(默认值)在单击向下箭头时显示一个下拉列表,且在ComboBox中输入一个值;DropDownList显示一个下拉列表,但不允许用户在ComboBox中输入。
表5-13 组合列表框的常用属性和事件(1) Items.Count属性:列表框或组合框中项目数量。
最后一项的序号为Items.Count-1,该属性只能在程序中设置或引用。
(2) Text属性:被选定的选项的文本内容。
该属性只能在程序中设置或引用。
注意:ListBox1.Items(ListBox1.SelectedIndex)等于ListBox1.Text。
(3) Items.Add方法把一个选项加入列表框,格式:对象.Items.Add(选项);如:ListBox1.Items.Add("周海涛")(4) Insert方法在指定位置插入一个项目。
格式:对象.Items.Insert(序号, 添加项内容)(5)Items.Remove方法从列表框中删除指定的项。
格式:对象. Items.Remove (选项)。
例如:ListBox1.Items.Remove ("华成")(6)Items.RemoveAt方法格式:对象.RemoveAt(Index)从列表框中删除指定的项。
Index表示被删除项目在列表框中的位置,从0开始。
Java实验十 数组答案
一、实验目的1.掌握Java中的数组定义、引用2.掌握使用字符串String类处理字符串的方法二、实验要求1.编写3个使用Java 数组的程序。
2.掌握字符串类的使用方法。
三、实验内容1.建立使用数组的程序,本程序建立了一个长度为5 的1 维数组,一个长度为12 的 2 维数组源代码如下。
public class KY5_1 {public static void main(String args[]) {int a[]=new int[5];int arr1[][]=new int[3][4];a[0]=10;a[1]=10+a[0];a[2]=30;a[3]=40;a[4]= a[1]+ a[2];arr1[0][0]=0; arr1[0][1]=1; arr1[0][2]=2;arr1[1][0]=3; arr1[1][1]=4; arr1[1][2]=5;arr1[2][0]=6; arr1[2][1]=7; arr1[2][2]=8;System.out.println("a["+0+"] = "+a[0]);System.out.println("a["+1+"] = "+a[1]);System.out.println("a["+2+"] = "+a[2]);System.out.println("a["+3+"] = "+a[3]);System.out.println("a["+4+"] = "+a[4]);System.out.println("arr1("+0+","+0+") = "+arr1[0][0]);System.out.println("arr1("+0+","+1+") = "+arr1[0][1]);System.out.println("arr1("+0+","+2+") = "+arr1[0][2]);System.out.println("arr1("+1+","+0+") = "+arr1[1][0]);System.out.println("arr1("+1+","+1+") = "+arr1[1][1]);System.out.println("arr1("+1+","+2+") = "+arr1[1][2]);}}♦编译并运行程序2.编程实现Fibonacci数列。
实验答案--数组.doc
1.先从键盘上输入一个3行3列整型数组的各个元素的值,然后输出主对角线和次对角线元素之和。
#include <stdio.h>int main()(int i,j,m=0,n=0,a[3][3];printf("lnput 9 words to fill a[3][3]:\n");for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);for(i=0;i<3;i++)(m+=a[i][i];n+=a[i][2-i];}printf("主对角线元素之和=%d\n",m);printf("次对角线元素之和=%d\n”,n);return 0;}2.先从键盘上输入一个3行3列数组的各个元素的值,然后按主对角线进行转置,并输出转置后的数组。
例如:原数组为:转置后为:1 2 3 1 4 74 5 6 2 5 87 8 9 3 6 9#include <stdio.h> int main()int i,j,t,a[3][3];printf("lnput 9 words to fill a[3][3]:\n");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++)if(i!=j&&i<j)( t=a[i][j]; a[i][j]=a[j][i]; a[j][i]=t;} for(i=0;i<3;i++) {for(j=0;j<3;j++)printf("%d ",a[i][j]);putchar('\n');}return 0;}3.将一个字符数组(不多于10个元素)中的元素按逆序重新存放(只能定义一个数组)。
实验5数组答案
C语言程序设计实验报告实验五使用数组的程序设计班级学号姓名一、实验目的(1)掌握一维数组和二维数组的定义、赋值和输入输出方法。
(2)掌握字符数组的使用。
(3)掌握与数组有关的算法。
二、实验内容及步骤1、验证性实验输入已编好的源程序,然后进行编辑、编译、连接和运行,观察运行结果。
(1)某数列前两项为0,1,以后各项均为前相邻两项之和,输出该数列前20项。
#include<stdio.h>main(){long i,x[20];x[0]=0;x[1]=1;for(i=2;i<20;i++)x[i] =x[i-1]+x[i-2];for(i=0;i<20;i++)printf("% ld\t",x[i]);}输出结果:(2)从键盘输入N个自然数,然后按升序进行排列。
用“比较法”#include<stdio.h>#define N 10main(){int a[N],t,i,j;for(i=0;i<N;i++) /*本循环输入N个原始数据*/scanf ("%d", &a[i]);for(i=0;i<N-1;i++) /*本循环完成排序*/for(j=i+1;j<N;j++) /* x[i]与它后边所有元素逐一比较,大则交换*/if (a[j]<a[i]) {t=a[j];a[j]=a[i];a[i]=t;}for(i=0;i<N;i++) /* 输出排序后的数组*/printf(" %d",a[i]);}输出结果:2、完成以下程序,并进行调试(1)从键盘输入一个班(全班最多不超过30人)学生某门课的成绩,当输入成绩为负值时,输入结束,分别统计下列内容:a)统计不及格人数并打印不及格学生名单;b)统计成绩在全班平均分及平均分之上的学生人数并打印其学生名单;c)统计各分数段的学生人数及所占的百分比程序代码:#include<stdio.h>int F1(int i,int sum,int *a,int *counter){int j;printf("不及格学生名单:");for(j=1;j<i-1;j++){sum+=a[j];if(a[j]<60){printf("%3d",j);counter[0]++;}}return sum;}F2(int i,float average,int *a,int *counter){int j;printf("average=%f,成绩大于等于平均分的学生名单:",average);for(j=1;j<i-1;j++){if(a[j]>=average){printf("%3d",j);counter[11]++;}}}F3(int i,int *a,int *counter){int j;for(j=1;j<i-1;j++){if(a[j]<=10) counter[1]++;else if(a[j]>10&&a[j]<=20) counter[2]++;else if(a[j]>20&&a[j]<=30) counter[3]++;else if(a[j]>30&&a[j]<=40) counter[4]++;else if(a[j]>40&&a[j]<=50) counter[5]++;else if(a[j]>50&&a[j]<=60) counter[6]++;else if(a[j]>60&&a[j]<=70) counter[7]++;else if(a[j]>70&&a[j]<=80) counter[8]++;else if(a[j]>80&&a[j]<=90) counter[9]++;else if(a[j]>90&&a[j]<=100) counter[10]++;}printf("各分数段人数: 百分比:\n");for(j=1;j<=10;j++)printf("%d %f\n",counter[j],(float)(counter[j])/(i-2)); }main(){static int a[31],counter[12],flag;int i=1,j=1,sum=0;float average;printf("请输入学生成绩并以负值结束: ");do{scanf("%d",&a[i]);if(a[i]<0)flag=1;i++;}while(flag==0);sum=F1(i,sum,a,counter);printf("不及格人数=%d\n",counter[0]);average=(float)sum/(i-2);F2(i,average,a,counter);printf("大于等于平均分人数=%d\n",counter[11]);F3(i,a,counter);}运行结果:(2)编写一个程序,利用字符数组实现两个字符串的比较。
华北电力大学c++实验指导数组的应用习题参考答案
P126 数组的应用习题解答1.改错题见文件“实验指导改错题习题解答”。
2.填空题(在空白处填入适当内容,将程序补充完整,并上机调试)(1)求Fibonachi数列(1,1,2,3,5,8,13,……)的前10项。
#include <iostream.h>void main(){ int f[11]={0,1,1},n;for(n=3;n<=10;n++)f[n]= (1);for( (2);n<=10;n++)cout<<f[n]<<" ";}参考答案(1)f[n]= f[n-1]+f[n-2] (2)n=10(2)从键盘上输入若干学生的成绩,统计出平均成绩,并输出低于平均分的学生成绩,输入负数结束数据的输入。
#include <iostream.h>void main(){ float x[100],sum=0.0,ave,a;int n=0,i;cin>>a;while( (1) ){ sum+=a ;x[n]=a ;(2) ;cin>>a;}ave=sum/n; ;cout<<"ave="<<ave<<endl;for(i=0; (3) ;i++)if( (4) )cout<<x[i]<<" ";}参考答案(1)a>=0 (2)n++ (3) i<n (4)x[i]<ave(3)计算一个3X3矩阵的各列元素的平均值。
#include "iostream.h"#define M 3void main(){int a[M][M]={1,2,3,4,5,6,7,8},i,j;float ave[M];for(i=0;i<M;i++){ (1) ;for(j=0;j<M;j++)ave[i]=ave[i]+ (2) ;ave[i]= (3) ;}for(i=0;i<M;i++)cout<<" "<<ave[i];}参考答案(1)ave[i]=0 (2)a[j][i] (3)ave[i]/M(4)找出一个5x5矩阵中的最小值及其在数组中的位置。
实验5数组习题及答案
实验 5 数组
班级: :
**: 日期:
一、实验目的
〔1〕掌握一维数组和二维数组的定义、赋值和输入输出方法; 〔2〕掌握字符数组和字符串函数的使用; 〔3〕掌握与数组有关的算法〔特别是排序算法〕。
二、实验容
1.阅读下面程序,写出程序运行结果,并且上机进展验证。
(1) #include "stdio.h" void main() { int i,n[4]={0,0,0,0}; for(i=1;i<4;i++) { if (i==3) break; n[i]=n[i-1]+1; } printf("n[i-1]=%d n[i]=%d\n",n[i-1],n[i]); }
2.程序填空〔根据题意在空白处填入适当的容,使程序变得完整。并上机进展调试验证〕
〔1〕程序说明:以下程序完成的是插入排序功能:数组 a 中存放一个递增数列,输入 一个整数*,将它插入到数组中,使之仍为一个有序数列。
#include "stdio.h" #define N 10 void main() {
〔4〕#include "stdio.h" void main() { int r[5]={1,2,3,4,5}; int i,j,a[5][5]; for(i=0;i<=4;i++) { for(j=i;j<=4;j++) a[i][j]=r[j-i]; for(j=0;j<i;j++) a[i][j]=r[i-j]; } for(i=0;i<5;i++) { for(j=0;j<5;j++) printf("%2d",a[i][j]); printf("\n"); } }
