实验六 数组——二维数组与字符串

合集下载

实验六 数组——二维数组与字符串

实验六 数组——二维数组与字符串

淮海工学院计算机科学系实验报告书课程名:《 C语言程序设计教程》题目:实验六数组——二维数组与字符串班级:学号:姓名:1、实验内容或题目(1)编写一个程序,计算一个3×4阶矩阵和一个4×3阶矩阵相乘,并打印出结果。

(使用两个二维数组a和b存储两个3×4阶矩阵的元素值,然后用三重for循环进行相乘求值产生二维数组c,最后输出c的各元素值。

)(2)已知某班10个学生的姓名、学号,以及英语、程序设计、数学三门课的成绩,编写一个程序,完成下列工作:·全班每个学生姓名、学号和三门课成绩的输入及总分计算。

·统计各科的总成绩。

·当给出学生姓名或学号时,检索出该生每门功课的成绩及总成绩。

【解】定义一维数组no存储学生学号,二维数组name存储学生姓名,二维数组degree存储学生三门课成绩及总分。

(3)编写一个程序,判定一个字符串是否是另一个字符串的子串。

2、实验目的与要求1、目的:(1)进一步学习程序设计的方法和步骤;(2)掌握循环结构程序设计与数组的结合;3、实验步骤与源程序⑴实验步骤1.建立工程,添加C++源文件,编写程序。

2.调试修改语法错误。

3.编译,链接生成可执行程序。

4.运行程序,检查试验结果。

⑵源代码(一)#include<stdio.h>void main(){int a[3][4]={{2,3},{4,2},{1,2,3}};int b[4][3]={{1,2,3},{2,3,4},{3,4,5}};int c[3][3],i,j,k,s;for(i=0;i<3;i++)for(j=0;j<3;j++){s=0;for(k=s=0;k<4;k++)s+=a[i][k]*b[k][j];c[i][j]=s;}for(j=0;j<3;j++)printf("%4d",c[i][j]);printf("\n");}(二)法一.#include<stdio.h>#include<string.h>const int RS=3;char name[RS][8];int no[RS];float degree[RS][40];void input(){printf("输入数据:");for(int i=1;i<=RS;i++){printf("第%d个学生\n",i);printf("姓名:");scanf("%s",&name[i-1]);printf("学号");scanf("%d",&no[i-1]);printf("英语成绩:");scanf("%f",&degree[i-1][0]);printf("程序设计成绩:");scanf("%f",&degree[i-1][1]);printf("数学成绩:");scanf("%f",&degree[i-1][2]);degree[i-1][3]=degree[i-1][0]+degree[i-1][1]+degree[i-1][2];}}void sum(){float s1=0,s2=0,s3=0;printf("统计各科总成绩\n");for (int i=0;i<RS;i++){s1+=degree[i][0];s2+=degree[i][1];s3+=degree[i][2];}printf("英语总成绩:%g\n",s1);printf("程序设计总成绩:%g\n",s2);printf("数学总成绩:%g\n",s3);}void query(){int sel,bh,i;char xm[8];printf("数据查询\n");printf("1.姓名 2.学号请选择:");scanf("%d",&sel);switch(sel){case 1:printf("输入姓名:");scanf("%s",&xm);for(i=0;i<RS;i++)if(strcmp(xm,name[i])==0){printf("姓名:%s\n",xm);printf("学号:%d\n",no[i]);printf("英语成绩:%g\n",degree[i][0]);printf("程序设计成绩:%g\n",degree[i][1]);printf("数学成绩:%g\n",degree[i][2]);printf("总成绩:%g\n",degree[i][3]);}break;case 2:printf("输入学号:");scanf("%d",&bh);for(i=0;i<RS;i++)if(bh==no[i]){printf("姓名:%s\n",xm);printf("学号:%d\n",no[i]);printf("英语成绩:%g\n",degree[i][0]);printf("程序设计成绩:%g\n",degree[i][1]);printf("数学成绩:%g\n",degree[i][2]);printf("总成绩:%g\n",degree[i][3]);}break;default:printf("无此选项!\n");}}void main(){input();sum();query();}法二.#include<stdio.h>void main(){int score[10],i;float yx=0,lh=0,jg=0,bjg=0,aver=0;int max=0,min=0,maxn,minn;printf("请输入10位学生的成绩:");for(i=0;i<=9;i++){scanf("%d",&score[i]);}for(i=0;i<=9;i++){if(score[i]>max){max=score[i];maxn=i;}if(score[i]<min){min=score[i];minn=i;}aver+=score[i];if(score[i]<60)bjg=bjg+1;else if(score[i]<75)jg=jg+1;else if(score[i]<90)lh=lh+1;else yx=yx+1;}aver/=10;printf("最高分者:%d\n",score[maxn]);printf("最低分者:%d\n",score[minn]);printf("平均分为%.2\n",aver);printf("优秀%.0f人,占比为%.0f%%\n",yx,yx*10);printf("良好%.0f人,占比为%.0f%%\n",lh,lh*10);printf("及格%.0f人,占比为%.0f%%\n",jg,jg*10);printf("不及格%.0f人,占比为%.0f%%\n",bjg,bjg*10); }(三)#include<stdio.h>void main(){int i,j,k,index;char s1[20],s2[20];printf("主字符串:");gets(s1);printf("子字符串:");gets(s2);index=0;for(i=0;s1[i];i++){for(j=i,k=0;s1[j]==s2[k];k++)if(!s2[k+1]){index=i;break;}if(index!=0)break;}printf("位置=%d\n",index);}4、测试数据与实验结果(可以抓图粘贴)5、结果分析与实验体会感觉这次报告比较难,敲代码的时候感觉自己什么都不会了,看到给出的参考都有些崩溃了,前几次还觉得懂了,这次有感觉回到了初学时期,看来以后要多多努力,现在学到的还只是基础,以后学难的要更加下功夫了。

数组实验报告反思心得

数组实验报告反思心得

一、实验背景本次实验旨在通过学习数组的相关知识,掌握数组的定义、初始化、赋值、引用等方法,以及数组的操作和应用。

通过本次实验,我对数组有了更深入的理解,同时也对编程思维和算法设计有了更全面的提升。

二、实验过程1. 实验一:一维数组的定义与初始化实验过程中,我首先学习了如何定义一维数组,以及如何对数组进行初始化。

通过实验,我掌握了以下知识:(1)一维数组的定义格式:类型符数组名[常量表达式];(2)一维数组的初始化方法:在定义数组时,可以在方括号内指定数组的长度,并为数组元素赋初值。

2. 实验二:二维数组的定义与初始化在实验二,我学习了二维数组的定义与初始化。

通过实验,我掌握了以下知识:(1)二维数组的定义格式:类型符数组名[常量表达式1][常量表达式2];(2)二维数组的初始化方法:可以在定义数组时,指定数组的行数和列数,并为数组元素赋初值。

3. 实验三:数组元素的引用与赋值在实验三,我学习了如何引用数组元素,以及如何为元素赋值。

通过实验,我掌握了以下知识:(1)数组元素的引用方法:数组名[下标];(2)数组元素的赋值方法:使用赋值运算符“=”。

4. 实验四:数组的操作与应用在实验四,我学习了数组的操作与应用,包括冒泡排序、选择排序等。

通过实验,我掌握了以下知识:(1)冒泡排序算法:通过比较相邻元素的大小,将较大的元素交换到后面,直到整个数组有序。

(2)选择排序算法:通过比较相邻元素的大小,选择最小(或最大)的元素放到数组的起始位置,然后继续对剩余的元素进行排序。

三、实验反思1. 数组的定义与初始化在实验过程中,我深刻体会到了数组在编程中的重要性。

数组作为一种数据结构,可以有效地存储和操作一组具有相同数据类型的元素。

通过对数组的定义与初始化,我学会了如何创建一个符合实际需求的数组,并为数组元素赋初值。

2. 数组元素的引用与赋值在实验过程中,我学会了如何引用数组元素,以及如何为元素赋值。

这使我更加熟练地掌握了数组的使用方法,为后续的编程实践打下了基础。

☆C语言实验六(第七章二维数组、字符串数组)

☆C语言实验六(第七章二维数组、字符串数组)

1、编写一个主函数:用二维数组存放六行的“杨辉三角形”。

2、编写一个主函数:输入五个国家的名称存放在字符串数组,然后按字母顺序排列输出。

3、编写一个主函数:实现两串字符串的合并、0821张成龙;周俊杰2、0823陈智勇、戴佳3、周徐明、顾文斌单选、填空题:0822(重点关注杨辉三角形、Fibonnacii数列形成)【第一题具体要求】参考下列三个资料后,①教科书P153习题7.6(实验指导书P55);②软件中“第七章填空第21题(或2010春阅读程序第11题)”;或后面附录③软件中“第六章填空第3题(或2006秋阅读程序第11题)”编一主函数,用二维数组存放六行的“杨辉三角形”,并要求按六行输出该三角形数据的参考源程序。

【第二题具体要求】输入五个国家的名称按字母顺序排列输出。

编程思路如下:五个国家名应由一个二维字符数组来处理。

然而C语言规定可以把一个二维数组当成多个一维数组处理。

因此本题又可以按五个一维数组处理,而每一个一维数组就是一个国家名字符串。

用字符串比较函数比较各一维数组的大小,并排序,输出结果即可。

input country's name:ChinaIndiaUSABKKorea输出:BKChinaIndiaKoreaUSA[参考程序]【第三题具体要求】【2009春上机编程题_C06;2010年秋上机题C02改错题中有相同内容】【参考程序】:涉及到书P374:strlen()函数。

【软件第七章】选择题:3、若有数组A和B的声明"static char A[]="ABCDEF",B[]={'A', 'B', 'C', 'D', 'E', 'F'};",则数组A和数组B_____(25)___。

B.6,7 C.6,6 D.7,79、若有声明"char ss[8]= "Red";",则sizeof(ss)的值是___(30)____。

程序设计基础实验报告

程序设计基础实验报告

实验一 用C 语言编写简单程序一、实验目的1. 熟悉VC6.0的编程环境,掌握运行C 程序的基本步骤。

2. 了解C 程序的基本框架,模仿例题编写简单的C 语言程序。

3. 正确书写算术表达式、赋值表达式和关系表达式。

4. 掌握基本输入输出函数的使用,正确调用C 语言提供的数学库函数。

5. 掌握简单的单步调试方法。

二、实验环境Windows XP ;Visual C++ 6.0。

三、实验内容1.在屏幕上显示一个句子“What is a computer?”。

2.求华氏温度150F 对应的摄氏温度。

计算公式如下:其中,c 表示摄氏温度;f 表示华氏温度。

3.输入x ,计算下列分段函数的值(保留2位小数),请调用sqrt 函数求平方根,调用pow 函数求幂。

4. 输入一个正整数m (0100)m ≤≤,求100i m i =∑。

四、实验要求1. 将上机验证正确的源代码写到实验报告上。

2.根据自己的真实感受,认真填写实验分析和实验心得以及问题和建议。

3.按时提交实验报告。

553299c f =⨯-⨯21(1)2 x<02()0x x f x ⎧+++⎪=≥一、实验目的1.熟练掌握关系表达式的使用。

2.熟练掌握使用else-if 语句实现多分支结构程序设计。

二、实验环境Windows XP ;Visual C++ 6.0。

三、实验内容1.输入x ,计算并输出下列分段函数sign(x)的值。

2.输入月薪salary ,输出应交的个人所得税tax (保留2位小数)。

按照2011年开始实行的新的个人所得税法,计算公式为:tax = rate*(salary-3500)-deduction 。

当salary≤3500时,rate=0、deduction=0当3500<salary≤5000时,rate=3%、deduction=0当5000<salary≤8000时,rate=10%、deduction=105当8000<salary≤12500时,rate=20%、deduction=555当12500<salary≤38500时,rate=25%、deduction=1005当38500<salary≤58500时,rate=30%、deduction=2775当83500<salary 时,rate=45%、deduction=135053.输入一个正整数n ,再输入n 个学生的百分制成绩,统计各等级成绩的个数。

最新8.2二维数组和字符串汇总

最新8.2二维数组和字符串汇总

8.2二维数组和字符串例:一个专业当中同学分为不同的班级,引进二维数组一、二维数组(一)二维数组的定义1.定义方式:数据类型数组名[常量表达式][常量表达式];其中,第一个常量表达式代表数组的行数,第二个表达式代表数组的列数,元素个数=行数*列数注意:第一个常量表达式可以为空,但第二个常量表达式不能为空。

例:int a[3][4]; /*表示整型二维数组,有3行4列*/ 该数组下标共有3×4个,即:说明:在声明二维数组int[3][4]以后,可以把二维数组a认为含有3个元素的一维数组,这3个元素就是a[0],a[1],a[2],每一个元素就相当于一行,每一个元素又是含有4个元素的一维数组。

存储方式:在C语言中,二维数组是按行序优先存放的,先存放a[0]行元素,再存放a[1]行元素,最后存放a[2]行元素。

(二)二维数组元素的引用形式:数组名[下标][下标]其中,第一个下标为行下标,第二个下标为列下标。

例:引用第2行第3列的数组,即a[1][2](数组的行列下标从0开始)注意:在二维数组中,不能整体引用整个数组,只能对单个元素进行操作。

main(){int a[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++) /*加上{},实现每输出一行就换行的操作*/ printf("%d ",a[i][j]);printf("\n");}}(三)二维数组元素的初始化(四)二维数组举例将一个二维数组行和列的元素互换,存到另一个二维数组中。

输出: 程序:#include<stdio.h> main() { int a[2][3]={{1,2,3},{4,5,6}}; int b[3][2],i,j; printf(“array a:\n ”); for(i=0;i<=1;i++) { for(j=0;j<=2;j++) {printf(“%5d ”,a[i][j]);a=1 2 3 4 5 6b=1 42 53 6b[j][i]=a[i][j];}printf(“\n”);}printf(“array b:\n”);for(i=0;i<=2;i++){for(j=0;j<=1;j++)printf(“%5d”,b[i][j]);printf(“\n”);}}二、字符数组和字符串(一)字符数组1.定义:用来存放字符数据的数组是字符数组。

二维数组和字符串

二维数组和字符串

2. 用多维数组名作函数参数
• 如果用二维数组名作为实参和形参,在对形参数组声明是, 必须制定第二维的大小,且应该与实参的第二维的大小相 同。第一维的大小可以指定,也可以不指定。 如:形参数组int a[3][10] 与 int a[][10],二者都合法且等价; int a[][]与int a[3][]两者都不合法。
此时, a[0]、a[1]、a[2]相当于3个一维数组的名字,上面定义的二维 数组可以理解为定义了3个一维数组,即相当于 int a[0] [4],a[1] [4], a[2] [4]; C++的这种处理方法很方便,我们在后面会体会到
• C++语言中,二维数组中元素在计算机内 存中的存放顺序是:按行存放,即先在内 存中存放第一行的元素,再放第二行的元 素(第一维变化慢,第二维变化快)。 例:int a[3][4]; 二维数组a在内存中的存放 顺序为 a[0][0],a[0][1],a[0][2],a[0][3],[1][0],a[1][1],a[1][ 2],a[1][3],a[2][0],a[2][1],a[2][2],a[2][3]
//由小到大 直接选择排序 #include <iostream> using namespace std; int a[10001]; void SelectSort(int array[], int n) { int i, j, k,temp; for (i = 0; i < n-1; i++) for (j = i + 1; j<n; j++) if (a[i]>a[j]) //改成a[i]<a[j]就变成由大到小排序了 { temp = a[i]; a[i] = a[j]; a[j] = temp; } } int main() { int n,i; cin>>n; for (i=0;i<n;i++) cin>>a[i]; SelectSort(a,n); for (i=0;i<n;i++) cout<<a[i]<<" "; return 0; }

第6章 二维数组和字符数组

第6章  二维数组和字符数组
C 语言程序设计 —进阶篇
第 6章 二维数组和字符数组
——进阶篇
内容概述

1.二维数组的定义、引用、初始化、在 计算机中的存储及其使用方法。 2.字符串的输入输出操作及常用的字符 串操作函数。

C语言程序设计
——进阶篇
教学目标



1.掌握二维数组的定义、初始化及其使用方法。 2.了解二维数组在计算机中的存储结构并对数据 进行存储和管理。 3.掌握字符串的输入输出方法,熟悉常用的字符 串操作函数。 4.学会使用数组解决实际问题的基本方法,能用 一维数组和二维数组解决简单的实际问题。
——进阶篇
4.字符串拷贝函数strcpy()
格式:strcpy (字符数组名1,字符数组名2) 功能:把字符数组2中的字符串拷贝到字符数组1中。串 结束标志‘\0’也一同拷贝。字符数名2也可以是 一个字符串常量。这时相当于把一个字符串赋予 一个字符数组。 例如: #include"string.h" void main() { char st1[15],st2[]="C Language"; strcpy(st1,st2); puts(st1); printf("\n"); } C语言程序设计

按行连续赋值可写为:
int a[5][3]={ 80,75,92,61,65,71, 59,63,70,85,87,90,76,77,85};
这两种赋初值的结果是完全相同的。
C语言程序设计
——进阶篇
对于二维数组初始化赋值还有以下说明: 可以只对部分元素赋初值,未赋初值的元素自动 取0值。 例如: int a[3][3]={{1},{2},{3}}; 如对全部元素赋初值,则第一维的长度可以不给 出, 但第二维的长度不能省略。 例如: int a[3][3]={1,2,3,4,5,6,7,8,9}; 可以写为: int a[][3]={1,2,3,4,5,6,7,8,9};

实验二维数组与字符数组教程

实验二维数组与字符数组教程

实验8二维数组与字符数组【实验题1】程序填空,输入一个4×4矩阵,求出主对角线上的元素之和sum1、副对角线上的元素之和sum2,并输出结果。

【算法分析】:每一行只有一个主对角线元素a[i][i](特征:i==j),也仅有一个副对角线元素a[i][n-i-1](特征:i+j==n-1,即j=n-1-i)#include<stdio.h>void main(){int i,j,sum1=0,sum2=0, a[4][4];printf("Input a 4*4 matrix:\n");for(i=0;i<4;i++)for(j=0;j<4;j++)scanf("%d", &a[i][j]);for(i=0;i<4;i++){sum1+=a[i][i];sum2+=a[i][3-i] ;}printf("sum1=%d, sum2=%d\n",sum1,sum2);}【实验题2】程序填空,打印杨辉三角形前10行:11112113311464115101051……………………【算法分析】:分析一个10行的杨辉三角,需要一个10×10的二维矩阵a,则:1)杨辉三角为下三角矩阵,只需要求出第i 行(i=0,1,2,…,9)前i+1 个元素,即a[i][j]!=0 (j=0…i).2)每行的第0 列元素均为1,即a[i][0]=1?3)每行的主对角线元素也均为1,即a[i][i]=1?4)从第 2 行开始,每行夹在第0 列元素与主对角线元素之间的元素等于其左上方元素a[i-1][j-1]与正上方元素a[i][j]( i=2,3,…,9, j=1,..,i-1 )a[i-1][j]之和,即a[i][j]=a[i-1][j-1]+a[i-1][j];5)输出该矩阵的下三角,即得出杨辉三角的前10 行。

实验06 二维数组和字符数组

实验06 二维数组和字符数组

实验六二维数组和字符数组一、实验目的1.掌握二维数组的定义及赋值和输入/输出的方法;2.掌握字符数和字符串函数的使用;3.学会调试程序。

二、实验内容(实验报告中第1、2小题代码可以不写,只写结果即可,第3小题要求写程序代码及调试结果)1、填补空出的语句,以使程序完整,然后上机验证。

下面程序的功能是将一个字符串str的内容颠倒过来。

# include“string.h”main(){int i,j,k;char str[]={“1234567”};for(i=0,j=strlen(str)_______;i<j;i++,j--){k=str[i];str[i]=str[j];str[j]=k;}printf(“%s”,str);}【程序分析提示】i和j对应字符数组的下标,通过循环实现i由前往后移动,j由后向前移动。

分析字符数组最后元素的下标值和字符串长度之间的关系。

strlen(str)是字符串处理函数,其返回值是字符串str的长度。

格式字符串“%s”可用于输出字符串。

2、下面程序段的输出结果是( )int k;int a[3][3]={1,2,3,4,5,6,7,8,9};for(k=0;k<3;k++)printf ("%d",a[k][2-k]);3.求杨辉三角的前10行。

杨辉三角的形式如下:11 2 11 3 3 11 4 6 4 1……提示:对角线元素和第1列元素均为1,其余元素的值为:如第i行第j 列的元素为a[i][j]=a[i-1][j-1]+a[i-1][j]参考代码如下:#define N 10main(){int a[N][N],i,j;for(i=0;i<N;i++){a[i][0]=1;a[i][i]=1;}for(i=2;i<N;i++)for(j=1;j<i;j++){a[i][j]=a[i-1][j-1]+a[i-1][j];}for(i=0;i<N;i++){for(j=0;j<=i;j++)printf("%4d",a[i][j]);printf("\n");}}三、仪器、设备、材料微机四、实验准备1.理论知识预习及要求①二维数组定义及赋初值;②二维数组的元素的引用方法;③字符数组的定义、赋初值及输入/输出实现方法;④字符串函数的格式及功能。

数组与字符串的应用

数组与字符串的应用

数组与字符串的应用数组与字符串是编程中常见的数据类型,它们在各种算法和应用中起到重要的作用。

本文将讨论数组与字符串的基本概念和应用,并通过实例说明它们的实际用途。

一、数组的概念和应用数组是一种有序的数据集合,它由相同类型的元素组成,并由下标进行访问。

数组的应用广泛,可以用来存储一系列数字、字符或其他类型的数据。

1. 数组的定义和初始化在多数编程语言中,数组的定义和初始化可以通过以下方式进行:int[] numbers = new int[5]; // 定义一个长度为5的整型数组char[] letters = {'a', 'b', 'c'}; // 定义一个字符数组并初始化2. 数组的访问和修改数组的元素可以通过下标进行访问和修改,下标从0开始计数。

例如,通过numbers[0]可以访问数组numbers的第一个元素。

3. 数组的排序和搜索数组常用的操作之一是排序。

通过对数组进行排序,可以按照升序或降序排列元素。

常见的排序算法有冒泡排序、插入排序和快速排序等。

另外,数组还可以用于搜索特定元素。

通过遍历数组,可以找到满足某个条件的元素。

常见的搜索算法有线性搜索和二分搜索等。

二、字符串的概念和应用字符串是由字符组成的序列,它是一种常见的数据类型,用于存储和操作文本数据。

1. 字符串的定义和初始化在大多数编程语言中,字符串可以用引号括起来的字符序列表示。

例如:String str = "Hello World";2. 字符串的操作字符串支持许多操作,例如拼接、截取、替换和转换大小写等。

下面是几个常见的字符串操作示例:String fullName = firstName + " " + lastName; // 字符串拼接String substr = str.substring(0, 5); // 截取字符串的子串String replacedStr = str.replace("Hello", "Hi"); // 替换字符串中的部分内容String lowercaseStr = str.toLowerCase(); // 转换为小写3. 字符串的匹配和查找字符串匹配是指判断一个字符串是否符合某种模式。

数组、字符处理实验报告

数组、字符处理实验报告

数组、字符处理实验报告验实验4数组1.实验目的和要求(1)掌握一维数组与二维数组的定义、使用及初始化方法。

(2)学习数组作为函数参数的用法。

(3)掌握字符数组和字符串函数的使用方法。

(4)掌握与数组有关的常用排序算法,进一步理解模块化程序设计的方法。

(5)掌握字符、字符串的输入/输出方法。

(6)掌握字符数组的使用。

(7)学会使用字符串的指针和指向字符串的指针变量。

2.实验内容:实验指导书中的实验六、实验七3.实验步骤实验六数组部分:6-1:解决问题的算法或源程序代码:程序的运行测试结果截图(考虑各种情况下的运行结果):6-2:该程序完整的源程序代码是:程序运行结果截图:6-3:该程序完整的源程序代码是:程序运行结果截图:6-4.:解决问题的关键算法的源程序代码是:程序运行结果截图:6-5:解决问题的关键算法的源程序代码是:程序运行结果截图:6-6(选作):我使用的算法为:请用文字描述一下程序运行结果截图:6-7(选作):我使用的算法为:程序运行结果截图:7-1该程序的功能是:去除空格后的字符串程序运行结果截图:7-2:解决问题的关键算法的源程序代码是:程序运行结果截图:7-3:解决问题的关键算法的源程序代码是:程序运行结果截图:7-4:解决问题的关键算法的源程序代码是:程序运行结果截图:7-5:解决问题的关键算法的源程序代码是:程序运行结果截图:7-6:解决问题的关键算法的源程序代码是:程序运行结果截图:4、实验小结一维数组与二维数组使用和初始化,数组作为函数参数的用法还是不太熟练。

掌握了与数组有关的常用排序算法,字符、字符串的输入输出方式。

进一步掌握使用字符串的指针和指向字符串的指针变量的方法。

掌握了字符串数组和数字数组的运算。

中间那段描写得超级赞!。

程序设计基础实验报告

程序设计基础实验报告

实验一 用C 语言编写简单程序一、实验目的1. 熟悉VC6.0的编程环境,掌握运行C 程序的基本步骤。

2. 了解C 程序的基本框架,模仿例题编写简单的C 语言程序。

3. 正确书写算术表达式、赋值表达式和关系表达式。

4. 掌握基本输入输出函数的使用,正确调用C 语言提供的数学库函数。

5. 掌握简单的单步调试方法。

二、实验环境Windows XP ;Visual C++ 6.0。

三、实验内容1.在屏幕上显示一个句子“What is a computer?”。

2.求华氏温度150F 对应的摄氏温度。

计算公式如下:其中,c 表示摄氏温度;f 表示华氏温度。

3.输入x ,计算下列分段函数的值(保留2位小数),请调用sqrt 函数求平方根,调用pow 函数求幂。

4. 输入一个正整数m (0100)m ≤≤,求100i m i =∑。

四、实验要求1. 将上机验证正确的源代码写到实验报告上。

2.根据自己的真实感受,认真填写实验分析和实验心得以及问题和建议。

3.按时提交实验报告。

553299c f =⨯-⨯21(1)2 x<02()0x x f x ⎧+++⎪=≥一、实验目的1.熟练掌握关系表达式的使用。

2.熟练掌握使用else-if 语句实现多分支结构程序设计。

二、实验环境Windows XP ;Visual C++ 6.0。

三、实验内容1.输入x ,计算并输出下列分段函数sign(x)的值。

2.输入月薪salary ,输出应交的个人所得税tax (保留2位小数)。

按照2011年开始实行的新的个人所得税法,计算公式为:tax = rate*(salary-3500)-deduction 。

当salary≤3500时,rate=0、deduction=0当3500<salary≤5000时,rate=3%、deduction=0当5000<salary≤8000时,rate=10%、deduction=105当8000<salary≤12500时,rate=20%、deduction=555当12500<salary≤38500时,rate=25%、deduction=1005当38500<salary≤58500时,rate=30%、deduction=2775当83500<salary 时,rate=45%、deduction=135053.输入一个正整数n ,再输入n 个学生的百分制成绩,统计各等级成绩的个数。

实验六 利用数组处理批量数据

实验六 利用数组处理批量数据

实验六利用数组处理批量数据
1实验目的
(1) 掌握一维数组和二维数组的定义、赋值和输入输出的方法。

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

(3) 掌握与数组有关的算法(特别是排序算法)。

2.实验内容
编程序并上机调试运行。

(1)一个班10个学生的成绩,存放在一个一维数组中,要求找出其中成绩最高的学生的成绩和该生的序号(本题是教材第6章习题6.2)。

(2)已知5个学生的4门课的成绩,要求求出每个学生的平均成绩,然后对平均成绩从高到低将各学生的成绩记录排序(成绩最高的学生的排在数组最前面的行,成绩最低的学生的排在数组最后面的行)(本题是教材第6章习题6.4)。

(3)有一篇文章,共有3行文字,每行有80个字符。

要求分别统计出其中英文大写字母、小写字母、数字、空格以及其他字符的个数(本题是教材第6章习题6.8)。

(4)有一行电文,已按下面规律译成密码:
A→Z a→z
B→Y b→y
C→X c→x
……
即第1个字母变成第26个字母,第2个字母变成第25个字母,第ⅰ个字母变成第(26-i+1)个字母。

非字母字符不变。

假如已知道密码是Umtorhs,要求编程序将密码译回原文,并输出密码和原文。

c语言 二维字符串数组形参

c语言 二维字符串数组形参

c语言二维字符串数组形参C语言中字符串类型是一种非常重要的数据类型,它在实际编程中被广泛应用。

与此相关的是二维字符串数组,它是由多个字符串组成的数组,也是C语言中常见的形参类型之一。

本文将围绕“C语言二维字符串数组形参”这一主题,从基础概念、使用方法和常见问题等方面进行介绍和解析。

一、基础概念1、二维字符串数组的定义在C语言中,我们可以通过定义二维数组来实现字符串的存储,这个二维数组中每一行都是一个字符串,而每一个字符串是由固定长度的字符组成的。

例如:char str_arr[3][10]={{"hello"},{"world"},{"c_language"}};其中str_arr是二维数组名称,3表示这个数组中有3行,10表示每一行的字符长度为10,也即是每个字符串最多由10个字符组成。

数组中的大括号表示初始化,每一行字符串后面的空位用0填充。

2、函数中的形参在C语言中,我们可以将一个数组作为函数的形参传递进去。

与一维数组类似,二维数组也可以作为函数形参进行传递。

例如:void print_str_arr(char str_arr[][10],int n);其中的char str_arr[][10]就是一个二维字符串数组作为形式参数,10是每个字符串的长度。

二、使用方法1、二维字符串数组的输入当我们需要输入一个二维字符串数组时,可以通过循环的方式进行输入。

例如:for(int i=0;i<3;i++){printf("please input a string:");scanf("%s",str_arr[i]);}这段代码中用到了一个for循环,定义了一个计数器i,控制循环输入的次数。

通过scanf()函数来实现输入字符串的功能。

2、二维字符串数组的输出输出二维字符串数组同样可以采用循环来实现。

数组(二维数组和字符数组)

数组(二维数组和字符数组)
出。
while (n != 0) { b[i] = n % 2; i--; n = n / 2; } for(++i; i < 32; i++) printf("%d", b[i]);
i = 0; while (n != 0) { b[i] = n % 2; i++; n = n / 2; } for(--i; i >= 0; i--) printf("%d", b[i]);
18/ TC2.0
Programming in C
筛法求素数程序(续)
#include <stdio.h> #define N 1000 main() { int sieve[N+1] = {0}; int j,k; for(j = 2; j <= N; j++) sieve[j] = 1; /*从筛子sieve中去掉k及其倍数*/ j = k; while(j <= N) { } }/*while 筛子sieve不空*/ if (k > N) break; printf("%d\t", k);
西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China
Programming in C
二维数组
西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China
Programming in C
被除数
除数

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的二维数组,通过随机函数自动赋值。

C++语言程序设计实验6(数组、指针和字符串)

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; //第一种访问方式

(整理)8.2二维数组和字符串.

(整理)8.2二维数组和字符串.

例:一个专业当中同学分为不同的班级,引进二维数组一、二维数组(一)二维数组的定义1.定义方式:数据类型数组名[常量表达式][常量表达式];其中,第一个常量表达式代表数组的行数,第二个表达式代表数组的列数,元素个数=行数*列数注意:第一个常量表达式可以为空,但第二个常量表达式不能为空。

例:int a[3][4]; /*表示整型二维数组,有3行4列*/ 该数组下标共有3×4个,即:说明:在声明二维数组int[3][4]以后,可以把二维数组a认为含有3个元素的一维数组,这3个元素就是a[0],a[1],a[2],每一个元素就相当于一行,每一个元素又是含有4个元素的一维数组。

存储方式:在C语言中,二维数组是按行序优先存放的,先存放a[0]行元素,再存放a[1]行元素,最后存放a[2]行元素。

(二)二维数组元素的引用形式:数组名[下标][下标]其中,第一个下标为行下标,第二个下标为列下标。

例:引用第2行第3列的数组,即a[1][2](数组的行列下标从0开始)注意:在二维数组中,不能整体引用整个数组,只能对单个元素进行操作。

main(){int a[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++) /*加上{},实现每输出一行就换行的操作*/ printf("%d ",a[i][j]);printf("\n");}}(三)二维数组元素的初始化(四)二维数组举例将一个二维数组行和列的元素互换,存到另一个二维数组中。

输出: 程序:#include<stdio.h> main() {int a[2][3]={{1,2,3},{4,5,6}}; int b[3][2],i,j; printf(“array a:\n ”); for(i=0;i<=1;i++) {for(j=0;j<=2;j++) {printf(“%5d ”,a[i][j]);a=1 2 3 4 5 6b=1 42 53 6b[j][i]=a[i][j];}printf(“\n”);}printf(“array b:\n”);for(i=0;i<=2;i++){for(j=0;j<=1;j++)printf(“%5d”,b[i][j]);printf(“\n”);}}二、字符数组和字符串(一)字符数组1.定义:用来存放字符数据的数组是字符数组。

二维数组字符数组函数

二维数组字符数组函数

二维数组、字符数组和函数⑴按行列方式输出二维数组a[3][4],并计算其中所有值大于10的元素之和。

int a[3][4]={2,4,12,16,8,13,5,6,9,32,10,14};#include<stdio.h>void main(){int a[3][4]={2,4,12,16,8,13,5,6,9,32,10,14};int i;int j;int sum;sum = 0;for(i = 0 ; i < 3; i ++){for(j = 0 ; j < 4; j ++){if(a[i][j] > 10){sum += a[i][j];}}}printf("%d\n",sum);⑵3行3列二维数组,求其中最大元素和最小元素。

3行3列二维数组,求其主对角线元素之和。

3行3列二维数组,分别求其每行和每列的和。

用以下数组初始值序列{{4,5,6},{10,11,12},{61,62,63}}#include<stdio.h>void main(){int a[3][3] = {{4,5,6},{10,11,12},{61,62,63}};int i;int j;int max;int min;int DJXsum = 0;int hangsum;int liesum;max = min = a[0][0];for(i = 0 ; i < 3; i ++){for(j = 0 ; j < 3; j ++){if(a[i][j] > max){max = a[i][j];}}}for(i = 0 ; i < 3; i ++){for(j = 0 ; j < 3; j ++){if(a[i][j] < min){min = a[i][j];}}}for(i = 0; i < 3; i++){DJXsum+= a[i][i];}printf("max = %d,min = %d,DJXsum = %d\n",max,min,DJXsum);for(i = 0; i < 3; i ++){hangsum=0;for(j =0 ; j < 3;j++ ){hangsum += a[i][j];}printf("%d\n",hangsum);}for(j = 0; j < 3; j ++){liesum=0;for(i =0 ; i < 3;i++ ){liesum += a[i][j];}printf("%d\n",liesum);}}⑶编写程序,生成字符串数组,求其中字符’0’-‘9’分别的个数。

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

淮海工学院计算机科学系实验报告书课程名:《 C语言程序设计教程》题目:实验六数组——二维数组与字符串班级:学号:姓名:1、实验内容或题目(1)编写一个程序,计算一个3×4阶矩阵和一个4×3阶矩阵相乘,并打印出结果。

(使用两个二维数组a和b存储两个3×4阶矩阵的元素值,然后用三重for循环进行相乘求值产生二维数组c,最后输出c的各元素值。

)(2)已知某班10个学生的姓名、学号,以及英语、程序设计、数学三门课的成绩,编写一个程序,完成下列工作:·全班每个学生姓名、学号和三门课成绩的输入及总分计算。

·统计各科的总成绩。

·当给出学生姓名或学号时,检索出该生每门功课的成绩及总成绩。

【解】定义一维数组no存储学生学号,二维数组name存储学生姓名,二维数组degree存储学生三门课成绩及总分。

(3)编写一个程序,判定一个字符串是否是另一个字符串的子串。

2、实验目的与要求1、目的:(1)进一步学习程序设计的方法和步骤;(2)掌握循环结构程序设计与数组的结合;3、实验步骤与源程序⑴实验步骤1.建立工程,添加C++源文件,编写程序。

2.调试修改语法错误。

3.编译,链接生成可执行程序。

4.运行程序,检查试验结果。

⑵源代码(一)#include<stdio.h>void main(){int a[3][4]={{2,3},{4,2},{1,2,3}};int b[4][3]={{1,2,3},{2,3,4},{3,4,5}};int c[3][3],i,j,k,s;for(i=0;i<3;i++)for(j=0;j<3;j++){s=0;for(k=s=0;k<4;k++)s+=a[i][k]*b[k][j];c[i][j]=s;}for(j=0;j<3;j++)printf("%4d",c[i][j]);printf("\n");}(二)法一.#include<stdio.h>#include<string.h>const int RS=3;char name[RS][8];int no[RS];float degree[RS][40];void input(){printf("输入数据:");for(int i=1;i<=RS;i++){printf("第%d个学生\n",i);printf("姓名:");scanf("%s",&name[i-1]);printf("学号");scanf("%d",&no[i-1]);printf("英语成绩:");scanf("%f",&degree[i-1][0]);printf("程序设计成绩:");scanf("%f",&degree[i-1][1]);printf("数学成绩:");scanf("%f",&degree[i-1][2]);degree[i-1][3]=degree[i-1][0]+degree[i-1][1]+degree[i-1][2];}}void sum(){float s1=0,s2=0,s3=0;printf("统计各科总成绩\n");for (int i=0;i<RS;i++){s1+=degree[i][0];s2+=degree[i][1];s3+=degree[i][2];}printf("英语总成绩:%g\n",s1);printf("程序设计总成绩:%g\n",s2);printf("数学总成绩:%g\n",s3);}void query(){int sel,bh,i;char xm[8];printf("数据查询\n");printf("1.姓名 2.学号请选择:");scanf("%d",&sel);switch(sel){case 1:printf("输入姓名:");scanf("%s",&xm);for(i=0;i<RS;i++)if(strcmp(xm,name[i])==0){printf("姓名:%s\n",xm);printf("学号:%d\n",no[i]);printf("英语成绩:%g\n",degree[i][0]);printf("程序设计成绩:%g\n",degree[i][1]);printf("数学成绩:%g\n",degree[i][2]);printf("总成绩:%g\n",degree[i][3]);}break;case 2:printf("输入学号:");scanf("%d",&bh);for(i=0;i<RS;i++)if(bh==no[i]){printf("姓名:%s\n",xm);printf("学号:%d\n",no[i]);printf("英语成绩:%g\n",degree[i][0]);printf("程序设计成绩:%g\n",degree[i][1]);printf("数学成绩:%g\n",degree[i][2]);printf("总成绩:%g\n",degree[i][3]);}break;default:printf("无此选项!\n");}}void main(){input();sum();query();}法二.#include<stdio.h>void main(){int score[10],i;float yx=0,lh=0,jg=0,bjg=0,aver=0;int max=0,min=0,maxn,minn;printf("请输入10位学生的成绩:");for(i=0;i<=9;i++){scanf("%d",&score[i]);}for(i=0;i<=9;i++){if(score[i]>max){max=score[i];maxn=i;}if(score[i]<min){min=score[i];minn=i;}aver+=score[i];if(score[i]<60)bjg=bjg+1;else if(score[i]<75)jg=jg+1;else if(score[i]<90)lh=lh+1;else yx=yx+1;}aver/=10;printf("最高分者:%d\n",score[maxn]);printf("最低分者:%d\n",score[minn]);printf("平均分为%.2\n",aver);printf("优秀%.0f人,占比为%.0f%%\n",yx,yx*10);printf("良好%.0f人,占比为%.0f%%\n",lh,lh*10);printf("及格%.0f人,占比为%.0f%%\n",jg,jg*10);printf("不及格%.0f人,占比为%.0f%%\n",bjg,bjg*10); }(三)#include<stdio.h>void main(){int i,j,k,index;char s1[20],s2[20];printf("主字符串:");gets(s1);printf("子字符串:");gets(s2);index=0;for(i=0;s1[i];i++){for(j=i,k=0;s1[j]==s2[k];k++)if(!s2[k+1]){index=i;break;}if(index!=0)break;}printf("位置=%d\n",index);}4、测试数据与实验结果(可以抓图粘贴)5、结果分析与实验体会感觉这次报告比较难,敲代码的时候感觉自己什么都不会了,看到给出的参考都有些崩溃了,前几次还觉得懂了,这次有感觉回到了初学时期,看来以后要多多努力,现在学到的还只是基础,以后学难的要更加下功夫了。

#include<stdio.h>void main(){int a[3][4]={{2,3},{4,2},{1,2,3}};int b[4][3]={{1,2,3},{2,3,4},{3,4,5}};int k,i,j,c[3][3],s=0;for(i=0;i<=2;i++)for(j=0;j<=2;j++){ for(k=0;k<=3;k++)s+=a[i][k]*b[k][j];printf("%d",s);c[i][j]=s;}for(j=0;j<=2;j++)printf("%4d",c[i][j]);printf("\n");}。

相关文档
最新文档