第6章 数组-实验6-参考答案

合集下载

C语言第六章数组习题答案

C语言第六章数组习题答案

第六章 数组习题答案2、0 43、0 64、&a[i] i%4==0 printf("\n");5、i+j==3_ a[i][j]6、127、a[i][j]+b[i][j] printf(“\n ”)8、按行存放9、( a[i]>a[j])10、将串str2复制到串str1中后再将串str3连接到串str1之后三、阅读题1、如右图所示2、AQM3、AzyD4、91985、如右图所示6、927、1,2,5,7,8、29、v1=5,v2=8,v3=6,v4=110、a*b*c*d*四、编程题1(1)选择法排序#include <stdio.h>void main( ){int i,j,n=10,p,a[10];int temp;for(i=0;i<n;i++) scanf("%d",&a[i]);//输入十个数printf("\n 原始的一维数组是:\n");for(i=0;i<n;i++) printf("%5d",a[i]); /* 输出原始的一维数组序列 */ for(i=0;i<n-1;i++){ p=i; /*假定第i 趟中最小数的位置是i*/for(j=i+1;j<n;j++)if(a[j]<a[p]) p=j;if(i!=p) {temp=a[i];a[i]=a[p];a[p]=temp;}}printf("\n排序后的一维数组:\n");for(i=0;i<n;i++) printf("%5d",a[i]); /* 输出排序后的一维数组序列*/}(2)比较法排序#include<stdio.h>void main( ){int i,j,n=10,p,a[10];int temp;for(i=0;i<n;i++) scanf("%d",&a[i]);//输入十个数printf("\n 原始的一维数组是:\n");for(i=0;i<n;i++) printf("%5d",a[i]); /* 输出原始的一维数组序列*/for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(a[i]>a[j]) {temp=a[i];a[i]=a[j];a[j]=temp;}printf("\n排序后的一维数组:\n");for(i=0;i<n;i++) printf("%5d",a[i]); /* 输出排序后的一维数组序列*/}2、以在十个数据(由小到大排列的十个数)中插入一个数为例#include <stdio.h>void main( ){int a[11],i,n=10,k; int point;printf("\n 请输入原始数据:\n");for(i=0;i<n;i++) scanf("%d",&a[i]); /*输入原始数据,输入的数据要从小到大*/ printf("\n 原始数据是:\n");for(i=0;i<n;i++) printf("%5d",a[i]); /* 输出原始的一维数组序列*/printf("\n请输入要插入的数");scanf("%d",&k); /*输入要插入的数据*/for(i=0;i<n;i++)if(a[i]>k) {point=i; break;}if(i!=n){for(i=n;i>point;i--) a[i]=a[i-1];a[point]=k;} /*从后向前方式*/elsea[n]=k;printf("插入后的数是:\n");for(i=0;i<n+1;i++) printf("%4d ",a[i]); /* 输出插入后的一维数组序列*/}3、#include <stdio.h>int main(){int i,j,upp,low,dig,spa,oth;char text[3][80];upp=low=dig=spa=oth=0;for (i=0;i<3;i++){ printf("please input line %d:\n",i+1);gets(text[i]);for (j=0;j<80 && text[i][j]!='\0';j++){if (text[i][j]>='A'&& text[i][j]<='Z')upp++;else if (text[i][j]>='a' && text[i][j]<='z')low++;else if (text[i][j]>='0' && text[i][j]<='9')dig++;else if (text[i][j]==' ')spa++;elseoth++;}}printf("\nupper case: %d\n",upp);printf("lower case: %d\n",low);printf("digit : %d\n",dig);printf("space : %d\n",spa);printf("other : %d\n",oth);return 0;}5、以5个数逆序存放为例,将n值修改,则可实现n个数逆序存放#include <stdio.h>#define n 5 //n为符号常量,值为5void main( ){int i,a[n],t;for(i=0;i<n;i++)scanf("%d",&a[i]);//输入n个数for(i=0;i<n/2;i++)//将a[0]与a[4]交换,a[1]与a[3]交换,a[i]与a[n-1-i]交换{t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}for(i=0;i<n;i++)//输出n个数printf("%5d",a[i]);printf("\n");}6、杨辉三角#include <stdio.h>void main( ){int i,j,a[10][10];for(i=0;i<10;i++)for(j=0;j<=i;j++)if(j==0||i==j)a[i][j]=1;else a[i][j]=a[i-1][j]+a[i-1][j-1];for(i=0;i<10;i++){for(j=0;j<=i;j++)printf("%5d",a[i][j]);printf("\n");}}7、提高题:编写程序:#include <stdio.h>#include <string.h>void main (){char s1[80]={0},s2[80]={0};char a;int i,j,k;printf("请输入一段字符s1\n");gets(s1);printf("======================(1)============================\n"); for(i=0;s1[i];i++);printf("%s的长度:%d\n",s1,i);printf("======================(2)============================\n"); for(j=0;s1[j];j++){s2[j]=s1[j];}printf("将一个字符串S1的内容复制给另一个字符串S2:\n");puts(s2);printf("i:%d\n",i);printf("======================(3)============================\n"); for(k=0;k<=j;k++){s1[i]=s2[k];i++;}printf("将两个字符串S1和S2连接起来,结果保存在S1字符串中:\n"); puts(s1);printf("======================(4)============================\n"); printf("请输入要寻找的字母:");scanf("%c",&a);for(i=0;s1[i];i++){if(s1[i]==a)break;}if(!s1[i])printf("\n-1\n");else printf("\n%c在第%d个位置\n",a,i+1);8、与第5题同9、Fibonacci数列前20项数值#include <stdio.h>int main( ){int i; long f[20];f[0]=1;f[1]=1;for(i=2;i<20;i++)f[i]=f[i-1]+f[i-2];for(i=0;i<20;i++){if(i%5==0) printf("\n");//每行五个元素printf("%10ld",f[i]);}}10、输入10个元素,统计奇数的个数#include <stdio.h>void main( ){int i,num[10],count=0;for(i=0;i<10;i++){printf("请输入第%d个数: ",i+1); /*给予输入提示*/scanf("%d",&num[i]);if(num[i]%2!=0) count++;}printf("奇数个数是:%d\n",count );}11、下面程序的功能是从键盘输入一行字符,统计其中有多少单词。

第6章 数组习题参考答案

第6章 数组习题参考答案

第六章数组习题参考答案6-1 请同学上机运行代码。

6-2Option ExplicitOption Base 1Private Sub Command1_Click()Dim i As Integer, t As IntegerDim a(15) As IntegerRandomizeFor i = 1 To 15a(i) = Int(100 * Rnd)Text1 = Text1 & Str(a(i))Next iFor i = 1 To 7t = a(i)a(i) = a(16 - i)a(16 - i) = tNext iFor i = 1 To 15Text2 = Text2 & Str(a(i))Next iEnd SubPrivate Sub Command2_Click()Text1 = ""Text2 = ""End SubPrivate Sub Command3_Click()EndEnd Sub6-3Option ExplicitDim a(20) As IntegerPrivate Sub Command1_Click()Dim i As IntegerRandomizeFor i = 1 To 20a(i) = Int(90 * Rnd) + 10Text1 = Text1 & Str(a(i))Next iEnd SubPrivate Sub Command2_Click()Dim i As Integer, j As Integer, f As BooleanDim n As IntegerFor i = 1 To 20f = TrueFor j = i + 1 To 20If a(i) = a(j) Then f = FalseNext jIf f = True Then n = n + 1Next iText2 = nEnd SubPrivate Sub Command3_Click()Text1 = ""End SubPrivate Sub Command4_Click()EndEnd Sub6-4Option ExplicitDim a(20) As IntegerPrivate Sub Command1_Click()Dim i As IntegerRandomizeFor i = 1 To 20a(i) = Int(90 * Rnd) + 10Text1 = Text1 & Str(a(i))Next iEnd SubPrivate Sub Command2_Click()Dim i As Integer, j As Integer, max As IntegerDim n As Integer, w As Integer, p As IntegerFor i = 1 To 20n = 0: p = iFor j = 1 To 4If i > 20 Then p = p - 20n = n + a(p)Next jIf n > max Thenmax = nw = iEnd IfNext iText2 = maxPicture1.Print w & "--" & w + 4End SubPrivate Sub Command3_Click()Text1 = ""End SubPrivate Sub Command4_Click()EndEnd Sub6-5Dim a(5, 5) As IntegerPrivate Sub Command1_Click()For i = 1 To 4For j = 1 To 5a(i, j) = Int(9 * Rnd) + 1Picture1.Print a(i, j);Next jPicture1.PrintNext iEnd SubPrivate Sub Command2_Click()For j = 1 To 5s = 0For i = 1 To 4s = s + a(i, j)Next iText1 = Text1 & Str(s)Next jEnd SubPrivate Sub Command3_Click()For i = 1 To 4s = 0For j = 1 To 5s = s + a(i, j)Next jText2 = Text2 & Str(s) & Chr(13) & Chr(10)Next iEnd SubPrivate Sub Command4_Click()Text1 = ""Text2 = ""Picture1.ClsEnd SubPrivate Sub Command5_Click()EndEnd Sub6-6Option ExplicitPrivate Sub Command1_Click()Dim a(5, 5), i As Integer, j As IntegerDim n As Integer, m As Integer, t As IntegerRandomizeFor i = 1 To 5For j = 1 To 5 - 1a(i, j) = Int(40 * Rnd) * 2 + 10Next jNext iFor i = 1 To 5For j = 5 To 6 - i Step -1a(i, j) = Int(40 * Rnd) * 2 + 11Next jNext iFor i = 1 To 5For j = 1 To 5Text1 = Text1 & Str(a(i, j))Next jText1 = Text1 & vbCrLfNext iEnd Sub6-7 同6-46-8Dim a(5, 5) As IntegerPrivate Sub Command1_Click()RandomizeFor i = 1 To 5For j = 1 To 5a(i, j) = Int(100 * Rnd) + 1Picture1.Print Right(" " & a(i, j), 4);Next jPicture1.PrintNext iEnd SubPrivate Sub Command2_Click()For i = 1 To 5For j = 1 To 5s = s + a(i, j)Next jNext iText1 = Str(s)End SubPrivate Sub Command3_Click()For i = 1 To 5For j = 1 To 5If i = 1 Or j = 1 Or i = 5 Or j = 5 Thens = s + a(i, j)End IfNext jNext iText2 = Str(s)End SubPrivate Sub Command4_Click()For i = 1 To 5For j = 1 To 5If i = j Or j = 6 - i Thens = s + a(i, j)End IfNext jNext iText3 = Str(s)End Sub6-9Option ExplicitPrivate Sub Command1_Click()Dim a() As Integer, i As Integer, j As IntegerDim max As Integer, k As Integer, f As BooleanDim n As Integer, m As Integer, t As Integern = InputBox("输入矩阵的行数:")m = InputBox("输入矩阵的列数:")ReDim a(n, m)RandomizeFor i = 1 To nFor j = 1 To ma(i, j) = Int(90 * Rnd) + 10Text1 = Text1 & Str(a(i, j))Next jText1 = Text1 & vbCrLfNext iFor i = 1 To nmax = 0For j = 1 To mIf a(i, j) > max Thenmax = a(i, j)t = jEnd IfNext jFor k = 1 To nIf a(k, t) < max Then Exit ForNext kIf k > n ThenPicture1.Print "鞍点:"; a(i, t); "第"; i; "行"; t; "列"f = TrueEnd IfNext iIf f = False Then Picture1.Print "没有鞍点"End SubPrivate Sub Command2_Click()Text1 = ""Picture1.ClsEnd SubPrivate Sub Command3_Click()EndEnd Sub6-10Option ExplicitPrivate Sub Form_Click()Dim a() As Integer, n As IntegerDim i As Integer, j As Integern = InputBox("层数")ReDim a(n, n)For i = 1 To nPrint Tab(20 - 2 * i);For j = 1 To iIf i = 1 Or i = j Thena(i, j) = 1Elsea(i, j) = a(i - 1, j - 1) + a(i - 1, j)End IfPrint Left(a(i, j) & " ", 4);Next jPrintNext iEnd Sub6-11Option ExplicitPrivate Sub Command1_Click()Dim a(4, 5), i As Integer, j As IntegerDim b(4) As Integer, max As Integer, min As IntegerDim n As Integer, m As Integer, t As IntegerRandomizemax = 0: min = 32767For i = 1 To 4For j = 1 To 5a(i, j) = Int(90 * Rnd) + 10Text1 = Text1 & Str(a(i, j))b(i) = b(i) + a(i, j)Next jText1 = Text1 & vbCrLfIf max < b(i) Thenmax = b(i): m = iElseIf min > b(i) Thenmin = b(i): n = iEnd IfNext iLabel1.Caption = "max行和:" & max & " min行和:" & min & vbCrLf & "max 行:" & m & " min行:" & n & " 交换这两行"For j = 1 To 5t = a(m, j)a(m, j) = a(n, j)a(n, j) = tNext jFor i = 1 To 4For j = 1 To 5Text2 = Text2 & Str(a(i, j))Next jText2 = Text2 & vbCrLfNext iEnd Sub6-12Option ExplicitPrivate Sub Command1_Click()Dim a(), i As Integer, j As IntegerDim b(4) As Integer, max As Integer, min As IntegerDim n As Integer, m As Integer, t As IntegerRandomizen = InputBox("矩阵阶数n:")ReDim a(n, n)For i = 1 To nFor j = 1 To na(i, j) = Int(90 * Rnd) + 10Text1 = Text1 & Str(a(i, j))Next jText1 = Text1 & vbCrLfNext iFor i = 1 To nFor j = 1 To nText2 = Text2 & Str(a(j, i))Next jText2 = Text2 & vbCrLfNext iEnd SubPrivate Sub Command2_Click()Text1 = ""Text2 = ""End SubPrivate Sub Command3_Click()EndEnd Sub6-13Option ExplicitOption Base 1Private Sub Command1_Click()Dim a(3, 3) As Integer, i As Integer, j As Integer Dim max As Long, k As Long, f As IntegerDim n As Integer, m As IntegerRandomizeFor i = 1 To 3For j = 1 To 3a(i, j) = Int(90 * Rnd) + 10Text1 = Text1 & Str(a(i, j))Next jText1 = Text1 & vbCrLfNext iFor i = 1 To 3 '主对角线方向m = ik = 1For j = 1 To 3k = k * a(m, j)m = m + 1If m > 3 Then m = 1Next jIf k > max Thenmax = kn = if = 1End IfNext iFor i = 1 To 3 '辅对角线方向m = ik = 1For j = 1 To 3k = k * a(j, m)m = m - 1If m < 1 Then m = 3Next jIf k > max Thenmax = kn = if = 2End IfNext iPicture1.Print "最大组元素:"If f = 1 ThenFor i = 1 To 2Picture1.Print "a("; n; ","; i; ")="; a(n, i); " ";n = n + 1If n > 3 Then n = 1Next iPicture1.Print "a("; n; ","; i; ")="; a(n, i)ElseIf f = 2 ThenFor i = 1 To 2Picture1.Print "a("; i; ","; n; ")="; a(i, n); " ";n = n - 1If n < 1 Then n = 3Next iPicture1.Print "a("; i; ","; n; ")="; a(i, n)End IfPicture1.Print "乘积="; maxEnd SubPrivate Sub Command2_Click()Text1 = ""Picture1.ClsEnd SubPrivate Sub Command3_Click()EndEnd Sub6-14Option ExplicitPrivate Sub Command1_Click()Dim a(3, 3) As Integer, i As Integer, j As IntegerDim k As Integeri = 3: j = 2: a(i, j) = 1: k = 1Do Until k > 9k = k + 1If i + 1 > 3 And j + 1 <= 3 Theni = 1: j = j + 1ElseIf i + 1 <= 3 And j + 1 > 3 Theni = i + 1: j = 1ElseIf i + 1 > 3 And j + 1 > 3 Theni = i - 1ElseIf i + 1 <= 3 And j + 1 <= 3 And a(i + 1, j + 1) <> 0 Theni = i - 1Elsei = i + 1: j = j + 1End Ifa(i, j) = kLoopFor i = 1 To 3For j = 1 To 3Picture1.Print a(i, j);Next jPicture1.PrintNext iEnd SubPrivate Sub Command2_Click()Dim a() As Integer, i As Integer, j As IntegerDim k As IntegerDim n As Integern = InputBox("幻方阶数:")ReDim a(n, n)i = n: j = (n + 1) / 2: a(i, j) = 1: k = 1Do Until k > n * nk = k + 1If i + 1 > n And j + 1 <= n Theni = 1: j = j + 1ElseIf i + 1 <= n And j + 1 > n Theni = i + 1: j = 1ElseIf i + 1 > n And j + 1 > n Theni = i - 1ElseIf i + 1 <= n And j + 1 <= n And a(i + 1, j + 1) <> 0 Theni = i - 1Elsei = i + 1: j = j + 1End Ifa(i, j) = kLoopFor i = 1 To nFor j = 1 To nPicture1.Print Right(" " & a(i, j), 4);Next jPicture1.PrintNext iEnd Sub6-15Option ExplicitOption Base 1Private Sub Command1_Click()Dim a() As Integer, i As Integer, j As IntegerDim max As Long, k As Long, f As IntegerDim n As Integer, m As IntegerRandomizef = InputBox("输入方阵阶数:")ReDim a(f, f)For i = 1 To fFor j = 1 To fa(i, j) = Int(90 * Rnd) + 10Text1 = Text1 & Str(a(i, j))Next jText1 = Text1 & vbCrLfNext iFor i = 1 To f '副对角线方向m = ik = 0For j = 1 To fk = k + a(j, m)m = m - 1If m < 1 Then m = fNext jIf k > max Thenmax = kn = iEnd IfNext iPicture1.Print "max:"; maxFor i = 1 To fPicture1.Print "a("; i; ","; n; ")="; a(i, n)n = n - 1If n < 1 Then n = fNext iEnd SubPrivate Sub Command2_Click()Text1 = ""Picture1.ClsEnd SubPrivate Sub Command3_Click()EndEnd Sub。

C语言 第六章 数组

C语言 第六章 数组
2.
6
6.1 排序问题
3. 初始化
类型名 数组名[数组长度]={初值表}; 初值表中依次放着数组元素的初值。例如: int a[10]={1,2,3,4,5,6,7,8,9,10}; 静态存储的数组如果没有初始化,系统自动给所有的数组元素赋0。 即 static int b[5]; 等价于 static int b[5]={0,0,0,0,0}; 初始化也可以只针对部分元素,如 static int b[5]={1,2,3}; 只对数组b的前3个元素赋初值,其余元素的初值为0。又如 int f[20]={0,1}; 对数组f的前两个元素赋初值,其余元素的值 不确定。
18
6.2 矩阵中最大值的位置
4. 使用二维数组编程
例7:定义一个3*2的二维数组a,数组元素的值由下式给 出,按矩阵的形式输出a。a[i][j]=i+j(0≤i ≤2, 0≤j ≤1), 见文件p131ex7-6.cpp
i
j
第1次 第2次 第3次 第4次 第5次
第6次
0 0 1 1 2
2
0 1 0 1 0
9
6.1 排序问题
4. 使用一维数组编程
例4:输入一个正整数n(1<n≤10), 再输入n个整数,将它们存入 数组a中。 ① 输出最小值和它所对应的下标。 ② 将最小值与第一个数交换,输 出交换后的n个数。 数组的长度在定义时必须确定, 如果无法确定需要处理的数据 数量,至少也要估计其上限, 并将该上限值作为数组长度。 因为n ≤10,数组长度就取上 限10。此外,如果用变量 index记录最小值对应的下标, 则最小值就是a[index]。 见p124ex7-4.cpp
8
6.1 排序问题
4. 使用一维数组编程

C语言程序设计第六章数组习题及答案

C语言程序设计第六章数组习题及答案

1.以下对一维整型数组a的定义,正确的是_。

(2分)A.int a(10) ;B.int n = 10 , a[n] ;C.int n ;scanf( "%d" , &n ) ;int a[n] ;D.int a[10] ;2.若有定义:int a[10] ;,则对a数组元素的正确引用是_。

(2分)A.a[10]B.a[3.5]C.a(5)D.a[10-10]3.对定义int a[10] = {6 , 7 , 8 , 9 , 10} ; 的正确理解是_。

(2分)A.将5个初值依次赋给a[1]--a[5]B.将5个初值依次赋给a[0]--a[4]C.将5个初值依次赋给a[6]--a[10]D.因为数组长度与初值个数不相同,所以此语句不正确4..若有定义:int a[3][4]; , 则对a数组元素的正确引用是_。

(2分)A.a[3][4]B.a[1,3]C.a[1+1][0]D.a(2)(1)5.以下对二维数组a初始化正确的语句是_。

(2分)A.int a[2][ ]={{0 , 1 , 2}, {3 , 4 , 5}};B.int a[ ][3]={{0, 1, 2}, {3, 4, 5}};C.int a[2][4]={{0, 1 , 2}, {3 , 4}, {5}};D.int a[ ][3]={{0, 1, 2}, { }, {3, 4}};6.对二维数组a进行如下初始化:int a[ ][3]={0 , 1 , 2 , 3 , 4 , 5};则a[1][1]的值是_。

(2分)A.0B.3C.4D.17.下面程序段的运行结果是_。

(2分)#include<stdio.h>int main( ){int i , x[3][3] = {1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9} ;for( i = 0 ; i < 3 ; i++ )printf( "%2d" , x[i][2-i] ) ;return 0 ;}A.1 5 9B.1 4 7C.3 5 7D.3 6 98.以下对数组s的初始化,错误的是_。

数据结构教程李春葆课后答案第6章数组和广义表

数据结构教程李春葆课后答案第6章数组和广义表

3. 如果某个一维数组 A 的元素个数 n 很大,存在大量重复的元素,且所有元素值相同 的元素紧挨在一起,请设计一种压缩存储方式使得存储空间更节省。
答:设数组的元素类型为 ElemType,采用一种结构体数组 B 来实现压缩存储,该结构 体数组的元素类型如下:
struct { ElemType data;
解:从二维数组 B 的右上角的元素开始比较。每次比较有三种可能的结果:若相等, 则比较结束;若 x 大于右上角元素,则可断定二维数组的最上面一行肯定没有与 x 相等的 数据,下次比较时搜索范围可减少一行;若 x 小于右上角元素,则可断定二维数组的最右 面一列肯定不包含与 x 相等的数据,下次比较时可把最右一列剔除出搜索范围。这样,每 次比较可使搜索范围减少一行或一列,最多经过 m+n 次比较就可找到要求的与 x 相等的元 素。对应的程序如下:
{ printf("不是对角矩阵\n");
return false;
}
for (int i=0;i<a.nums;i++)
if (a.data[i].r==a.data[i].c) //行号等于列号
sum+=a.data[i].d;
return true;
}
11. 设计一个算法 Same(g1,g2),判断两个广义表 g1 和 g2 是否相同。 解:判断广义表是否相同过程是,若 g1 和 g2 均为 NULL,则返回 true;若 g1 和 g2 中一个为 NULL,另一不为 NULL,则返回 false;若 g1 和 g2 均不为 NULL,若同为原子 且原子值不相等,则返回 false,若同为原子且原子值相等,则返回 Same(g1->link,g2->link), 若同为子表,则返回 Same(g1->val.sublist,g2->val.sublist) & Same(g1->link,g2->link)的 结果,若一个为原子另一个为子表,则返回 false。对应的算法如下:

C++中国大学MOOC第6章作业数组答案

C++中国大学MOOC第6章作业数组答案

中国大学慕课spoc第六章C++数组答案1最大值(100分)问题描述先输入一个正整数n(1到20之间),再输入n个整数,计算其中的最大值和相应下标。

输入描述先输入要处理的整数的个数n(1<=n<=20),再输入n个整数,并用空格分开。

输出描述依次输出n个整数中的最大值和相应下标(若多个整数与最大值相同,则从小到大输出相应下标),之间用空格分隔。

输入样例154 6 7 2 5输出样例17 2输入样例254 6 7 2 7输出样例27 2 4#include <bits/stdc++.h>using namespace std;int main(){int n,i,j,a[20],max;cin>>n;for(i=0;i<n;i++){cin>>a[i];}max=a[0];for(i=0;i<n;i++){if(max<a[i])max=a[i];}cout<<max;for(i=0;i<n;i++){if(a[i]==max){cout<<" "<<i;}}}2峰值个数(100分)问题描述先输入一个正整数n(3到20之间),再输入n个整数,计算其中的峰值个数。

峰值是满足大于或小于左右两个元素的元素,例如12,45,32,0,14,25,62,48,51序列中,峰值有45,0,62,48,峰值个数为4。

输入描述先输入要处理的整数的个数n(3<=n<=20),再输入n个整数,并用空格分开。

输出描述一个整数,表示n个整数中有多少个峰值。

输入样例54 6 7 2 5输出样例2#include <bits/stdc++.h>using namespace std;int main(){int n,i,a[20],j=0;cin>>n;for(i=0;i<n;i++){cin>>a[i];}for(i=1;i<n-1;i++){if((a[i]>a[i-1]&&a[i]>a[i+1])||(a[i]<a[i-1]&&a[i]<a[i+1]))j++;}cout<<j;}3互为相反数(100分)问题描述先输入一个正整数n(2到20之间),再输入n个数(可重复,可为浮点数),计算其中有多少对互为相反数(仅有符号不同的两数互为相反数)。

C语言实验报告 实验六 参考答案

C语言实验报告 实验六  参考答案

实验六二维数值数组(参考答案)(1) 设计程序sy6-1.c,从键盘上输入一个3行3列矩阵各个元素的值,输出其主对角线元素和反向对角线元素之和。

算法分析:方阵主对角线上的元素,行下标和列下标相同;辅对角线元素,如果行下标为i,列下标就为2-i;参考答案:# include <stdio.h># include <stdlib.h># include <math.h># include <time.h>void main(){int a[3][3];int i,j,sum=0;srand( time( NULL ) );printf("矩阵:\n");for(i=0;i<3;i++) //用随机函数生成3行3列的二维数组并按矩阵格式输出{for(j=0;j<3;j++){a[i][j]=rand()%20;printf("%4d",a[i][j]);}printf("\n");}for(i=0;i<3;i++)sum=sum+a[i][i]+a[i][2-i];printf("该矩阵的正、反对角线元素之和为:%d\n",sum);}运行结果:(2) 设计程序sy6-2.c,找出N×N矩阵中每列元素中的最大值,并按顺序依次存放于b数组中。

算法分析:按列序遍历二维数组,每列用打擂台的方法求最大数,N列则有N个最大值,分别存于b数组的对应元素中。

# include <stdio.h># include <stdlib.h># include <math.h># include <time.h># define N 4void main(){int a[N][N],b[N];int i,j;srand( time( NULL ) );printf("矩阵:\n");for(i=0;i<N;i++) //用随机函数生成N行N列的二维数组并按矩阵格式输出{for(j=0;j<N;j++){a[i][j]=rand()%20;printf("%4d",a[i][j]);}printf("\n");}for(j=0;j<N;j++) //外循环控制列下标{b[j]=a[0][j]; //假设每列的0行元素是最大数for(i=1;i<N;i++)if(b[j]<a[i][j])b[j]=a[i][j];}printf("该矩阵每列元素的最大值是:\n");for(i=0;i<N;i++)printf("%4d",b[i]);printf("\n");}运行结果:(3) 设计程序sy6-3.c,定义一个3×3的二维数组,通过随机函数自动赋值。

lab6-数组资料

lab6-数组资料

printf(“%d”,a); ()
必须 for(j=0;j<10;j++)
printf(“%d\t”,a[j]);
()
字符数组和字符串
字符数组 定义
例 char c[10], ch[3][4];
字符数组的初始化 逐个字符赋值 用字符串常量
字符数组的引用
逐逐逐用用个个个字字字字字符符符符符串串赋赋赋常常值值值量量
C程序设计实验
lab6-数组
实验目的
1. 熟练掌握C程序中的数组和字符数组的定义的引用 2.掌握数组和字符数组的输入输出 3. 熟练字符串处理函数
实验学时:
4学时 实验6报告提交时间:
实验项目性质
验证性
实验内容
编程调试典型程序
实验步骤—选择法对数组排序
用选择法对10个整数,按递增排序
实验步骤—字符串连接
编写一个程序,将两个字符串连接起来,不要 用strcat函数。
实验步骤
完成作业(p245, 8.2)
(a)输出"Who is the inventor of C?" (b)输入答案 (c)正确打印"Good!", (d)不正确打印"Try again" (e)不正确的允许有三次回答机会,还不正确才打印正确
有问题!
例例例例cchchcahahraracrcrhchc[h[5h5[][5]=6=]{]={=‘‘{“{‘“HHBB’H’o’ye,,’”l’,l’oe;”e’o’’};,,’’,’ll’’y’,,’’};ll’’,,’’oo’’,}’; #’}; char ch[6]=“Hello”;
HHB ceheaor ch[l]l=y“Hellllo\0”; oo\0 cchch[h[00[]0H] ] cchch[h[11[]1e] ] cchch[h[22[]2l] ] cchch[h[33[]3l] ] cchch[h[44[]4o] ] \0

实验6 数组——参考答案

实验6 数组——参考答案

实验6 数组一、一维数组实验2. 编程:输入长度为10的整型数组并输出;然后将其逆序存放后再输出。

例如:0 1 2 3 4 5 6 7 8 9#include<stdio.h>void main(){int i, j, a[10], t;printf("Input 10 number: ");for(i=0; i<10; i++) /*读入数据*/scanf("%d", &a[i]);printf("origin data: ");for(i=0; i<10; i++) /*输出原始数据*/printf("%d ", a[i]);printf("\n");for(i=0,j=9; i<j ; i++,j--) /*逆序存放*/{t=a[i];a[i]=a[j];a[j]= t;}printf("After reversed: "); /*输出逆序存放后的数据*/for(i=0; i<10; i++)printf("%d ", a[i]);printf("\n");}3. 编程:输入n个(1<n<=10)正整数并保存到数组中,求出最大值、最小值、平均值,以及最大值、最小值在数组中的下标分别是多少。

例如:5#include <stdio.h>void main(){int i, n , max, min, a[10], sum;float average;printf("Input n (1<n<=10): ");scanf("%d", &n);if(1<n && n<=10){printf("Input %d integer:", n); /*输入数据并求累加和*/for(i=0, sum=0; i<n; i++){scanf("%d", &a[i]);sum+=a[i];}average=(float)sum/n; /*求出平均值*/for(i=0, max=0, min=0; i<n; i++) /*求最大、最小值的下标*/{if(a[i] > a[max])max= i;if(a[i] < a[min])min= i;}printf("max=%-5d index=%d\n", a[max], max);printf("min=%-5d index=%d\n", a[min], min);printf("average=%.2f\n", average);}elseprintf("数据超出范围");}4. 编程:青年歌手参加歌曲大奖赛,有10个评委对她(他)进行打分,试编程求这位选手的平均得分并输出(去掉一个最高分和一个最低分)。

实验6 数组2答案

实验6 数组2答案

实验6 数组的应用一、实验目的1、掌握一维数组、二维数组的概念和定义2、掌握数组元素的引用、赋值和输入/输出方法3、掌握使用循环结构控制数组元素的下标按规律变化来处理一维数组元素和二维数组元素的程序设计方法二、实验内容1. 写出下列程序运行后的输出结果并上机验证。

①#include <iostream>using namespace std;int main(){int a[10]={12,39,26,41,55,63,72,40,83,95};int k=0,j=0;for (int i=0;i<10;i++)if (a[i]%2==1) k++; else j++;cout<<k<<' '<<j<<endl;}6 4②#include <iostream>using namespace std;int main(){char a[]="abcdabcabfgacd";int i1=0,i2=0,i=0;while(a[i]){if(a[i]=='a') i1++;if(a[i]=='b') i2++;i++;}cout<<i1<<' '<<i2<<' '<<i<<endl;4, 3,14③#include <iostream>using namespace std;int main(){int a[10]={76,83,54,62,40,75,90,92,77,84};int b[4]={60,70,90,101};int c[4]={0};int i;for(i=0;i<10;i++){int j=0;while(a[i]>=b[j]) j++;c[j]++;}for(i=0;i<4;i++) cout<<c[i]<<' ';cout<<endl;}2 1 5 2④#include <iostream>#include <string>using namespace std;int main(){char a[5][10]={"student","worker","soldier","cadre","peasant"};char s1[10],s2[10];strcpy(s1,a[0]);strcpy(s2,a[0]);//strcpy(s1,s2)为字符串复制函数,将字符串变量s2的值复制给s1for(int i=1;i<5;i++){if(strcmp(a[i],s1)>0) strcpy(s1,a[i]);//strcmp(s1,s2)为字符串比较函数if(strcmp(a[i],s2)<0) strcpy(s2,a[i]);}cout<<s1<<' '<<s2<<endl;worker cadre说明:(s1、s2为字符串变量或者字符数组)strcpy(s1,s2);strcpy是string copy(字符串复制)的缩写。

高级语言程序设计实验-答案

高级语言程序设计实验-答案

r,把b保存到a中,并把余数r保存到b中,重复上述过程,
直到b为0,a中的数即为最大公约数。)
退出
实验四
13、我国古代数学家张丘建在《算经》一书中曾提出过著名
的“百钱买百鸡”问题,该问题叙述如下:鸡翁一,值钱五; 鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,则翁、母、
雏各几何?请编写C程序,解决“百钱买百鸡”问题。
赏我一粒麦子,第2个小格赏我两粒,第3个小格赏我四粒,
以后每一小格都比前一小格的麦粒数增加一倍,只要把棋盘 上的64个小格全部按这样的方法得到的麦粒都赏赐给我,
退出
实验四
我就心满意足了。”舍罕王听了达依尔的这个“小小”的要
求,想都没想就满口答应下来。
如果1立方米麦粒数约1.42e8粒,国王能兑现他的许诺吗?
是X;X说他的妈妈是C;C说Z是他的孩子。主持人听后知道
他们在开玩笑,全是假话。请编程分析出正确的母子关系。
退出
高等学校精品资源共享课程(省级) 省级教学成果一等奖建设教材
第5章 函数及其应用
揭安全
jieanquan@ 江西师范大学计算机信息工程学院
实验5
实验目的:
(1)理解系统函数调用的执行过程 (2)掌握函数的定义与调用方法 (3)理解嵌套与递归函数的执行过程,能够正确应用递归 法求解递归问题 (4)理解模块化程序设计的基本思想,并能根据实际问题
采用自顶向上或自顶向下的方法进行问题求解
退出
实验五
1、编写一个函数int sum(int n),求1+2+3+…+n的和作
为函数的返回结果,并编写main函数进行测试。
2、设计函数bool isSxh(int n)判断整数n是否是水仙花数,

第6章 数组 课后答案【khdaw_lxywyl】

第6章 数组 课后答案【khdaw_lxywyl】

第6章 数组习题参考答案6-1 请同学上机运行代码。

6-2Option Explicit Option Base 1Private Sub Command1_Click() Dim i As Integer, t As Integer Dim a(15) As Integer Randomize For i = 1 To 15a(i) = Int(100 * Rnd) Text1 = Text1 & Str(a(i)) Next i For i = 1 To 7 t = a(i)a(i) = a(16 - i) a(16 - i) = t Next i For i = 1 To 15 Text2 = Text2 & Str(a(i)) Next i End SubPrivate Sub Command2_Click() Text1 = "" Text2 = "" End SubPrivate Sub Command3_Click() End End Sub 6-3w w w .k h da w .c o m课后答案网Option ExplicitDim a(20) As IntegerPrivate Sub Command1_Click() Dim i As Integer Randomize For i = 1 To 20 a(i) = Int(90 * Rnd) + 10 Text1 = Text1 & Str(a(i)) Next i End SubPrivate Sub Command2_Click()Dim i As Integer, j As Integer, f As Boolean Dim n As Integer For i = 1 To 20 f = TrueFor j = i + 1 To 20If a(i) = a(j) Then f = False Next j If f = True Then n = n + 1 Next i Text2 = n End SubPrivate Sub Command3_Click() Text1 = "" End SubPrivate Sub Command4_Click() End End Sub 6-4w w w .k h da w .c o m课后答案网Option ExplicitDim a(20) As IntegerPrivate Sub Command1_Click() Dim i As Integer Randomize For i = 1 To 20 a(i) = Int(90 * Rnd) + 10 Text1 = Text1 & Str(a(i)) Next i End SubPrivate Sub Command2_Click()Dim i As Integer, j As Integer, max As Integer Dim n As Integer, w As Integer, p As Integer For i = 1 To 20 n = 0: p = i For j = 1 To 4If i > 20 Then p = p - 20 n = n + a(p) Next jIf n > max Then max = n w = i End If Next i Text2 = maxPicture1.Print w & "--" & w + 4 End SubPrivate Sub Command3_Click() Text1 = "" End SubPrivate Sub Command4_Click() End End Sub 6-5w w w .k h da w .c o m课后答案网Dim a(5, 5) As IntegerPrivate Sub Command1_Click() For i = 1 To 4 For j = 1 To 5a(i, j) = Int(9 * Rnd) + 1 Picture1.Print a(i, j); Next jPicture1.Print Next i End SubPrivate Sub Command2_Click() For j = 1 To 5 s = 0 For i = 1 To 4 s = s + a(i, j) Next i Text1 = Text1 & Str(s) Next j End SubPrivate Sub Command3_Click() For i = 1 To 4 s = 0 For j = 1 To 5 s = s + a(i, j) Next jText2 = Text2 & Str(s) & Chr(13) & Chr(10)w w w .k h da w .c o m课后答案网End SubPrivate Sub Command4_Click() Text1 = "" Text2 = "" Picture1.Cls End SubPrivate Sub Command5_Click() End End Sub 6-6Option ExplicitPrivate Sub Command1_Click()Dim a(5, 5), i As Integer, j As IntegerDim n As Integer, m As Integer, t As Integer Randomize For i = 1 To 5For j = 1 To 5 - 1a(i, j) = Int(40 * Rnd) * 2 + 10 Next j Next i For i = 1 To 5For j = 5 To 6 - i Step -1a(i, j) = Int(40 * Rnd) * 2 + 11 Next j Next i For i = 1 To 5 For j = 1 To 5 Text1 = Text1 & Str(a(i, j)) Next j Text1 = Text1 & vbCrLfw w w .k h da w .c o m课后答案网End Sub6-7 同6-4 6-8Dim a(5, 5) As IntegerPrivate Sub Command1_Click() Randomize For i = 1 To 5 For j = 1 To 5a(i, j) = Int(100 * Rnd) + 1 Picture1.Print Right(" " & a(i, j), 4); Next jPicture1.Print Next i End SubPrivate Sub Command2_Click() For i = 1 To 5 For j = 1 To 5 s = s + a(i, j) Next j Next iText1 = Str(s) End SubPrivate Sub Command3_Click() For i = 1 To 5 For j = 1 To 5If i = 1 Or j = 1 Or i = 5 Or j = 5 Thenw w w .k h da w .c o m课后答案网s = s + a(i, j) End If Next j Next iText2 = Str(s) End SubPrivate Sub Command4_Click() For i = 1 To 5 For j = 1 To 5If i = j Or j = 6 - i Then s = s + a(i, j) End If Next j Next iText3 = Str(s) End Sub 6-9Option ExplicitPrivate Sub Command1_Click()Dim a() As Integer, i As Integer, j As Integer Dim max As Integer, k As Integer, f As Boolean Dim n As Integer, m As Integer, t As Integer n = InputBox("输入矩阵的行数:") m = InputBox("输入矩阵的列数:") ReDim a(n, m) Randomize For i = 1 To nFor j = 1 To ma(i, j) = Int(90 * Rnd) + 10 Text1 = Text1 & Str(a(i, j))w w w .k h da w.c o m课后答案网Next j Text1 = Text1 & vbCrLf Next i For i = 1 To n max = 0For j = 1 To mIf a(i, j) > max Then max = a(i, j) t = j End If Next j For k = 1 To nIf a(k, t) < max Then Exit For Next kIf k > n ThenPicture1.Print "鞍点:"; a(i, t); "第"; i; "行"; t; "列" f = True End If Next iIf f = False Then Picture1.Print "没有鞍点" End SubPrivate Sub Command2_Click() Text1 = "" Picture1.Cls End SubPrivate Sub Command3_Click() End End Sub 6-10Option Explicitw w w .k h da w .c o m课后答案网Private Sub Form_Click()Dim a() As Integer, n As Integer Dim i As Integer, j As Integer n = InputBox("层数") ReDim a(n, n) For i = 1 To n Print Tab(20 - 2 * i); For j = 1 To iIf i = 1 Or i = j Then a(i, j) = 1 Elsea(i, j) = a(i - 1, j - 1) + a(i - 1, j) End IfPrint Left(a(i, j) & " ", 4); Next j PrintNext i End Sub 6-11Option ExplicitPrivate Sub Command1_Click()Dim a(4, 5), i As Integer, j As IntegerDim b(4) As Integer, max As Integer, min As Integer Dim n As Integer, m As Integer, t As Integer Randomizemax = 0: min = 32767 For i = 1 To 4 For j = 1 To 5a(i, j) = Int(90 * Rnd) + 10 Text1 = Text1 & Str(a(i, j)) b(i) = b(i) + a(i, j)w w w .k h da w.c o m课后答案网Text1 = Text1 & vbCrLf If max < b(i) Then max = b(i): m = i ElseIf min > b(i) Then min = b(i): n = i End If Next iLabel1.Caption = "max 行和: " & max & " min 行和 :" & min & vbCrLf & "max 行: " & m & " min 行: " & n & " 交换这两行" For j = 1 To 5 t = a(m, j)a(m, j) = a(n, j) a(n, j) = t Next j For i = 1 To 4 For j = 1 To 5 Text2 = Text2 & Str(a(i, j)) Next j Text2 = Text2 & vbCrLf Next i End Sub 6-12Option ExplicitPrivate Sub Command1_Click()Dim a(), i As Integer, j As IntegerDim b(4) As Integer, max As Integer, min As Integer Dim n As Integer, m As Integer, t As Integer Randomize n = InputBox("矩阵阶数n:") ReDim a(n, n)w w w .k h da w .c om课后答案网For j = 1 To na(i, j) = Int(90 * Rnd) + 10 Text1 = Text1 & Str(a(i, j)) Next j Text1 = Text1 & vbCrLf Next i For i = 1 To n For j = 1 To n Text2 = Text2 & Str(a(j, i)) Next j Text2 = Text2 & vbCrLf Next i End SubPrivate Sub Command2_Click() Text1 = "" Text2 = "" End SubPrivate Sub Command3_Click() End End Sub 6-13Option Explicit Option Base 1Private Sub Command1_Click()Dim a(3, 3) As Integer, i As Integer, j As Integer Dim max As Long, k As Long, f As Integer Dim n As Integer, m As Integer Randomize For i = 1 To 3w w w .k h da w.c o m课后答案网For j = 1 To 3a(i, j) = Int(90 * Rnd) + 10 Text1 = Text1 & Str(a(i, j)) Next j Text1 = Text1 & vbCrLf Next iFor i = 1 To 3 '主对角线方向 m = i k = 1For j = 1 To 3k = k * a(m, j) m = m + 1If m > 3 Then m = 1 Next jIf k > max Then max = k n = i f = 1 End If Next iFor i = 1 To 3 '辅对角线方向 m = i k = 1For j = 1 To 3k = k * a(j, m) m = m - 1If m < 1 Then m = 3 Next jIf k > max Then max = k n = i f = 2 End If Next iPicture1.Print "最大组元素:" If f = 1 ThenFor i = 1 To 2Picture1.Print "a("; n; ","; i; ")="; a(n, i); " "; n = n + 1 If n > 3 Then n = 1 Next iPicture1.Print "a("; n; ","; i; ")="; a(n, i) ElseIf f = 2 Then For i = 1 To 2w w w .k h da w .c o m课后答案网Picture1.Print "a("; i; ","; n; ")="; a(i, n); " "; n = n - 1 If n < 1 Then n = 3 Next iPicture1.Print "a("; i; ","; n; ")="; a(i, n) End IfPicture1.Print "乘积="; max End SubPrivate Sub Command2_Click() Text1 = "" Picture1.Cls End SubPrivate Sub Command3_Click() End End Sub 6-14Option ExplicitPrivate Sub Command1_Click()Dim a(3, 3) As Integer, i As Integer, j As Integer Dim k As Integeri = 3: j = 2: a(i, j) = 1: k = 1 Do Until k > 9 k = k + 1If i + 1 > 3 And j + 1 <= 3 Then i = 1: j = j + 1ElseIf i + 1 <= 3 And j + 1 > 3 Thenw w w .k h da w .c o m课后答案网i = i + 1: j = 1ElseIf i + 1 > 3 And j + 1 > 3 Then i = i - 1ElseIf i + 1 <= 3 And j + 1 <= 3 And a(i + 1, j + 1) <> 0 Then i = i - 1 Elsei = i + 1: j = j + 1 End If a(i, j) = k Loop For i = 1 To 3 For j = 1 To 3Picture1.Print a(i, j); Next jPicture1.Print Next i End SubPrivate Sub Command2_Click()Dim a() As Integer, i As Integer, j As Integer Dim k As Integer Dim n As Integer n = InputBox("幻方阶数:") ReDim a(n, n)i = n: j = (n + 1) / 2: a(i, j) = 1: k = 1 Do Until k > n * n k = k + 1If i + 1 > n And j + 1 <= n Then i = 1: j = j + 1ElseIf i + 1 <= n And j + 1 > n Then i = i + 1: j = 1ElseIf i + 1 > n And j + 1 > n Then i = i - 1ElseIf i + 1 <= n And j + 1 <= n And a(i + 1, j + 1) <> 0 Then i = i - 1 Elsei = i + 1: j = j + 1 End If a(i, j) = k Loop For i = 1 To n For j = 1 To nPicture1.Print Right(" " & a(i, j), 4); Next jPicture1.Printw w w .k h da w .c o m课后答案网Next i End Sub 6-15Option Explicit Option Base 1Private Sub Command1_Click()Dim a() As Integer, i As Integer, j As Integer Dim max As Long, k As Long, f As Integer Dim n As Integer, m As Integer Randomize f = InputBox("输入方阵阶数:") ReDim a(f, f) For i = 1 To f For j = 1 To fa(i, j) = Int(90 * Rnd) + 10 Text1 = Text1 & Str(a(i, j)) Next j Text1 = Text1 & vbCrLf Next iFor i = 1 To f '副对角线方向 m = i k = 0For j = 1 To fk = k + a(j, m) m = m - 1If m < 1 Then m = f Next jIf k > max Then max = k n = iw w w .k h da w .c o m课后答案网End If Next iPicture1.Print "max :"; max For i = 1 To fPicture1.Print "a("; i; ","; n; ")="; a(i, n) n = n - 1If n < 1 Then n = f Next i End SubPrivate Sub Command2_Click() Text1 = "" Picture1.Cls End SubPrivate Sub Command3_Click() End End Subw w w .k h da w .c o m课后答案网。

C语言实验报告第6章答案

C语言实验报告第6章答案

C语⾔实验报告第6章答案6.2基础实验⼀、程序分析分析以下程序段完成的功能,填写在序号后的空⽩处,并运⾏验证结果。

1. ⊙以下程序的运⾏结果是:_______s=12345↙____________________。

#includeint main( ){ inta[]={1,2,3,4,5},i,j=1,s=0;for(i=4;i>=0;i--){ s=s+a[i]*j;j=j*10;}printf(“ s= %d \n” , s );return 0;}2. 以下程序的运⾏结果是:_____7 5 3______________________。

#includeint main( ){ int k ;int a[3][3]={9,8,7,6,5,4,3,2,1};for(k=0;k<3;k++)printf(“%d ”,a[k][2-k]);return 0;}3. 以下程序的功能是:____查找最⼤值元素及下标_________________。

#includeint main( ){ int i, j ,x =0 ,y = 0 , m ;int a[3][3] = { 1, -2 , 0 , 4 , -5 , 6 , 2 , 4 };m = a [0][0] ;for (i=0 ;i < 3 ;i++)for (j = 0 ; j<3 ; j++ )if ( a[ i] [ j ] >m ){ m = a[ i ][ j ] ;x = i ;printf(“ ( % d , % d ) = % d \n”, x , y,m );return 0;} 运⾏结果:___(1 , 2 ) = 6↙_________________4. 以下程序的的运⾏结果是:__8,I am student!___________________。

#include int main( ){ char s1[50]= “I am ”;char s2[ ]=“student!” ;printf(“%d,”, strlen(s2) );strcat(s1,s2);printf(“%s\n”,s1);return 0;}5.以下程序的运⾏结果是:_______6_____________________。

河南理工大学C语言课后习题答案精解第六章

河南理工大学C语言课后习题答案精解第六章

a[1][1] a[1][2] a[1][3] 1 0 -1
a[2][1] a[2][2] a[2][3] 2 1 0
a[3][1] a[3][2] a[3][3]
0 1 2
0 1
0
第六章 数组
2. 写出程序的运行结果
(4) 程序四:
#include <stdio.h> main( ) { int i, s; i的ASCII码为105 char s1[100], s2[100]; printf(“input string1:\n”); n的ASCII码为110 gets(s1); printf(“input string2:\n”); gets(s2); s=-5 i=0; while((s1[i]==s2[i]) && (s1[i]!=„\0‟)) i++; if((s1[i] ==„\0‟) && (s2[i]==„\0‟)) s=0; 输入数据: aid else s=s1[i]-s2[i]; printf(“%d\n”,s); and }
B.a[a[4]]
C. a[a[3]]
D. a[a[5]]
第六章 数组
1. 选择题 (6) 要求定义包含8个int类型元素的一维数组,以下错误的定义 语句是 A A. int N=8; B. #define N 3 int a[N]; int a[2*N+2]; C. int a[ ]={0,1,2,3,4,5,6,7} D. int a[1+7]={0}
第六章 数组
3. 程序填空 (3)把一个整数转换成 #include <stdio.h> #define M 80 void main() { long int n=1234567; char s[M]; int j=0; while ( n!=0 ) { s[j]= n%10+’0’; n/=10; j++; } s[j]='\0' ; printf("\n%s",s); }

C语言程序设计第六章数组习题及答案

C语言程序设计第六章数组习题及答案

C语言程序设计第六章数组习题及答案1.以下对一维整型数组a的定义,正确的是_。

(2分)A.int a(10) ;B.int n = 10 , a[n] ;C.int n ;scanf( "%d" , &n ) ;int a[n] ;D.int a[10] ;2.若有定义:int a[10] ;,则对a数组元素的正确引用是_。

(2分)A.a[10]B.a[3.5]C.a(5)D.a[10-10]3.对定义int a[10] = {6 , 7 , 8 , 9 , 10} ; 的正确理解是_。

(2分)A.将5个初值依次赋给a[1]--a[5]B.将5个初值依次赋给a[0]--a[4]C.将5个初值依次赋给a[6]--a[10]D.因为数组长度与初值个数不相同,所以此语句不正确4..若有定义:int a[3][4]; , 则对a数组元素的正确引用是_。

(2分)A.a[3][4]B.a[1,3]C.a[1+1][0]D.a(2)(1)5.以下对二维数组a初始化正确的语句是_。

(2分)A.int a[2][ ]={{0 , 1 , 2}, {3 , 4 , 5}};B.int a[ ][3]={{0, 1, 2}, {3, 4, 5}};C.int a[2][4]={{0, 1 , 2}, {3 , 4}, {5}};D.int a[ ][3]={{0, 1, 2}, { }, {3, 4}};6.对二维数组a进行如下初始化:int a[ ][3]={0 , 1 , 2 , 3 , 4 , 5};则a[1][1]的值是_。

(2分)A.0B.3C.4D.17.下面程序段的运行结果是_。

(2分)#includeint main( ){int i , x[3][3] = {1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9} ; for( i = 0 ; i < 3 ; i++ )printf( "%2d" , x[i][2-i] ) ;return 0 ;}A.1 5 9B.1 4 7C.3 5 7D.3 6 98.以下对数组s的初始化,错误的是_。

实验(6)-数组-参考答案

实验(6)-数组-参考答案

实验(6)-数组-参考答案C语⾔程序设计实验教学(6)【实验⽬的】数组的应⽤是很重要的⼀章。

通过实验掌握⼀维数组的主要应⽤,并理解数组的存储。

对⼆维数组的处理要⽐较熟悉。

【实验要求】⼀维数组的题⽬要求全⾯掌握,应⽤循环结构完成⼀维数组的输⼊、处理和输出。

⼆维数组能够完成简单的数据处理和应⽤。

【实验课时】8.0【实验内容】⼀维数组:1、定义⼀个10个元素的int数组a,输⼊10个数,并输出。

main(){int i,a[10];for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<10;i++)printf("%5d",a[i]);printf("\n");}2、⽤数组来保存Fibonacci数列前20项数值,以每5个数据为⼀⾏进⾏输出。

main(){int i; long f[20];f[0]=1;f[1]=1;for(i=2;i<20;i++)f[i]=f[i-1]+f[i-2];for(i=0;i<20;i++){if(i%5==0) printf("\n");printf("%10ld",f[i]);}printf("\n");}3、计算整数数组num中的最⼤值及其所在的下标。

main(){int i,max,p,a[10];printf("please enter 10 data:\n");for(i=0;i<10;i++)scanf("%d",&a[i]);max=a[0];p=0;for(i=1;i<10;i++)if(a[i]>max) {max=a[i];p=i;}printf("max is:%d\n",max);printf("point is:%d\n",p+1);}4、在包含10个整数的数组中找出最⼤者,并与第⼀个元素交换。

实验6数组程序设计答案

实验6数组程序设计答案

#include<stdio.h> voidmain() {mt n=10j,sum=0; int a[10]; for(i=0;i<10;i++) #include<stdio .h>实验6数组程序设计一、实验目的1. 掌握一维数组和二维数组的定义、赋值和输入输出的方法。

2. 掌握字符数组和字符串函数的使用。

3. 掌握与数组有关的算法。

二、实验内容1. 改错题(1) F 列程序的功能为:为指定的数组输入io 个数据,并求这些数据之和。

纠正程序 中存在的错误,以实现其功能。

程序以文件名sy6_l.c 保存。

#include<stdio.h>void maiiiQ {mt n=104,sum=0; iiit a[n]; fbr(i=0;i<10;i++){ scanf(H %d ,\a[i]); sum=sum+a[i];} pnntf(M sum=%d n ,\sum);}(2) 下列程序的功能为:将字符串b 连接到字符串仏纠正程序中存在的错误,以实 现其功能。

程序以文件名sy6_2.c 保存。

#include<stdio.h> void ) { chai- a[]=n wer\b[]=H come n ; iiit i,n=0;wlule(!a[n]) n++;fbr(i=O;b[i]!=,\O ,;i++)a[n+i]=b[i]; a[n+i]=,\0,;pnntfC%s\iT ,a);}(3) 下列程序的功能为:找出一个二维数组中的鞍点,即该位置上的元素在该行上最 人,在该列上最小。

也可能没有鞍点。

纠正程序中存在的错误,以实现其功能。

程序以文件 名sy6_3・c 保存。

# include<stdio.h>#defiiie N 4#defiiie M 4niaui(){mt i j ,k,flag 1 ,flag2 ,a[N] [M] jiiaxjnaxj;for (i=0;i<N;i++)for (j=0j<Mj++)scanf「%d”,&a[i][j]);flag2=0;for (i=0:i<N;i++){max=a [j][0]; max=a [1] [0];for (J=0J<M J++)if (a[i][j]>niax) if (a[i][j]>=max){max=a[i][j];maxj=j;}for (k=0,flagl=l;k<N&&flagl;k++)if (niax>a[k][maxj]) flagl=0;if (flagl){priiitf^^nThe saddle pomt is:a[%d][%d]=%d'jr\ijiiaxj4iiax); flag2=l;}}if( ! flag2) prmtf(n\iiThere is no saddle pomt in the Matiix\n M);}2.程序填空题(1)以下程序的功能是:采用二分法在给定的有序数组中查找用户输入的值,并显示查找结果。

C 语言程序设计实验答案_数组、指针与字符串解析

C  语言程序设计实验答案_数组、指针与字符串解析

实验06 数组、指针与字符串(4学时)(第6章数组、指针与字符串)一、实验目的二、实验任务6_1(习题6-25)编写并测试3×3矩阵转置函数,使用数组保存3×3矩阵。

6_2(习题6-26)使用动态内存分配生成动态数组来重新完成上题(n阶方阵),使用指针实现函数的功能。

6_3 编程实现两字符串的连接。

要求使用字符数组保存字符串,不要使用系统函数。

6_4 使用string类声明字符串对象,重新实现上一小题。

6_5(习题6-27)声明一个Employee类。

其中包括姓名、街道地址、城市和邮编等属性,以及change_name()和display()等函数。

display()显示姓名、街道地址、城市和邮编等属性,change_name()改变对象的姓名属性,实现并测试这个类。

6_6(习题6-27)声明包含5个元素的对象数组,每个元素都是Employee 类型的对象。

6_7 修改实验4中的people(人员)类。

具有的属性如下:姓名char name[11]、编号char number[7]、性别char sex[3]、生日birthday、身份证号char id[16]。

其中“出生日期”声明为一个“日期”类内嵌子对象。

用成员函数实现对人员信息的录入和显示。

要求包括:构造函数和析构函数、拷贝构造函数、内联成员函数、聚集。

在测试程序中声明people类的对象数组,录入数据并显示。

三、实验步骤1.(编程,习题6-25)编写矩阵转置函数,输入参数为3×3整型数组。

使用循环语句实现矩阵元素的行列对调,注意在循环语句中究竟需要对哪些元素进行操作,编写main()函数实现输入输出。

程序名:lab6_1.cpp。

参考运行结果:★程序及运行结果://lab6_1.cpp#include<iostream>using namespace std;void move(int matrix[][3]){int temp;for(int i=0;i<3;i++)for(int j=0;j<i;j++){temp=matrix[i][j];matrix[i][j]=matrix[j][i];matrix[j][i]=temp;}}void main(){int i,j,mat[3][3];cout<<"输入3×3矩阵"<<endl;for(i=0;i<3;i++){cout<<"第"<<i+1<<"行:";for(j=0;j<3;j++) cin>>mat[i][j];}cout<<"\n输入的3×3矩阵为:"<<endl;for(i=0;i<3;i++){for(j=0;j<3;j++)cout<<mat[i][j]<<" ";cout<<endl;}move(mat);cout<<"转置后的矩阵为:"<<endl;for(i=0;i<3;i++){for(j=0;j<3;j++)cout<<*(*(mat+i)+j)<<" ";//指针形式cout<<endl;}}2.(编程,习题6-26)编写n×n阶矩阵转置函数,参数为整型指针。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
{
printf("第%d门课=",j+1);
scanf("%lf",&score[i][j]);
total+=score[i][j];
}
score[i][3]=total;
}
//按总成绩排序
for(i=0;i<4;i++)
for(j=i+1;j<5;j++)
{
if(score[i][3]>score[j][3])
参考程序:
#include<stdio.h>
void main()
{
double score[5][4],total,temp;
int i,j;
//输入学生成绩
for(i=0;i<5;i++)
{
total=0;
printf("请输入第%d个学生的成绩\n",i+1);
for(j=0;j<3;j++)
实验六数组应用
班级:学号:姓名:成绩:
一.实验目的
1.熟练掌握数组及数组元素的概念。
2.掌握一维数组、二维数组的定义、初始化以及使用。
3.掌握字符数组以及字符串的定义、初始化以及使用。
4.掌握数组相关的常用算法。
二.使用的设备和仪器
计算机+Windows XP +Visual C++6.0
三.实验内容及要求
}
for(i=0,j=N-i-1;i<N;i++,j--)
{
total+=num[i][i];
total+=num[i][j];
}
printf("对角线和=%d\n",total);
}
3、某个学习小组有5名学生,共开设了3门课程,要求编程输入该小组所有学生各门课程的成绩,然后按照总成绩从高到低进行排序,并输出排序后的结果。
}
printf("\n");
}
6、将一个数组中的值进行重新存放。例如,原来的数值为1,3,9,5,4;要求改为4,5,9,3,1。
参考程序:
#define Len 9 //数组最大个数
#include<stdio.h>
void main()
{
int arr[Len]={1,2,3,4,5,6,7,8,9},temp,i;
参考程序:
#define N 10
#include<stdio.h>
void main()
{
int num[N][N],i,j;
for(i=0;i<N;i++)
{
m[i][0]=1;
num[i][i]=1;
}
for(i=2;i<N;i++)
for(j=1;j<i;j++)
num[i][j]=num[i-1][j]+num[i-1][j-1];
参考答案:
参考一:
#define N 3
#include<stdio.h>
void main()
{
int i,j,num[N][N],total=0;
for(i=0;i<N;i++)
for(j=0;j<N;j++)
{
printf("num[%d][%d]=",i,j);
scanf("%d",&num[i][j]);
if(i==0)max=min=num[0];
if(num[i]>max)max=num[i];
if(num[i]<min)min=num[i];
total+=num[i];
}
printf("max=%d,min=%d,average=%d\n",max,min,total/10);
}
2、求一个N*N矩阵对角线元素之和。
num1=num2=num3=num4=0;
printf("请输入三行字符:\n");
for(i=0;i<3;i++)
{
gets(arr[i]);
for(j=0;arr[i][j]!='\0';j++)
{
if(arr[i][j]>='a'&&arr[i][j]<='z'||arr[i][j]>='A'&&arr[i][j]<='Z')
num1++;//统计字母
else if(arr[i][j]>='0'&&arr[i][j]<='9')
num2++;//统计数字
else if(arr[i][j]==' ')
num3++;//统计空格
else
num4++;//统计其他字符
}
}
printf("%-5s%-5s%-5s%-5s%-5s\n","总数","字母","数字","空格","其他");
score[j][2]=temp;
temp=score[i][3];
score[i][3]=score[j][3];
score[j][3]=temp;
}
}
//按输出学生成绩
printf("%-10s%-10s%-10s%-10s%-10s\n","序号","课程1","课程2","课程3","总分");
for(i=0;i<Len;i++)
printf("%-5d",arr[i]);
printf("\n");
}
7、输入一个班N个学生的信息,包括学号、姓名以及C语言的成绩。然后通过输入某一学生的姓名进行查找,如果找到,输出其相关的信息;如果未找到,输出“本班无此人”。
参考程序:
#define ArrLen 20
printf("%-5d%-5d%-5d%-5d%-5d\n",num1+num2+num3+num4,num1,num2,num3,num4);
}
四.实验步骤
1、程序代码:
运行结果:
2、程序代码:
运行结果:
五.实验总结
}
printf("\n");
printf("请输入要插入的数:");
scanf("%d",&num);
for(i=0;i<CurLen;i++)
{
if(num<arr[i])
{
order=i;//记录要插入值在数组中的位置
break;
}
}
if(i==CurLen) //如果插入数值比数组中所有数值都大,则插入到最后
scanf("%s",searchName);
for(i=0;i<stuNum;i++)
{
if(strcmp(name[i],searchName)==0)
{
printf("找到的学生信息如下:\n");
printf("%-10s%-10s%-10s\n","学号","姓名","C语言");
printf("%-10s%-10s%-10.0f\n",num[i],name[i],cscore[i]);
scanf("%d",&stuNum);
for(i=0;i<stuNum;i++)
{
printf("请输入第%d个人的信息:\n",i+1);
printf("学号=");scanf("%s",num[i]);
printf("姓名=");scanf("%s",name[i]);
printf("C语言成绩=");scanf("%lf",&cscore[i]);
}
printf("学生信息为:\n");
printf("%-10s%-10s%-10s\n","学号","姓名","C语言");
for(i=0;i<stuNum;i++)
printf("%-10s%-10s%-10.0f\n",num[i],name[i],cscore[i]);
printf("请输入要查找的学生姓名=");
for(i=0;i<N;i++)
{
for(j=0;j<i+1;j++)
printf("%-5d",num[i][j]);
printf("\n");
}
}
5、已知一个由小到大排好序的数组,现插入一个新的值,要求保持由小到大的顺序并输出。
相关文档
最新文档