实验6数组参考答案

1 / 17 实验6数组 一、一维数组实验 2. 编程:输入长度为10的整型数组并输出;然后将其逆序存放后再输出。例如: 0 1 2 3 4 5 6 7 8 9

#include 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{ 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值在数组中的下标分别是多少。例如: 5 2 / 17

#include void main() { int i, n , max, min, a[10], sum; float average; printf("Input n (1scanf("%d", &n);

if(1{ printf("Input %d integer:", n); /*输入数据并求累加和*/ for(i=0, sum=0; i{ scanf("%d", &a[i]); sum+=a[i]; }

average=(float)sum/n; /*求出平均值*/ for(i=0, max=0, min=0; 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); } else printf("数据超出范围"); }

4. 编程:青年歌手参加歌曲大奖赛,有10个评委对她(他)进行打分,试编程求这位选手的平均得分并输出(去掉一个最高分和一个最低分)。 #include void main() { int i, max, min; float a[10], ave;

printf("请输入10个评委的打分:"); for(i=0, ave=0; i<10; i++) /*输入分数并求累加和*/ 3 / 17

{ scanf("%f", &a[i]); ave+=a[i]; }

for(i=0, max=0 , min=0; i<10; i++) /*求最大、最小值的下标*/ { if(a[i]>a[max]) max=i; if(a[i]min=i; }

ave=ave-a[max]-a[min]; ave=ave/8;

printf("该选手的评委打分是:"); for(i=0; i<10; i++) printf("%.2f ", a[i]); printf("\n");

printf("去掉最高分%.2f,去掉最低分%.2f,该选手的平均得分是%.2f\n", a[max], a[min], ave); }

5. 编程:用两种方法输出斐波那切数列的前40项(参考例6-4)。 要求: (1)方法1:不使用数组; #include void main() { int f1=1, f2=1, f3, i;

printf("%12d%12d", f1, f2); for(i=3; i<=40; i++) { f3=f1+f2; printf("%12d", f3); if(i%5==0) printf("\n"); f1= f2; f2= f3; } } 4 / 17

(2)方法2:使用一维数组。 #include void main() { int i; int fib[40];

fib[0]=fib[1]=1; for(i=2; i<40; i++) /*计算其余的38个数*/ fib[i]= fib[i-1] + fib[i-2];

for(i=0; i<40; i++) { printf("%12d",fib[i]); if((i+1)%5==0) printf("\n"); } }

6. 编程:输入n个(1输出。例如: 5 2.3 5.1 1.4 4.9 5.10 4.90 2.30 1.40 #include void main() { int i, j, n; float a[10], t;

printf("Input n: "); scanf("%d",&n);

if(n>1 && n<=10) { printf("Input %d number:", n); for(i=0;iscanf("%f",&a[i]);

printf("Before sorted:"); /*输出排序前的数据*/ for(i=0; iprintf("%.2f ", a[i]); printf("\n"); 5 / 17

for(i=0; ifor(j=0; jif( a[j] < a[j+1] ) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; }

printf("After sorted:"); /*输出排序结果*/ for(i=0; iprintf("%.2f ", a[i]); printf("\n"); } else printf("数据超出范围"); }

7. 在上题基础上(输入n个float型的数据并保存到数组中,用冒泡法或选择法将它们从大到小排序后输出)完成:在已经排好序的数组(长度不足10)中插入一个数m(键盘输入)后输出,保持数组的降序排列。 程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置。 #include void main() { int i, j, n, p; float a[10], t, m;

printf("Input n: "); scanf("%d", &n);

if(n>1 && n<=10) { printf("Input %d number:", n); for(i=0; iscanf("%f", &a[i]);

printf("Before sorted: "); /*输出排序前的数据*/ for(i=0; iprintf("%.2f ", a[i]); printf("\n");

for(i=0; ifor(j=0; jif( a[j] < a[j+1] ) 6 / 17

{ t=a[j]; a[j]=a[j+1]; a[j+1]=t; }

printf("After sorted:"); /*输出排序结果*/ for(i=0; iprintf("%.2f ", a[i]); printf("\n");

printf("请输入要插入的数据m: "); scanf("%f", &m);

/*找到插入位置*/ if(m < a[n-1]) /*如果m比最后一个元素小,则直接插入到最后的位置*/ p = n; else { for(i=0; iif( m > a[i]) { p=i; break; } for(i=n; i>=p+1; i--) /*将插入位置之后的元素后移*/ a[i]=a[i-1]; }

/*插入*/ a[p]=m;

printf("插入%.2f 后:", m); /*输出插入后结果*/ for(i=0; iprintf("%.2f ", a[i]); printf("\n"); } else printf("数据超出范围"); }

二、二维数组实验 1. 以下程序功能为:将下列矩阵中的元素向右移动一列,最后一列移至第一列。找出并改正以下源程序中错误,通过调试得出正确的运行结果。 1 4 6 8 10 12

合集下载

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

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

6.2基础实验一、程序分析分析以下程序段完成的功能,填写在序号后的空白处,并运行验证结果。

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

#include <stdio.h>int 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______________________。

#include<stdio.h>int 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. 以下程序的功能是:____查找最大值元素及下标_________________。

#include <stdio.h>int 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 ;y = j ;}printf(“ ( % d , % d ) = % d \n”, x , y,m );return 0;} 运行结果:___(1 , 2 ) = 6↙_________________4. 以下程序的的运行结果是:__8,I am student!___________________。

C语言实验册完整答案

C语言实验册完整答案

实验2答案五.程序改错#include<stdi o.h>int main(void){int x=3,y;y = x*x;printf("%d = %d * %d\n",y,x,x); /* 输出*/printf("%d * %d = %d\n",x,x,y);return 0;}六、一般编程题6.1#include<stdio.h>int main(void){int x,y;printf("Input x: ");scanf("%d",&x);printf("Input y: ");scanf("%d",&y);printf("%d + %d = %d\n",x,y,x+y);printf("%d - %d = %d\n",x,y,x-y);printf("%d * %d = %d\n",x,y,x*y);printf("%d / %d = %d\n",x,y,x/y);printf("%d %% %d = %d\n",x,y,x%y);return 0;}6.2#include<stdio.h>int main(void){ float x; double y;printf("Input x: ");scanf("%f",&x);printf("Input y: ");scanf("%lf",&y);printf("%f + %f = %f\n",x,y,x+y);printf("%f - %f = %f\n",x,y,x-y);printf("%f * %f = %f\n",x,y,x*y);printf("%f / %f = %f\n",x,y,x/y);return 0;}6.3#include<stdio.h>int main(void){ char c;printf("Input c: ");scanf("%c",&c);printf("%c\n",c+32);return 0;}6.4#include<stdio.h>int main(void){int celsius,fahr;fahr = 150;celsius = 5*fahr/9 - 5*32/9;printf("fahr = %d, celsius = %d\n", fahr, celsius);return 0;} 如果使用公式9)32(5-⨯=f c 计算结果不一样,celsius = 65。

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的初始化,错误的是_。

第六章数组 编程题答案

第六章数组 编程题答案

第六章数组编程题答案1. 将输入的n个整数按从小到大排序输出,并求出其中所有奇数的个数。

提示:使用冒泡法或选择法将n个数排序,然后在使用一个循环结构找出奇数个数以下程序为选择法将5个数排序,并输出奇数个数#include<stdio.h>void main(){ int i,j,t,p,a[5],count=0;for(i=0;i<5;i++){ printf("enter No.%2d:",i+1);scanf("%d",&a[i]);}for(i=0;i<4;i++) //比较四趟{ p=i; //将本趟中第一个数下标赋值给p for(j=i+1;j<5;j++)if(a[p]>a[j])p=j; //p存放较小数的下标if(p!=i) //判断是否为本趟的第一个元素,此处if也可不用{t=a[p];a[p]=a[ i];a[i]=t;} /*数组元素一次交换到位*/}for(i=0;i<5;i++)printf("%d,",a[i]);printf("\n");for(i=0;i<5;i++)if(a[i]%2!=0) //判断是否是奇数count++;printf("奇数有%d个\n",count);}2. 输入n个整数,求出其中最大数及其所在的位置,以及此n个数中素数的个数。

#include <stdio.h>#define N 5void main(){int i,j,a[N],count=0,max,c;printf(“请输入5个数:\n”);for(i=0;i<5;i++)scanf(“%d”,&a[i]);max=a[0];for(i=0;i<5;i++)if(max<a[i]){ max=a[i];c=i; //记住最大数位置}for(i=0;i<5;i++) //判定数组中每个元素是否为素数{for(j=2;j<=a[i]/2;j++)if(a[i]%j==0) break;if(j>=a[i]/2+1) count++; //统计素数个数}printf(“最大数为:%d,位置为:%d,素数个数为:%d\n”,max,c+1,count);}运行结果:请输入5个数:23 45 66 17 90最大数为:90,位置为5,素数个数为:23. 输入10学生的分数,计算平均分,并打印低于平均分数的成绩。

实验数组参考标准答案

实验数组参考标准答案
实验数组参考标准答案
作者:
日期:
上机实验八二维数组与字符数组一参考答案
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++){〃输出矩阵中的下三角矩阵

数组题参考答案

数组题参考答案

数组题参考答案数组题参考答案在计算机科学中,数组是一种用于存储和管理一组相同类型数据的数据结构。

它是一种非常重要的数据结构,被广泛应用于各种编程语言和算法中。

在编程中,经常会遇到与数组相关的题目,这些题目既有基础的数组操作,也有一些较为复杂的问题。

下面,我将为大家提供一些常见数组题目的参考答案。

1. 数组反转题目描述:给定一个数组,将其反转。

解题思路:可以使用双指针法,一个指针指向数组的起始位置,另一个指针指向数组的末尾位置。

然后交换两个指针所指向的元素,并分别向中间移动,直到两个指针相遇。

```pythondef reverse_array(arr):left = 0right = len(arr) - 1while left < right:arr[left], arr[right] = arr[right], arr[left]left += 1right -= 1return arr```2. 数组去重题目描述:给定一个数组,删除其中重复的元素。

解题思路:可以使用一个集合来存储已经出现过的元素,然后遍历数组,将未出现过的元素添加到集合中。

```pythondef remove_duplicates(arr):unique_elements = set()result = []for num in arr:if num not in unique_elements:unique_elements.add(num)result.append(num)return result```3. 数组求和题目描述:给定一个数组,计算其中所有元素的和。

解题思路:可以使用一个变量来记录累加的和,然后遍历数组,将每个元素加到累加和中。

```pythondef array_sum(arr):sum = 0for num in arr:sum += numreturn sum```4. 数组中的最大值和最小值题目描述:给定一个数组,找出其中的最大值和最小值。

C语言实验6数组

福建农林大学实验报告系(教研室):专业:年级:2010 实验课程:C语言程序设计姓名:学号:实验室号:1#608_ 计算机号:实验时间:2012.11.12 指导教师签字:成绩:实验6:数组一、实验目的和要求1.掌握一维数组和二维数组的定义、赋值和输入输出的方法2.掌握字符数组和字符串函数的使用3.掌握与数组有关的算法(特别是排序算法)二、实验内容和原理1. 分别采用冒泡法、选择排序法对10个整数排序。

10个整数用scanf函数输入。

2. 将两个字符串连接起来,不要用strcat函数。

3. 将一个数组中的值按逆序存放。

例如,原来顺序为3 2 1 8 9。

要求改为9 8 1 2 3。

4. 输出杨辉三角形(要求输出10行)5. 以下fun函数的功能是:找出具有N个元素的一维数组中的最小值,并作为函数值返回。

请填空,并写一个main()函数调用fun函数。

(符号常量N定义为10)int fun(int x[N]){int i,k=0;for(i=0;i<N;i++)if (x[i]<x[k]) k=___i___;return x[k];}6.已知一个已排好序的数组,要求输入1个数后,按原来排序的规律将它插入数组中。

三、实验环境1. 硬件:PC机;2. 软件:Windows操作系统、Visual C++ 6.0 。

四、算法描述及实验步骤第一题(起泡法)如果有n个数,则要进行n-1趟比较。

在第1趟比较中要进行n-1次两两比较,在第j趟比较中要进行n-j次两两比较。

第一题(选择排序法)1.从n个元素中,通过比较,找出最小元素,放在第一个位置上。

2.在剩下的n –1个元素中,找出第二小的元素并把它放在第二个位置上。

3.对上述过程重复,直至剩下一个元素。

第二题1、输入字符串s1和s22、当字符串s1【i】不等于\0时,进行i++3、当字符串s2【j】不等于\0时,s1[i++]=s2[j++],s1[i]=’\0’4、输出连接后字符串第三题1、显示初始数组元素2、当for(i=0;i<=n/2,i++)将第i个元素与n-1-i个元素互换3、显示逆序排放的各数组元素第四题1、用for构造出十行十列2、各行的第一个数都为1,各行最后一个数也为13、从第三行开始,a【i】【j】=a【i-1】【j】+a【i-1】【j-1】4、输出十行十列的杨辉三角第五题1、定义i、k两个整型变量,i作为循环变量使用,k准备存储最小值的下标。

实验6-3 数组(三)

实验6-3 数组(三)1【实验目的】(1)掌握字符数组的定义、赋值和输入输出的方法(2)掌握字符数组和字符串函数的使用(3)掌握数组的基本操作和排序算法【实验要求】(1)熟悉掌握字符数组的定义、赋值和输入输出方法(2)掌握字符数组和字符串函数的使用(3)掌握数组的增加元素和删除元素的操作(4)掌握数组的排序算法(比较、选择和冒泡三种算法,要求至少会一种)【实验环境】(1) Microsoft XP操作系统(2) Microsoft VC++ 6.0【实验内容】1、Palindromes_easy version/acmhome/problemdetail.do?&method=showdetail&id=1384 描述“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。

请写一个程序判断读入的字符串是否是“回文”。

输入输入包含多个测试实例,输入数据的第一行是一个正整数n,表示测试实例的个数,后面紧跟着是n个字符串,每个字符串的长度不超过30。

输出:如果一个字符串是回文串,则输出"yes",否则输出"no".样例输入:4levelabcdenoonhaha样例输出:yesnoyesno2、分割整数/acmhome/problemdetail.do?&method=showdetail&id=1173描述:从键盘输入一个长正整数(不超过10位),从高位开始逐位分割并输出。

输入:正整数n,不含前导零。

输出:分割的整数序列,各整数之间用空格格开。

注意,最后一个数字后面没有空格!样例输入:654321样例输出:6 5 4 3 2 13、简单编码/acmhome/problemdetail.do?&method=showdetail&id=1464描述:将一串文本译成密码,密码的规律是:将原来的小写字母全部翻译成大写字母,大写字母全部翻译成小写字母,数字的翻译规律如下:0——>91——>82——>73——>64——>55——>46——>37——>28——>19——>0然后将所有字符的顺序颠倒。

实验6数组-四川大学

实验6 数组一、实验目的1. 理解一维数组的基本概念2. 掌握一维数组的定义、初始化、数组元素的引用3. 掌握一维数组的输入、输出等基本操作4. 掌握字符数组的使用5. 掌握一维数组的有关算法的思路和实现,如冒泡法与选择法排序、数组逆置以及数组元素的查询与插入等常用算法。

二、实验内容实训1 有10位学生的成绩存放在数组score中,从键盘输入1个数,查找这个成绩是否在数组中,如果在,输出其下标,如果不在,输出0。

数组的下标i表示第i位学生的成绩,数组的下标0处不存储成绩。

实验步骤:1) 在VS2008中新建项目,在项目中新建C++源文件,输入下面程序,并且编译、连接。

//***************************************************************//* 程序名:实训1.cpp *//* 主要功能: *//* 使用顺序查找法查找学生成绩单 *//* 从最后一位学生到第一位学生依次进行比较,以下标0为监视哨 *//***************************************************************#include <iostream> // 包含输入输出接口文件using namespace std; // 引用标准命名空间int main() // 主函数{const int n = 10; // 使用常变量定义学生人数int score[n + 1] = {0, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98};// 定义成绩数组,有n+1个整型元素,其中下标0处未存放学生成绩16 int i; // 循环变量int x; // 等查找的学生成绩cout<<"请输入待查找的学生成绩:";cin>>x;score[0] = x; // 在下标处设置监视哨21 for(i = n; score[i] != x; i--);// 计数循环,从后到前循环比较当前元素,循环体为空语句if(i >= 1){cout<<"查找成功,待查找成绩是第"<<i<<" 位学生的成绩"<<endl;}else{cout<<"未查找到该成绩!"<<endl;}return 0;}2) 运行实训1,待查找成绩分别输入为70、75、80、85、90,观察输出结果。

C语言实验报告6《数组》

嘉应学院计算机学院实验报告课程名称C语言程序设计实验名称数组实验地点指导老师实验时间提交时间班级姓名座号一、实验目的和要求(1)掌握一维数组和二维数组的定义、赋值和输入输出的方法;(2)掌握字符数组和字符串函数的使用;(3)掌握与数组有关的算法(特别是排序算法)。

二、实验环境、内容和方法实验内容:(1)编一个程序,输入10个整数,统计并输出其中正数、负数和零的个数。

(2)从键盘输入5个整数,找出最大数和最小数所在的位置,并把二者对调,然后输出调整后的5个数。

实验方法:(一)综合运用课本所学的知识,用不同的算法实现在不同的程序功能。

(二)结合指导老师的指导,解决程序中的问题,正确解决实际中存在的异常情况,逐步改善功能。

(三)根据实验内容,编译程序。

实验环境:Windows xp Visual C++6.0三、实验过程描述(一)#include<stdio.h>void main(){int i,a[10];int q=0,w=0,e=0;printf("输入十个数字,用空格隔开\n");for(i=0;i<10;i++)scanf("%d",&a[i]);printf("\n");for(i=0;i<=9;i++){if(a[i]<0) w++;else if(a[i]==0) e++;else q++;}printf("正数的个数:%d,负数的个数:%d,零的个数:%d\n",q,w,e); }(二)#include<stdio.h>void main(){int i,a[5];int max,min,b;printf("输入五个数字,用空格隔开\n");for(i=0;i<5;i++)scanf("%d",&a[i]);printf("\n");max=0,min=0;for(i=0;i<4;i++){b=i+1;if(a[max]>a[b]) ;else max=b;}for(i=0;i<4;i++){b=i+1;if(a[min]<a[b]) ;else min=b;}b=a[max];a[max]=a[min];a[min]=b;for(i=0;i<5;i++)printf("%d,",a[i]);printf("\n");}四、结果分析.(一)(二)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档