实验4-数组

合集下载

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语言程序设计课程教学大纲

《C语言程序设计》课程教学大纲适用专业信息与计算科学总学时90学分 4一、编写说明(一)本课程的性质、地位和作用本课程属于信息与计算科学的专业课,C程序设计语言的语法规则、数据类型、数据运算、语句、函数、指针、程序结构等方面的学习,掌握应用C语言进行程序设计的技能,为今后进一步学习程序开发以及科学与工程计算的软件开发奠定一个良好的基础。

(二)本大纲制定的依据根据本专业人才的培养目标和人才培养规格所需要的基本理论和基本技能的要求,根据本课程的教学性质、条件和教学实践而制定。

(三)大纲内容选编原则与要求通过对本课程的学习,使学生掌握基本概念、基本原理、基本知识和实际操作能力,重点落实到“用”上。

在对大纲内容选编时,在注重基本原理、基本概念的同时,特别强调实用系统的设计与开发,做到了理论与实践有效结合。

(四)实践环节实验1:C程序的运行环境和运行一个C程序的方法, 2学时主要内容与要求:了解所用的计算机系统的基本操作方法,学会独立使用该系统;了解在该系统上如何编辑、编译、连接和运行一个C程序;通过运行简单的C程序,初步了解C 程序的特点。

实验2:简单的C程序设计,2学时主要内容与要求:掌握C语言数据类型,熟悉如何定义一个整型、字符型和实型的变量,以及对它们赋值的方法;掌握不同类型数值之间赋值的规律;学会使用C的有关算术运算符,以及包含这些运算符的表达式;掌握赋值语句的使用方法;掌握各种类型数据的输入输出方法,能正确使用各种格式转换符。

实验3:逻辑结构、循环控制程序设计,4学时主要内容与要求:了解C语言表示逻辑量的方法;学会正确的使用逻辑运算符和逻辑表达式;熟练掌握if语句和switch语句;熟悉掌握用while 语句,do while语句和for语句实现循环的方法;掌握在程序设计中用循环的方法实现一些常用算法(如穷举、迭代、递推等);进一步学习调试程序。

实验4:数组、函数,4学时主要内容与要求:掌握一维数组和二维数组的定义、赋值和输入输出方法;掌握字符数组和字符串函数的使用;掌握与数组有关的算法(特别是排序算法);掌握定义函数的方法;掌握函数实参与形参的对应关系以及“值传递”的方式;掌握函数的嵌套调用和递归调用的方法;掌握全局变量和局部变量,动态变量、静态变量的概念和使用方法;学习对多文件程序的编译和运行。

第四章 数组作业

第四章 数组作业

第四章数组4.1 选择题1. 以下关于数组的描述正确的是( )。

A. 数组的大小是固定的,但可以有不同的类型的数组元素B. 数组的大小是可变的,但所有数组元素的类型必须相同C. 数组的大小是固定的,所有数组元素的类型必须相同D. 数组的大小是可变的,可以有不同的类型的数组元素2. 以下对一维整型数组a的正确说明是( )。

A.int a(10);B. int n=10,a[n];C.int n;D. #define SIZE 10scanf("%d",&n); int a[SIZE];int a[n];3. 在C语言中,引用数组元素时,其数组下标的数据类型允许是( )。

A. 整型常量B. 整型表达式C. 整型常量或整型表达式D. 任何类型的表达式4. 以下对一维数组m进行正确初始化的是( )。

A. int m[10]=(0,0,0,0) ;B. int m[10]={ };C. int m[ ]={0};D. int m[10]={10*2};5. 若有定义:int bb[ 8];。

则以下表达式中不能代表数组元bb[1]的地址的是( )。

A. &bb[0]+1B. &bb[1]C. &bb[0]++D. bb+16. 假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组x在内存中所占字节数是( )。

A. 3B. 6C. 10D. 207. 若有以下说明:int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};char c='a',d,g;则数值为4的表达式是( )A. a[g-c]B. a[4]C. a['d'-'c']D. a['d'-c]8. 以下程序段给数组所有的元素输入数据,请选择正确答案填入( )。

#include<stdio.h>main(){int a[10],i=0;while(i<10) scanf("%d",________ );┇}A. a+(i++)B. &a[i+1]C. a+iD. &a[++i]9. 执行下面的程序段后,变量k中的值为( )。

实验4 排序和检索程序设计

实验4   排序和检索程序设计

实验4 排序和检索程序设计编写程序1:将内存中10个无符号数(长度为2字节)由小到大排序。

编写程序2:在上述已排好序的数据区里查找某一个数。

若找到,显示其在数据区中的位置,否则显示‘N’字符。

编写主程序,通过调用程序1和程序2,实现排序和检索。

【编程参考】1.子程序1流程图(选择排序法,见图)说明:N:数据个数A:有序数组首地址CX:内外循环计数DX:暂存外循环计数BX、BX+SI+2:数组元素相对偏移下标2.子程序2流程图(折半查找法,见图3-2)说明:A:有序数组首地址KEY:查找关键字DH:查找区间上限DL:查找区间下限CH:查找区间中间值DI:存放查找关键字SI:数组元素相对偏移图实验4程序1流程图实验5 系统调用程序设计编程1:将内存中的一串字符输出,再从键盘上输入一串字符,再输出。

编写出源程序。

编程2:在屏幕中间部位开出一个窗口,随后接收用户按键,并把按键字符显示在窗口的最底行;当窗口底行显示满时,窗口内容就自动向上滚动一行;用户按Ctrl+C键时,结束运行。

程序5_1:字符串输入输出程序清单; 程序名:ZHSY4_2_1DATA SEGMENTA DB ‘How do you do?’,0AH,0DHDB ‘$’B DB 20,?,20 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TASTART: MOV AX, DATAMOV DS, AXMOV AH, 09HLEA DX, AINT 21HLEA DX, BMOV AH, 0AHINT 21HMOV DL, 0AH ; 输出换行MOV AH, 02HINT 21HMOV AL, B+1 ; 键盘输入的字符个数送ALMOV AH, 0MOV SI, AX ; 字符个数值存SIMOV DX, OFFSET B+2MOV BX, DXMOV BYTE PTR [BX+SI], ‘$’; 末尾添‘$’以便输出MOV AH, 09HINT 21HMOV AH, 4CHINT 21HCODE ENDSEND START程序5_2:窗口字符显示程序清单; 程序名:ZHSY4_2_2; 常量定义WINWIDTH = 40 ; 窗口宽度WINTOP = 8 ; 窗口左上角行号WINLEFT = 20 ; 窗口左上角列号WINBOTTOM = 17 ; 窗口右下角行号WINRIGHT = WINLEFT+WINWIDTH-1 ; 窗口右下角列号COLOR = 74H ; 属性值PAGEN = 0 ; 显示页号CTRL_C = 03H ; 结束符ASCII码CODE SEGMENTASSUME CS:CODESTART: MOV AL, PAGEN ; 选择显示页MOV AH, 5INT 10HMOV CH, WINTOP ; 清规定窗口MOV CL, WINLEFTMOV DH, WINBOTTOMMOV DL, WINRIGHTMOV BH, COLORMOV AL, 0MOV AH, 6INT 10HMOV BH, PAGEN ; 定位光标到窗口左下角MOV DH, WINBOTTOMMOV DL, WINLEFTMOV BH, COLORMOV AH, 2INT 10HNEXT: MOV AH, 0 ; 接受一个键INT 16HCMP AL, CTRL_C ; 是否结束键JE EXITMOV BH, PAGEN ; 在当前光标位置显示所按键MOV CX, 1MOV AH, 0AHINT 10HINC DL ; 光标列数加1,准备向右移动光标CMP DL, WINRIGHT+1 ; 是否越出窗口右边界JNE SETCURMOV CH, WINTOP ; 窗口内容上移一行MOV CL, WINLEFT ; 空出窗口的最底行MOV DH, WINBOTTOMMOV DL, WINRIGHTMOV BH, COLORMOV AL, 1MOV AH, 6INT 10HMOV DL, WINLEFT ; 光标要回到最左面SETCUR: MOV BH, PAGEN ; 置光标MOV AH, 02HINT 10HJMP NEXTEXIT: MOV AH, 4CHINT 21HCODE ENDSEND START实验6 模块化程序设计主模块A编程:设计一个能实现加、减、乘、除计算的程序,要求该程序接受从键盘输入的两个十六进制数,调用相应的程序模块执行相应的计算后,计算结果以十六进制数输出。

《C语言程序设计课件》第四章-数组

《C语言程序设计课件》第四章-数组
提示:程序在读入数时将其存储在一个数组中, 然后通过数组反向开始一个接一个地显示出数组 元素。
#include <stdio.h> #define N 10 int main(void)
{ int a[N], i; printf("Enter %d numbers: ", N);
for (i = 0; i < N; i++)
for(i=0;i<1;i++) if (a[i]>a[i+1]) { t=a[i];a[i]=a[i+1];a[i+1]=t; }
a[0]
20
a[1]
02
a[2]
44
a[3]
55
a[4]
88
a[5]
99
for(i=0;i<5;i++) if (a[i]>a[i+1]) { ……}
for(i=0;i<4;i++) if (a[i]>a[i+1]) { ……}
4.2 一维数组
一维数组主要用来存储一组类型相同并且数量一定 的数据。其中,每个数据称为数组的一个元素。
4.2.1 一维数组定义 一维数组的定义形式如下: 类型名 数组名[常量表达式]; int x[100]; char string[10]; double data[10];
常量表达式给出了数组的长度,在C语 言中定义数组时必须确定数组的长度。
600
xxx[[[654]]]
700
xxx[[[765]]]
800
xxx[[[876]]]
900
xxx[[[987]]]

Java练习题 实验4-2新

Java练习题 实验4-2新

实验4-2 数组与字符串【实验目的】1、熟练掌握String类的构造方法以及一些常用的方法的使用;2、熟练掌握StringBuffer类的构造方法以及一些常用的方法的使用;【实验内容】1、运行//TestStringCase2.java程序,分析该程序的作用。

public class TestStringCase2 {public static void main(String[] args) {String str = "Chinese New Year is the most important festival for Chinese people all over the world. It is also called the Spring Festival or the Lunar New Year.";String sFind = "Chinese";int count = 0;int index = -1;while(str.indexOf(sFind) !=-1) {index = str.indexOf(sFind);str = str.substring(index + sFind.length());count ++;}System.out.println(count);}}考虑:能否用indexOf(String str,int fromIndex)方法在不截取字符串的情况下实现。

2、编程实现下列问题,判断下列两个字符串是否相等:str1 = “The Lion King”,str2 = “THE LION KING”,若忽略大小写,是否相等?//Test.java3、编写一个方法,返回一个Double的二维数组。

数组中的元素通过解析字符串参数获得,如字符串参数:"1, 2;3, 4, 5;6, 7, 8"对应的数组应为:a[0][0] = 1.0; a[0][1] = 2.0;a[1][0] = 3.0; a[1][1] = 4.0; a[1][2] = 5.0;//TestArrayParser.java。

C语言上机实验

C语言上机实验

实验一(第1章实验)实验目的:1.掌握运行C语言程序的全过程。

2.熟悉编译环境。

3.初步熟悉C语言程序的语法规定。

4.了解简单函数的使用方法。

实验内容:1.编程且上机运行:求3个整数的和。

2.编程且上机运行:求2个数的和、差、积和商。

3.编程且上机运行:输入3个数,求最大值。

4.编程且上机运行:输入圆的半径,求圆的面积和周长。

5.在屏幕上输出:“hello world!”实验结果:实验二(第3章实验)1.实验目的:理解C语言的类型系统。

实验内容:写程序测试数据-2在类型char,int,unsigned int,long int,unsigned long int 中存储情况。

实验过程:实验结果:参见各种类型的存储实现描述。

2.实验目的:了解混合类型计算中类型的转换规则。

实验内容:写程序测试多种类型数据一起运算时类型的转换及表达式结果的类型。

注意unsigned int和int数据运算时类型转换的方向。

实验过程:/** 类型转换问题* 试问下面两个表达式等价吗?*/#include <stdio.h>#include <stdlib.h>int main() {unsigned int ui,uj;ui = 1;uj = 2;if (ui < uj)printf("\n%u < %u is true !\n", ui, uj);elseprintf("\n%u < %u is false !\n", ui, uj);if (ui - uj < 0)printf("\n%u - %u <0 is true !\n", ui, uj);elseprintf("\n%u - %u <0 is false !\n", ui, uj);system("pause");return 0;}实验结果:参见类型转换规则。

实验4-函数

实验4-函数

实验4 函数程序填空1.普通参数本题分值:4题目描述:输入日期的年份和月份,求该月有多少天。

要求编写函数int daynum(int year,int month),求出以year为年份、以month为月份的某个月的天数。

以下是完成此项工作的程序,请在计算机上调试程序以补足其中的空格。

代码://通过日期求某月的天数。

#include<iostream>using namespace std;int main(){int daynum(int year,int month);int y,m,d;cin>>y>>m;if(y<1900 || y>=3000 || m<1 || m>12){cout<<"输入错误!"<<endl;return 0;}d=daynum(__(1)__); //以y、m作实参调用函数,求出该月的天数cout<<"此月的天数为"<<d<<endl;return 0;}int daynum(int year,int month){int days;switch(month){case 1:case 3:case 5:case 7:case 8:case 10:case 12: days=31; break;case 4:case 6:case 9:case 11: days=30; break;case 2: if(year%4==0&&year%100!=0 || year%400==0)days=29;elsedays=28;break;}return __(2)__;}答案:(1) y,m(2) days每空分值:2参考答案:yx3-t1.cpp2.字符数组参数本题分值:4题目描述:编写一个函数,用来求字符串s的任意子串。

第四章_数组

第四章_数组
22
4.2
多维数组
下列程序段实现对数组 int s[3][5]的动态赋值: 4.2.3 二维数组元素的引用 for(i=0; i<=2; i++) /* 行标i从0开始变化到2*/ 二维数组的元素也称为双下标变量,其表示的形式为: for(j=0; j<=4; j++) /* 列标j从0开始变化到4*/ 数组名 ][ 列下标 ] scanf( “%d”[ , 行下标 &s[i][j]) ; /*二维数组元素如同普通 其中下标应为整型常量或整型表达式,其取值范围从 整型变量操作*/ 0开始,分别到行数 -1和列数-1。 例如: a[3][4] 通过前面的学习,对数组也可以这样理解:单个变量描述 了空间中‚点‛的概念,一维数组是对单个变量的扩展,它描 表示a数组中行标为3,列标为4的元素。 述了空间中‚线‛的概念,而二维数组又对一维数组做了扩展, 如果要引用数组中的全部元素,只要利用循环语句即 描述了空间中‚平面‛的概念。人们可以模仿二维数组的使用 可实现,这是对数组中元素进行操作的基本算法。对于一 方法来实现多维数组等各种数据容器。例如,可用如下方法定 维数组,只需用单重循环就可完成;而对于二维数组则需 义三维数组: int a[2][3][4]; 要使用两重循环来完成,外循环控制行标变化,内循环控 多维数组元素在内存中的排列顺序为:第一维的下标变化 制列标变化。 最慢,最右边的下标变化最快。
20
s[0][3]
s[1][1] s[1][2]
……
4.2
多维数组
4.2.2 二维数组的初始化 二维数组初始化也是在类型说明时给各下标变量赋以初值。 二维数组可按行分段赋值,也可按行连续赋值。 例如对数组int s[3][5]: (1)按行分段赋值可写为: int s[3][5]={{80,75,92,61,65},{71,59,63,70,85},{87,90,76, 77,85}}; (2)按行连续赋值可写为: int s[3][5]={ 80,75,92,61,65,71,59,63,70,85,87,90,76,77, 85}; 这两种赋初值的结果是完全相同的。

头歌云课实验八:数组及其应用

头歌云课实验八:数组及其应用

头歌云课C语言实验八:数组及其应用关卡1:折半查找关卡2:二位数组操作关卡3:二维数组的展开关卡4:数组元素交换关卡5:幻方第1关: 折半查找本关任务:由N个有序整数组成的数列已放在一维数组中,给定程序的功能是:利用折半查找法查找整数m在数组中的位置。

若找到,返回其下标值,否则返回-1。

编程要求请仔细阅读右侧代码,结合相关知识,在Begin-End区域内进行代码补充,完成编写折半查找的小程序。

测试说明平台会对你编写的代码进行测试:测试输入:5预期输出:-5 4 9 15 28 45 66 89 100 180Not be found!测试输入:9预期输出:-5 4 9 15 28 45 66 89 100 180m=9,index=2代码:#include <stdio.h>#define N 10int main(){int i, a[N]={-5,4,9,15,28,45,66,89,100,180 }, k=-1, m; int low=0, high=N-1, mid;for(i=0;i<N;i++)printf("%d ", a[i]);printf("\n");scanf("%d",&m);while(low <= high){mid = (low + high) / 2;if(m < a[mid])high = mid-1;/***** 以下一行有错误*****/else if(m > a[mid]) low=mid+1;/***** 以下一行有错误*****/else {k=mid;break;}}if(k>=0)printf("m=%d,index=%d\n",m,k);elseprintf("Not be found!\n");return 0;}第2关: 二位数组操作本关任务:输入一个N×N的二维数组。

arduino学习笔记4–利用数组使6个led闪烁

arduino学习笔记4–利用数组使6个led闪烁

arduino学习笔记4–利用数组使6个led闪烁通过上一节学习,知道了怎样使用循环对6个led进行控制,我们发现LED灯的端口是连续的,是有规律的,若端口号是杂乱无章的,如2、3、6、11能不能使用循环来实现了?一、实验现象用控制板来实现6个端口号没有规律的LED闪烁,展示让无序的LED一个接一个按顺序亮起的方法。

灯会按照顺序先从数组头的亮到数组尾,然后反过来由尾到头。

和从前例子不同的是,本例的LED不是必须连续的。

你可以任意改变LED连接的引脚和顺序。

只要在数组中定义即可。

二、实验器材:控制板、LED6个、电阻6个、面包板和杜邦线。

三、实验所用函数及语句Array 数组1.数组是一种可访问的变量的集合。

2.创建(声明)一个数组类型数组名[ 数组长度 ] ;例如:int a[2];整数数组a的长度为2Int a[2]={3,11};或Int a[ ]={3,11};整数数组a的长度为2,其值分别为3和113.访问数组①.数组从0位开始索引(最大索引数等于声明数组大小-1)。

②.从数组中访问一个值: x = myarray1 [ 4 ];③数组和循环:数组往往在for循环中进行操作,循环计数器可用于访问每个数组元素。

for (int i=0; i<5 ;i++) {pinMode(a[i],OUTPUT );}四、实验电路五、编写程序int timer = 100; // 数字越大间隔时间越长,整个程序都能用,叫全局变量int led[] = {2, 7, 4, 6, 5, 3}; // LED引脚编号数组int js = 6; // 引脚个数(应和LED引脚编号数组相同)void setup() {for (int i = 0; i < js; i++) {//用for循环初始化引脚:pinMode(led[i], OUTPUT); // 数组元素取出时应该是从0开始到js - 1结束。

C语言数组实验报告

C语言数组实验报告

实验名:数组一、实验目的1、掌握数组定义的规则..2、掌握C语言数组的基本用法..二、实验内容一题目11、编写程序;测试下列数组的定义方式是否正确1 main{int n;scanf“%d”;&n;int an;……}2 main{const int n=10;int an;}3 include <stdio.h>define M 10main{int aM;}4 main{int a2+24;}5 include <stdio.h>define M 2define N 8main{ int aM+N;}通过这一实验;可以说明什么问题2、输入和输出信息描述及数据类型确定;1、输入数据序号输入数据描述数据类型1n;an int2nan cons tint int3aM或a10int 4a2+24int 5aM+N int 3、程序调试错误序号错误信息列出出错语句以及出错提示是否解决解决方法1-1main.c|5|error: 是将%d两边的符号改为西文字符的引expected expressionbefore '%' token|scanf“%d”;&n;号scanf"%d";&n;1-2main.c|6|warning:unused variable 'a'-Wunused-variable|int an;是将前面的n的输入去掉;把n改为具体数字5main.c|6|warning:unused variable 'a'-Wunused-variable|int aM+N;是加上个scanf“%d”;&aM+N;4、相关问题回答通过这一实验;可以说明什么问题1、2345对;1错;1中an的数组定义的里的常量表达式不能是变量..2、一维数组定义的时候里的常量表达式包括常量和符号常量;但不能是变量..二题目21、运行下面的C程序;根据运行结果;可以说明什么main{ int num5={1;2;3;4;5};inti i;fori=0;i<5;i++printf“%d”;numi;}2、输入和输出信息描述及数据类型确定;1、输入数据序号输入数据描述数据类型1num5;i int2输出数据序号输出数据描述数据类型1numi int3、程序源代码填写程序调试正确后的代码include <stdio.h>int main{int num5={1;2;3;4;5}; /定义num5/int i;fori=0;i<5;i++ /下标应该是0到4/ printf"%d";numi; /依次输出num0至num4/return 0;}4、程序调试错误序号错误信息列出出错语句以及出错提示是否解决解决方法1格式不对是2main.c|5|error: 是改为 int i;unknown type name 'inti'| inti i;3 main.c|7|error: expected expression before '%' token| printf“%d”;numi;是 将引号改为西文字符4 fori=0;i<5;i++ 是 去掉等号 5、相关问题回答 运行结果:12345根据运行结果;可以说明什么说明:数组元素的下标从0开始;比定义的时候会小一个.. 三 题目 31、操作符&用以求一个变量的地址;这在函数scanf 中已经使用过了..现在要你设计一个程序;返回一个3 5 的二维数组各元素的地址;并由此说明二维数组中各元素是按什么顺序存诸的..2、输入和输出信息描述及数据类型确定; 1、输入数据序号 输入数据描述 数据类型 1 a35;i.j int 2 adress 整型指针变量 2输出数据序号 输出数据描述 数据类型 1 adress int 3、程序源代码填写程序调试正确后的代码 include <stdio.h> int main {int a35;int adress; //定义并初始化adress int i;j;fori=0;i<3;i++ //每行循环 {printf"\n";forj=0;j<5;j++ //每列循环 {adress=&aij; //将adress 赋值为整型指针变量 printf"%d ";adress; } }return 0; }4、测试与结果分析 1、测试数据与结果 源文件名 可执行文件名 测试序号 测试用例选取原因 测试输入数据 测试输出结果 是否正确结果分析 1 无 无是 无误四 题目 4为一个起泡排序程序设计测试用例;并测试之.. 1、程序源代码填写程序调试正确后的代码 include <stdio.h> int main {int a10; //定义一维数组a10 int i;j;k;printf"请输入10个数字:\n"; fori=0;i<=9;i++scanf"%d";&ai; //依次输入数组的数字 printf"\n"; //换行forj=0;j<9;j++ //进行9次循环;实现9趟比较 fori=0;i<9-j;i++ //在每一趟中进行9-j 次比较 ifai>ai+1 //相邻两数比较 {k=ai; ai=ai+1;ai+1=k; //若后一个比前一个大;则交换位置}printf"排序后的数字为:\n"; fori=0;i<=9;i++printf"%d ";ai; //依次输出排序后的数字 printf"\n"; return 0; }2、输入和输出信息描述及数据类型确定; 1、输入数据序号 输入数据描述 数据类型 1 a10;i;j;k int 2输出数据序号 输出数据描述 数据类型 1 ai int 3、程序调试错误序号 错误信息列出出错语句以及出错提示 是否解决 解决方法 1 输出结果间无空格 是 在最后一个printf “%d ”的d 后面加空格4、测试与结果分析 1、测试数据与结果 源文件名 可执行文件名 测试序号 测试用例选取原因 测试输入数据 测试输出结果 是否正确结果分析1 测试用例 1 12 13 14 15 1 12 13 14 15 67 78 80是 无误8956 6778 8980五题目51、1983年;在ACM图林奖颁奖大会上;杰出的计算机科学家;UNIX 的鼻祖;C 语言的创始人之一;图林大奖得主;Ken Thompson 上台的第一句话是:“我是一个程序员;在我的1040表上;我自豪地写上了我的职业..作为一个程序员;我的工作就是写程序;今天我将向大家提供一个我曾经写过的最精练的程序..”这个程序如下:char s ={‘\t’;‘0’;‘\n’;‘}’;‘;’;‘\n’;‘\n’;‘/’;‘’;‘\n’;/ 213 lines deleted/};/The string is arepresentation of the bodyof this program from ‘0’to the end/main{ int i;printf“char \ts={\” };for i=0;si;i++printf“\t%d;\n”;si;printf“%s”;s;}请上机运行这个程序;指出它的功能和运行结果..2、程序源代码填写程序调试正确后的代码include<stdio.h>char s ={'\t';'0';'\n';'}';';';'\n';'\n';'/';'';'\n';/ 213 lines deleted/ 0 }; /The string is arepresentation of the body of this program from '0' to the end /int main {int i;printf"char \ts={\n" ; for i=0;si;i++printf"\t%d;\n";si; printf"%s";s; return 0; }3、程序调试错误序号 错误信息列出出错语句以及出错提示 是否解决 解决方法 1 所有的引号和逗号格式不对是 都改为西文字符2 main.c|22|error: expected '='; ';'; ';'; 'asm' or '__attribute__' before '{' token|是 在main 前加int3 main.c|23|warning: missing terminating " character enabled by default|printf"char \ts={\" };是 改为printf"char \ts={\n" ; 4 格式不完整 是 加上include;return 0; 4、相关问题回答请上机运行这个程序;指出它的功能和运行结果.. 答:功能输出字符串的数值.. 5、测试与结果分析 1、测试数据与结果 源文件名 可执行文件名 测试序号 测试用例选取原因 测试输入数据 测试输出结果 是否正确结果分析 1 测试用例是 无误六 题目 6 1、题目内容描述在下面的 5×5 魔方矩阵中;每一行、每一列、每一对角线上的元素之和都是相等的;试编写程序将这些魔方矩阵中的元素读到一个二维整型数组中; 然后; 检验其是否为魔方矩阵;并将其按如下格式显示到屏幕上..17 24 1 8 1523 5 7 14 164 6 13 20 2210 12 19 21 311 18 25 2 92、程序源代码填写程序调试正确后的代码include<stdio.h>main{int i;j;sum1;sum2;int find1=0;find2=0;m=0; //定义变量int a55;fori=0;i<5;i++forj=0;j<5;j++scanf"%d";&aij; //输入55个数字fori=0;i<5;i++{forj=0;j<5;j++{printf"%d";aij; //输出矩阵}printf"\n";forsum1=0;i=0;i<=4;i++ //计算对角线元素和sum1+=aii;forsum2=0;i=0;j=4;i<=4;i++;j--sum2+=+aij; //计算对角线元素和fori=0;i<=4;i++{forj=0;j<=4;j++printf"%d\t";aij; //打印魔方矩阵printf"\n";}ifsum1=sum2{printf"此矩阵不为魔方矩阵\n"; //判断对角线和是否相等m=1;}fori=0;i<=4;i++forj=0;j<=4;j++{ai5+=aij;a5j+=aij; //判断各行列和是否相等}ifm==0{fori=0;i<=4;i++{ ifai5=a5i || ai5=sum1 {printf"此矩阵不为魔方矩阵\n"; break; }} ifi==5printf"此矩阵为魔方矩阵\n"; }}3、测试与结果分析 1、测试数据与结果 源文件名 可执行文件名 测试序号测试用例选取原因 测试输入数据 测试输出结果是否正确 结果分析1 题目是无误七 题目 7 1、题目内容描述餐饮服务质量调查打分在商业和科学研究中;人们经常需要对数据进行分析并将结果以直方图的形式显示出来..例如;一个公司的主管可能需要了解一年来公司的营业状况;比较一下各月份的销售收入状况; 如果仅给出一大堆数据; 这显然太不直观了; 如果能将这些数据以条形图 直方图的形式表示;那么将会大大增加这些数据的直观性;也便于数据的分析与对比..下面以顾客对餐饮服务打分为例; 练习一下这方面的程序.. 假设现在有40个学生被邀请来给自助餐厅的食品和服务质量打分;分数为从1~10的10个等级1意味着最低分;10表示最高分;试统计调查结果;并用‘’打印出如下形式的统计结果直方图..Grade Count Histogram1 52 103 7...2、输入和输出信息描述及数据类型确定;1、输入数据序输入数据描述数据类型号1score40;i;j;grade;count11int2输出数据序输出数据描述数据类型号1grade;countgrade char3、程序源代码填写程序调试正确后的代码include <stdio.h>int main{int score40;i;j;grade;int count11={0}; //定义并初始化数组count11fori=0;i<40;i++{printf"please input score%d:";i+1;scanf"%d";&scorei; //输入每个分数switchscorei //统计每个分数的个数{case 1:count1++; break; //评分为1时;数组中count1加一case 2:count2++; break; //评分为2时;数组中count2加二case 3:count3++; break; case 4:count4++; break; case 5:count5++; break; case 6:count6++; break; case 7:count7++; break; case 8:count8++; break; case 9:count9++; break; case 10:count10++; break;default:printf"Input error\n"; //其余情况 } }printf"Grade\tCount\tHistogram\n"; //输出表头forgrade=1;grade<=10;grade++ //统计每个分数的个数 {printf"%d\t%d\t";grade;countgrade; //输出分数和每个分数的个数forj=0;j<countgrade;j++printf"%c";''; //根据评分的个数输出数printf"\n"; }return 0; }4、测试与结果分析 1、测试数据与结果 测试序号 测试用例选取原因 测试输入数据 测试输出结果 是否正确 结果分析 1 测试用例 8个2;9个3;5个4;13个6;3个7;23;76如下图 是 无误2 测试用例 2个1;4个2;3个3;1个4;5个5;6个6;5个7;2个8;6个9;3个10;78;0;22如下图 是 无误八 题目 8 1、题目内容描述由计算机随机生成一个各位相异的4位数字;由人来猜;每次提示:xAxB A 前面的数字表示有几个数字猜对位置也对了 B 前面的数字表示有几个数字猜对但位置不对提示:用数组a存计算机随机生成的4位数;用数组b存人猜的4位数;对a和b的相同位置的元素进行比较;得到A前面的数字;对a和b的不同位置的元素进行比较;得到B前面的数字..2、输入和输出信息描述及数据类型确定;1、输入数据序输入数据描述数据类型号1a4;b4;m;n;i;j;int2输出数据序输出数据描述数据类型号1M;n int3、程序源代码填写程序调试正确后的代码include<stdio.h>include<stdlib.h>include<time.h>int main{int i;j;m;n;int a4;b4;m=0;n=0;srandtimeNULL; //产生随机数ifa0=a1&&a0=a2&&a0=a3&&a1=a2&&a1=a3&&a2=a3{fori=0;i<4;i++{ai=rand%10;printf"%d ";ai; //输出不同的四个个位数 }printf"\n";whilem=4 //当m不等于4的时候循环{printf"请输入你猜想的数字:\n";forj=0;j<4;j++scanf"%d";&bj;printf"\n";fori=0;i<4;i++{ifai==bi{m++; //位置和数字都对}}fori=0;i<4;i++{forj=0;j<4;j++ {ifai==bj&&i=j //位置不对但数字对 {n++; } } }printf"%d A %d B\n";m;n; }printf"你答对了\n"; //m=4时输出}return 0; }3、测试与结果分析 1、测试数据与结果 源文件名 可执行文件名 测试序号 测试用例选取原因 测试输入数据 测试输出结果 是否正确结果分析 1 测试用例是 无误。

程序设计1实验习题实验一

程序设计1实验习题实验一

程序设计1实验习题实验一程序设计(1)实验习题实验一(1)运行以下程序,并解释运行结果。

#includestdio.hintmain(void){intx=1;unsignedu=;printf(x=%u=%d\n,x,x);printf(u=%u=%d\n,u,u);return0;}(2)运行以下程序,解释运行结果,并修改程序以使结果正确。

#includestdio.hintmain(void){intx=;printf(x+1=%d\n,x+1);return0;}(3)运行以下程序,解释运行结果。

程序1:#includestdio.hintmain(void){floata;doubleb;a=123456.789e4;b=123456.7 89e4;printf(%f\n%f\n,a,b);return0;}程序2:#includestdio.hintmain(){floata,b;a=123456.789e5;b=a+20;printf(%f\n,a);printf(%f\n,b);return0;}(4)求平方根:输入1个实数x,计算并输出其平方根(保留1位小数)。

(5)华氏温度转换为摄氏温度::度输入华氏温度f,计算并输出相应的摄氏温度c(保留2位位小数)。

c=5/9(f-32).(6)三天打鱼两天晒网:中国有句俗语叫三天打鱼两天晒网。

假设某人从某天起,开第始三天打鱼两天晒网,问这个人在以后的第n天中是打鱼还是晒网?编写相应程序)(第一天就是当天)。

例如:输入:103输出:Fishinginday103输入:35输出:Dryinginday35(7)按照规定,在高速公路上行使的机动车,达到或超出本车道限速的10%则处200元元出罚款;若达到或超出50%,就要吊销驾驶证。

请编写程序根据车速和限速自动判别对该机动车的处理。

输入格式:在一行中给出2个正整数,分别对应车速和限速,其间以空格分隔。

C语言实验指导书

C语言实验指导书

实验项目:实验一最简单的C程序设计(所属课程:《C语言程序设计》学时:2)一、实验目的1.掌握:使用标准输入/输出函数进行常见数据类型的数据的输入/输出方法。

2.初步培养编制程序框图和源程序、准备测试数据以及实际调试程序的独立编程能力。

3.掌握顺序结构程序设计的基本思路。

二、实验条件Pc和vc++编程环境三、实验内容1.熟悉编程环境。

2.输入并运行一个C程序3.掌握各种格式转换符的正确使用方法。

4.编程序:设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。

要求用scanf函数从键盘上输入数据(半径和高),输出各计算结果,输出时要求有文字说明,取小数点后2位数字。

5.编程序:用getchar函数输入两个字符给C1、C2,然后分别用putchar 函数和printf函数输出这两个字符。

四、实验步骤编写程序,输入数据,观察结果。

五、实验结果观察结果和预期是否一致。

实验项目:实验二选择结构程序设计(所属课程:《C 语言程序设计》学时:2)一、实验目的1.了解C 语言表示逻辑量的方法(以0代表“假”,以非0代表“真”)。

2.学会正确使用逻辑运算符和逻辑表达式。

3.熟练掌握if 语句和switch 语句二、实验条件Pc 和vc++编程环境三、实验内容1.有一函数:≥−<≤−<=)10x (113x )10x 1(12x )1x (x y用scanf 函数输入x 的值,求y 值。

运行程序,输入x 的值(分别为x<1、1≤x <10、x ≥10三种情况),检查输出的y 值是否正确。

2.给出一个百分制成绩,要求输出成绩等级A 、B 、C 、D 、E 。

90分以上为A ,81~89分为B ,71~79分为C ,61~69分为D ,60分以下为E 。

3.输入4个整数,要求按由小到大顺序输出。

四、实验步骤编写程序,输入数据,观察结果。

五、实验结果观察结果和预期是否一致。

综合性、设计性实验报告(数组应用)4维数组

综合性、设计性实验报告(数组应用)4维数组

综合性、设计性实验报告姓名学号专业计算机科学与技术班级1402实验课程名称____数据结构_指导教师及职称___开课学期2016 年_上学期上课时间实验名称:数组应用实验时间:小组合作:是●否○1、实验目的:(1)掌握数组的基本应用和方法;(2)掌握字符数组和字符串函数的使用。

(3)掌握与字符串处理有关的算法。

2、实验设备及材料:机器配置:4G内存,AMD A8操作系统:windows xp开发工具:V C ++6.03、理论依据:【1】在C语言的环境,有一个四维数组,在计算机中都是以一维的形式保存。

【2】例如int cof[2][2][2][2]在计算机中保存形式与一个2*2*2*2大小的一维数组相同, 想要寻址一个数,因为编译器在看到数组的定义时就知道了数组每一维的大小.于是可以计算定位到相对于数组开始处的偏移.【3】为了容易理解,都是把多维数组分解成几行,每行中又有几列的这种形式,例如int cof [4][6][4][4],就是4行,每行中有6个元素,每个元素又是一个有4个子元素一维数组,而数组中的每个子元素仍然还是一个有4个子元素数组,【4】四维数组可视为以三维数组为数据元素的向量,四维数组中的每个元素都属于四个向量。

【5】由于计算机内存是一维的,多维数组的元素应排成线性序列后存人存储器。

数组一般不做插入和删除操作,即结构中元素个数和元素间关系不变化。

一般采用顺序存储方法表示数组。

分为行优先顺序和列优先顺序。

【6】由地址计算公式可得,数组中任一元素可通过地址公式在相同时间内存取。

即顺序存储的数组是随机存取结构。

4、算法步骤及注意事项:算法步骤:(1)首先,在定义四维数组的数据类型时,我选择了整型以方便编程及利于数据的输入和输出。

为了实现任务所要求的功能,我将程序划分为三类:功能函数,界面函数以及主函数。

另外,其中的功能函数包括以下几种函数:四维数组元素输入函数、四维数组元素输出函数、元素查找函数、功能介绍函数以及主函数。

数组应用实验报告

数组应用实验报告

数组应用实验报告
《数组应用实验报告》
在计算机科学领域,数组是一种非常重要的数据结构,它可以存储多个相同类型的数据,方便进行管理和操作。

在本次实验中,我们将探讨数组的应用,并通过实验报告来展示其在不同场景下的使用情况。

实验一:数组的创建和初始化
在本实验中,我们首先学习了如何创建和初始化数组。

通过编写简单的代码,我们成功创建了一个包含整数类型的数组,并对其进行了初始化。

我们发现,数组的索引是从0开始的,这意味着我们可以通过索引来访问数组中的元素。

实验二:数组的遍历和操作
接下来,我们学习了如何遍历数组并对其进行操作。

我们使用循环结构来遍历数组中的每个元素,并进行相应的操作。

我们发现,使用数组可以方便地对一组数据进行统一的处理,比如求和、平均值等操作。

实验三:多维数组的应用
在这个实验中,我们学习了多维数组的应用。

通过创建二维数组,我们可以模拟二维空间中的数据结构,比如矩阵、图像等。

我们发现,多维数组可以方便地表示复杂的数据结构,并且可以通过多重循环来对其进行遍历和操作。

实验四:数组的应用案例
最后,我们通过实际案例来展示数组的应用。

我们使用数组来实现一个简单的学生成绩管理系统,通过输入学生的成绩,然后计算平均分、最高分、最低分等统计数据。

我们发现,数组的使用大大简化了数据的管理和操作,提高了程序的效率和可维护性。

综上所述,本次实验通过实验报告展示了数组在不同场景下的应用情况。

通过学习和实践,我们深刻理解了数组的重要性和灵活性,相信在今后的编程工作中,我们将能够更加熟练地运用数组来解决实际问题。

4:数组

4:数组
0 0 12 9 0 0 0 0 3 0 0 0 M 0 0 24 0 0 18 0 0 15 0 0 7 0 0 0 0 0 14 0 0 0 0 0 0 0 0 0 0 67 0 0
col num[col] cpot[col]
i(i-1) Loc(aij)=Loc(a11)+[( +(j-1)]*l 2
对角矩阵 a11 a12 0 …………… . 0
a21 a22 a23 0 …………… 0 a32 a33 a34 0 ………
……………………………
0 0
0
0
按行序为主序:
0 … an-1,n-2 an-1,n-1 an-1,n
?
3 4 5 6 7
6
4
-7
6
3
14
解决思路:只要做到 将矩阵行、列维数互换 将每个三元组中的i和j相互调换 重排三元组次序,使mb中元素以N的行(M的列)为主序
方法一:按M的列序转置 即按mb中三元组次序依次在ma中找到相应的三元组进行转置。 为找到M中每一列所有非零元素,需对其三元组表ma从第一行 起扫描一遍。由于ma中以M行序为主序,所以由此得到的恰是mb 中应有的顺序
i 0 1 ma 2 3 4 5 6 7 6 1 1 3 3 4 5 6 j 7 2 3 1 6 3 2 1 v 8 12 9 -3 14 24 18 15
0 0 0 0 0 14 0 0 0 0 0 0 0 0 0 0 67 0 0
0 12 9 N 0 0 0 0
算法描述:
算法分析:T(n)=O(M的列数n非零元个数t) 若 t 与mn同数量级,则T (n) O(m n 2 )

PTA-C理论课4-数组

PTA-C理论课4-数组

PTA-C理论课4-数组C理论4-数组7-1 输出整数各位数字 (15分) 本题要求编写程序,对输⼊的⼀个整数,从⾼位开始逐位分割并输出它的各位数字。

输⼊格式:输⼊在⼀⾏中给出⼀个长整型范围内的⾮负整数。

输出格式:从⾼位开始逐位输出该整数的各位数字,每个数字后⾯有⼀个空格。

输⼊样例:输出样例:1 2 3 4 5 6#include#includeint main(){char s[32];gets(s);int i;for(i=0;iprintf("%c ",s[i]);}return0;}7-2 冒泡法排序 (15分)将N个整数按从⼩到⼤排序的冒泡排序法是这样⼯作的:从头到尾⽐较相邻两个元素,如果前⾯的元素⼤于其紧随的后⾯元素,则交换它们。

通过⼀遍扫描,则最后⼀个元素必定是最⼤的元素。

然后⽤同样的⽅法对前N?1个元素进⾏第⼆遍扫描。

依此类推,最后只需处理两个元素,就完成了对N个数的排序。

本题要求对任意给定的K(输⼊格式:输⼊在第1⾏中给出N和K(1≤K在⼀⾏中输出冒泡排序法扫描完第K遍后的中间结果数列,数字间以空格分隔,但末尾不得有多余空格。

输⼊样例:输出样例:2 1345 6#include#includeint main(){int n,k;scanf("%d %d",&n,&k);int i,a[100];for(i=0;iscanf("%d",&a[i]);}int j,temp;for(i=0;ifor(j=0;jif(a[j]>a[j+1]){temp=a[j+1];a[j+1]=a[j];a[j]=temp;}}for(i=0;iprintf("%d ",a[i]);}printf("%d",a[n-1]);return0;}7-3 评委打分 (15分)班级⾥要搞智⼒竞赛啦!同学们都踊跃参加。

experiment 4

experiment 4
实验4
实验目的

1、动态对象的创建

设计并实现利用new和delete运算符动态创建和 清除对象的程序。
Harbin Engineering University Computer Science & Technology
2
实验题目

1.编写一个程序,该程序建立一个动态数组 ,为动态数组的元素赋值,显示动态数组的 值,并删除动态数组。
Harbin Engineering University Computer Science & Technology
4
实验题目
2
8
19
实验3 要求:

4
32

5 20 1 45

1、建立树节点类用于存储 左图的树; 2、动态创建树节点数组; 3、按照深度遍历依次动态 创建树节点并存入数组中;
Harbin Engineering University Computer Science & Technology
学号 20112001
课程号 c001
分数 92
c002
c003
操作系统
数据库原理
20112001
20112002 20112003
c002
c003 c002
89
78 90
实验2 具体要求: 1、分别建立Student,Course,Score三个类表示上述三个表的结构; 2、分别建立Student,Course,Score三种类型的数组,动态创建Student, Course,Score对象分别为每个数组赋值; 3、根据三个表的信息输出学生的成绩,格式如下: 学号 姓名 课程名称 分数 20112001 王雪 数据结构 92 20112001 王雪 操作系统 89 …… 20112003 卢萌 操作系统 90
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数组
一维数组
1. 用Array函数生成一个包含10个整数的一维数组,并在窗体上输出,然后分别统计其中正数之和与负数之和,运行效果如图所示。

2. 随机生成10个两位正整数,求其中的最大值和平均值,并将结果显示出来,运行效果如图所示。

3. 实现以下程序功能:程序运行后,在四个文本框中各输入一个整数。

然后单击命令按钮,即可使数组按升序排序,并在文本框中显示出来。

提示:可用array函数生成数组。

二维数组
1. 设有一个二维数组A(5,5),给所有数组元素赋值为1-9之间的随机整数,试计算:
●所有元素之和。

●所有靠边元素之和。

●正对角线上元素之和。

2. 设有一个二维数组A(5,5),试计算矩阵第三行各项的和,并在窗体上显示出来。

3. 设有一个二维数组A(5,5),试找出正对角线上最大的值。

4.产生一个二维数组A(5,5),要求中心位置值为9,对角线位置值为1,其余位置值为0。

5.设有一个二维数组A(4,4),请交换其中的第二列和第四列,并显示。

6. 实现以下程序功能:运行程序时,随机产生一个4行4列的二维数组,单击“计算”命令按钮时,将统计矩阵两个对角线的元素中能被3整除的个数,统计结果显示在标签lblfirst中;同时计算矩阵主对角线的元素之和,计算结果显示在标签lblSecond中。

列表框和组合框
1. 设在窗体中有一个名称为List1的列表框,其中有若干项目。

要求选中一项后单击Command1按钮,就删除选中的项,运行效果如图所示。

点击前选中”北京”点击按钮后删除
2. 窗体上有一个组合框,其中已输入了若干项目。

程序运行时,单击其中一项,即可以把该项与上面的一项交换,运行效果如图所示。

点击前选中”重庆”点击后交换
3.有10位同学的VB课程的期末成绩,信息如下:82、75、91、65、57、44、78、64、95、62,请将他们的信息保存到数组中,显示在列表框中,在“优秀”、“通过”和“不通过”三个分数段的人数进行统计。

其中85分以上(含85分)为“优秀”,60-85分之间(含60分)为“通过”, 60分以下的为“不通过”。

4. 实现以下程序功能:单击“生成”按钮,随机生成一个由100个2位正整数组成的数组a,同时显示在Text1文本框中;单击“分组”按钮,则将数组a中所有3的倍数的元素存入数组b中,并对数组b中的元素从小到大排序后显示在文本框Text2中。

控件数组
实现以下程序功能:程序运行时,向文本框控件数组Text1(有5个文本框)中任意输入5个数,单击名称为Command1的命令按钮,则找出其中最小数并显示在标签lblResult中。

相关文档
最新文档