第一篇:C语言实验六 数组
实验六 数组
实验目的:
1、通过实验掌握数组在内存中的存放形式;
2、掌握一维数组和二维数组的定义和数组元素的引用;
3、掌握各种字符串库函数的用法。
实验内容:
1、教材P138页第4题。
2、教材P138页第10题。
3、输入10个整数,将这10个整数按升序排列输出,并且奇数在前,偶数在后。
实验原理、步骤与分析:
【要求】每个实验内容都要先写出其实现的基本原理,再写出实验步骤,最后根据每个实验内容的实验结果进行分析说明。
第二篇:C语言数组补充实验
C语言程序设计 数组补充实验
一、实验目的1、掌握一维数组和二维数组的定义、赋值和输入输出的方法。
2、掌握字符数组和字符串函数的使用。
3、掌握与数组有关的算法(排序算法等)。
二、实验任务
1、随机产生10个30--100(包括30,100)的正整数,求最大值、最小值、平均值,并显示整个数组的值和结果。(提示:随机数的产生使用P372函数:rand())
(源文件名:学号_3_1.c)
2、编一个程序,将一串字符(从键盘上随机输入一字符串)倒序存放后输出。例
如原数组a的内容为“C PROGRAM”,倒序后的数组a中的内容为“MARGORP C”。
(源文件名:学号_3_2.c)
3、随机产生20个学生的计算机成绩(0--100),按照从大到小的顺序排序,分别实现排序前和排序后的结果。
(源文件名:学号_3_3.c)
4、输入一个小于10的正整数n,显示具有n行的杨辉三角形。
(源文件名:学号_3_4.c)
5、利用随机数生成两个4×4的A矩阵和B矩阵(数据不一定相同,前者在30—70范围、后者在101—135范围)。
要求:
⑴求A矩阵两条对角线元素之和
⑵将两个矩阵相加,结果放入C矩阵中并输出
⑶将A矩阵转置(选做)
⑷统计C矩阵中最大值元素及其下标(选做)
(源文件名:学号_3_5.c)
三、实验要求
将上列调试成功后的源文件存放在本人文件夹中。
第三篇:C语言数组
实验九 数组 一、一维数组
1、编写程序,测试下列数组的定义方式是否正确(1)main(){ int n;scanf(“%d”,&n);int a[n];//…….}(2)main(){ int n=10;int a[n];a[0] = 1;//......}(3)#include
2、运行下面的C程序,根据运行结果,可以说明什么? #include
3、调试下列程序,使之具有如下功能:输入10个整数,按每行3个数输出这些整数,最后输出10个整数的平均值。写出调试过程。main(){ int i,n,a[10],av;
for(i=0;i for(i=0;i if(i%3= =0)printf(“n”); } for(i=0;i!=n;i++)av+=a[i]; printf(“av=%fn”,av); } //尤其注意最后一次循环 上面给出的程序是完全可以运行的,但是运行结果是完全错误的。调试时请注意变量的初值问题、输出格式问题等。请使用前面实验所掌握的调试工具,判断程序中的错误并改正。在程序运行过程中,可以使用 5、编写程序,任意输入10个整数的数列,先将整数按照从大到小的顺序进行排序,然后输入一个整数插入到数列中,使数列保持从大到小的顺序。分析讨论 通过实验,分析定义与引用数组的区别。二、二维数组 1.写出程序输出结果(1)#include”stdio.h” main(){ int i, j, t, a[4][4]={11,22,33,44,1,2,3,4,10,20,30,40,12,22,32,42};for(i=0;i<4;i++)for(j=0;j for(j=0;j<4;j++)printf(“%d”,a[i][j]); } }(2)#include”stdio.h” main(){int i,j,m,n,a[3][4]={43,32,22,13,11,22,33,44,44,11,32,31};m=n=0;for(i=0;i<3;i++)for(j=0;j<4;j++)if(a[m][n]>a[i][j]){m=i;n=j;} printf(“a[m][n]=%d,m=%d,n=%d”,a[m][n],m,n);} 3、操作符&用以求一个变量的地址,这在函数scanf 中已经使用过了。现在要你设计一个程序,返回一个3 * 5 的二维数组各元素的地址,并由此说明二维数组中各元素是按什么顺序存储的。 4、输入4×4的数组,编写程序实现: ⑴ 求出对角线上各元素的和; ⑵ 求出对角线上行、列下标均为偶数的各元素的积; ⑶ 找出对角线上其值最大的元素和它在数组中的位置。 三、字符数组 1.验证程序输出结果 #include”stdio.h” main(){char a[ ]=“ab12cd34ef”;int i, j;for(i=j=0;a[i ];i++)if(a[ i]>=’a’&&a[ i]<=’z’)a[ j++ ]=a[ i ];a[ j ]=’ ’; printf(“%sn”,a);} 2、编写程序,输入若干个字符串,求出每个字符串的长度,并打印最长一个字符串的内容。以“stop”作为输入的最后一个字符串。3、1983 年,在ACM图林奖颁奖大会上,杰出的计算机科学家,UNIX 的鼻祖,C语言的创始人之一,图林大奖得主,Ken Thompson 上台的第一句话是:“我是一个程序员,在我的1040表上我自豪地写上了我的职业。作为一个程序员,我的工作就是写程序,今天我将向大家提供一个我曾经写过的最精练的程序。”这个程序如下: #include 1.以下为一维整型数组a的正确说明是_________.a)int a(10);b)int n=10,a[n];c)int n;d)#define SIZE 10;scanf(”%d“,&n);int a[SIZE];int a[n];2.以下对二维数组a的正确说明是________.a)int a[3][];b)float a(3,4); c)double a[1][4] d)float a(3)(4);3.若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为______.(假设a[0][0]位于数组的第一个位置上。)a)i*m+j b)j*m+i c)i*m+j-1 d)i*m+j+1 4.若二维数组a有m列,则在a[i][j]前的元素个数为________.a)j*m+i b)i*m+j c)i*m+j-1 d)i*m+j+1 5.若有以下程序段: int a[]={4,0,2,3,1},i,j,t;for(i=1;i<5;i++){t=a[i];j=i-1;while(j>=0&&t>a[j]){a[j+1]=a[j];j--;} a[j+1]=t;}......则该程序段的功能是_________.a)对数组a进行插入排序(升序)b)对数组a进行插入排序(降序)c)对数组a进行选择排序(升序)d)对数组a进行选择排序(降序)6.有两个字符数组a、b,则以下正确的输入语句是_______.a)gets(a,b);b)scanf(”%s%s“,a,b);c)scanf(”%s%s“,&a,&b);d)gets(”a“),gets(”b“);7.下面程序段的运行结果是_________.char a[7]=”abcdef“; #include a)SSW* b)SW* c)SW*A d)SW 二、填空题 1. 若有定义:double x[3][5];则x数组中行下标的下限为____0___,列下标的上限为___4____.2.下面程序以每行4个数据的形式输出a数组,请填空。 #define N 20 main(){int a[N],i;for(i=0;i main(){ int a[3][3]={1,3,5,7,9,11,13,15,17},sum=0,i,j;for(i=0;i<3;i++)for(j=0;j<3;j++)if(i==j_____)sum=sum+_a[i][j]______;printf(”sum=%dn“,sum);} 4.当从键盘输入18并回车后,下面程序的运行结果是_____10010___.main(){int x,y,i,a[8],j,u,v;scanf(”%d“,&x);y=x;i=0;do {u=y/2; a[i]=y%2;i++;y=u;}while(y>=1)for(j=i-1;j>=0;j--)printf(”%d“,a[j]); main(){int a[5]={4,7,2,5,1};int i,j,m;for(i=1;i<5;i++){m=a[i];j=i-1_; while(j>=0&&m>a[j]){a[j+1]=a[j]_______;j--;} a[j+1]_______=m;} for(i=0;i<5;i++)printf(”%d“,a[i]);printf(”n“);} 6.下面程序的功能是在三个字符串中找出最小的,请填空。#include
第四篇:C语言程序设计实验七:函数、数组、指针
C语言程序设计实验七:函数、数组、指针
1、程序运行后,用户任意输入一个字符串,求出字符串长度,然后输出字符串内容及个 数。不能使用strlen函数。
求字符串长度函数的函数原型必须如下:
int MyStrLenPt(char *str)
若输入:nihao123!
则输出:nihao123!:9 chars2、编写一个对一维数组进行排序的程序。
要求:
写两个函数,一个主函数,一个sort函数。在主函数中完成数组的输入和输出,通过调 用sort函数对数组进行排序。
sort函数的原型为:voidsort(int*p, intn);
说明:
(1)请大家按学号来坐,便于考勤和管理。
(2)请珍惜宝贵的实验时间!不要做与实验无关的事情,比如聊QQ、上网或打游戏。
(3)直接把C语言代码粘贴到相应的实验题目下方,上交实验报告时只交word文档。
(4)文档名称:班级+学号后2位+姓名+实验编号,例如11电1班12张山实验七.doc。
第五篇:C语言数组实验报告
C语言实验书P37
(2)#include
int main(void)
{
int i;
char ch;
char str[100];
printf(“请输入字符串:n”);
scanf(“%s”, str);
printf(“请输入查找字符:n”);
scanf(“ %c”, &ch);
for(i=0;str[i]!=' ';i++)
{
if(str[i] == ch)
{
printf(“位置为:%dn”, i+1);
return 0;
}
}
printf(“该字符不存在n”);
return 0;
}
(3)
(1)
#include
main()
{
long matrix[8][8],min,max,temp;
int i,j,m,n;
printf(“nPlease input n of Matrix:n”);
scanf(“%d”,&n);
m=n;
printf(“nPlease input elements of Matrix(%d*%d):n”,m,n);for(i=0;i for(j=0;j scanf(“%ld”,&matrix[i][j]); for(i=0;i { for(j=0;j printf(“%5ld”,matrix[i][j]); printf(“n”); } } (2) #include main() { long matrix[8][8],min,max,temp; int i,j,m,n,nMax=0,nMin=0; printf(“nPlease input n of Matrix:n”); scanf(“%d”,&n); m=n; printf(“nPlease input elements of Matrix(%d*%d):n”,m,n);for(i=0;i for(j=0;j scanf(“%ld”,&matrix[i][j]); min=max=matrix[0][0]; for(i=0;i for(j=0;j { if(matrix[i][j]>max) { max=matrix[i][j]; nMax=i; } else if(matrix[i][j] { min=matrix[i][j]; nMin=i; } } for(j=0;j { temp=matrix[nMax][j]; matrix[nMax][j]=matrix[nMin][j]; matrix[nMin][j]=temp; } printf(“nResult matrix:n”); for(i=0;i { for(j=0;j printf(“%5ld”,matrix[i][j]); printf(“n”); } } (3) #include main() { long matrix[8][8],min,max,temp; int i,j,m,n,nMax=0,nMin=0; printf(“nPlease input n of Matrix:n”); scanf(“%d”,&n); m=n; printf(“nPlease input elements of Matrix(%d*%d):n”,m,n);for(i=0;i for(j=0;j scanf(“%ld”,&matrix[i][j]); min=max=matrix[0][0]; for(i=0;i for(j=0;j { if(matrix[i][j]>max) { max=matrix[i][j]; nMax=i; } else if(matrix[i][j] { min=matrix[i][j]; nMin=i; } } for(j=0;j { temp=matrix[nMax][j]; matrix[nMax][j]=matrix[nMin][j]; matrix[nMin][j]=temp; } printf(“nResult matrix:n”); if(nMax!=nMin) for(i=0;i { for(j=0;j printf(“%5ld”,matrix[i][j]); printf(“n”); } Printf(“same line!n”) (4)#include void main() { int a[20]; int n,j,i,k,m=20; printf(“给定的数组为:n”); for(n=0;n<20;++n) { a[n]=2*n+3; printf(“%d ”,a[n]); } printf(“n”); printf(“输入要查找的数:”); scanf(“%d”,&j); for(n=0;n<=m;) { i=(m+n)/2; if(a[i] n=i+1; else if(a[i]>j) m=i-1; else if(a[i]=j) { printf(“该数在数组的第%d位上n”,i+1);break; } if(n>m) { printf(“No Foundn”); } } } 二、#include void arr(); int sea(int j); int a[20]; void main() { int n,j,i,h; printf(“请输入20个数据:n”); for(n=0;n<20;++n) scanf(“%d”,&a[n]); } arr(); printf(“n请输入要查找的数:”); scanf(“%d”,&j); h=sea(j); if(h==0) { printf(“No foundn”); } else { printf(“该数在已排序数组的第%d位n”,h)} } void arr() { int z,n,k; for(n=0;n<20;++n) { for(k=0;k<19-n;k++) if(a[k]>a[k+1]) { z=a[k]; a[k]=a[k+1]; a[k+1]=z; } printf(”将数组排序,得:n“); for(n=0;n<20;++n) printf(”%d ",a[n]); } } int sea(int j) { int n,i,h,m=20; for(n=0;n<=m;) { i=(n+m)/2; if(a[i] n=i+1; else if(a[i]>j) m=i-1; else if(a[i]=j) { h=i+1;break;}}if(n>m)h=0;return h;}