实验6数组程序设计答案
C语言程序设计习题答案(6-13)

C语言程序设计习题答案习题六数组一、选择题1~10: BDBCD CDBAB11~20:BCDCC DABBC21~30:CCADC ABBCB31~41:BDDDD CDCCB A二、填空题1. 9 、 02.先行后列3.连续的存储空间中4. QuickC5. (c=getchar( )) 、‘A’+i或65+i6. ‘\0’、 str1[i]-str2[i]7. CDABC8. 10 149. 610. 1 0 0 0 00 1 0 0 00 0 1 0 00 0 0 1 00 0 0 0 111. 60012. AzyD13 4 some string *test三、编程题1. 定义一个有20个元素的整型数组,分别求出下标为奇数和偶数的元素的平均值。
答:程序参见文件Cprogram\#include ""#include ""main(){int i,s0=0,s1=0,a[20];for(i=0;i<20;i++)a[i]=rand()%100;for(i=0;i<20;i+=2){printf("%3d",a[i]);s0=s0+a[i];}printf(" sum is:%d ave=%f\n",s0,s0/;for(i=1;i<20;i+=2){printf("%3d",a[i]);s1=s1+a[i];}printf(" sum is:%d ave=%f\n",s1,s1/;}2. 设有一个整型数组,另输入一个整数,编程查找这个整数是否在数组中出现过,若出现,则输出第一次出现的位置,否则,输出no found。
答:程序参见文件Cprogram\#include ""#include ""main(){int i,s,a[20];for(i=0;i<20;i++)a[i]=rand()%100;scanf("%d",&s);for(i=0;i<20;i++)if(a[i]==s){printf("found:a[%d]=%d\n",i,a[i]);break;}if(i==20)printf("no found\n");for(i=0;i<20;i++)printf("%3d",a[i]);printf("\n");}3. 设有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入到数组中。
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的初始化,错误的是_。
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阶矩阵转置函数,参数为整型指针。
C程序设计(数组)习题与答案

C程序设计(数组)习题与答案C程序设计(数组)习题与答案数组是C语言中常用的数据结构之一,它可以存储多个相同类型的元素。
掌握数组的使用对于C程序设计至关重要,下面将为大家介绍一些关于C数组的习题及其答案。
1. 习题一:计算数组元素的和题目描述:编写一个程序,计算给定数组中所有元素的和,并输出结果。
解题思路:```c#include <stdio.h>int main() {int arr[5] = {1, 2, 3, 4, 5}; // 定义一个包含5个元素的整型数组int sum = 0; // 用于存储和的变量// 遍历数组,累加每个元素的值for (int i = 0; i < 5; i++) {sum += arr[i];}printf("数组元素的和为:%d\n", sum);return 0;}```2. 习题二:查找数组中的最大值题目描述:编写一个程序,找出给定整型数组中的最大值,并输出结果。
解题思路:```c#include <stdio.h>int main() {int arr[7] = {4, 7, 2, 9, 1, 5, 8}; // 定义一个包含7个元素的整型数组int max = arr[0]; // 假设第一个元素为最大值// 遍历数组,比较每个元素的值与当前最大值的关系for (int i = 1; i < 7; i++) {if (arr[i] > max) {max = arr[i];}}printf("数组中的最大值为:%d\n", max);return 0;}```3. 习题三:查找数组中的特定元素题目描述:编写一个程序,在给定整型数组中查找是否存在指定元素,并输出结果。
解题思路:```c#include <stdio.h>int main() {int arr[6] = {3, 6, 9, 2, 5, 8}; // 定义一个包含6个元素的整型数组 int target = 2; // 指定要查找的元素int found = 0; // 用于标记是否找到目标元素的变量// 遍历数组,比较每个元素的值与目标值的关系for (int i = 0; i < 6; i++) {if (arr[i] == target) {found = 1;break;}}if (found) {printf("数组中存在目标元素:%d\n", target);} else {printf("数组中不存在目标元素:%d\n", target);}return 0;}```4. 习题四:数组元素逆序排列题目描述:编写一个程序,将给定整型数组的元素逆序排列,并输出结果。
C语言程序设计实验六函数答案《西北民大电气学院》

实验六函数一,实验目的:1,掌握定义函数的方法.2,掌握函数实参与形参的对应关系,以及"值传递"的方式.3,掌握函数的嵌套调用和递归调用的方法.4,掌握全局变量和局部变量动态变量,静态变量的概念和使用方法.二,实验准备:1,复习函数调用的基本理论知识.2,复习函数的嵌套调用和递归调用的方法.3,复习全局变量,局部变量;静态变量,动态变量;外部变量等概念和具体使用. 4,源程序.三,实验步骤及内容:1,运行程序并回答问题(1)程序main(){ play(3);}void print_star(){ printf("* * * * * * * * * *\n")}void print_message(){ printf("Good Friend! \n");}void play(n)int n;{ int i;for(i=1;i<=n;++i){ print_star();print_message();}}问题:运行后出现什么错误为什么应如何修改请上机调试.修改:main(){ play(3);}void print_star(){ printf("* * * * * * * * * *\n");(缺少分号)}void print_message(){ printf("Good Friend! \n");}play(n)(原先void的与声明类型不同)int n;{ int i;for(i=1;i<=n;++i){ print_star();print_message();}getch();}运行结果(2)以下程序用于计算1+2+3+4+5.main(){ int i,sum;for(i=1;i<=5;++i)sum=add(i);printf("sum=%d\n",sum);getch();}add (a)int a;{static int s=0;s=s+a;return(s);}运行结果:问题:此程序能否得到正确结果为什么请在不增加语句的条件下,修改程序并上机调试.(3)程序int x=567,y=890;main(){ printf("x=%d,y=%d\n",x,y);}运行结果:问题:运行程序后出现什么错误为什么如何修改答:定义位置出错,y的定义在主函数之后了,将y的定义改在和x一样的位置处。
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个数(可重复,可为浮点数),计算其中有多少对互为相反数(仅有符号不同的两数互为相反数)。
实验a6参考答案.doc

实验目的:本实验的目的是进一步熟练数组的定义及基本用法。
将编程题的第1小题要求写实验报告,格式附后。
选择题1.已知int a[10];则对a数组元素引用不正确的是()。
(A) a[10-10] (B) a[10] (C) a[3+5] (D) a[5]2.以下程序段的运行结果是()ointa[]={l,2,3,4},ij;j=l;for(i=3;i>=0;i—)( a[i]=a[i]*j;j=j*3;)for(i=0;i<4;i++)printf("%d ",a[i]);(A) 3 6 9 12 (B) 18 12 9 4 (C) 27 18 9 4 (D) 54 18 9 43.在C语言中,若定义二维数组a[2][3],设a[0][0]在数组中位置为1,则a[l][l]在数组中位置是()。
(A) 3 (B)4 (C) 5 (D) 64.以下程序段运行后s的值是()oint a[3][3]={l,2,3,4,5,l,2,3,4};int i,j,s=l;for(i=0;i<3;i++)for(j=i+l;j<3;j++)s+=a[i][j];(A) 6 (B) 120 (C)7 (D) 2405.设已定义:int a[][4]={0,0,0};则下列描述正确的是()。
(A)数组a包含3个元素(B)数组a的第一维大小为3(C)数组a的行数为1 (D)元素a[0][3]的初值不为0/**/二.补充程序补充程序:使其实现找出一数组中的最小数mini 和次小数mini(注:在两对/**/之间补充必要的表达式,不得删除/**/)#include <stdio.h>main()( int i,a[10]=(9,26,35,8,6,19,69,3,5,95};int minl,min2;i=0;minl=a[0]<a[l]?a[0]:a[l]; min2=a[0]>a[l]?/**/ for(i=2;i<10;i++)( if(a[i]<minl)( min2=minl;/**/ /**/;}else if(a[i]<min2)/**/ /**/printf("minl=%d,min2=%d\n",minl,min2);getch();. 编程题1.由程序产生如下所示二维数组(矩阵)a 并实现输出。
实验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 数组的应用一、实验目的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(字符串复制)的缩写。
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_____________________。
实验报告6 一维数组程序设计

实验报告6 一维数组程序设计
一、实验目的
本实验主要是通过编写一维数组程序,掌握数组的定义、初始化、赋值、排序等基本操作,并能够解决实际问题。
二、实验内容
本实验共设有两个小题,分别是:
1.通过一维数组计算一个班级学生的平均分、最高分、最低分和及格率。
2.通过一维数组将若干个数字进行排序,并输出排序后的结果。
三、实验环境
本实验采用C++语言进行编写,所用IDE为Dev-C++。
四、实验步骤
1.题目一代码
五、实验结果
在第一题输入4个学生的分数为:87,92,54,77时,输出结果如下:
请输入学生数量:4
请输入第1个学生的分数:87
请输入第2个学生的分数:92
请输入第3个学生的分数:54
请输入第4个学生的分数:77
平均分为:77.5
最高分为:92
最低分为:54
及格率为:75%
请输入数字个数:7
请输入第1个数字:8
请输入第2个数字:6
请输入第3个数字:1
请输入第4个数字:2
请输入第5个数字:10
请输入第6个数字:7
请输入第7个数字:3
排序后的结果为:1 2 3 6 7 8 10
六、结论
通过本实验的完成,我对于一维数组的使用和其基本操作掌握更加熟练。
在日后的学习和工作中能够更加灵活地运用数组处理问题。
七、体会
在本次实验中,我更加深刻地意识到了机械化的代码是怎么产生的,编写代码时一些细节之处需要注意,千万不能粗心大意,否则就很有可能出现难以想到的错误。
同时,对于一些难以理解与掌握的知识点,只有通过实践才能真正掌握和理解。
实验6 数组程序设计答案

实验6 数组程序设计一、实验目的1. 掌握一维数组和二维数组的定义、赋值和输入输出的方法。
2. 掌握字符数组和字符串函数的使用。
3. 掌握与数组有关的算法。
二、实验内容1.改错题(1)下列程序的功能为:为指定的数组输入10个数据,并求这些数据之和。
纠正程序中存在的错误,以实现其功能。
程序以文件名sy6_1.c 保存。
#include<stdio.h>void main() {int n=10,i,sum=0; int a[n];for(i=0;i<10;i++) { scanf("%d",a[i]); sum=sum+a[i];} printf("sum=%d\n",sum); }(2)下列程序的功能为:将字符串b 连接到字符串a 。
纠正程序中存在的错误,以实现其功能。
程序以文件名sy6_2.c 保存。
#include<stdio.h> void main( ){ char a[]="wel",b[]="come"; int i,n=0; while(!a[n]) n++; for(i=0;b[i]!='\0';i++) a[n+i]=b[i];a[n+i]=’\0’; printf("%s\n",a); }(3)下列程序的功能为:找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小。
也可能没有鞍点。
纠正程序中存在的错误,以实现其功能。
程序以文件名sy6_3.c 保存。
#include<stdio.h>#define N 4#define M 4main(){int i,j,k,flag1,flag2,a[N][M],max,maxj;for (i=0;i<N;i++)for (j=0;j<M;j++)scanf("%d",&a[i][j]);flag2=0;for (i=0;i<N;i++){max=a[j][0]; max=a[i][0];for (j=0;j<M;j++)if (a[i][j]>max) if (a[i][j]>=max){max=a[i][j];maxj=j;}for (k=0,flag1=1;k<N&&flag1;k++)if (max>a[k][maxj])flag1=0;if (flag1){printf("\nThe saddle point is:a[%d][%d]=%d\n",i,maxj,max);flag2=1;}}if (!flag2)printf("\nThere is no saddle point in the Matrix\n");}2.程序填空题(1)以下程序的功能是:采用二分法在给定的有序数组中查找用户输入的值,并显示查找结果。
中南大学C++程序设计实践思考题答案

实验1 C++基础6.编写程序,输入某大写字母的ASCII码值,输出该字母的对应小写字母。
#include<iostream>using namespace std;int main(){int i;cin>>i;if(i>=65 && 1<=90 )cout<<char(i-'A'+'a')<<endl;elsecout<<"输入有误"<<endl;return 0;}实验2三、实验思考1.输入直角三角形的两条直角边长,调用平方根库函数sqrt来求斜边的长度#include<iostream>#include<cmath>using namespace std;int main(){ float a,b,c;cout<<"请输入直角三角形的两条边长:";cin>>a>>b;c=sqrt(a*a+b*b);cout<<"直角三角形的斜边="<<c<<endl;return 0;}2.从键盘输入一个字符,如果输入的是英文大写字母,则将它转换成小写字母后输出,否则输出原来输入的字符。
#include<iostream>using namespace std;int main(){char c;cout<<"请输入一个字符:";cin>>c;if(c>='A'&& c<='Z')c+='a'-'A';cout<<c<<endl;return 0;}3.输入一个学生的成绩,如高于60分,则输出“pass”;否则,输出“failed”。
C语言程序设计实验六_答案

C语言程序设计实验六_答案1.编程实现:该程序的功能是:计算并输出S=1+(1+20.5)+(1+20.5+30.5)+…+(1+20.5+30.5+…+n0.5)例如,若从键盘给n输入20后,则输出为s=534.188884。
文件名:myf61.c【参考源程序】#includevoid main(){float t=1.0,s=1.;int i,n;scanf("%d",&n);for(i=2;i<=n;i++){t=t+sqrt(i);s=s+t;}printf("%f",s);}2.编程实现:将a数组中的n个数和b数组中逆序的n个数一一对应相加、求平方,其结果存放在c数组中。
文件名:myf62.c例如: 若a数组中的值是:1、3、5、7、8b数组中的值是:2、3、4、5、8输出结果c中存放的数据是81、64、81、100、100【参考源程序】:#define N 5void main(){ int a[N],b[N],c[N];int i;for(i=0;i<n;i++)< p="">scanf("%d",&a[i]);for(i=0;i<n;i++)< p="">scanf("%d",&b[i]);for(i=0;i<n;i++)< p="">{c[i]=a[i]+b[4-i];c[i]=c[i]*c[i];}for(i=0;i<n;i++)< p="">printf("%d ",c[i]);}3.用以下的递归公式求数列a0,a1,……,a19,递归公式为:a0=0;a1= l;a2=1;a i=a i-3十2a i-2+a i-1当i大于2时。
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的初始化,错误的是_。
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的二维数组,通过随机函数自动赋值。
C++语言程序设计实验6(数组、指针和字符串)

{ for(i = 0; i < 4; ++ i) //二维数组赋值与输出
{
Array[t][i] = ( t * 4 ) + i + 1;
cout << Array[t][i] << ' ';
}
cout <<endl;
}
return 0;
} z 数组作为函数参数
数组元素作实参,与单个变量一样。
for(int i = 0; i < 4; i ++)
cout << "obs[" << i << "].getx(): " << obs[i].getx() << "\n";
return 0;
}
2. 指针
z 指针:内存地址,用于间接访问内存单元 z 指针变量:用于存放地址的变量
例如: int i; int *i_pointer = &i; //指向整型变量的指针,其中&表示取地址运算符
pint = (int *)pv; //void 指针赋值给 int 指针需要类型强制转换:
z 指向常量的指针
不 能 通 过 指 针 来 改 变 所 指 对 象 的 值 ,但 指 针 本 身 可 以 改 变 ,可 以 指 向 另 外 的 对 象 。例 如 :
int a, b;
int *name1 = &a;
using namespace std;
int main( )
{
int Array[10], *va = Array; //第一种访问方式
实验(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个整数的数组中找出最⼤者,并与第⼀个元素交换。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验 6 数组程序设计一、实验目的1.掌握一维数组和二维数组的定义、赋值和输入输出的方法。
2.掌握字符数组和字符串函数的使用。
3.掌握与数组有关的算法。
二、实验内容1.改错题( 1)下列程序的功能为:为指定的数组输入10 个数据,并求这些数据之和。
纠正程序中存在的错误,以实现其功能。
程序以文件名sy6_1.c 保存。
#include<stdio.h>void main()#include<stdio.h>{int n=10,i,sum=0;int a[n];void main()for(i=0;i<10;i++){int n=10,i,sum=0;{int a[ 10];scanf("%d",a[i]);sum=sum+a[i];for(i=0;i<10;i++)}{printf("sum=%d\n",sum);scanf("%d", & a[i]);}sum=sum+a[i];}printf("sum=%d\n",sum);}( 2)下列程序的功能为:将字符串 b 连接到字符串 a。
纠正程序中存在的错误,以实现其功能。
程序以文件名sy6_2.c 保存。
#include<stdio.h>void main( )#include<stdio.h>{ char a[]="wel",b[]="come";void main( )int i,n=0;{ char a[ 10]="wel",b[]="come";while(!a[n]) n++;inti,n=0;for(i=0;b[i]!='\0';i++)a[n+i]=b[i];while( a[n] ) n++;a[n+i]= \0’’;for(i=0;b[i]!='\0';i++)printf("%s\n",a);}a[n+i]=b[i];printf("%s\n",a);}(3)下列程序的功能为:找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小。
也可能没有鞍点。
纠正程序中存在的错误,以实现其功能。
程序以文件名sy6_3.c 保存。
#include<stdio.h>#define N 4#define M 4main(){int i,j,k,flag1,flag2,a[N][M],max,maxj;for (i=0;i<N;i++)for (j=0;j<M;j++)scanf("%d",&a[i][j]);flag2=0;for (i=0;i<N;i++){max=a[j][0]; max=a[i][0];for (j=0;j<M;j++)if (a[i][j]>max)if (a[i][j]>=max){max=a[i][j];maxj=j;}for (k=0,flag1=1;k<N&&flag1;k++)if (max>a[k][maxj])flag1=0;if (flag1){printf("\nThe saddle point is:a[%d][%d]=%d\n",i,maxj,max);flag2=1;}}if ( !flag2 )printf("\nThere is no saddle point in the Matrix\n");}2.程序填空题( 1)以下程序的功能是:采用二分法在给定的有序数组中查找用户输入的值,并显示查找结果。
补充完善程序,以实现其功能。
程序以文件名sy6_4.c 保存。
#include "stdio.h"#define N 10main(){int a[ ]={0,1,2,3,4,5,6,7,8,9},k;int low=0,high=N-1,mid,find=0;printf(" 请输入欲查找的值:\n");scanf("%d",&k);while (low<=high){mid=(low+high)/2;if(a[mid]==k){printf(" 找到位置为:%d\n",mid+1);find=1;}if(a[mid]>k)___ high=mid-1;_;else___low=mid+1; _____;}if(!finD.printf("%d未找到\n",k);`}(2)以下程序的功能是:求 3 个字符串(每串不超过善程序,以实现其功能。
程序以文件名 sy6_5.c 保存。
20 个字符)中的最大者。
补充完#include<stdio.h>#include<string.h>void main(){char string[20],str[3][20];int i;for (i=0;i<3;i++)gets(str[i]);if ( strcmp(str[0], str[1])>0 ) strcpy(string,str[0]);elsestrcpy(string,str[1]);if ( strcmp(str[2], string)>0 ) strcpy(string,str[2]);puts(string);}(3)下列程序的功能为:从键盘输入补充完善程序,以实现其功能。
程序以文件名20 个整数,统计非负数个数,并计算非负数之和。
sy6_6.c 保存。
#include <stdio.h>main(){ inti,a[20],sum=0,count;count=0;for(i=0;i<20;i++ )scanf("%d",&a[i] );for(i=0;i<20;i++){ if(a[i]<0)continue;sum+=a[i];count++;}printf("s=%d\t count=%d\n",sum,count);}3.编程题( 1)从键盘输入10 个数,用选择排序法将其按由大到小的顺序排序;然后在排好序的数列中插入一个数,使数列保持从大到小的顺序。
程序以文件名sy6_7.c 存盘。
#define N 10#include<stdio.h>void main(){ int a[N+1],i,j,k,t,p;printf(" 请输入 %d 个整数:\n",N);for(i=0;i<N;i++)scanf("%d",&a[i]);for(i=0;i<N-1;i++)// 选择排序{ k=i;for(j=i+1;j<N;j++) if(a[k]<a[j])k=j;if(k!=i){ t=a[k];a[k]=a[i]; a[i]=t;}}printf("\n 排序后 :\n");for(i=0;i<N;i++)printf("%5d",a[i]);printf("\n 请输入插入整数 :");scanf("%d",&p);j=9;while(j>=0&&a[j]<p)//找插入位置{a[j+1]=a[j];j--;}a[j+1]=p;// 插入printf("\n 插入后 :\n");for(i=0;i<N+1;i++)printf("%5d",a[i]);printf("\n");}( 2)从键盘输入两个矩阵 A 、B 的值,求 C =A +B 。
程序以文件名 sy6_8.c 存盘。
3 5 74 8 10 A13B6 131612 6#include <stdio.h>void main() {int a[2][3],b[2][3],c[2][3],i,j; for ( i = 0; i<2;i++) for( j=0; j<3; j++)scanf("%d",&a[i][j]);for ( i = 0; i<2; i++) for( j =0; j<3; j++)scanf("%d",&b[i][j]);for ( i =0; i<2; i++)for( j =0; j<3; j++)c[i][j]=a[i][j]+b[i][j]; for ( i = 0; i<2; i++) { for( j=0; j<3; j++)printf("%3d",c[i][j]); printf("\n");}}( 3)从键盘输入一个字符串,删除其中某个字符。
如输入字符串“除其中的字符e,则输出的字符串为“abcdfddff ”。
程序以文件名//方法一:abcdefededff”,删sy6_9.c 存盘。
#include<stdio.h>#include<string.h>void main(){inti,j;char s[80],c;printf(" 输入一行字符:");gets(s);printf(" 输入要删除字符:");scanf("%c",&c);for(i=0,j=0;s[i]!='\0';i++)if (s[i]!=c)s[j++]=s[i];s[j]='\0';puts(s);}//方法二:#include<stdio.h>#include<string.h>void main(){char line[80] ;charch;inti,j;intlen;printf(" 输入一行字符:"); gets(line) ;printf(" 输入要删除字符:"); ch=getchar();i=0;while(line[i]!='\0' ){while( line[i]!='\0' && line[i]!=ch) i++; len=strlen(line);for(j=i;j<len-1;j++)line[j]=line[j+1];line[j]='\0';}puts(line);}。