------
Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
小练习:
字符串数组:
------
Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
数组
数组:数组就是用来存储一组数据的
特点:1、只能存放一种类型的数据,比如int类型的数组,float类型的数组
2、里面存放的数据成为“元素 ”
定义格式:类型 数组名[元素个数];
数组的基本使用及注意:
#include <stdio.h>
int main()
{
// int ages[5] = {19,20,35,21,28};
// 指定给某一个赋值
int ages[5] = {[3]=35 ,[4]=21};//如果想在定义数组的同时进行初始化,[]内只能是常量,如整数,字符‘A’。或者不写
for(int i = 0;i<5 ;i++)
{
printf("ages[%d]是%d\n",i,ages[i]);
}
return 0;
}
void arrayUse()
{
int ages[5] = {19,20,35,21,28};
//遍历:按顺序查看数组的每一个元素
for(int i = 0;i<5 ;i++)
{
printf("ages[%d]是%d\n",i,ages[i]);
}
}
#include <stdio.h>
int main()
{
// int ages[5] = {19,20,35,21,28};
// 指定给某一个赋值
int ages[5] = {[3]=35 ,[4]=21};//如果想在定义数组的同时进行初始化,[]内只能是常量,如整数,字符‘A’。或者不写
for(int i = 0;i<5 ;i++)
{
printf("ages[%d]是%d\n",i,ages[i]);
}
return 0;
}
void arrayUse()
{
int ages[5] = {19,20,35,21,28};
//遍历:按顺序查看数组的每一个元素
for(int i = 0;i<5 ;i++)
{
printf("ages[%d]是%d\n",i,ages[i]);
}
}
小练习:设计一个函数:int arrayMax(int a[], int count),找出数组元素的最大值
#include <stdio.h>
//设计一个函数:int arrayMax(int a[], int count),找出数组元素的最大值
int main()
{
//声明函数
int arrayMax();
//定义int类型的数组arr
int arr[] = {1,3,7,90,2,100};
//定义count记录数组arr的长度
int count = sizeof(arr)/sizeof(int);
//定义max记录数组的最大元素的值
int max = arrayMax(arr,sizeof(arr)/sizeof(int));
//打印出数组元素的最大值
printf("数组元素的最大值为:%d\n",max);
return 0;
}
int arrayMax(int a[], int count)
{
//定义max为默认数组的最大元素
int max = a[0];
//利用for循环对数组进行遍历
for (int i = 0; i < count; i ++) {
//判断元素值的大小
if (a[i] > max )
{
//将较大的值赋给max
max = a[i];
}
}
//返回数组元素的最大值
return max;
}
#include <stdio.h>
//设计一个函数:int arrayMax(int a[], int count),找出数组元素的最大值
int main()
{
//声明函数
int arrayMax();
//定义int类型的数组arr
int arr[] = {1,3,7,90,2,100};
//定义count记录数组arr的长度
int count = sizeof(arr)/sizeof(int);
//定义max记录数组的最大元素的值
int max = arrayMax(arr,sizeof(arr)/sizeof(int));
//打印出数组元素的最大值
printf("数组元素的最大值为:%d\n",max);
return 0;
}
int arrayMax(int a[], int count)
{
//定义max为默认数组的最大元素
int max = a[0];
//利用for循环对数组进行遍历
for (int i = 0; i < count; i ++) {
//判断元素值的大小
if (a[i] > max )
{
//将较大的值赋给max
max = a[i];
}
}
//返回数组元素的最大值
return max;
}
字符串
字符串定义:很多个字符组合在一起就是字符串
字符串的初始化
l char a[] = “123”; 和 char a [] ={‘1’,’2’,’3’};的区别,可以比较大小
l “123”其实是由’1’、’2’、’3’、’\0’组成
l “123”的存储分布
l 字符串的输出”%s”,’\0’是不会输出的
\0的作用
l 输出char a[] ={‘o’,’k’};
l 在char a[]前面搞个”mj”
l 输出”mj”
l 再输出a
l char a[] = {‘i’,’t’,’\0’,’c’};
int main()
{
//char name[] = {'i', 't', 'c', 'H', 's', 't', '\0'};
char name[] = "itcast";
name[3] = 'H';
/*
int size = sizeof(name);
printf("%d\n", size);
*/
printf("我在%s上课\n", name);
return 0;
}
// 字符串的一个初始化
void test2()
{
// \0的ASCII码值是0
// 都是字符串
char name[8] = "it";
char name2[8] = {'i', 't', '\0'};
char name3[8] = {'i', 't', 0};
char name4[8] = {'i', 't'};
// 不算是一个字符串(只能说是一个字符数组)
char name5[] = {'i', 't'};
}
/*
void test()
{
// 'a' 'b' 'A'
// "jack" == 'j' + 'a' + 'c' + 'k' + '\0'
char name[10] = "jack888\n";
// 把数组传入,仅仅是个警告
printf(name);
printf(name);
printf(name);
printf("57843578435");
}*/</span>
<span style="font-size:14px;">int main()
{
//char name[] = {'i', 't', 'c', 'H', 's', 't', '\0'};
char name[] = "itcast";
name[3] = 'H';
/*
int size = sizeof(name);
printf("%d\n", size);
*/
printf("我在%s上课\n", name);
return 0;
}
// 字符串的一个初始化
void test2()
{
// \0的ASCII码值是0
// 都是字符串
char name[8] = "it";
char name2[8] = {'i', 't', '\0'};
char name3[8] = {'i', 't', 0};
char name4[8] = {'i', 't'};
// 不算是一个字符串(只能说是一个字符数组)
char name5[] = {'i', 't'};
}
/*
void test()
{
// 'a' 'b' 'A'
// "jack" == 'j' + 'a' + 'c' + 'k' + '\0'
char name[10] = "jack888\n";
// 把数组传入,仅仅是个警告
printf(name);
printf(name);
printf(name);
printf("57843578435");
}*/</span>
小练习:
编写一个函数char_contains(char str[],char c),
如果字符串str中包含字符c则返回数值1,否则返回数值0
#include <stdio.h>
#include <string.h>
int char_contains(char str[],char c);//申明
int main()
{
int result = char_contains("kdfss", '3');
printf("%d\n",result);
return 0;
}
int char_contains(char str[],char c)
{
/*
//1.遍历整个字符串
for (int i = 0; i<strlen(str); i++)
{
//1.如果发现某个字符等于参数f,直接返回1,退出函数
if(str[i] == c)
{
return 1;
}
}
//2.说明str里面不包含f
return 0;
*/
int i = 0;
while (i<strlen(str) )
{
i++;
if(str[i] == c)
{
return 1;
}
}
return 0;
}
#include <stdio.h>
#include <string.h>
int char_contains(char str[],char c);//申明
int main()
{
int result = char_contains("kdfss", '3');
printf("%d\n",result);
return 0;
}
int char_contains(char str[],char c)
{
/*
//1.遍历整个字符串
for (int i = 0; i<strlen(str); i++)
{
//1.如果发现某个字符等于参数f,直接返回1,退出函数
if(str[i] == c)
{
return 1;
}
}
//2.说明str里面不包含f
return 0;
*/
int i = 0;
while (i<strlen(str) )
{
i++;
if(str[i] == c)
{
return 1;
}
}
return 0;
}
字符串数组:
#include <stdio.h>
int main()
{
char names[3][5] = {"jack","tom","rose"};
printf("%s\n",names[2]);//输出rose
printf("%c\n",names[1][1]);//输出第二个数组的第二个元素o
return 0;
}
指针
格式:变量类型 *变量名;
定义了一个指针变量p
指针变量只能存储地址
指针就一个作用:能够根据一个地址值,访问对应的存储空间
指针变量p前面的int:指针变量p只能指向int类型的数据
#include <stdio.h>
int main()
{
int *p;
int a = 90;
// 指针变量p指向了变量a
p = &a;
*p = 10;
a = 20;
printf("%d\n",*p);//输出结果为20.*p表示指针变量p所指向的的变量
return 0;
}
void change(int n)
{
n = 10;
}
练习:
#include <stdio.h>
void change(int *n);
int main()
{
int a = 90;
change(&a);
printf("%d\n", a);
return 0;
}
void change(int *n)
{
*n = 10;
}
指向指针的指针:
#include <stdio.h>
int main()
{
int a = 10;
int *p = &a;
int **pp = &p;//指向指针的指针
**pp = 20;
printf("%d\n",a);
return 0;
}
练习:
/*
用一个函数就能输出和跟差
*/
#include <stdio.h>
int sumANDminus(int n1,int n2,int *n3);
int main()
{
int a = 10;
int b = 7;
int sum ;
int minus;
minus = sumANDminus(a ,b , &sum);
printf("和=%d,差=%d\n",sum,minus);
return 0;
}
int sumANDminus(int n1,int n2, int *n3)
{
*n3 = n1 + n2;
return n1 - n2;
}