一维数组
内存分配
#include<stdio.h>
int main(){
int a[5]={2,3,4,5,6};
for(int i=0;i<5;i++){
printf("%p\n",&a[i]);
}
char b[5]={97,98,99,100,101};
for(int i=0;i<5;i++){
printf("%c ",b[i]);
}
return 0;
}
清零函数
bzero
查看手册函数需要什么库
![](https://img-blog.csdnimg.cn/direct/b620749e51b94e12ad449d6638e7436f.png)
![](https://img-blog.csdnimg.cn/direct/82f72cddf8c541d695ca018a88a229a6.png)
库函数:
#include <strings.h>
功能:
清空数组
参数:
数组首地址
返回值:
#include<stdio.h>
#include<strings.h>
int main(){
int a[5]={2,3,4,5,6};
bzero(a,20);//bzero(a,sizeof(a));
printf("%d",a[0]);
}
memset:
库函数:
#include <string.h>
功能:
清空数组
参数:
数组首地址,c替换的数据,n:清空的字节大小
返回值
#include<stdio.h>
#include<strings.h>
#include <string.h>
int main(){
int a[5]={2,3,4,5,6};
memset(a,0,20);
// memset(a,0,sizeof(a));
printf("%d",a[0]);
return 0;
}
int 4字节 按字节赋值 0000 0001 0000 0001 0000 0001 0000 0001
字符数组:
字符数组存放字符串
字符串结束标志'\0'
#include<stdio.h>
int main(){
char a[6]={"hello"};
char b[6]="hello";
char c[]="hello";
char d[33]="hello";
printf("%d %d %d %d",
sizeof(a),sizeof(b),sizeof(c),sizeof(d));
}
字符数组和一维数组区别:
#include<stdio.h>
int main(){
char a1[]={'a','b','c'};
char a2[]={"abc"};
printf("%d %d ",
sizeof(a1),sizeof(a2));
}
输入输出:
1.for:
#include<stdio.h>
int main(){
char a[6]={"hello"};
for(int i=0;i<6;i++)
printf("%d ",a[i]);
}
2.
#include<stdio.h>
int main(){
char a[]={"hello world"};
printf("%s\n",a);
}
输入字符数组,不能空格输入,不显示,scanf遇到空格或回车时,赋值结束
char a[33];
scanf("%s",a);
下面的格式可以解决这个问题
#include<stdio.h>
int main(){
char a[33];
scanf("%[^\n]",a);
puts(a);
}
3.char *gets(char *s);
#include<stdio.h>
int main(){
char a[33];
gets(a);
printf("---%s\n",a);
}
4.puts()
#include<stdio.h>
int main(){
char a[33];
gets(a);
int res=puts(a);
printf("%d\n",res);
return 0;
}
#include<stdio.h>
int main(){
char a[33];
gets(a);
puts(a);
}
注意:警告不影响执行结果
练习:输入一串字符,计算其中空格个数
#include<stdio.h>
int main(){
char a[33];
gets(a);
int sum=0;
int j=sizeof(a);
for(int i=0;i<j;i++){
if(a[i]==' '){
sum+=1;
}else{
continue;
}
}
printf("%d",sum);
return 0;
}
方法2:
#include <stdio.h>
int main() {
char a[100];
int i, sum = 0;
printf("请输入一串字符: ");
gets(a);
for(i = 0; a[i] != '\0'; i++) {
if(a[i] == ' ') {
sum++;
}
}
printf("空格个数为: %d\n", sum);
return 0;
}
注意:命令后加-Wall可以查看自己的错误
练习:
字符串"hello",倒序输出:olleh
方法1:
格式1:
#include <stdio.h>
int main() {
char a[100],k,n,sum=0;
gets(a);
for(int i=0;a[i]!='\0';i++){
sum+=1;
}
n=sum/2;
for(int i=0;i<n;i++){
k=a[i];
a[i]=a[sum-i-1];
a[sum-i-1]=k;
}for(int j=0;j<sum;j++){
printf("%c",a[j]);
}
return 0;
}
格式2:
#include <stdio.h>
int main() {
char a[100],k,n,sum=0;
gets(a);
for(int i=0;a[i]!='\0';i++){
sum+=1;
}
n=sum/2;
for(int i=0;i<n;i++){
k=a[i];
a[i]=a[sum-i-1];
a[sum-i-1]=k;
}puts(a);
return 0;
}
方法2:
计算字符串实际元素个数
strlen函数
功能:计算字符串实际元素个数
参数:字符串首地址
返回值:实际元素个数
#include <stdio.h>
#include <string.h>
int main() {
char a[33];
gets(a);
int res=strlen(a);
printf("%d",res);
//printf("%d",strlen(a));
return 0;
}
sizeof和strlen的区别:
- sizeof是关键字,strlen是函数
- sizeof计算实际开辟的空间大小,strlen计算字符串实际元素个数
- sizeof计算包括'\0',strlen不包括,char a[]="hello";
练习:实现字符串的大小写转换
#include <stdio.h>
#include <string.h>
int main() {
char a[33];
gets(a);
int res=strlen(a);
printf("字符串实际大小是%d\n",res);
for(int i=0;i<res;i++){
if('A'<=a[i]&&a[i]<='a'){
a[i]+=32;
}else{
a[i]-=32;
}
}puts(a);
return 0;
}
练习汇总:
1.
字符串"hello",倒序输出:olleh
方法1:
格式1:
#include <stdio.h>
int main() {
char a[100],k,n,sum=0;
gets(a);
for(int i=0;a[i]!='\0';i++){
sum+=1;
}
n=sum/2;
for(int i=0;i<n;i++){
k=a[i];
a[i]=a[sum-i-1];
a[sum-i-1]=k;
}for(int j=0;j<sum;j++){
printf("%c",a[j]);
}
return 0;
}
格式2:
#include <stdio.h>
int main() {
char a[100],k,n,sum=0;
gets(a);
for(int i=0;a[i]!='\0';i++){
sum+=1;
}
n=sum/2;
for(int i=0;i<n;i++){
k=a[i];
a[i]=a[sum-i-1];
a[sum-i-1]=k;
}puts(a);
return 0;
}
2.
练习:实现字符串的大小写转换
#include <stdio.h>
#include <string.h>
int main() {
char a[33];
gets(a);
int res=strlen(a);
printf("字符串实际大小是%d\n",res);
for(int i=0;i<res;i++){
if('A'<=a[i]&&a[i]<='a'){
a[i]+=32;
}else{
a[i]-=32;
}
}puts(a);
return 0;
}
3.
练习:输入一串字符,计算其中空格个数
#include<stdio.h>
int main(){
char a[33];
gets(a);
int sum=0;
int j=sizeof(a);
for(int i=0;i<j;i++){
if(a[i]==' '){
sum+=1;
}else{
continue;
}
}
printf("%d",sum);
return 0;
}
课后作业:
2.
3.
4.
5.
6.
7.
8.