上机报告4数组答案.doc
上机实验4答案
沈阳工程学院C语言程序设计实验报告实验四:数组程序设计【实验目的】1. 熟练掌握使用一维数组编程的方法。
2. 熟练掌握使用字符数组处理字符串的方法。
3. 掌握用数组名作为函数参数的编程方法。
【实验内容】改错题1、输入一个以回车结束的字符串(少于80个字符),把字符串中的所有数字字符(0~9)转换为整数,去掉其他字符。
例如,字符串“4a56bc”转换为整数后是456。
输入输出示例Abc85xyz648564源程序(有错误的程序)#include "stdio.h"#include "string.h"void main()/****************** found ******************/{ long i,s=0;char str[80];gets(str);for(i=0;i<strlen(str);i++)/****************** found *******************/if(str[i]>='0'&&str[i]<='9')s=s*10+str[i]-48;printf("%ld",s);}2、输入1个正整数n(0<n<9)和一组(n个)有序的整数,再输入一个整数x,把插入到这组数据中,使该组数据仍然有序。
运行结果(改正后程序的运行结果)请输入数据的个数n:5请输入这5个整数:1 2 3 6 8请输入要插入的整数:4插入后:1 2 3 4 6 8【提示:先找到插入点,从插入点开始,所有的数据顺序后移,然后插入数据。
】源程序(有错误的程序)#include "stdio.h"void main()/********************found********************/{ int i,j,n,x,a[10];printf("请输入数据的个数n:");scanf("%d",&n);printf("请输入这%d个整数:",n);for(i=0;i<n;i++)scanf("%d",&a[i]);printf("请输入要插入的整数:");scanf("%d",&x);j=n; /*假设插在最后*/for(i=0;i<n;i++)if(x<a[i]){ j=i; break; } /*找到插入点*/for(i=n-1;i>=j;i--) /*从插入点开始,所有的数据顺序后移*//********************found*********************/a[i+1]=a[i] ;/********************found*********************/a[i+1]=x; /*插入数据*/printf("插入后:");for(i=0;i<n+1;i++)printf("%d ",a[i]);putchar('\n');}编程题1、输入1个正整数n(1<n≤10),再输入n个整数,将最小值与第一个数交换,最大值与最后一个数交换,然后输出交换后的n个数。
第4章数组上机作业
第4章构造数据类型第一部分数组通过本节实验作业应达目标1.学习并掌握一维数组与二维数组的定义、使用及初始化方法。
2.熟练掌握字符数组和字符串的使用方法。
3.掌握数组的一种排序算法。
4.学会用数组保存多个相关的同类数据,并对这一组数据进行各类操作。
本章必须上交作业第一部分数组作业要求:程序4_3.c、4_4_2.c、4_5.c、4_7.c、4_8.c上传至http://121.251.227.27:8080/c。
源程序可以.cpp命名。
第二部分结构体作业要求程序4_11.c、4_12.c上传至http://121.251.227.27:8080/c。
源程序可以.cpp命名。
实验一一维数组的定义和简单应用【实验目的】学会定义一维数组,掌握一维数组的遍历操作,掌握在一组数组中求最大值、最小值的方法。
【实验内容】从键盘读入5个成绩到一个数组中,求其中的最大值,最小值和平均成绩。
在屏幕上显示输入成绩的提示信息,用键盘输入一个成绩,接着提示输入下一个,直到结束。
以4_1.c命名本程序。
程序运行界面【实验提示】求最大(小)值通常用“打擂台”的方法。
首先设计两个变量,如max和min分别用来存放最大值和最小值,并将数组的首元素赋给这两个变量,这就是到目前为止的最大(小)值,然后利用循环依次比较其他的元素,总是将当前最大(小)值赋给max和min,直至比较到最后,max和min中的数据就是最大值和最小值。
求平均值还要设置一个变量sum,用来累加各元素的值。
实验二一维数组的排序【实验目的】熟练掌握一维数组三种基本排序方法:选择法,冒泡法,比较法。
【实验内容】从键盘上接收10个成绩,存放到一个一维数组score中,分别利用三种排序方法,将数组从小到大排序并在屏幕上显示排序结果。
分别以4_2_1.c、4_2_2.c和4_2_3.c命名三个程序。
【实验提示】所谓排序是指把一组杂乱无章的数据按照大小顺序排列。
将被排序的n个数据存放在一个数组中, 假如按升序排列。
天津理工大学C语言上机报告题目加答案
实验五(2009-9-24)一、实验名称:数组。
二、实验目的:(1)掌握C语言中一维数组、二维数组的定义方法;(2)掌握字符数组与常用字符串处理函数的使用;(3)掌握与数组有关的算法(如数组元素的排序);(4)进一步熟悉Visual C++6.0开发环境下调试程序的基本步骤。
三、实验项目(必做题)本次实验要求同学们事先在纸介质上编好解决下面问题的源程序,然后才允许进实验室上机调试。
(1)定义1个一维数组:int arr[10],然后从键盘输入10个整数,编程求出其最大值、最小值以及平均值,并在屏幕上打印输出。
提示:在一个循环体内用scanf函数输入10个数,然后再用一个循环处理数据处理。
测试实例:输入:100 10 -125 -9 0 90 70 60 300 -250输出:max=300min=-250ave= 14.60注意:要求首先建立项目文件,然后建立源程序文件进行编辑、调试。
(2)定义两个字符数组:char str1[80], str2[80],其中字符串str1接受从键盘输入,然后编程将字符数组str1的内容逐个拷贝到字符数组str2中。
(不允许使用库函数strcpy)提示:从键盘接受1个字符串输入str1后,使用一个循环将str1中字符逐个赋值给str2中的对应元素。
测试实例:输入:Hello World! 输出:Hello World!注意:要求首先建立项目文件,然后建立源程序文件进行编辑、调试。
(3)定义1个一维数组:int arr[20],然后从键盘输入20个整数,使用冒泡法编程将该数组从小到大进行排序,并将排序后结果打印在屏幕上。
提示:利用一个二重循环体实现冒泡排序(算法的基本思想参见教材P134)。
测试实例:输入:100 10 -125 -9 0 90 70 60 300 -250 -72 39 48 22 83 159 142 -129 -24 539输出:-250 -129 -125 -72 -24 -9 0 10 22 39 48 60 70 83 90 100 142 159 300 539(4)将20个数存放在一个数组中,首先使用选择法对这20个数按升序排列,并输出排序后的结果;然后从键盘输入一个数,要求用二分查找的方法找出该数在数组中的位置(即下标),如果该数不在数组中,则输出“无此数”。
C程序设计第4次上机内容
《C语言程序设计》第4次上机内容(第10~11周)说明:同第1次上机内容的说明一样。
一、上机练习部分1.阅读理解教材第6章的习题6.1中的三个程序,通过阅读理解先写出其结果,并上机验证。
二、编写程序1.编写程序其功能是:任意输入20个整数到一维数组中,计算:(1)正数的个数和正数的和;(2)负数的个数和负数的和;(3)零的个数。
最后输出结果。
提示:(1)输入20个整数之后存入一维数组(2)定义sum1和sum2两个变量分别存放正数和负数的和,再定义n1,n2,n3三个变量分别存放正数、负数和零的个数。
(3)处理:用循环结构依次对每一个数组元素的数进行判断,如果是正数则进行正数所对应的操作,如果是负数则进行负数所对应的操作,如果是零则进行零的操作。
运行结果:2.编写程序其功能是:输入10个任意数,求这10个数中的最大值、最小值和平均值,并且给出最大值与最小值在这组数中位置。
提示:(1)输入10个数用一维数组存放。
(2)设4个变量分别用来存放最大值、最大值的位置、最小值、最小值的位置。
用一个变量先存放累加和再存放平均值(考虑一下该变量用什么类型)。
(3)一般先选取数组中第一个数为最大值和最小值变量的初值,第一个数的下标0为最大值和最小值位置变量的初值。
(4)利用循环结构将最大、最小值变量的值和所有数依次进行比较,如果某个数大于最大值则把该数及它的下标赋给相应变量,如果某个数小于最小值则把该数及它的下标赋给相应变量。
另外把每个数要进行累加。
(5)循环结束,计算平均值,最后输出结果。
运行结果:3.编一个程序,输入一个5行5列的整数矩阵,判断该矩阵是否对称矩阵,是则输出“该矩阵是对称矩阵!”,否则输出“该矩阵不是对称矩阵!”。
(说明:对称矩阵的定义是所有第i行j列的元素值均等于第j行i列元素的值。
)比如以下矩阵就是对称矩阵。
5 4 3 2 14 5 6 7 83 6 5 9 82 7 9 5 31 8 8 3 5提示:(1)定义一个二维数组,定义一个变量flag为判断矩阵是否为对称矩阵的标志初值为1(flag为1表示对称矩阵,为0表示不对称矩阵)。
山建java上机实验报告及答案
实验二:Java基本语法练习之迟辟智美创作一、实验目的及任务熟悉Java法式结构,掌握基本数据类型的使用方法,熟练运用分支、循环的使用方法.二、实验环境主机把持系统为Windows2000或Windows XP,已经配置好的JDK及Java编纂软件UltraEdit、Editplus或者TextPad 等软件中一种或多种.三、实验步伐1、使用Java编纂软件验证教材例题,参照教材对例题进行编写、编译并执行.2、课下在实验陈说纸上编写以下法式,并在上机课时编译并执行你所编写的法式,将编译及执行结果写在实验陈说纸上.1)设i是一个整数类型变量,写出下列问题对应的法式.(1)判断i为奇数或偶数;(2)判断i的值是否在0~9之间.public class Shu {public static void main(String[] args) {Scanner input = new Scanner(System.in);int i;System.out.println("请输入一个整数:(按回车)");i = input.nextInt();if(i % 2==0){System.out.println(i+"是一个偶数.");}elseSystem.out.printf(i+"是一个奇数.");if(0<=i&&i<=9){System.out.println(i+"在0~9之间");}elseSystem.out.println(i+"不在0~9之间");}}2)设ch是一个字符变量,写出下列问题对应的法式.(1)判断ch是一个十进制的数字字符;(2)判断ch是一个英文字母,不论年夜写或者小写;(3)将一个十进制的数字字符ch转换成对应的整数类型值.public class fun{public static void main(String[] args){char ch='A';if(ch>='0' && ch<='9'){System.out.println(ch+"是十进制数字符\n");}else if(ch>='a' && ch<='z'){System.out.println(ch+"是小写字母\n");}else if(ch>='A' && ch<='Z'){System.out.println(ch+"是年夜写字母\n");}}}public class haha2 {/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubchar a='h';if((a>=65 && a<=90)||(a>=97 && a<=122)){ System.out.println("a是字母");}if(a>=48 && a<=57){System.out.println("a是数字");}System.out.println("a转化为整形是"+(a+0));}}3、输出下列数字形式:11 2 11 2 3 2 11 2 3 4 3 2 1public class haha3 {/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubint[][] a=new int[4][7];for(int i=0;i<4;i++){a[i][3]=i+1;a[i][2]=a[i][4]=i;a[i][1]=a[i][5]=i-1;a[i][0]=a[i][6]=i-2;for(int j=0;j<7;j++){if(a[i][j]>=1)System.out.print(a[i][j]);else{if(j==6){System.out.println(" ");}else{System.out.print(" ");}}}}}}四、实验陈说内容1、步伐2中所编写的法式,并将执行结果写在实验陈说纸上.实验三:数组和字符串练习一、实验目的及任务掌握Java数组、字符串的使用.二、实验环境主机把持系统为Windows2000或Windows XP,已经配置好的JDK及Java编纂软件UltraEdit、Editplus或者TextPad 等软件中一种或多种.三、实验步伐1、使用Java编纂软件验证教材例题,参照教材对例题进行编写、编译并执行.2、课下在实验陈说纸上编写以下法式,并在上机课时编译并执行你所编写的法式,将编译及执行结果写在实验陈说纸上.1)设一个一维数组的元素值为:7 4 8 9 1 5,请输出具有以下内容的方阵:2)找出两个字符串中所有共同的字符.public class e32 {/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubString a="hf",b="hfhh";for(int i=0;i<a.length();i++){for(int j=0;j<b.length();j++){if(a.charAt(i)==b.charAt(j)){System.out.print(b.charAt(j));}}}}}3)读入一个字符串str,判断其是否为标识符. import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;public class e33 {public static void main(String[] args) {BufferedReader str=new BufferedReader( new InputStreamReader(System.in));try {String a=str.readLine();} catch (IOException e) {e.printStackTrace();}}}public class e3 {/*** @param args*/public static void main(String[] args) { // TODO Auto-generated method stubint[] a={7,4,8,9,1,5};for(int i=0;i<a.length;i++){System.out.print(a[i]);}System.out.println();System.out.print(a[5]);for(int i=0;i<a.length-1;i++){System.out.print(a[i]);}System.out.println();System.out.print(a[4]);System.out.print(a[5]);for(int i=0;i<a.length-2;i++){System.out.print(a[i]);}System.out.println();for(int i=3;i<a.length;i++){System.out.print(a[i]);}System.out.print(a[0]);System.out.print(a[1]);System.out.println(a[2]);for(int i=2;i<a.length;i++){System.out.print(a[i]);}System.out.print(a[0]);System.out.println(a[1]);for(int i=1;i<a.length;i++){System.out.print(a[i]);}System.out.println(a[0]);}}3、提高练习.根据题意边思考边将法式使用Java编纂软件编写出来.题意:读入一个浮点数值,将其转化为中文金额的年夜写方式,如123.45,转化为:壹佰贰拾叁元肆角伍分.编写法式实现题意并调试通过,针对以下多种数据情况下进一步完善法式.1)当金额为整数时,只暗示整数部份,省略小数部份,并添加“整”字.如123暗示为壹佰贰拾叁元整.2)当金额中含有连续的0时,只需写一个“零”即可.例如,10005暗示为:壹万零伍元整. 3)10的暗示方式.例如,110暗示为:壹佰一拾元整,而10暗示为拾元整.金额的中文年夜写方式.四、实验陈说内容1、步伐2、3中所编写的法式及其编译及执行结果写在实验陈说纸上.实验四:类和对象法式设计一、实验目的及任务理解面向对象封装性、继承性和多态性的基本概念,掌握声明类、封装类、继承类以及运行时多态性的实现方法.二、实验环境主机把持系统为Windows2000或Windows XP,已经配置好的JDK及Java编纂软件UltraEdit、Editplus或者TextPad 等软件中一种或多种.三、实验步伐1、使用Java编纂软件验证教材例题,参照教材对例题进行编写、编译并执行.2、课下在实验陈说纸上编写以下法式,并在上机课时编译并执行你所编写的法式,将编译及执行结果写在实验陈说纸上.1)界说一个类People,成员变量有姓名、出身日期、性别、身高、体重等,成员方法有计算年龄,并创立该类的对象. public class People {String name;String birth;String sex;Double hight;double weight;public People(){}public void age(){System.out.print(2012-Integer.parseInt(birth));}/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubPeople p=new People();}}2)设已有类声明如下:public class Date1{int year, month, day;public void tomorrow() { }public void yestoday() { }}请写出实现其中tomorrow()方法和yestoday()方法的代码. public class Date1 {/*** @param args*/int year, month, day;public void tomorrow() {day++;System.out.println(year+":"+month+":"+day);}public void yestoday() {day--;System.out.println(year+":"+month+":"+day);}public static void main(String[] args) {// TODO Auto-generated method stub}}3)设计Number类(1)设计一个类Number1,有一个方法:求n的阶乘.(2)设计一个类Number2 ,它是Number1的子类,它有一个方法:求1+2+3+…+n.public class Number1 {int n;public int jiecheng(int n){int result;if(n==0){return 1;}else{return jiecheng(n-1)*n;}}/*** @param args*/public static void main(String[] args) { // TODO Auto-generated method stubNumber1 a=new Number1();System.out.print(a.jiecheng(4));}}public class Number2 {public void sum(int n){System.out.print(n*(n+1)/2);}/*** @param args*/public static void main(String[] args) { // TODO Auto-generated method stubNumber2 a=new Number2();a.sum(4);}}3、提高练习.根据题意边思考边将法式使用Java编纂软件编写出来.题意:设计银行账户类及存取款把持方法.设计一个银行账户类,其中包括:1)账户信息:账号、姓名、开户时间、身份证号码等.2)存款方法.3)取款方法.银行账户类声明为public,其中的功效变量声明为private,方法声明为public.public class Bank {private String name;private String bankno;private String idno;private String time;private static double moneny;public void add(double savemoney){this.moneny=this.moneny+savemoney;}public void fetch(double fetchmoney){this.moneny=this.moneny-fetchmoney;}/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stub}}四、实验陈说内容1、步伐2、3中所编写的法式及其编译及执行结果写在实验陈说纸上.。
C语言--数组上机及答案
程序一:传值void swap(int a,int b){ int t;t=a; a=b; b=t;}main(){ int x=10,y=20;printf(“%d,%d\n”,x,y);swap(x,y);printf(“%d,%d\n”,x,y);}程序二:传地址void swap(int *a,int *b){ int t;t=*a; *a=*b; *b=t;}main(){ int x=10,y=20;printf(“%d,%d\n”,x,y);swap(&x,&y);printf(“%d,%d\n”,x,y);}上机练习1:现在一个数组存放10个整型数据(可以有相同),要求用户输入一个数,然后把数组中与其输入相同的数删除。
然后输出结果。
上机练习2:数组中有10个数,要求对数组进行排序,输出结果。
上机练习3:有10个学生的成绩存在数组中,请统计大于等于平均成绩的人数。
上机练习4:有10个学生的成绩存在数组中,请统计最高分,最低分,并将最高分和最低分学生的下标输出到屏幕上。
上机练习5:求a[M][N]数组四周的和。
#include <stdio.h>#define M 4#define N 5main( ){ int a[M][N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};…….}程序一:传值void swap(int a,int b){ int t;t=a; a=b; b=t;}main(){ int x=10,y=20;printf(“%d,%d\n”,x,y);swap(x,y);printf(“%d,%d\n”,x,y);}程序二:传地址void swap(int *a,int *b){ int t;t=*a; *a=*b; *b=t;}main(){ int x=10,y=20;printf(“%d,%d\n”,x,y);swap(&x,&y);printf(“%d,%d\n”,x,y);}上机练习1:现在一个数组存放10个整型数据(可以有相同),要求用户输入一个数,然后把数组中与其输入相同的数删除。
2010秋VB04上机答案
2010年(秋)上机 Visual Basic(VB04)答案一、改错【题目】本程序的功能是找出给定范围内,由不同数字组成的完全平方数。
所谓完全平方数是指其平方根为正整数的整数。
Option ExplicitPrivate Sub CmdFind_Click()Dim n As Long, i As IntegerFor n = 10000 To 60000If Int(Sqr(n)) = Sqr(n) And validate(n) ThenList1.AddItem n & "==>" & Sqr(n) & "^2"End IfNext nIf List1.ListCount = 0 Then List1.AddItem "无符合要求的数"End SubPrivate Function validate(ByVal n As Long) As Boolean 'err 无ByValDim k As Integer, num() As IntegerDim i As Integer, j As IntegerDok = k + 1ReDim Preserve num(k) 'err 无Preservenum(k) = n Mod 10n = n \ 10Loop Until n = 0 'err Until n < 0For i = 1 To UBound(num) - 1For j = i + 1 To UBound(num)If num(i) = num(j) Then Exit FunctionNext jNext ivalidate = TrueEnd Function二、编程题【题目】编写程序,生成试验数据的茎叶图,并显示不同区间数据的个数。
设试验数据取值在30~99之间(见图),其中在30~39之间有6个数31、39、39、31、39、31,则可表示为 3| 1 9 9 2 9 1;在40~49之间有2个数43、49,则可表示为4| 3 9;依次类推,由此得到的图形就称为数据的“茎叶图”。
上机4参考解答
上机4参考答案三、1.⑴f[0]= 0 ;f[i]= 1 ;for(k= 2 ;k< N ;k++){f[k]=f[k-1]+f[k-2];}(2)程序输出的结果是:0 1 1 23 5 8 1321 34 55 89144 233 377 610987 1597 2584 41812.(1)a[i][p]:表示每行中绝对值最小的数i:表示该数所在的行p:表示该数所在的列(2)程序运行的结果是:3 (0,2)2 (1,1)-1 (2,3)3. for(i=0;i<5;i++){for( j=0;j<i;j++ ) /*输出每行前面的空格*/ printf ("%c",space);for( j=0;j<5;j++ ) /*输出每行的星号*/printf ("%c ",' *;printf( n”“);}4./*(1)按字符逐个输入和输出*/#i nclude <stdio.h>int main(){char str[6];int i;for(i=0;i<5;i++)scanf ("%c",&str[i]);for (i=0;i<5;i++)printf ("%c",str[i]);printf( n ”“);return 0;}/*(2)按字符串输入和输出*/#i nclude <stdio.h>int main(){char str[6];gets(str);puts(str);return 0;}for(i=0;i<5;i++) /*与初始化中的5个人进行比较*/ if (strcmp( name,classStu[i]) ==0)flag=1;if ( flag==1 )printf("%s 是这个班的。
\n",name);elseprintf("%s 不是这个班的。
c语言第四次上机作业参考答案
第四次上机作业参考答案:1.数组转置在主函数中定义一个n(1<=n<=6)维方阵,并从键盘读入数组元素;编写函数transpose(a,n)实现数组a转置;在主函数中输出转置后的方阵。
例:输入41 2 3 4 输出 1 5 9 135 6 7 8 2 6 10 149 10 11 12 3 7 11 1513 14 15 16 4 8 12 16#include <stdio.h>#define N 6void transpose(int a[][N],int n);void main( ){ int n,i,j;int a[N][N];printf("Input n(n<=6):");scanf("%d",&n);printf("Input the array:\n");for(i=0;i<n;i++)for(j=0;j<n;j++)scanf("%d",&a[i][j]);printf("Display the array:\n");for(i=0;i<n;i++){ for(j=0;j<n;j++)printf("%-4d",a[i][j]);printf("\n");}transpose(a,n);printf("Display the transposed array:\n");for(i=0;i<n;i++){ for(j=0;j<n;j++)printf("%-4d",a[i][j]);printf("\n");}}void transpose(int a[][N],int n){int i,j,t;for(i=0;i<n;i++)for(j=0;j<i;j++){ t=a[i][j];a[i][j]=a[j][i];a[j][i]=t;}2.学生信息编写4个函数实现下列功能:(1)函数input() 输入20个学生姓名和高考总分;(2)函数sort() 按高考总分从高到低的顺序排序,姓名顺序也随之调整;(3)函数display()显示学生姓名及其高考总分;(4)在主函数中输入一个姓名,编写函数search() 用顺序查找方法找出该学生。
C上机实验4含答案及代码
特别注意事项:1,文件名“_王小小_数学0801_实验1.doc”中的实验1指的是第几次上机实验,与“实验指导书”中的实验几没有关系;2,文件名“_王小小_数学0801_实验1.doc”中的doc是文件扩展名,请注意不要提交如“*******.doc.doc”的文件;3,上机实验作业一律以word形式提交;4,若上机实验有多个作业,请按照下列加粗方式给每个作业命名,如:实验1_1,实验1_25,实验作业的word文件的页眉不可少,请每次注意修改;6,每个实验作业均要给出比较详细的程序说明,且程序说明位于程序之后。
程序说明是特别重点考察的部分,请按照你的理解进行撰写;7,该部分“特别注意事项”可以随同作业一并提交,请提交作业前进行对照。
特别注意事项:1,文件名“_王小小_数学0801_实验1.doc”中的实验1指的是第几次上机实验,与“实验指导书”中的实验几没有关系;2,文件名“_王小小_数学0801_实验1.doc”中的doc是文件扩展名,请注意不要提交如“*******.doc.doc”的文件;3,上机实验作业一律以word形式提交;4,若上机实验有多个作业,请按照下列加粗方式给每个作业命名,如:实验1_1,实验1_25,实验作业的word文件的页眉不可少,请每次注意修改;6,每个实验作业均要给出比较详细的程序说明,且程序说明位于程序之后。
程序说明是特别重点考察的部分,请按照你的理解进行撰写;7,该部分“特别注意事项”可以随同作业一并提交,请提交作业前进行对照。
实验4_1_1/*************************************************使用全局变量,求两正整数的最大公约数和最小公倍数*************************************************/#include <iostream>using namespace std;int maxgy;int maxgb;void fun(int a,int b){int t,i;if(a<b){t=a;a=b;b=t;} // 求的a为最大数i=b;while(i>=1){if(b%i==0 && a%i==0){maxgy=i;break;}i--;}i=a;while(i>=a){if(i%a==0 && i%b==0){ maxgb=i;break;}i++;}}void main (){ int x,y;cout<<"input data x,y:";cin>>x>>y;fun (x,y);cout<<"该两个数的最大公约数是:"<<maxgy<<endl;cout<<"该两个数的最大公倍数是:"<<maxgb<<endl;}程序说明:将两正整数的最大公约数和最小公倍数都设为全局变量,先做好函数的声明和定义,再用main主函数调用。
第4章 串与数组 习题参考答案
习题四参考答案一、选择题1.下面关于串的叙述中,哪一个是不正确的?(B )A.串是字符的有限序列B.空串是由空格构成的串C.模式匹配是串的一种重要运算D.串既可以采用顺序存储,也可以采用链式存储2.串的长度是指( A )A. 串中包含的字符个数B. 串中包含的不同字符个数C. 串中除空格以外的字符个数D. 串中包含的不同字母个数3.设有两个串p和q,其中q是p的子串,求q在p中首次出现的位置的算法称为( C )A.求子串B.联接C.模式匹配D.求串长4.设主串的长度为n,模式串的长度为m,则串匹配的KMP算法时间复杂度是( C )。
A. O(m)B. O(n)C. O(n + m)D. O(n×m)5. 串也是一种线性表,只不过( A )。
A. 数据元素均为字符B. 数据元素是子串C. 数据元素数据类型不受限制D. 表长受到限制6.设有一个10阶的对称矩阵A,采用压缩存储方式,以行序为主进行存储,a11为第一元素,其存储地址为1,每个元素占一个地址空间,则a85的地址为( B )。
A. 13B. 33C. 18D. 407. 有一个二维数组A[1..6, 0..7] ,每个数组元素用相邻的6个字节存储,存储器按字节编址,那么这个数组占用的存储空间大小是(D )个字节。
A. 48B. 96C. 252D. 2888.设有数组A[1..8,1..10],数组的每个元素占3字节,数组从内存首地址BA开始以列序为主序顺序存放,则数组元素 A[5,8]的存储首地址为( B )。
A. BA+141B. BA+180C. BA+222D. BA+2259. 稀疏矩阵的三元组存储表示方法( B )A. 实现转置操作很简单,只需将每个三元组中行下标和列下标交换即可B. 矩阵的非零元素个数和位置在操作过程中变化不大时较有效C. 是一种链式存储方法D. 比十字链表更高效10. 用十字链表表示一个稀疏矩阵,每个非零元素一般用一个含有( A )域的结点表示。
(完整版)VB项目4数组习题答案
一、单选题1.在中,一组具有相同名字、不同下标的变量称为____________。
A。
数组 B.变量 C。
同类数据 D。
同类变量2。
一维数组的大小为______________。
A。
上界+下界+1 B。
上界+下界-1 C.上界-下界+1 D.上界—下界—13.数组的存放是按____________存放的。
A.数据大小 B。
数据类型 C。
列 D.行4。
数组具有相同的_____________。
A。
下标 B.类型 C。
数值 D.存放地址5。
重定义数组大小的语句是______________。
A.Dim语句 B。
ReDim语句 C.Static 语句 D.Public 语句6。
使用Dim A(100) As Integer 语句声明了数组A,其下标的取值范围为____________。
A。
0~100 B.1~100 C.0~99 D.1~997.若使用Dim A(100) As Integer 语句声明了数组A,下列引用错误的是___________。
A.A(0)=2B.A(1)= -28C.A(56)= A(-56) D。
A(100)=A(0)+A(55)8。
如果要对已经声明的数组重新定义大小,并保留原有数据,可使用语句___________。
A。
Dim B.ReDim C。
Dim Preserve D.ReDim Preserve9。
对于Integer 类型的静态数组,如果没有赋值,则所有元素的值为____________。
A。
空 B.0 C。
1 D。
最大数10.执行重定义数组大小语句ReDim A(UBound(B))后,A数组的上界为______________。
A。
B数组的上界 B。
B数组的上界+1 C.B数组的上界— 1 D。
不确定11.下列数组声明语句中正确的是______________。
A.Dim A(9) As Single ={1,2,3,4,5,6,7,8,9,10}B。
Dim A() As Single ={1,2,3,4,5,6,7,8,9,10}C.Dim A() As Single ={1,"abc","ccc”,4,5,6,7,8,9,10}D。
第四章 数组习题集答案
20.若已有定义char s[10]; int i;下列输入函数调用中错误的是【】。
A)for (i=0; i<10; ++i) s[i]=getchar( ) ;
B)for (i=0; i<10; i++) scanf("%c",s[i] );
C)scanf("%s",s);
#include <stdio.h>
main()
{
int i=0,x=0;
int a[][4]={0,2,0,3,0,3,4,0,4,5,6,7,6,5,0,0};
while (i<4)
{
x+=【】;
i++;
}
printf("%d\n",x);
}
A)a[3-i][3-j]B)a[i][3-i]C)a[i][i]D)a[3-i][4]
printf ("%d\n",strlen(s1));
A)5B)2C)6D)7
37.定义如下变量和数组:
int i;
int x[3][3]={1,2,3,4,5,6,7,8,9};
则下面语句输出结果是【】
for(i=0;i<3;i++) printf("%d",x[i][0]);
A)1 4 7B)3 57C)3 6 9D)1 5 9
第四
一、选择题
1.如果char型变量占两个字节的存储单元,则按照如下方式定义的数组x占用的字节数是【】。
char x[50]={2,4,6,8,10};
A)50B)100C)10D)5
上机报告4数组答案
C语言上机报告4数组1、上机内容1) 完成实验指导书P260实验6的实验内容(1),(2),(3),(4)的实验内容。
(先自己编程,答案见指导书p55-p67的习题解答)2).下面程序为数组输入数据并输出结果;判断下面程序的正误,如果错误请改正过来。
#include "stdio.h"int main ( ){ int a[3]={0} ;int i;for (i=0; i<3; i++)scanf("%d",&a[i]);for (i=0; i<3; i++)printf("%d",a[i]);}3) 下面程序的功能是:将n各无序整数从小到大排序;判断下面程序的正误,如果错误请改正过来。
#include "stdio.h"void main ( ){ int a[100], i, j, p, t, n=20 ;for (j = 0; j<n ; j++) scanf("%d", &a[j]),for (j = 0;j<n-1 ; j++){ p = j;for ( i=j+1; i<n-1 ; i++ )if (a[p]>a[i]) t=i;if (p!=j){ t = a[j]; a[j] = a[p]; a[p]=t; }}for ( j = 0; j<n ; j++ ) printf("%d ", &a[j]);}答案:#include "stdio.h"void main ( ){ int a[10], i, j, p, t, n=5 ;for (j = 0; j<n ; j++)scanf("%d", &a[j]);for (j = 0;j<n-1 ; j++){ p = j;for ( i=j+1; i<n ; i++ )if (a[p]>a[i])p=i;if (p!=j){ t = a[j]; a[j] = a[p]; a[p]=t; }}for ( j = 0; j<n ; j++ ) printf("%d ", a[j]);}3)编写一个程序实现以下功能:输入N个整数,统计并输出负数个数以及负数之和。
上机考试题参考答案汇总
上机考试题参考答案1、编一个函数fun(char *s),函数的功能是把字符串中的内容逆置。
例子如:字符串中原有的内容为:abcdefg,则调用该函数后,串中的内容为:gfedcba。
试题程序:#define N 10fun(char *s){ int i=0,t,n=strlen(s);for(;s+i<s+n-1-i;i++){t=*(s+i);*(s+i)=*(s+n-1-i);*(s+n-1-i)=t;}}main(){ char a[N];clrscr();printf("Enter a string:"); gets(a);printf("The original string is:");puts(a);fun(a);printf("\n");printf("The string after modified:");puts(a);}2、写程序,实现矩阵(3行3列)的转置(即行列互换)。
int fun(int array[3][3]){ int i,j,t;for(i=0;i<2;i++)for(j=i+1;j<3;j++){t=array[i][j];array[i][j]=array[j][i];array[j][i]=t;}}main(){ int i,j;clrscr();for(i=0;i<3;i++){for(j=0;j<3;j++)printf("%7d",array[i][j]);printf("\n");}fun(array);printf("Converted array:\n");for(i=0;i<3;i++){for(j=0;j<3;j++)printf("%7d",array[i][j]);printf("\n");}}3、请编一个函数fun(int *a,int n,int *odd,int *even),函数的功能是分别求出数组中所有奇数之和以及所有偶数之和。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
上机报告4数组答案
C语言上机报告4数组1、上机内容1)完成实验指导书P260实验6的实验内容(1),(2),(3),(4)的实验内容。
(先自己编程,答案见指导书p55-p67的习题解答)2).下面程序为数组输入数据并输出结果;判断下面程序的正误,如果错误请改正过来。
#include“stdio.h“intmain(){inta[3]={0};inti;for(i=0;ia[i])t=i;if(p!=j){t=a[j ];a[j]=a[p];a[p]=t;}}for(j=0;ja[i])p=i;if(p!=j){t=a[j];a[j]=a[p];a[p]=t;}}for (j=0;j=0)continue;s+=a[i];count++;}printf(“s=%dcount=%d\n“,s,count);} 2、上机作业课后作业请独立完成,写完后以附件*.Doc形式发邮件至[emailprotected](请在10月30号前提交),文件名规则如下:学号-姓名-上机报告4一、完成下列选择题1、一个C语言的语句至少应包一个________A、{}B、逗号C、分号D、什么不要2、有以下程序段intk=0;while(k=1)k++;while循环执行的次数是A)无限次,k永远都1B)有语法错,不能执行C)一次也不执行D)执行1次3.以下为一维整型数组a的正确说明是_________.a)inta(10);b)intn=10,a[n];c)intn;d)#defineSIZE10;scanf(“%d“,inta[SIZE];inta[n];4.以下对二维数组a的正确说明是________.a)inta[3][];b)floata(3,4);c)doublea[1][4]d)floata(3)(4);5.运算完下面的C语言程序段以后,a的值是______,b的值是______,c的值是________。
intx=10,y=9;inta,b,c;a=(--x==y++)?--x:++y;b=x++;c=y;A、6913B、
8711C、8810D、87106、在以下定义中,正确的说明语句为____A)inta[a]B)inta[3,4]C)inta[][]D)inta[10][11]7有如下程序main(){inti,sum;for(i=1;i=0;i--)a[i]=10-i;printf(“%d%d%d“,a[2],a[5],a[8] );}A)258B)741C)852a[9]-a[0]:1234567890D)3699若有说明语句:int[3][4];则对a数组元素的正确引用是A)a[2][4]B)a[1,3]C)a[1+1][0]D)a(2)(1)10以下是个评分统计程序,共有8个评委打分,统计时,去掉一个最高分和一个最低分,其余6个分数的平均分即是最后得分,程序最后应显示这个得分,显示精度为1位整数,2位小数,程序如下,请将程序补充完整。
main(){floatx[8]={9.2,9.5,9.8,7.4,5.,9.1,9,0,}floataver=0,max,min;inti;for (i=0;ix[i])min=x[i];}aver=(aver-max-min)/6;printf(“Average%4.2f\n“,ave r);}编程练习,所有程序都需要画出程序的流程图。
:1.青年歌手参加歌曲大奖赛,有10个评委打分(十分制),试编程求选手的平均得分(去掉一个最高分和一个最低分,精确到小数点后2位)。
#inclu de“stdio.h“#include“string.h“main(){floatx[10],aver=0,max,min;in ti;puts(“请输入评委打分“);for(i=0;ix[i])min=x[i];}aver=(aver-max-min)/8;printf(“去掉一个最高分%3.1f,去掉一个最低分%3.1f,平均分为%3.1f\n“,max,min,aver);}2、10个小孩围成一圈分糖果,老师顺次分给每个人的糖块数为12,2,
8,22,16,4,10,6,14,20。
然后按下列规则调整,所有小孩同时把自己的糖果分一半给右边的小孩,糖块数变为奇数的人,再向老师补要一块,问经过多少次调整后,大家的糖块一样多,且每人多少块。
提示:用一个包含11个变量的数组。
最后一个变量a[10]用于改变第一个人的糖数。
voidmain(){inta[11]={12,2,8,22,16,4,10,6,14,20};inti;//循环变量intflag=0;//用于做为糖平均分配的标志intn=0;//用于统计分糖次数a[10]=a[0];//变量a[10]用于改变第一个人的糖数printf(“原有糖数“);for(i=0;i<10;i++)printf(“%3d“,a[i]);puts(““);do{for(i=0;i<10;i++){a[i] =a[i]/2+a[i+1]/2;//自己分一半给右手的人,同时拿到左手边人的一半if(a[i]%2!=0)a[i]+=1;}//奇数得一个糖n++;printf(“第%2d次:“,n);for(i=0;i<10;i++)printf(“%3d“,a[i]);puts(““);a[10]=a[0];for(i=1;i<10; i++){if(a[0]!=a[i])//如果有一个人的糖数不一样,标志f为1,同时退出{flag=1;break;}elseflag=0;}//所有人的人糖数相等,标志f为0}while(flag!=0);printf(“分糖%d次后大家糖数一样多“,n);}。