☆C语言实验六(第七章二维数组、字符串数组)
第 1 页 共 7 页 第七章二维数组、字符串数组题 [书面作业]以书面作业形式上交,2010 年 11 月 1 日课堂交三道题的源程序 1、 编写一个主函数:用二维数组存放六行的“杨辉三角形” 。 2、 编写一个主函数:输入五个国家的名称存放在字符串数组,然后按字母顺 序排列输出。 3、 编写一个主函数:实现两串字符串的合并 上课演示名单及提问名单选定:1、0821 张成龙;周俊杰 2、0823 陈智勇、戴佳 3、周徐明、顾文斌 单选、填空题:0822(重点关注杨辉三角形、Fibonnacii 数列形成) 【第一题具体要求】参考下列三个资料后, ① 教科书 P153 习题 7.6 (实验指导书 P55) ; ② 软件中“第七章填空第 21 题(或 2010 春阅读程序第 11 题) ” ;或后面附录 ③ 软件中“第六章填空第 3 题(或 2006 秋阅读程序第 11 题) ” 编一主函数,用二维数组存放六行的“杨辉三角形” ,并要求按六行输出该三角 形数据的参考源程序。 第 2 页 共 7 页 【第二题具体要求】输入五个国家的名称按字母顺序排列输出。 编程思路如下:五个国家名应由一个二维字符数组来处理。然而C语言规定可 以把一个二维数组当成多个一维数组处理。 因此本题又可以按五个一维数组处 理, 而每一个一维数组就是一个国家名字符串。用字符串比较函数比较各一维 数组的大小,并排序, 输出结果即可。 country s name: China India USA BK Korea 输出: BK China India Korea USA [参考程序] 第 3 页 共 7 页 【第三题具体要求】 阅读并理解题目要求后,用一个主函数编写程序,实现字符串的合并。 【2009 春上机编程题_C06;2010 年秋上机题 C02 改错题中有相同内容】 【编程要求】 1. 编写函数 void fun( char *a, char *b, char *c),其功能是先将 b 指向的字符串逆序存放。然后按 a[0]、 b[0]、a[1]、b[1]……的顺序合并 a 字符串和 b 字符串到 c 指向的数组中,将 a 或 b 中剩余字符拼接在 c 数组的尾部。 2. 编写 main 函数, 声明三个一维数组 s1、 s2 和 s, 接收键盘输入的两个字符串并保存到数组 s1 和 s2 中, 调用 fun 函数对 s2 字符串做逆序变换,再合并 s1 字符串和 s2 字符串到 s 数组中。将合并后产生的数 组 s 中的字符串输出到屏幕并保存到文件 myf2.out 中。最后将考生本人的准考证号字符串也保存到结 果文件 myf2.out 中。 【测试数据与运行结果】 测试数据:s1 字符串为“abcdefg“,s2 字符串为“ ABCD“ 运行结果:aDbCcBdAefg 【参考程序】 :涉及到书 P374:strlen()函数。 第 4 页 共 7 页 课堂练习空余时间或课后业余时间练习知识题 【软件第七章】选择题: 3 、若有数组 A 和 B 的声明“static char A[]=“ABCDEF“,B[]={ A , B , C , D , E , F };“,则数组 A 和数组 B 的的长度分别是_____(25)___。 A.7,6 B.6,7 C.6,6 D.7,7 9 、若有声明“char ss[8]= “Red“;“,则 sizeof(ss)的值是___(30)____。 A. 8 B. 4 C. 3 I D. 1 12、已知有声明“char s[80];“,若需要将键盘输入的一个不含空格的字符串保存到 s 数组中,则下列语句 中正确的是_____________(28)________。 A. scanf(“%s“,s); B. scanf(“%s“,s[0]); C. gets(); D. s=getchar(); 13、已知有声明“char s[26]= “Hello“;“,在程序运行过程中,若要想使数组 s 中的内容修改为“Good“,则 以下语句中能实现此功能的是_______(26)_____。 A. s=“Good“; B. s[20]= “Good“; C. strcat(s, “Good“); D. strcpy(s, “Good“); 填空: 填空 12、以下程序运行时,输出结果第一行为____(13)_____,第二行为_____(14)____,第三行为 _____(15)____。 #include #define N 3 main() { int a[N][N],b[N*N]={1,1},i,j; for(i=2;iN*N;i++) b[i]=b[i-1]+b[i-2]; for(i=0;iN;i++) for(j=0;jN;j++) a[j][i]=b[i*N+j]; for(i=0;iN;i++) { for(j=0;jN;j++) printf(“%5d“,a[i][j]); printf(“\n“); } } 填空 15、以下程序运行时输出结果中第一行是____(11)_____,第二行是_____(12)____。 #include void main() { int i,j,a[3][3]; for(i=0;i3;i++) for(j=0;j3;j++) if(ij) 第 5 页 共 7 页 a[i][j]=1; else a[i][j]=i-j+1; for(i=0;i3;i++) { for(j=0;j3;j++) printf(“ %4d “,a[i][j]); printf(“\n “); } } 21(下列两题均是杨辉三角形数列) 、以下程序运行时输出到屏幕的结果中第二行是 ____(13)_____,第四行是_____(14)____。 #include #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;ji;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 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;ji;j++) a[i][j]=a[i-1]