☆C语言实验六(第七章二维数组、字符串数组)
C语言实验报告数组
实验七数组1.实验目的(1)熟练掌握一维数组、二维数组的定义、初始化和输入/输出方法;(2)熟练掌握字符数组和字符串函数的使用;(3)掌握与数组有关的常用算法如查找、排序等..2.实验指导(1)对任意一个一维型数组;从中找出数组元素的最大值和最小值并输出..要求:①数组有十个元素;②使用scanf函数实现数组元素的输入前给出必要的提示;③输出时;首先输出数组的十个元素;然后输出其最大值和最小值..分析指导:①算法分析:首先定义一个数组;通过循环从键盘输入十个数组元素的值;再通过另一个循环判断数组元素的最大只和最小值;②根据分析情况编写程序:include<stdio.h>mainint a10;i;max;min;printf"please input ten integers:";fori=0;i<=9;i++{scanf"%d";&ai;}max=a0;min=a0;fori=1;i<=9;i++{ifai>maxmax=ai;ifai<minmin=ai;}fori=0;i<=9;i++{printf"a%d=%d\n";i;ai;}printf"The maximum value is %d;and the minimum value is %d\n";max;min;运行程序;输入十个整数;如:21 37 6 17 9 12 89 76 35 59运行结果如下:(2)编写函数cmpStrchar s1;char s2比较两个字符串s1和 s2的大小..如果s1>s2;返回一个正数;s1=s2;返回0;s1<s2;返回一个负数;在主函数中调用该函数完成字符串的比较操作;并输出返回的值..要求:①不允许使用strcmp函数;②用gets函数在主函数中输入两个字符串;③实现触摸屏受托人函数;返回的正数或负数的绝对值应该是进行比较的两个字符传中相应字符的ASCII码的差值..分析指导:①算法分析:两个字符串从第一个字符开始一一对应进行比较;直到不相等的那个字符;从而求得它们的ASCII码的差值..比如;‘A’与‘C’相比;由于‘A’<‘C’;应输出负数;由于‘A’与‘C’的ASCII码的差值为2;因此;应输出“-2”..同理;“And”和“Aid”比较;根据第二个字符比较结果;‘n’比‘I’大5;因此应输出‘5’;②根据分析情况编写程序:include<stdio.h>int cmpstrchar s1;char s2{int i;diff;i=0;whiles1i==s2i&&s1i='\0'i++;ifs1i=='\0'&&s2i=='\0'diff=0;elsediff=s1i-s2i;return diff;}void main{int z;char s1100;s2100;printf"input the first string:";//输入字符串1gets s1;printf"input the second string:";//输入字符串2getss2;z=cmpstrs1;s2;//输出比较结果printf"the difference between two strings is %d\n";z;}查看运行结果如下:重新输入两个字符串meet;mood运行结果如下:(3)再给定的字符串中查找指定的字符..要求:①字符串采用直接初始化的方式处理;②通过scanf函数读入一个任意字符;③在字符串中查找该字符;如果存在该字符;输出该字符在字符串中的一次出现的位置;如果再给定的字符串中不存在该字符;则给出相应的说明信息..include<stdio.h>void main{int i;char ch;char s=" program";printf" 输入一个英文字母: ";scanf"%c";&ch;for i=0;si='\0';i++{if si==chbreak;}if i<7printf"s%d=%c\n";i;ch;elseprintf"No founded\n";}输入一个英文字母O运行程序如下:再次输入一个英文字母w运行程序如下:(4)首先输入一个大于二且小于十的整数n;然后定义一个二维整型数组nn;初始化该数组;讲述组中最大元素所在的行和最小元素所在的行对调..要求:①nn数组元素的值由scanf函数从键盘输入假定最大值最小值不在同一行上;然后输出该数组;②查找最大值最小值所在的行;将数组中最大元素所在的行和最小元素所在的行对调;并输出对调后的数组;③为直观起见;数组按n行n列的方式输出;④修改程序;对最大值与最小值可能出现在一行种的情况进行处理.. include<stdio.h>main{long matrix99;min;max;temp;int i;j;n;nMax=0;nMin=0;printf"\nplease inpute n of matrix:\n";scanf"%d";&n;printf"\nplease inpute elements of matrix%d%d:\n";n;n; fori=0;i<n;i++forj=0;j<n;j++scanf"%ld";&matrixij;min=max=matrix00;fori=0;i<n;i++forj=0;j<n;j++{ifmatrixij>max{max=matrixij;nMax=i;}else ifmatrixij<min{min=matrixij;nMin=j;}}forj=0;j<n;j++{temp=matrixnMaxj;matrixnMaxj=matrixnMinj;matrixnMinj=temp;}printf"\nResult matrix:\n";fori=0;i<n;i++{forj=0;j<n;j++printf"%5ld";matrixij;printf"\n";}}输入一个数4;输入一个44的数组1 3 6 72 4 5 81 3 5 72 6 9 7运行程序如下:再次输入一个数字3;输入一个33的数组1 2 32 4 537 8运行程序如下:3 实验结论通过本次实验熟练的掌握一维数组、二维数组的定义、初始化和输入/输出方法以及字符数组和字符串函数的使用;还有就是掌握与数组有关的常用算法。
C语言实验报告数组
C语言实验报告数组实验目的:本实验旨在通过对C语言中数组的使用进行实践,加深对数组概念的理解,并掌握数组的声明、初始化和操作方法。
实验环境:操作系统:Windows 10编译器:Dev-C++ 5.11实验内容:1. 数组的声明和初始化在C语言中,数组是由相同类型的数据元素组成的集合。
声明数组时需要指定元素的类型和数组的名称,同时还可以指定数组的大小。
数组的初始化可以在声明时进行,也可以在后续的代码中进行。
示例代码:```c#include <stdio.h>int main() {int numbers[5]; // 声明一个包含5个整数的数组int i;// 初始化数组元素for (i = 0; i < 5; i++) {numbers[i] = i + 1;}// 输出数组元素for (i = 0; i < 5; i++) {printf("numbers[%d] = %d\n", i, numbers[i]);}return 0;}```2. 数组的访问和操作通过下标(索引)可以访问数组中的元素,数组的下标从0开始,依次递增。
我们可以使用循环结构遍历数组,对数组中的元素进行操作。
示例代码:```c#include <stdio.h>int main() {float temperatures[7]; // 声明一个包含7个浮点数的数组int i;// 输入一周每天的温度for (i = 0; i < 7; i++) {printf("请输入星期%d的温度:", i + 1);scanf("%f", &temperatures[i]);}// 输出一周每天的平均温度float sum = 0;for (i = 0; i < 7; i++) {sum += temperatures[i];}printf("一周的平均温度为:%.2f\n", sum / 7);return 0;}```3. 多维数组除了一维数组外,C语言还支持多维数组。
实验七 二维数组实验报告
***软件类实验报告课程名称:C语言程序设计学号:姓名:班级:指导教师:开课学期:学院:***教务处⑶二维数组处理矩阵问题。
四、实验过程及内容:(运行结果请抓图到对应题目的下方)1.输入下面的程序,说明程序的功能并分析运行结果。
2.程序填空题。
加法口诀表。
输入1个正整数n(1≤n≤10),输出一张10以内的加法口诀表。
加数与被加数都不大于n(将加数、被加数、和放入一个二维数组中,再输出该数组),程序运行结果如图7-1所示。
填空完成程序。
实验结果:3. 程序填空题。
下列程序定义了M×N的二维数组,并在主函数中对其赋值。
函数fun()的功能是计算数组周边元素的平均值并作为函数值返回给主函数。
实验结果:4. 编程insert函数,insert函数的功能是:实现在字符串s的指定的下标位置插入另一个字符串t。
例如:字符串s为“I am a boy.”,t为“good ”,调用insert(s,7,t);则s结果为“I am a good boy.”。
主函数框架如下:#include "stdio.h"#include "string.h"void main(){char s[100]="I am a boy.",t[50]="good ";void insert(char s[],int n,char t[]);insert(s,7,t);puts(s);}请完成insert函数的定义。
实验结果:5. 程序改错题。
打印九九乘法表。
6.编写程序实现,求3*3矩阵两条对角线元素之和五、实验小结。
C语言实验七+二维数组程序设计
填空并运行程序。
/*c7-7.c */
/*矩阵转置*/
#include "stdio.h"
void main( )
{ int i,j,temp;
int array[3][3]={{100,200,300},{400,500,600},{700,800,900}};
printf("\n原来的矩阵为:\n");
if() a[i][j]=1;
(二)求一个4×4矩阵的主对角线元素之和,填空并运行程序。
#include "stdio.h"
void main( )
{ int a[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}};
int i,sum=0;
for(i=0;i<4;i++)
scanf("%d",&stu[i][j]);
for(i=0; i<3; i++)
{ t[i]=0;
for(j=0; j<4; j++)
{ sum+=stu[i][j]; /* sum存放三个学生的4门课程总成绩 */
t[i]+=stu[i][j]; /* t[i]存放第i个学生的4门课程成绩 */
#include "stdio.h"
void main( )
{ int stu[3][4],i,j,t[3];
float a[3],sum=0;
for(i=0; i<3; i++)
for(j=0; j<4; j++)
《C语言程序设计》实验报告实验六
《C语言程序设计》实验报告实验六使用指针的程序设计学号姓名一、实验目的1、掌握指针的概念,会定义和使用指针变量;2、能正确使用数组的指针和指向数组的指针变量;3、熟悉指针作为函数参数的定义和调用方法;4、能正确使用字符串的指针和指向字符串的指针变量。
二、实验内容1.分析下面的程序并上机运行程序,要求写出3组以上程序的运行结果。
#include <stdio.h>void main(){int *p1,*p2,*p;int a,b;printf("Input a b please");scanf("%d%d",&a,&b);p1=&a;p2=&b;if(a>b){ p=p1;p1=p2;p2=p;}printf("*p1=%d, *p2=%d\n",*p1,*p2);printf("a=%d, b=%d\n",a,b);}『运行结果:』输入1,2得:*p1=1,*p2=2a=1,b=2输入2,1得:*p1=1,*p2=2a=2,b=1输入56,123得:*p1=56,*p2=123a=56,b=1232.下列程序的功能是分别求出数组中所有奇数之和以及所有偶数之和。
形参n给了数组中数据的个数,利用指针odd返回奇数之和,利用指针even 返回偶数之和。
请在下面空白处将实现这一功能的函数完善,并且调试运行出结果。
#include <stdio.h>#define N 10void fun(int *a,int n,int *odd,int *even){int m;*odd=0; *even=0;for(m=0;m<n;m++)if(*(a+m)%2==0)*even+=*(a+m);else*odd+=*(a+m);}void main(){int a[N]={1,10,2,3,19,6},i,n=6,odd,even;printf("The original data is:\n");for(i=0;i<n;i++)printf("%5d",*(a+i));printf("\n\n");fun(a,n,&odd,&even);printf("The sum of odd numbers:%d\n",odd);printf("The sum of even number:%d\n",even);}『运行结果:』3.编程实现从键盘输入一个字符ch和一个字符串str,利用字符指针实现删除字符串str中和字符ch相等所有字符,然后输出字符串str。
数组、字符处理实验报告
数组、字符处理实验报告验实验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语言二维数组PPT教学课件
2020/12/09
1
二维数组
• 数组元素的引用形式
– 数组名[下标][下标]
2020/12/09
2
二维数组
• 初始化
– 分行给二维数组赋初值
int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; – 按数组排列顺序对各元素赋初值
int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; – 对部分元素赋初值
第七章二维数组 7.1基本操作
• 二维数组:一维数组,数组中每个元素是 类型相同的一维数组。
• 定义:
类型说明符 数组名[常量表达式][常量表达式]
float
a[3][4]
– 数组名为a,有12个元素,下标从0开始,即a[0][0] a[0][1] …a[2][3]
– 在内存中按先行后列存放
a[0][0] a[0][1] …a[2][3]
2020/12/09
8
• 输出
0111 2011 2201 2220
二维数组
for(i=0;i<4;i++) { for (j=0;j<4;j++)
printf(“%d”, a[i][j]); printf(“\n”); }
2020/12/09
9
7.2 二维数组名作为参数
• void fun (double a[M][N] ) • void fun (double a[ ][N] )
2020/12/09
5
二维数组
1222 0122 0012 0001
for(i=0;i<4;i++) for(j=0;j<4;j++) if (i==j) a[i][j]=1; else if (i<j) a[i][j]=2;
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; //第一种访问方式
实验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.理论知识预习及要求①二维数组定义及赋初值;②二维数组的元素的引用方法;③字符数组的定义、赋初值及输入/输出实现方法;④字符串函数的格式及功能。
c语言二维数组体会
c语言二维数组体会C语言是一种高级编程语言,它提供了一种以结构化形式编写程序的方法。
在C语言中,数组是一种重要的数据结构,它允许我们存储和操作多个相同类型的数据。
而二维数组是C语言中的一种特殊数组形式,它可以理解为一个由多个一维数组组成的矩阵。
在C语言中,二维数组的操作和使用非常灵活,通过对二维数组的学习和理解,我对C语言的掌握和应用能力得到了提升。
首先,二维数组的定义和初始化是学习二维数组的第一步。
在C语言中,我们可以通过使用方括号来定义一个二维数组,其语法形式如下:datatype arrayname[size1][size2];其中,datatype表示数组中元素的数据类型,arrayname表示数组的名称,size1表示二维数组的行数,size2表示二维数组的列数。
例如,我们可以定义一个3行4列的整型数组:int arr[3][4];这样,我们就创建了一个名为arr的二维数组,它包含3行4列的整型元素。
二维数组的初始化可以分为静态初始化和动态初始化两种方式。
静态初始化是在定义数组的同时给数组元素赋初始值,它的语法形式如下:datatype arrayname[size1][size2] = { {val1, val2, ...}, {val1,val2, ...}, ...};其中,val1、val2等表示各个元素的初始值。
例如,我们可以定义一个3行4列的整型数组并进行静态初始化:int arr[3][4] = { {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12} };这样,数组arr的第一行元素为1、2、3、4,第二行元素为5、6、7、8,第三行元素为9、10、11、12。
动态初始化是在定义数组后通过遍历的方式为数组元素逐个赋值,它的语法形式如下:for (int i = 0; i < size1; i++) {for (int j = 0; j < size2; j++) {arrayname[i][j] = value;}}其中,value表示待赋给数组元素的值。
☆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语言实验报告
4
2、输入一行字符串,将该字符串中所有的大写字母改为小写字母后输出。 、输入一行字符串,将该字符串中所有的大写字母改为小写字母后输出。 #include <stdio.h> void main() { char a[80]; int i; printf("请输入一行字符(不多余 79 个字符) 请输入一行字符( 个字符) :\n"); 请输入一行字符 : gets(a); for(i=0;i<80;i++) { if(a[i]>='A'&&a[i]<='Z') a[i]=a[i]+32; } puts(a); } 程序运行结果为: 程序运行结果为:
指导教师意见: 指导教师意见:
签名:
年
月
日
5
实验仪器: 实验仪器:
计算机
VC++6.0 编译环境
实验步骤: 实验步骤: 将所给的程序输入编译软件中。 1、 将所给的程序输入编译软件中。 2、 按照要求,将所给空(划线处)补上进行测试,直到得出正确的答案。 、 按照要求,将所给空(划线处)补上进行测试,直到得出正确的答案。 gets(a)改为 scanf("%s",a),gets(b)改为 scanf("%s",b)进行测试 进行测试。 将第二个程序中的 gets(a)改为 scanf("%s",a),gets(b)改为 scanf("%s",b)进行测试。 按要求编写出所要求的程序。 3、 按要求编写出所要求的程序。 4、 整理文档,关闭计算机。 整理文档,关闭计算机。
实 验 报 告
实验课程名称 C 语言程序设计 实验项目名称 实验项目 二维数组及字符数组的应用
实验六 数组——二维数组与字符串
淮海工学院计算机科学系实验报告书课程名:《 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",°ree[i-1][0]);printf("程序设计成绩:");scanf("%f",°ree[i-1][1]);printf("数学成绩:");scanf("%f",°ree[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、结果分析与实验体会感觉这次报告比较难,敲代码的时候感觉自己什么都不会了,看到给出的参考都有些崩溃了,前几次还觉得懂了,这次有感觉回到了初学时期,看来以后要多多努力,现在学到的还只是基础,以后学难的要更加下功夫了。
c语言实验报告六 二维数组
《C程序设计》课程实验报告学院:班级:姓名:学号:实验设备:计算机1台实验日期:2011年3月1日实验项目名称二维数组实验目的掌握二维数组的定义、初始化,以及二维数组元素的下标法引用。
实验要求:熟练掌握掌握二维数组的定义、初始化,以及二维数组元素的下标法引用。
编写简单程序。
实验内容(包括步骤):1.有5名学生,每名学生有语文、数学、物理和外语四门课的考试成绩,编程统计各学生的总分和平均分,以及所有学生各科的总计分和平均分。
要求:(1)成绩在程序中初始化,结果以表格的形式输出。
(2)用下标法实现。
2.将4×4阶矩阵的4个最小值按升序存放在主对角线上。
要求:(1)矩阵元素从键盘输入。
(2)用下标法实现。
调试与结果测试:调试与结果正常。
代码注释:6-1#include<stdio.h>int main(){inta[7][6]={{80,82,98,76},{78,89,96,68},{87,85,78,92},{68,69,72,76},{92,97,96, 94}};int i,j,m=0,s1=0,s2=0;printf("\t语文\t数学\t物理\t外语\t平均分\t总分\n");for(i=0;i<5;i++){for(j=0;j<4;j++){s1+=a[i][j];a[i][5]=s1;a[i][4]=s1/4;}s1=0;}for(j=0;j<4;j++){for(i=0;i<5;i++){s2+=a[i][j];a[6][j]=s2;a[5][j]=s2/5;}s2=0;}for(i=0;i<7;i++)for(j=0;j<6;j++){m++;if(m%6==1&&i<5){printf("学生%d\t",i+1);}if(m%6==1&&i==5){printf("平均分\t");}else if(m%6==1&&i==6){printf("总分\t");}printf("%d\t",a[i][j]);if(m%6==0)printf("\n");}return 0;}6-2#include<stdio.h>int main(){int a[4][4],b[16]={0},i,j,m,k=0,t=0;for(i=0;i<4;i++){for(j=0;j<4;j++)scanf("%d",&a[i][j]);}for(i=0;i<4;i++){for(j=0;j<4;j++){b[k]=a[i][j];k++;}}for(k=0;k<15;k++){ for(i=0;i<15-k;i++){if(b[i]>b[i+1]){t=b[i];b[i]=b[i+1];b[i+1]=t;}}}for(i=0;i<4;i++){ for(j=0;j<4;j++){if(a[i][j]==b[j]){ m=a[i][j];a[i][j]=a[j][j];a[j][j]=m;}}}for(i=0;i<4;i++){ for(j=0;j<4;j++)printf("%d\t",a[i][j]);printf("\n");}return 0;}――――――――――――以下内容为教师填写―――――――――――――――教师评阅:成绩:良2011年月日。
实验六 字符数组与数组的综合应用
实验六字符数组与数组的综合应用一、实验目的1.掌握字符数组和字符串函数的使用。
2.使用数组进行复杂程序的编写。
二、实验要求1.复习字符数组的定义、输入输出和常用的字符串函数。
2.在实验题目空白处编写源程序代码。
3.运行程序并记录运行结果。
4.总结实验过程中的错误和心得体会,写出实验总结。
5.对本次实验进行自评,在“实验得分”部分对每个实验题目的完成情况打分。
三、实验内容1. 下面程序的功能是对两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差。
例如:输入的两个字符串分别为"abcdefg"和"abceef",则输出为-1。
#include <stdio.h>main(){ char str1[100],str2[100],c;int i,s;printf("Enter string 1: "); gets(str1);printf("Enter string 2: "); gets(str2);i=0;while((str1[i] = = str2[i] && str1[i]!= ))i++;s= ;printf("%d\n", s);}2. 编写一个程序,将字符数组s2中的全部字符复制到字符数组s1中。
不用strcpy函数。
复制时’\0’也要复制过去,’\0’后面的字符不复制。
程序代码:#include <stdio.h>main(){ char s1[80],s2[80];int i;printf("Input s2:");scanf("%s",s2);for(i=0;i<strlen(s2);i++)s1[i]=s2[i];printf("s1:%s\n",s1);}3. 输入若干个字符串(最多10个),求出每个字符串的长度,并打印最长字符串的内容。
C语言实验二维数组的
1,题一:利用循环嵌套,外层控制行变化,然后通过一个二层循环首先可以寻找到当前行中得最大元素,记下其列号;再利用一个并列的二层循环到本列中再扫描各行,判断它是不是本列的最小元素,如果是,则是鞍点,输出对应的信息;否则,再扫描一行。程序中需要定义一个统计鞍点个数的变量,如果行都扫描结束还没有一个鞍点,说明该矩阵没有鞍点,给出相应额提示信息。
2,题二:(a)从结构化程序设计的角度来考虑,要设计两个函数来完成数次二维数组的功能,形参分别是行指针和列指针(b)如果列指针p要能正确访问二维数组arr的元素,首先需要定义该列指针,形式是int*p;zai p=*arr的前提下,通过指针q访问一个二维数组的元素arr[i][j],可以有这样集中后方法:q[i][j],*(q[i]+j),*(*(q+i)+j)和(*(q+i))[j]
题(4):用一维指针数组方式进行访问。
3题三:(a)动态二维数组空间的申请分为两步:第一,申请一维指针数组,分量个数=二维数组的行数,第二步;利用每一个一级指针元素再申请动态一维数组,分量个数=二维数组的行列数,这样二维数组的元素就可以表示为从p[0][0]一直到p[n-1][m-1](b)读入动态二维数组元素的方式与静态二维数组是一样的(c)释放动态空间:首先通过一维指针数组的每一个指针元素释放动态二维数组的空间,第二步:再通过二级指针变量释放动态一维指针数组空间。
课程名称高级语言程序设计实验项目二维数组编程练习实验项目类型验证演示综合设计指导教师李养群成绩一实验目的1掌握二维数组的定义初始化与使用方法会正确访问二维数组的元素2了解行指针列指针会利用他们来访问二维数组中得元素二实验步骤1了解操作环境2编写程序3对程序进行调试纠错三实验指导1题一
大一上期C语言实验报告6 数组
成都工业学院·计算机工程学院《程序设计基础》实验报告1.实验目的(1)熟练掌握一维数组。
二维数组的定义,初始化和输入输出方法(2)熟练掌握字符数组和字符串函数的使用(3)掌握与数组有关的常用算法2.实验内容(1)在给定的字符串中查找指定的字符;要求:①字符串采用直接初始化的方式处理②通过scanf函数读入一个任意字符③在字符串中查找该字符,如果存在该字符,输入该字符在字符串中第一次出现的位置,如果在给定的字符串中不存在该字符,则给出相应的说明信息。
(2)首先输入一个大于2小于10的整数n,然后定义一个二维数组(n*n),初始化该函数,将数组中最大元素所在的行和最小函数所在的行对调要求:①n*n数组元素的值有scanf函数从键盘输入(假定最大值与最小值不在同一行上),然后输出该数组②查找最大值与最小值的所在行,将数组中最大元素所在的行和最小元素所在的行对调。
并输出对调后的数组③直观起见,数组按n行n列的方式输出④修改程序,对最大值与最小值可能出现的在一行上的情况进行处理(3)编程实现折半查找的过程折半查找的处理过程:在一个数据已排好序的数组中,首先比较要查找的值与数组中间的元素,如果二者相等,则查找结束;如果前者比后者小,则要查找的数据必然在数组的前半部,此后只需在数组的前半部中继续折半查找;如果前者数之比后者大,则要查找的数据必然在数组的后半部,此后的只需在数组的后半部继续进行折半查找。
要求:①设定一个整型数组存放20个元素,采用直接赋值的方法在程序中初始化该数组(数据已排序)②用scanf函数输入一个要查找的值③对查找的结果给出相应的说明,如果找到该数值,输出Found信息,并给出该数是数组中的第几个元素;如果该数值不在数组中,则输出Not found信息④修改程序,设定输入的数据是无序的,则先要对这些无序的数据进行排序,然后采用折半查找⑤修改程序,编写一个选择排序函数和一个查找函数对以排序的数据进行查找。
c的字符串数组
c的字符串数组是一种在C语言中常用的数据类型,用来存储一组字符串。
这种数据结构在程序设计和开发中具有广泛的应用,能够方便地存储和操作字符串数据。
本文将深入探讨c的字符串数组的相关概念、特性、以及在实际应用中的使用方法和注意事项。
首先,我们需要了解什么是字符串数组。
在C语言中,字符串数组实际上是一个二维字符数组,每个元素都是一个字符串。
字符串在C语言中是以字符数组的形式存储的,每个字符串都以空字符'\0'结尾。
因此,字符串数组可以看作是一个字符数组的数组,其中每个元素都是一个以'\0'结尾的字符串。
c的字符串数组具有一些特殊的操作符和函数,可以方便地对字符串数组进行操作。
例如,strcpy()函数用于将一个字符串复制到另一个字符串中,strcat()函数用于将一个字符串追加到另一个字符串的末尾,strlen()函数用于计算一个字符串的长度等等。
这些函数和操作符是在处理字符串数组时必不可少的工具,能够帮助我们更加高效地操作字符串数据。
除了常用的操作符和函数外,c的字符串数组还具有一些注意事项需要我们注意。
首先,字符串数组的长度需要事先确定,一旦确定后就不能再改变。
因此,在定义字符串数组时需要确保足够的长度来存储所有的字符串。
其次,对字符串数组的操作需要格外小心,避免发生越界访问等问题,这往往是导致程序崩溃或者出现未知错误的主要原因之一。
在实际应用中,c的字符串数组经常用于存储一组相关的字符串数据,例如文件路径、命令行参数等。
通过使用字符串数组,我们可以方便地组织和管理这些数据,提高程序的可读性和可维护性。
同时,字符串数组也常用于字符串的匹配和搜索等操作,帮助我们更加高效地处理字符串数据。
梳理一下本文的重点,我们可以发现,c的字符串数组是一个非常实用的数据结构,能够在程序设计和开发中带来很多便利。
通过深入了解和研究c的字符串数组,我们可以更加灵活地操作字符串数据,提高程序的性能和效率。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、编写一个主函数:用二维数组存放六行的“杨辉三角形”。
2、编写一个主函数:输入五个国家的名称存放在字符串数组,然后按字母顺
序排列输出。
3、编写一个主函数:实现两串字符串的合并
、0821张成龙;周俊杰
2、0823陈智勇、戴佳
3、周徐明、顾文斌
单选、填空题:0822(重点关注杨辉三角形、Fibonnacii数列形成)
【第一题具体要求】参考下列三个资料后,
①教科书P153习题7.6(实验指导书P55);
②软件中“第七章填空第21题(或2010春阅读程序第11题)”;或后面附录
③软件中“第六章填空第3题(或2006秋阅读程序第11题)”
编一主函数,用二维数组存放六行的“杨辉三角形”,并要求按六行输出该三角
形数据的参考源程序。
【第二题具体要求】输入五个国家的名称按字母顺序排列输出。
编程思路如下:五个国家名应由一个二维字符数组来处理。
然而C语言规定可以把一个二维数组当成多个一维数组处理。
因此本题又可以按五个一维数组处理,而每一个一维数组就是一个国家名字符串。
用字符串比较函数比较各一维数组的大小,并排序,输出结果即可。
input country's name:
China
India
USA
BK
Korea
输出:
BK
China
India
Korea
USA
[参考程序]
【第三题具体要求】
【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,7
9、若有声明"char ss[8]= "Red";",则sizeof(ss)的值是___(30)____。
B. 4
C. 3 I
D. 1
12、已知有声明"char s[80];",若需要将键盘输入的一个不含空格的字符串保存到s数组中,则下列语句中正确的是_____________(28)________。
A. scanf("%s",s);
B. scanf("%s",s[0]); D. s=getchar();
13、已知有声明"char s[26]= "Hello";",在程序运行过程中,若要想使数组s中的内容修改为"Good",则以下语句中能实现此功能的是_______(26)_____。
A. s="Good";
B. s[20]= "Good";
C. strcat(s, "Good");
填空:
填空12、以下程序运行时,输出结果第一行为____(13)_____,第二行为_____(14)____,第三行为_____(15)____。
#include <stdio.h>
#define N 3
main()
{ int a[N][N],b[N*N]={1,1},i,j;
for(i=2;i<N*N;i++) b[i]=b[i-1]+b[i-2];
for(i=0;i<N;i++)
for(j=0;j<N;j++) a[j][i]=b[i*N+j];
for(i=0;i<N;i++)
{ for(j=0;j<N;j++) printf("%5d",a[i][j]);
printf("\n");
}
}
填空15、以下程序运行时输出结果中第一行是____(11)_____,第二行是_____(12)____。
#include <stdio.h>
void main()
{ int i,j,a[3][3];
for(i=0;i<3;i++)
for(j=0;j<3;j++)
if(i<j)
a[i][j]=1;
else
a[i][j]=i-j+1;
for(i=0;i<3;i++)
{ for(j=0;j<3;j++)
printf(" %4d ",a[i][j]);
printf("\n ");
}
}
21(下列两题均是杨辉三角形数列)、以下程序运行时输出到屏幕的结果中第二行是
____(13)_____,第四行是_____(14)____。
#include <stdio.h>
#define N 6
void main()
{ int i,j,a[N+1][N+1];
for(i=1;i<=N;i++)
{ a[i][i]=1;a[i][1]=1; }
for(i=3;i<=N;i++)
for(j=2;j<i;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];
for(i=1;i<=N;i++)
{ for(j=1;j<=i;j++)
printf("%4d",a[i][j]);
printf("\n ");
}
}
补充题、以下程序运行时,输出结果第二行为___(21)____,第三行为___(22)____,第四行为___(23)____,第五行为___(24)____,第六行为___(25)____。
#include <stdio.h>
void main()
{ int i,j,a[7][7];
for(i=1;i<=6;i++)
{ a[i][i]=1;a[i][1]=1; }
for(i=3;i<=6;i++)
for(j=2;j<i;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];
for(i=1;i<=6;i++)
{ for(j=1;j<=i;j++)
printf("%4d",a[i][j]);
printf("\n ");
}
}
一、sizeof():按照书P365规定,它是关键字。
引用格式有:
1、sizeof(表达式):表达式结果按照书P47说法“C语言编译系统将浮点型常量作为双精度来
处理”和遵循书P54图3-10规定来确定其数值。
例如:#include <stdio.h>
void main()
{ int x=sizeof(1/3.0);
printf("\n%d\n",x);
}
其值显示为:8
2、sizeof(类型说明符):
TC30下,int为2(书P43表3-1);long为4;float为4(书P46表3-2);
VC++下,int和long为4;float为4(书P46表3-2);
例如:2010春基本概念第3题
在C语言系统中,如果一个变量能正确存储的数据范围为整数-32768~32767,则该变量在内存中占______(3)_______字节。
此题标准答案是:2。
实际江苏省出题老师是指TC30条件下的数据。
若是在VC++,则答案为4。
3、sizeof(字符串常量或变量):该值取决于串字符串长度加上1(字符串结束符'\0'),例如实验五上机练习题5,
strlen()函数遇到第一个字符串结束符'\0',计数结束;而sizeof()以a[7]中7为准。
又例如软件第七章选择第9题:
若有声明"char ss[8]= "Red";",则sizeof(ss)的值是___(30)____。
A. 8
B. 4
C.3
D.1 而sizeof()以ss[8]中8为准。
若无下标,则为字符总个数加1。
4、#define LEN sizeof(struct student):见书P298结构体中建立链表时,度量结构体的长度之用。
二、数制变换:。