数组
一维数组
用一个变量来存储具有一定关系的数据,的数据集合叫数组
其中存储的变量是数组元素
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]中
** 注意:sizeof() 是字节 **
#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;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)