分支结构
if(a>b){
printf("你真美\n");
}else{
printf("你真帅\n");
}
========================================================
循环
for(int i= 0;i< 100;i++)i++{
int temp = i + 1;
printf("%d",temp);
}
例: 1--100之间7的倍数
for(int i = 0;i <100;i++){
if(i % 7 ==0){
printf("%d",i);
}
}
======================================================
多层循环的嵌套
for(int i = 1; i < 4; I++){
for (int j = 1;j < 4;j++){
printf("\n";)
}
}
例: /* 1 2 3
1 2
1 */
for(int i = 1; i < 4;i++){ // 外层循环控制趟数
for(int j = i; j <= 4 - 1; j++){ //内层循环表示每行有几个数 j = 1 代表第一个数是1
printf("%d",j);//外层循环一次内层循环一遍,外层循环在进行下一次,
}
printf("\n");
}
======================================================
while循环----理解为分解版的for循环(未知次数但有循环条件)
1,设置循环变量
int i = 0;
2,开始while
while(i < 100) {
printf("%d",i+1);
3,设置循环增量
i++
}
例: 10亿每天花一半,花多少天
long money = 100000000;
int day = 0;
while(money != 0){
day++;
money = money / 2;
}
printf("%d",day);
======================================================
break 关键字
在循环中一旦执行到break,就会结束离他最近一层循环
for(int i = 0; i < 30; i++){
if (i == 10){
printf("一往而生");
break;
}
printf("情不知所起");
}
======================================================
continue 一旦碰到此关键字,会跳过本次循环,继续下一次循环
for (int i = 1; i < 10;i++) {
if(i = =3){
printf("把这个扔了继续下一个");
continue;
}
printf("吃地%d个包子");
}
======================================================
开关语句
int tel = 608;
switch (tel) {
case 605:
printf("欢迎致电市场部");
break;
case 606:
printf("欢迎致电调研部");
break;
case 607:
printf("欢迎致电教学部");
break;
default:
printf("亲,你走错了");
break;
}
======================================================
格式化输入函数
int s;
printf("请输入一个数字:");
scant("%d".&s);
======================================================
数组:快速创建多个变量,缺点数组中只能存储相同类型的数据,
数据类型: 数组名[元素个数] = {值1,值2,值3.....}
注意: 数组的元素个数只能为整形常量 不要写变量
int array[5] = {2,4,5,6,7};
char a[3] = {'t','i','v'};
可以不设置数组个数,系统会按照数组赋值自行分配
short b[] = {2,4,6,7};
函数sizeof()可以帮助计算变量在内存中占得字节数
lu (unsigned long)无符号长整型
printf("%lu\n",sizeof(array));
指定数组元素个数,所给数组赋的值得个数必须小于等于元素个数
int c[5] = {22,3,4,5,43,34};
//数组的下标
//从0开始,最大下标是元素个数减一,
//意义:帮助准确找到某个元素
//使用原则:数组名[元素下标]
printf("%d",array[2]); // 第三个元素
array[0] = 222; //改值直接重新赋值
//数组的输出依赖循环
//通过循环遍历数组的每一个下标,来取出数组中的每一个元素
//注意 初始化变量的值要从0开始
for (int i = 0; i < sizeof(array) / 4;i++){
printf("%d",array[i]);
}
//随机数----arc4random()
// int num1 = arc4random() % 101;
// printf("取出的随机数的数值为:%d\n",num1);
//闭合区间 [10 -- 20]
int num2 = arc4random() % (20 - 10 + 1) + 10;
printf("取出的随机数的数值为:%d\n",num2);
练习 :定义整形数组,包含10个元素,元素的范围是[30 ,70]数组初始值为0,给数组随机赋值,并且求出元素的和以及平均值
int numArray[10] = {};
int sum = 0;
for (int i = 0; i < 10;i++){
numArray[i] = arc4random() % (70 - 30 +1) +30;
sum += numArray[i];
}
printf("数组的和为:%d,平均值为:%.2f\n",sum,sum / 10);
练习3:定义元素个数为10�的整形数组,元素赋值随机范围[30,70],求数组中的最小值和最大值.
int arr3[10] = {0};
int max = 0; // 0---29都可以用来存储最大值
int min = 71; //71以上的数都可以,用来存储最小值
for (int i = 0; i< 10; i++) {
arr3[i] = arc4random() % (70 - 30 + 1) + 30;
//将随机的每一个值相比较
//取最大
if(max < arr3[i]){
max = arr3[i];
}
//取最小
min = min > arr3[i] ? min :arr3[i];
}
printf("最大值为:%d, 最小值为%d",max,min);
练习4: 定义俩个整形数组,元素个数为10,数组取值范围随机[20,60],将这俩个数组的元素放入一个新的数组中
int arr4[10] = {0},arr5[10] = {0},arr6[20] = {0};
for (int i = 0; i < 10; i++) {
arr4[i] = arc4random() % (60 - 20 + 1) + 20;
arr5[i] = arc4random() % (60 - 20 + 1) + 20;
//俩个元素同时赋值给第三个数组
arr6[i] = arr4[i];
arr6[i + 10] = arr5[i];
printf("%d,%d\n",arr4[i],arr5[i]);
}
for (int i = 0; i < 20; i++) {
printf("新数组为:%d\n",arr6[i]);
}
======================================================
//冒牌排序
//需要双层循环,外层控制循环趟数,内层控制循环次数
//提高效率而言外层趟数为元素个数-1,内层循环处于递减状态,为元素个数-1-i,
//内层循环必须设置元素个数-1的操作,要防止下标越界.
int f[6]= {23,4,54,66,33,43};
for(int i = 0; i < 6 - 1;i++){
for (int j = 0; j < 6 - 1 - i; j++) {
//升序
if (f[j] > f[j+1]) {
//前者大于后者的话 就交换位置
int temp = f[j];
f[j] = f[j+1];
f[j+1] = temp;
}
}
}
for(int i = 0; i <6;i++ ){
printf("%d",f[i]);
}
======================================================
//字符数组,存储字符的数组
char str1[7] = {'t','y','f','g','k','s'};
//打印下标为3的字符
printf("%c\n",str1[3]);
//将小写的g改成大写的
str1[4] = 'G';
printf("%s\n",str1);
//定义字符串-------
//字符串本身就是字符数组,只是字符串的结尾是以\0结尾的,如果在字符数组中也设置了\0,那么此字符数组也可以当做字符串来输出
char str2[] = "hello world";
printf("%s\n",str2);
//列举字符串情况
//1,设置的元素个数,大于实际元素个数
char str3[9] = {'u','l','o'};
printf("%s\n",str3);
//手动设置\0
char str4[] = {'h','i','\0'};
printf("%s\n",str4);
//********____字符串操作函数
//计算字符串长度,以\0结束的biaoshi
char string[] = "you are beautiful";
//注意长度属于计算类型,值是 >= 0 的
unsigned long strLenght = strlen(string); //strlen 字符串长度
printf("%lu\n",strLenght);
//字符串拼接,讲一个字符串拼接到另一个字符串
char string2[30] = "hello";
char string3[] = "world";
strcat(string2, string3); // 将字符串3拼接到字符串2后面
printf("%s\n",string2); //strcat 拼接
//字符串拼接字符串拷贝 需要注意变量内存问题
//字符串拷贝
strcpy(string2, "hahahah");//strcpy 拷贝
printf("%s\n",string2);
//字符串比较,比较俩个字符串对应位置的字符,比较的是字符串整数值,对应位置的值相减,结果不为0就结束比较
/*
char s1[] = "abcd";
char s2[] = "abcde";
int result = strcmp(s1, s2); // strcmp 差值
printf("差值为:%d\n",result);
======================================================
//宏定义 纯大写 作用 给一个值起一个新名字,在程序中可以把相同的值宏定义,方便后期查阅和修改
//命名规则:纯大写 或者 k+驼峰
//宏定义相当于常量,前者代替后者,所以不要加分号
#define COLORTYPE "red"
#define kColorType "red"
#define NUM 89
#define A int
#define B A
#define MAXVALUE(a,b) a > b ? a :
======================================================
//函数允许嵌套调用,但不允许嵌套定义
//函数 声明---定义---调用
//声明 分号结尾 //函数声明可写可不写
// 练习求俩个数的最大值
.h文件声明
int twoMaxValue(int a,int b);
// 形参 形式参数 起占位以及提示作用
.m文件实现
int twoMaxValue(int a,int b){
return a > b ? a : b;
}
main函数里调用
int m = twoMaxValue(89,9);
printf("%d",m);
练习1:定义函数,功能为输入字符,返回字符对应的整数值
int getCharValue (char a){
return a;
}
练习:将char s[] = "asdyfsg"反向输出
void printChar(char str[],int count){
//如果参数列表中没有count参数,我们可以使用strlen 计算字符串长度
unsigned long length = strlen(str); // 字符串的长度
for (int i = 0; i < length / 2; i++){
//交换前后字母
char s = str[i];
str[i] = str[length - 1 - i];
str[length - 1 - i] = s;
}
printf("%s\n",str);
}
练习3:定义函数,功能为输出某一个数的所有约数
void yueshu(int a){
for (int i = 1; i <= a; i++) {
if (a % i == 0) {
//能整除 是约数
printf("%d ",i);
}
}
}
练习4:定义函数,功能为找出三个整数的中间值,并返回
int mid(int a, int b,int c){
int f[3] = {a,b,c};
for (int i = 0; i < 3 - 1; i++) {
for (int j = 0; j < 3 - 1 - i ; j++) {
if (f[j] > f[j + 1]) {
int temp = f[j];
f[j] = f[j+1];
f[j+1] = temp;
}
}
}
int k = (sizeof(f) / 4 + 1) / 2;
printf("888888888%d\n", k);
return f[(sizeof(f) / 4 - 1) / 2];
}
练习5: //数组名 以及 数组元素个数不一致
//封装冒泡排序(写一个冒泡函数)就需要把不一样的值暴露
void sortArray(int array[],int count){
for (int i = 0 ; i < count - 1; i++) {
for (int j = 0; j < count - 1 - i; j++) {
if (array[j] > array[j + 1]) {
int temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
//输出
for(int i = 0; i < count;i++){
printf("%d ",array[i]);
}
}
//**********************************************
// int temp = getCharValue('a');
// printf("字符对应的整数值:%d\n",temp);
//*********************************************
// changeValue(23, 67);
//*********************************************
// yueshu(20);
//*********************************************
// int m = mid(25, 78, 39);
// printf("中间值为:%d\n", m);
//*********************************************
//int arr[4] ={34,5,65,7};
//注意 调用函数
//array 是要求我们放数组的地址 数组名就是该数组的地址
//sortArray(arr, 4);
char s[] = "dhjfhlk";
printChar(s, 7);
//布尔 也是整形
BOOL d = YES; //可以赋数字也可以是yes 或者no
printf("%d\n",d);
网友评论