C语言数组

2020-03-03 01:26:41 来源:范文大全收藏下载本文

实验九 数组

一、一维数组

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

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=%f\\n\",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

for(j=0;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;ia[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]

printf(“%s\\n”,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=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)\\0 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]!=\'\\0\') {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])!=\'\\0\';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

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

while(j>=0&&m>a[j]) {a[j+1]=a[j]_______; j--; } a[j+1]_______=m; } for(i=0;i #include main() { char s[20],str[3][20]; int i; for(i=0;i main() {char s[]=\"ABCCDA\"; int k;char c; for(k=1;(c=s[k])!=\'\\0\';k++) {switch(c) {case \'A\':putchar(\'%\');continue; case \'B\':++k;break; default:putchar(\'*\'); case \'C\':putchar(\'&\');continue; } putchar(\'#\'); } }

C语言数组实习

C语言数组实验报告

C语言实验报告《数组》

C语言数组选择题(新)

C语言实验六 数组

C语言数组补充实验

c语言数组方法总结

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

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

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

《C语言数组.doc》
C语言数组
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档
下载全文