| 数组一维数组用一个变量来存储具有一定关系的数据,的数据集合叫数组其中存储的变量是数组元素
 a [ i ]
 定义时: int a [ 100 ]
 部分赋值时,后续的具数据可以缺省 double balance[5] = {1000.0, 2.0, 3.4, 7.0, 50.0}
int last[5] = {1,2,3}
int last[5] = {1,NULL,3,NULL,5}
 **不建议!**以变量定义数组,例如: int n=10;
int a[n]
 练习练习:定义一个一维数组a[6]={1,4,6,2,4,10},输出其中最大的数组元素与下标 #include<stdio.h>
int main(){
	int a[6]={1,5,6,7,4,6};
	int i=0;
	int x=0;
	for(i=1 ; i<6 ; i++){
		if(a[x]<a[i]){
			a[x]=a[i];
			x=i;}
	}
	printf("a[%d]=%d",x,a[x]);
	return 0;
}
  
 扩展“a” 是一个指向 “&a[0]” 的指针
 因此,*(a + 4) 是一种访问 a[4] 数据的合法方式
 double *p;
 double a[10];
 p = a;是合法的
 使用*p、*(p+n)访问数据
 字符数组char a[10]; 字符串多个字符构成的序列,其实字符串==字符数组,但有一定的区别 所以,赋值时可以char a[10]=“abcdef”
 注意错误用法:
 a="abcdef"
a [10]="abcdef"
 **常量字符串末尾默认有一个 ’ \0 ’ **
  特殊的定义方法:
 int a[] = {1,2,3,4,5};
char str[] = {'c','a','b'};
char str[]="acb";
sizeof(a)
 切忌: 越界定义跟赋值傻傻分不清字符串的结束’ \0 ‘,在定义了长度后,没有字符的地方都是’\0’
 输入与输出 输出格式化:"%s",遇到’ \0 '结束
 ?在char a [6]="abcdef"时到底会怎样参考
 输入scanf("%s",a);//输入一整串
 接收的字符串 空格或回车结束。例如:输入 123 231 ,存入的只有123
 练习输入一个字符串,获取字符串中有多少个大写字母,小写字母
  
  多维数组作业 选择法、冒泡法排序,i<4
  数组?小为20,输?10个整数,在输?是就进?排序,得到降序序列。之后每输??个,不打 乱数组降序 已知有?个字符数组,把数组中?写字?改为小写字?,小写字?改为?写字?char a[50] = “aBcDeFgHiJ”;
 #include<stdio.h>
int main(){
        char str[50];
        scanf("%s",str);
        for(int i=0;str[i]!='\0';i++){
                if(str[i]>='A'&&str[i]<='Z'){
                        str[i]=str[i]+32;
                }
                else if(str[i]>='a'&&str[i]<='z'){
                        str[i]=str[i]-32;
                }
        }
        printf("%s",str);
}
 已知有?个字符数组b[] =“hello”,把数组b拷?到数组a[10]中
 #include<stdio.h>
int main(){
    char b[10] ="hello";
    char a[10] ;
    for (int i = 0; i < 10; i++)
    {
        a[i]=b[i];
    }
    printf("b:%s\n",b);
    printf("a:%s",a);
    return 0;
}
 有两个数组str1,str2,把数组str2与str1拼接在?起存放在str1中str1[20] = "hello ";str2[] = "world
 #include<stdio.h>
int main(){
    char str1[20] = "hello ";
    char str2[] = "world";
    int count1=0;
    int count2=0;
    for(int i=0;str1[i]!='\0';i++){
        count1++;
    }
    for(int i=0;str2[i]!='\0';i++){
        count2++;
    }
    int k=0;
    for (int j = count1; j < count1+count2; j++)
    {
        str1[j]=str2[k];
        k++;
    }
    
    printf("%s\n",str1);
    return 0;
}
 |