实验六 数组 1
- 格式:doc
- 大小:20.50 KB
- 文档页数:1
实验六 数组 (1)
1、 实验目的
1) 掌握一维数组和二维数组的定义、初始化和输入输出的
方法
2) 掌握字符数组和字符串函数的使用
3) 掌握与数组有关的算法
2、 实验内容
1) 例题6.2
2) 例题6.3
3) P168习题 2
4) P168 习题 4
5) P168习题 5
6) 例题6.4
7) 例题6.5
8) P168习题 3
9) P168习题 6
实验六 数组 (1)
1、 实验目的
1) 掌握一维数组和二维数组的定义、初始化和输入输出的
方法
2) 掌握字符数组和字符串函数的使用
3) 掌握与数组有关的算法
2、 实验内容
1) 例题6.2
2) 例题6.3
3) P168习题 2
4) P168 习题 4
5) P168习题 5
6) 例题6.4
7) 例题6.5
8) P168习题 3
9) P168习题 6
实验六字符数组与数组的综合应用一、实验目的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个),求出每个字符串的长度,并打印最长字符串的内容。
实验六,数组(二) 数 数 组 (二) 一、 实验目的 1.掌握一维数组和二维数组的定义、赋值和初始化的方法 2.掌握字符数组的使用 3.熟练掌握与数组相关的各种算法 二、 实验任务 1 .阅读、调试、运行程序,比较阅读的结果和运行的结果。 (1) #includestdio.h void main() { char ch={“12ab56"}; int i,s=0; for(i=0;ch[i]="0"ch[i]="9";i+=2) s=10*s+ch[i]-"0"; printf("%d\n",s); } (2) 运行下面程序时,输入 abCR cCR defCR #includestdio.h #define N 6 void main() { char c[N]; int i=0; for( ;ic[i]=getchar(),i++); for(i=0;ii++) putchar(c[i]); } (3) #includestdio.h void main() { int a={1,2,2,3,4,3,4,5,1,5}; int n=0,i,j,c,k; for(i=0;i10-n;i++) { c=a[i]; for(j=i+1;j10-n;j++) if(a[j]==c) { for(k=j;k10-n;k++) a[k]=a[k+1]; n++; } } for(i=0;i(10-n);i++) printf("%d",a[i]); } (4) #include stdio.h void main() { int i; char a[]="Time",b[]="Tom"; for(i=0;a[i]!="\0"b[i]!="\0";i++) if(a[i]==b[i]) if(a[i]="a"a[i]="z") printf("%c",a[i]-32); else printf("%c",a[i]+32); else printf("*"); } (5) #includestdio.h #define LEN 4 void main() { int j,c; static char n[LEN+1]={"8980","9198"}; for(j=LEN-1;jj__) {c=n[j]+n[j]-2*"0"; n[j]=c%10+"0"; } for(j=0;jj++) puts(n[j]); } 2. 完善程序,并调试运行 (1) 以下程序的功能是删除一个字符串中的所有数字字符。 #include "stdio.h" void delnum(char *s) {int i,j; for(i=0,j=0; (1) "\0" ;i++) if(s[i]"0" (2) s[i]"9") { (3) ;j++;} s[j]="\0"; } (2) 下面程序的功能是:对从键盘上输入的两个字符串进行比较,然后输出两个字符串中第一个不相同字符的 ASCII 码之差。例如:输入的两个字符串分别为 abcdefg 和 abceef,则输出为-1。 #include stdio.h void main ( ) { char str1,str2; int i,s; printf("\n Input string 1:\n");gets(str1); printf(“\n Input string 2:\n”);gets(str2); i= (1) ; while((str1[i]==str2[i])(str1[i]!= (2) )) i++; s= (3) ; printf("%d\n",s); } (3) 下面程序的功能是:将字符数组 a 中下标值为偶数的元素从小到大排列,其他元素不变; #include “stdio.h” #include string.h void main() { char a[]=”clanguage”,t; int i,j,k; k=strlen(a); for(i=0;i=k-2;i+=2) for(j=i+2;j (1) ) if( (2) ) { t=a[i];a[i]=a[j];a[j]=t;} puts(a); printf(“\n”); } (4) 下例程序的功能是生成数列 1 6 4 9 7 12 10 15 13 18。 #include stdio.h void main() {int a={1}; int i; for( (1) ;ii++) if(i%2!=0) a[i]= (2) +5; else a[i]=a[i-1]-2; for(i=0;ii++) printf("%d ", (3) ); } (5) 将一维数组各元素循环左移一次。 #include stdio.h void main() {int a,i,t; for(i=0;ii++) scanf("%d", (1) ); t= (2) ; for(i=1;ii++) a[i-1]= (3) ; a=t; for(i=0;ii++) printf("%d ",a[i]); } (6) 用“顺序查找“法查找在一组数找一个数。 #include stdio.h #define N 10 void main() {int (1) ,i,k; for(i=0;ii++) scanf("%d",a[i]); scanf("%d", i=0; while(iN (2) ) i++; if( (3) ) printf("find"); else printf("not find"); } 3. 修正程序,并调试运行 (1) 以下程序的功能是统计一个字符串中的字母、数字、空格、和其它字符的个数。 #include "stdio.h" void main () {char s; int a={0}; int k,i; gets(s1); for (i=0;s[i]!="\0";i++) if ("a"=s[i]s[i]="z"||"A"=s[i]s[i]="Z") b++; /__found__/ else if (0=s[i]s[i]=9) b++; else if (s[i]==" ") b++; else b++; puts(s1); for(k=0;kk++) /__found__/ printf("%4c",a[k]); } } (2) 有十个字符串,在每个字符串找出最大字符,按一一对应的顺序放入一维数组 a 中,即第 i个字符串的最大字符放入 a[i]中。输出每个字符串的最大字符。 #include stdio.h void main() {char s; /__found__/ int a; int i,j; for(i=0;ii++) /__found__/ puts(s[i]); for(i=0;ii++) {a[i]=s[i]; for(j=1;s[i][j]!="\0";j++) if(a[i]s[i][j]) a[i]= s[i][j]; } for(i=0;ii++) printf("%d,%c",i, a[i]); } (3) 以下程序的功能是统计一个字符串中的字母、数字、空格、和其它字符的个数。 #include "stdio.h" void main () {char s; int a={0}; int k,i; gets(s1); for (i=0;s[i]!="\0";i++) if ("a"=s[i]s[i]="z"||"A"=s[i]s[i]="Z") b++; /__found__/ else if (0=s[i]s[i]=9) b++; else if (s[i]==" ") b++; else b++; puts(s1); for(k=0;kk++) /__found__/ printf("%4c",a[k]); } } (4) 下面程序的功能是检查一个二维数组是否对称(即:对所有 i 和 j 都有 a[i][j]=a[j][i])。 #include stdio.h void main() {int a={1,2,3,4,2,2,5,6,3,5,3,7,4,6,7,4}; int i,j,found=0; for(j=0;jj++) /__found__/ for(i=j+1;ii++) if(a[j][i] != a[i][j]) /__found__/ {found=1;continue;} if(found) printf("no"); else printf("yes"); } 4 .编写程序,并调试运行 (1) 用“折半”查找法,在一组按降序排列的数中查找一个值为 K 的元素。若有,输出 YES;若无,输出 NO。 (2) 读入一个字符串,将所有的大写字母转换成相应的小写字母,然后输出。 (3) 读入一串字符,统计字符“c”的出现次数。 (4) 将正整数 n(1=n=__)转换成相应的二进制数并输出。 (5)
一维数组和二维数组1.已知一个数组有10个元素,值分别是3,6,8,4,5,66,80,72,69,70。
编程,将数组元素逆置输出。
#include<stdio.h>main(){int t,i,b[10]={3,6,8,4,5,66,80,72,69,70};for (i=0;i<=4;i++){ t=b[i];b[i]=b[9-i]; b[9-i]=t;t=0;}for (i=0;i<=9;i++){ printf("%d ",b[i]);}printf("\n");}编程求Fibonacci 数列的前30项,其数列的定义为fn = 要求数列中的值放在数组中,并按每行5个数的格式输出该数列。
#include<stdio.h>main(){int a[30],i,j,t;a[0]=a[1]=1;for (i=2;i<30;i++)a[i]=a[i-1]+a[i-2];00i=0;for (j=1;j<=6;j++){for (t=0;t<5;t++){ printf("%d\t",a[i]);i++;}printf("\n");}输入一个4行4列的二维数组,统计偶数的个数,并输出所有小于5的数。
#include<stdio.h>main(){int a[4][4]={{2,6,7,9},{3,5,4,11},{12,8,1,13},{21,33,64,25}},i,j,m;m=0;1 (n=2) 1 (n=1)for (i=0;i<4;i++){ for (j=0;j<4;j++)printf("\n");} printf("СÓÚ5µÄÊýÎfor (i=0;i<4;i++) for (j=0;j<4;j++){if (a[i][j]%2==0)m=m+1;if (a[i][j]<5)printf("%3d",a[i][j]);}printf("\n");printf("żÊý¸öÊýΪ:%d\n",m);}已知一个二维数组:{{14,26,18,17},{24,37,21,8},{19,31,22,16},{7,19,14,26}},编#include<stdio.h>main(){inta[4][4]={{14,26,18,17},{24,37,21,8},{19,31,22,16},{7,19,14,26}},i,j,x,y,m,sum=0; m=a[0][0]; for (i=0;i<4;i++) for (j=0;j<4;j++)if (m>a[i][j]){ m=a[i][j]; x=i; y=j; }printf("ÐÐϱêÓëÁÐϱê·Ö±ðΪ£º%d %d\n",x,y);for (i=0;i<4;i++)sum=sum+a[i][i];printf("Ö÷¶Ô½ÇÏßÔªËØÖ®ºÍΪ£º%d\n",sum);}。
实验六异常处理和数组的操作一、目的和要求1、理解异常处理的概念。
2、掌握异常处理的实现机制。
3、了解.NET Framework中的常见异常类。
4、熟练掌握C#关键字try、catch、throw和finally的使用。
5、掌握数组的声明、实例化和初始化6、掌握数组元素的引用7、掌握一维、二维数组的操作二、实验内容1、编程改错题判断以下程序是否可以捕获两个异常。
如不可以,如何更改?using System;class MainClass{static void ProcessString(string s){if (s == null){throw new ArgumentNullException();}}static void Main(){try{string s = null;ProcessString(s);}catch (Exception e){Console.WriteLine("{0} Second exception caught.", e);}catch (ArgumentNullException e){Console.WriteLine("{0} First exception caught.", e);}}}2、下列循环一共会被执行多少次int i = 0;while (i < 10){count++;try{throw new OverflowException();}catch (ArgumentException){i += 2;}catch (ArithmeticException){i += 4;}catch (SystemException ){i += 6;}finally{i--;}}3、编写异常处理程序,其功能用于实现求三角形周长过程中可能遇到的情况,用C#的异常处理来实现。
具体要求:(1)在程序项目中加入一个三角形类Triangle,为其定义三个字段a,b,c表示三角形的三边长(2)定义Triangle类的构造函数,在其中对三角形各边进行初始化。