C语言数组实习

时间:2019-05-14 17:00:29下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《C语言数组实习》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《C语言数组实习》。

第一篇:C语言数组实习

实习六:数组实习

姓名:尹思智

学号:2012014413 完成日期2013年4月

一、实习目的

1.从键盘输入10个整数,将最大数调到最前面,最小数调到最后面。2.已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中

3.从键盘任意输入两个字符串,不用库函数strcat,将两串字符连接起来。4 输入一个5×5的数组,分别求其主对角线和次对角线上元素之和 5.由键盘任意输入10个学生的姓名(以拼音形式),将它们以字典顺序从小到大排序。

6打印如下形式的杨辉三角 1 1 1 1 1 10 5 7.定义一数组(长度大于10),从键盘输入数组元素的值,完成下面操作:

(1)从键盘输入一个数,用顺序查找法找出该数在数组中的位置;或者给出没有找到的信息;

(2)对数组的元素从小到大排序;

(3)从键盘输入一个数,用折半查找法找出该数在数组中的位置;或者给出没有找的信息。

8.直接选择排序法。算法描述如下:

(1)从n个数中找到最小的数,若此数不是数组的第一个元素,则与第一个元素交换位置;

(2)从剩下的n-1个数中找到最小的数,若此数不是数组第二个元素,则与第二个元素交换位置;

(3)以此类推,直到完成排序

9.编写程序将两个有序数组归并。例如数组{1,3,5}和数组{2,4,6,8,10},归并的结果是{1,2,3,4,5,6,8,10 }

二、实习步骤

1.从键盘输入10个整数,将最大数调到最前面,最小数调到最后面。

流程图; 运行图;

2.已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中

流程图

运行图

3.从键盘任意输入两个字符串,不用库函数strcat,将两串字符连接起来。

流程图 运行图 输入一个5×5的数组,分别求其主对角线和次对角线上元素之和

流程图 运行图

5、由键盘任意输入10个学生的姓名(以拼音形式),将它们以字典顺序从小到大排序。

流程图 运行图

6打印如下形式的杨辉三角 1 1 1 1 1 10 5

流程图 运行图

7.定义一数组(长度大于10),从键盘输入数组元素的值,完成下面操作:

(1)从键盘输入一个数,用顺序查找法找出该数在数组中的位置;或者给出没有找到的信息;

(2)对数组的元素从小到大排序;

(3)从键盘输入一个数,用折半查找法找出该数在数组中的位置;或者给出没有找的信息。

流程图 运行图

8.直接选择排序法。算法描述如下:(1)从n个数中找到最小的数,若此数不是数组的第一个元素,则与第一个元素交换位置;

(2)从剩下的n-1个数中找到最小的数,若此数不是数组第二个元素,则与第二个元素交换位置;

(3)以此类推,直到完成排序

流程图 运行图

9.编写程序将两个有序数组归并。例如数组{1,3,5}和数组{2,4,6,8,10},归并的结果是{1,2,3,4,5,6,8,10 }

流程图 运行图

三、实习总结

第二篇: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 #define M 10 main(v){ int a[M];a[0] = 1;//......}(4)main(){ int a[2+2*4];a[0] = 1;//......}(5)#include #define M 2 #define N 8 main(){ int a[M+N];a[0] = 1;//......} 通过这一实验,可以说明什么问题?

2、运行下面的C程序,根据运行结果,可以说明什么? #include void main(void){ int num[5]={1,2,3,4,5};int i;for(i=0;i<=5;i++)printf(“%d,”,num[i]);}

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); }

//尤其注意最后一次循环 上面给出的程序是完全可以运行的,但是运行结果是完全错误的。调试时请注意变量的初值问题、输出格式问题等。请使用前面实验所掌握的调试工具,判断程序中的错误并改正。在程序运行过程中,可以使用+键终止程序的运行,返回到TC环境。

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 char s[]={'t', '0', 'n', '}', ';', 'n', 'n', '/', '*', 'n', 0 };/*(213 lines deleted)*/ /* * The string is a * representation of the body * of this program from '0' * to the end */ void main(void){ int i;printf(“char ts[]= {” “);for(i=0;s[i];i++){ printf(”t%d,n“, s[i]);} printf(”%s“, s);} 请上机运行这个程序,指出它的功能和运行结果。

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“; char b[4]=”ABC“;strcpy(a,b);printf(”%c“,a[5]);a)空格 b) c)e d)f 8.判断字符串s1是否大于字符串s2,应当使用_______.a)if(s1>s2)b)if(strcmp(s1,s2))c)if(strcmp(s2,s1)>0)d)if(strcmp(s1,s2)>0)9.下面程序的功能是从键盘输入一行字符,统计其中有多少个单词,单词之间用 空格分隔,请选择填空。

#include main(){ char s[80],c1,c2=' ';int i=0,num=0;gets(s);while(s[i]!=''){c1=s[i];if(i==0)c2=' ';else c2=s[i-1];if(___)num++ i++;} printf(”There are %d words.n“,num);} a)c1==' '&&c2==' ' b)c1!=' '&&c2==' ' c)c1==' '&&c2!=' ' d)c1!=' '&&c2!=' ' 10.下面程序的运行结果是________.#include main(){char str[]=”SSSWLIA“,c;int k;for(k=2;(c=str[k])!='';k++){switch(c){case 'I':++k;break;case 'L':continue;default:putchar(c);continue;} putchar('*');} }

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]); } 5.下面程序用插入法对数组a进行降序排序。请填空。

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 #include main(){ char s[20],str[3][20];int i;for(i=0;i<3;i++)gets(str[i]);strcpy(s,_(strcmp(str[0],str[1])<0?str[0]:str[1]__)____);if(strcmp(str[2],s)<0)strcpy(s,str[2]);printf(”%sn“,__s_____);} 7.下面程序的运行结果是_#&*#%_______.#include main(){char s[]=”ABCCDA";int k;char c;for(k=1;(c=s[k])!='';k++){switch(c){case 'A':putchar('%');continue;case 'B':++k;break;default:putchar('*'); case 'C':putchar('&');continue;} putchar('#');} }

第三篇: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;}

第四篇:C语言实验六 数组

实验六 数组

实验目的:

1、通过实验掌握数组在内存中的存放形式;

2、掌握一维数组和二维数组的定义和数组元素的引用;

3、掌握各种字符串库函数的用法。

实验内容:

1、教材P138页第4题。

2、教材P138页第10题。

3、输入10个整数,将这10个整数按升序排列输出,并且奇数在前,偶数在后。

实验原理、步骤与分析:

【要求】每个实验内容都要先写出其实现的基本原理,再写出实验步骤,最后根据每个实验内容的实验结果进行分析说明。

第五篇:c语言数组方法总结

数组方法总结

1.输入元素的值:

inti,a [10];

for(i = 0;i < 9;i ++);

a[i] = i;

(1)正序排列:(2)倒序排列:

for(i =0;i < 10;i ++)for(i = 9;i >= 0;i--)printf(“%d”, a[i]);printf(“%d”, a[i]);

2.初始化元素的值:

(1)在定义时,将数组元素一次放在一对花括号里;

eg: int a[10]={1,2,3,4,5,6,7,8,9,0};

(2)可以只给一部分元素赋值:

eg: int a[10]={1,3};

(3)使数组全部元素为0:

eg: int a[10]={0,0,0,0,0,0,0,0,0,0};或者 int a[10]={0};

(4)在对全部元素赋初值的时候,由于元素数已经确定,因此,可以不指定数组长度。(注:数组长度与提供初值个数不相同时,则长度不可以省略。)

3.巧妙地将两个元素列在一个循环中输出:(用for循环处理fobonacci数列); eg:int f[20]={1,1};

for(i=2;i<20;i++)

f[i]=f[i-1]+f[i-2];

4. 数列Fobonacci数列核心:

int f[20]={1,1};

for(i=2;i<20;i++)

f[i]=f[i-1]+f[i-2];

5.换行操作:

for(i=0;i<=20;i++)/*当然也可以在for循环中处理,直接将{if(i%5= =0)printf(“n”);if(i%5= =0)printf(“n”);插入换行*/Printf(“%12ld”,f[i]);

}

6.起泡法:

int a[10];

for(j=0;j<9;j++)/*进行n-1趟比较*/

for(i=0;i<9-j;i++)/*在j趟比较中,比较n-1次*/

if(a[i]>a[i+i])/*由小到大排列,if(a[i]

7.初始化二维数组:

 分行给二维数组赋初值;

 将所有的元素都写在一个花括号里;

 对部分元素赋值:

1)int a[3][3]={{3},{5},{9}};只讲0列元素赋值

2)int a[3][3]={{1}, {0,6},{0,0,11}};对部分元素赋值,对非0元素少使用方便

3)int a[3][3]={{1}, {5,6}};只对几行元素赋值

4)int a[3][3]={{1}, {},{9}};对第二行元素赋值

 对全部元素赋值可以省略一维长度:

 对部分元素赋初值,在省略一位长度时,应分行赋值:

8.二维数组的输入输出:

 输入:直接定义

 输出:

for(i=0;i<=2;i++)

{for(j=0;j<=1;j++)

printf(“%5d”,b[i][j]);

printf(“n”);

}

9.二维数组的行列转换:

b[j][i]=a[i][j];

10.数组中求最大值并输出行列号:

Eg:inti,row=0,colum=0,max;

inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};

max=a[0][0];

for(i=0;i<=2;i++)

for(j=0;j<=3;j++)

if(a[i][j]>max)

{max=a[i][j];

row=i;

colum=j;}

11.字符数组的初始化方法:

 逐个字符初始化:

eg:char c[10]={„I‟, „‟, „a‟, „m‟, „‟, „h‟, „a‟, „p‟, „p‟, „y‟};

1)在定义字符数组时,不初始化,则数组中的各元素的之不可预料;

2)如果花括号中提供的初值个数(即字符个数)大于数组的长度,则按语法错误

处理;

3)如果花括号中提供的初值个数(即字符个数)小于数组的长度,其余元素自动

定为空字符即(„‟);

 如果提供的初值个数与数组长度相同,则在定义时可以省略数组长度;  也可以定义一个二维数组:

eg:char diamond[5][5]={{},{},{},{},{}}; 用字符串常量,使字符数组初始化:

eg: char c[ ]={“I am happy”};或char c[ ]= “I am happy”;

12.字符数组的输出:

一维:二维:

for(i=0;i<=11;i++)for(i=0;i<=11;i++)

printf(“%c”,c[i]);for(i=0;i<5;i++)

printf(“n”);printf(“%c”,diamond[i][j]);

13.字符数组输出最大值:

eg:if(strcmp(string,str[1]>0)

strcpy(string,str[0]>0);

else

strcpy(string,str[1]);

if(strcmp(str[2],string>0)

strcpy(string,str[2]);

printf(“%s”,string);

下载C语言数组实习word格式文档
下载C语言数组实习.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    C语言数组补充实验

    C语言程序设计 数组补充实验 一、实验目的 1、掌握一维数组和二维数组的定义、赋值和输入输出的方法。 2、掌握字符数组和字符串函数的使用。 3、掌握与数组有关的算法(排序......

    C语言数组选择题(新)五篇

    1、以下定义语句中,错误的是________。 A) int a={1,2}; B) char a={"test"}; C) char s[10]={"test"}; D) int n=5,a[n]; D 2、以下对一维数组a进行正确初始化的是_____......

    C语言实验报告《数组》(共5则)

    学号:__________ 姓名:__________ 班级:__________ 日期:__________指导教师:__________ 成绩:__________实验三 数组一、 实验目的1、掌握一维和二维数组的定义、赋值和输入输出2......

    C语言数组知识点总结[五篇材料]

    数组 定义:数组是有序的并且具有相同类型的数据的集合。一维数组 1、一般形式:类型说明符 数组名[常量表达式];例如: int a[10]; 元素为a[0]----a[9].2、常量表达式中不允许包含......

    c语言 二维数组与指针 教案

    26 讲授 9.6二维数组和指针 2课时掌握二维数组的地址表示方法 掌握指向数组元素的指针变量 掌握指向数组元素的指针变量 掌握用指向由m个元素组成的一维数组的指针变量 指......

    C语言《二维数组》说课稿(写写帮整理)

    《二维数组》说课稿 一、教学目标 1、通过本次课教学,学生能进一步理解二维数组的定义,二维数组的引用的方法; 2、掌握二维数组的初始化 3、技能目标:培养学生逻辑思维能力、综......

    数组总结

    王家沟小学 2009~2010年度第一学期数学教研组工作总结 本学期以来,我们以现代教育思想、现代教育理念为指导,认真贯彻落实小学数学新课程标准为契机,认真贯彻落实学校本期工作意......

    数组总结

    王家沟小学 2012~2013学年度第一学期数学教研组工作总结 本学期以来,我们以现代教育思想、现代教育理念为指导,认真贯彻落实小学数学新课程标准为契机,认真贯彻落实学校本期工作......