数组 具有相同数据类型的元素的有序集合 特点: 1、元素类型相同 2、有序排列的 3、连续存储的 格式:类型 名称[个数] 1、类型是指其中元素的数据类型 2、名称是数据首元素的地址 3、个数是数组中元素的数量,不能是变量 例子:int a[5]; char b[3]; 成员访问:与相同数据类型的变量没有区别 首元素:a[0] 尾元素:a[4] 说明:成员访问,禁止越界;越界访问,后果自负。 尤其是变量作为数组下标的时候 数组初始化: 全部初始化:int a[5] = {1,2,3,4,5}; 全部初始化时,元素个数可以省略 部分初始化:int a[5] = {1,2,3}; 部分初始化时,初始化的是前面的元素; 没有被初始化的元素的值默认为0 数组大小:int a[5]; ==> sizeof(a) 只知道数组名,能否求出数组元素个数: sizeof(a)/sizeof(a[0]) 二、字符数组 定义:由字符元素构成的数组 例子:char a[5]; char a[5] = {'A','B','C','D','E'}; char a[] = {"ABCDE"}; char a[] = "ABCDE"; 字符串:由双引号括起来的一串字符,打印用%s scanf从终端获取字符串,只能是不带空格的 gets:从终端获取字符串,可以带空格 puts:向终端打印字符串 字符串末尾有一个‘\0’字符,作为结束标志; 在定义字符数组时,以字符串初始化, 长度至少为可见字符加1(字符串末尾有‘\0’) 三、递归函数 定义:函数内部调用函数本身 特点: 1、内部一定会调用自己 2、一定会有递归终止条件 3、核心操作 优点:代码简洁 缺点: 1、可读性差 2、效率低,内存占用大 3、出错不易定位 函数总结: 1、可以完成特定,可以重复使用 2、可以使函数的实现着和使用者分离 求一个整形数组的最大元素 #include<stdio.h> 2 int max(int a[],int n) 3 { 4 printf("%ld",sizeof(a)); 5 int i,ret=a[0];//ret=0; 6 for(i=1;i<n;i++) 7 { 8 if(a[i]>ret)//a[ret] 9 { 10 ret=a[i];//ret=i 11 } 12 } 13 return ret; 14 } 15 int main() 16 { 17 int a[5]={1,2,3,4,5}; 18 printf("%d\n",max(a,5)); 19 return 0; 20 } 1、求一个整型数组的第二大元素的下标 #include<stdio.h> int main(int argc,char*argv[]) { int i,j,max,foot,cmax,cfoot; int a[5]={1,2,3,4,5}; max=a[0]; for(i=0;i<5;i++){ if(a[i]>max){ max=a[i]; foot=i; } } for(i=0;i<foot;i++){ if(a[i]>cmax){ cmax=a[i]; cfoot=i; } } cmax=a[0]; for(i=0;i<foot;i++){ if(a[i]>cmax){ cmax=a[i]; cfoot=i; } } for(j=foot+1;j<5;j++){ if(a[j]>cmax){ cmax=a[j]; cfoot=j; } } printf("%d\n",cfoot); return 0; } 2、从终端获取一个字符串,分别统计其中大写字母、小写字母、数字及其它字符的个数。 1 #include<stdio.h> 2 #include<String.h> 3 int main() 4 { 5 char str[50]; 6 int len,i; 7 char c; 8 int number=0,letter=0,space=0,other=0; 9 gets(str); 10 for(i=0;i<strlen(str);i++) 11 { 12 c=str[i]; 13 if((c>='a'&&c<='z')||(c>='A'&&c<='Z')) 14 { 15 letter++; 16 } 17 else if(c>='0'&&c<='9') 18 { 19 number++; 20 } 21 else if(c==' ') 22 { 23 space++; 24 } 25 else 26 { 27 other++; 28 } 29 } 30 printf("%d,%d,%d,%d",letter,number,space,other); 31 32 return 0; 33 } 3、传入一个整数,将其转换为字符串(考虑负号) 4、使用冒泡法排序整型数组: #include<stdio.h> 2 void bubble_sort(int a[],int n) 3 { 4 int i; 5 for(i=0;i<n;i++) 6 { 7 int j; 8 for(j=i;j<n;j++) 9 { 10 if(a[i]>a[j]) 11 { 12 int temp=a[i]; 13 a[i]=a[j]; 14 a[j]=temp; 15 } 16 } 17 } 18 } 19 int main() 20 { 21 int a[5]; 22 int i; 23 for(i=0;i<5;i++) 24 { 25 scanf("%d",&a[i]); 26 } 27 bubble_sort(a,5); 28 for(i=0;i<5;i++) 29 { 30 printf("%d",a[i]); 31 } 32 printf("\n"); 33 return 0; 34 } 选择排序: 1 #include<stdio.h> 2 void selectsort(int a[],int n) 3 { 4 int i; 5 for(i=0;i<n-1;i++) 6 { 7 int j; 8 for(j=i+1;j<n;j++) 9 { 10 if(a[i]>a[j]) 11 { 12 int temp=a[i]; 13 a[i]=a[j]; 14 a[j]=temp; 15 } 16 } 17 } 18 } 19 int main() 20 { 21 //int a[]={5,4,3,2,1}; 22 int a[5]; 23 int i; 24 for(i=0;i<5;i++) 25 { 26 scanf("%d",&a[i]); 27 } 28 selectsort(a,5); 29 //int i; 30 for(i=0;i<5;i++) 31 { 32 printf("%d",a[i]); 33 } 34 printf("\n"); 35 return 0; 36 37 } 5、传入一个整数n,返回1!+2!+3!+…+n!,要求使用递归 int func(int n) 40 { 41 if(n==1) 42 { 43 return 1; 44 } 45 else 46 { 47 return n*func(n-1); 48 } 49 } 50 int main() 51 { 52 int i,n,sum=0; 53 scanf("%d",&n); 54 for(i=1;i<=n;i++) 55 { 56 sum+=func(i); 57 } 58 printf("%d\n",sum); 59 return 0; 60 }
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/u012701023/article/details/47793665