1、ASCII码
printf("%c\n", 'a');
printf("%c\n", 97);输出的都是a,ASCII码97对应的是a
int main()
{int arr[] = { 73,32,99,97 };
int i = 0;
int size = sizeof(arr) / sizeof(arr[10]);//计算数组元素 个数
while (i<size)
{
printf("%c", arr[i]);//打印ASCII码
i++;
}
return 0;
}打印出来的是{73,32,99,97}对应的ASCII码 => I ca
//打印出生年月日
int main()
{
int year = 0;
int month = 0;
int day = 0;
scanf("%4d%2d%2d", &year, &month, &day);//%2d是 获取2位
printf("year = %d\n", year);
printf("month = %02d\n", month);//%02d是拿0补齐2位
printf("day = %02d\n", day);
return 0;
}
//学生基本信息
int main()
{
int id = 0;
float c = 0.0f;//后面加f以float存储,否则以double存储形式
float math = 0.0f;
float eng = 0.0f;
scanf("%d,%f,%f,%f", &id, &c, &math, &eng);
printf("学号为%d每科分数:%.2f,数学为%.2f,英语为%.2f ",id,c,math,eng);
return 0;
}//float存储小数
0 1 0 1 bit
2^-1 2^-2 2^-3
0.5 0.25 0.125
0.5 0 0.125
=> 0.625 结果
//printf的返回值
int main()
{
int n = printf("hello world!\n");
printf("%d\n", n);printf("printf(\"Hello world\\n\");\n");
printf("count << \"Hello world!\" << endl;\n");
return 0;
}=>
hello world!
13
printf("Hello world\n");
count << "Hello world!" << endl;//printf返回值为int ,数值为字符串的大小
\为打印的时候防止转义
//找最大数
int main()
{
int arr[4] = { 0 };//初始化
int i = 0;
while (i < 4)
{
scanf("%d", &arr[i]);
i++;
}
int max = arr[0];
i = 1;
while (i < 4)
{
if (arr[i] > max)
{
max = arr[i];
}
i++;
}
printf("%d\n", max);
return 0;
}
//计算球体积
int main()
{
float r = 0.0f;
float v = 0.0f;
scanf("%f", &r);
v = 4 / 3.0 * 3.1415 * r * r * r;
printf("%.3f\n", v);
return 0;
}
//计算体重指数
int main()
{
int weight = 0;
int high = 0;
scanf("%d %d", &weight, &high);
float bmi = weight / (high / 100.0) / (high / 100.0);
printf("%.2f\n", bmi);
return 0;
}
2、while循环
//while 循环
int main()
{
int i = 1;//初始化
while (i <= 10)//判断
{
printf("%d ", i);//循环语句
i++;//调整
}
}
3、for循环
for(表达式1;表达式2;表达式3)
循环语句
表达式1:初始化
表达式2;判断
表达式3:调整
for(int i = 1;i <= 10;I++)
{
printf("%d ",i);
break;//跳出循环
continue;//跳过本次循环后面的代码,直接来到i++,与while循环不一样
//建议:不可在for循环体更改循环变量,for循环控制变量采用前闭后开
}
int main()
{
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//0--9
for (int i = 0; i < 10; i++)//最好不要i <=9
{
printf("%d ", arr[i]);
}
return 0;
}
for循环的变种
for( ; ; )//for循环,判断部分省略,意味着判断值恒成立为真
= > 死循环
int main()
{
int i = 0;
for (; i < 10; i++)//省略了初始化
{
printf("%d\n", i);
}
return 0;
}=>可以执行
int main()
{
for (i = 0; i < 10; i++)
{
for (j = 0; j < 10; j++)//外此循环一次后,j = 10,不满足内循环,循环一次
{}
}
return 0;
}如果省略初始化,打印10次
for(int i = 0;i<10;i++)与int i = 0;for(i = 0;i<10;i++),C99语法支持int 写在for里面
//for循环采用多个变量控制变量
int main()
{
int y = 0;
for (int x = 0, y = 0; x < 10, y < 10; x++, y++)
{
printf("%d %d\n", x, y);
}
return 0;
}//可以运行
3、do while循环
do
{
循环语句;
}while(条件式);
break:跳出循环
continue:跳过后面循环语句接着判断下一次循环
//计算n的阶层
int main()
{
int ret = 1;
int i = 1;
int n = 0;
scanf("%d", &n);
for (i = 1; i <= n; i++)
{
ret = ret * i;
}
return 0;
}
//计算1!+2!+3!......+10!;
int main()
{
int n = 0;
int ret = 1;
int sum = 0;
for (n = 1; n <= 10; n++)
{
ret = 1;
for (int i = 1; i <= n; i++)
{
ret += ret * i;
}
sum = sum + ret;
}
printf("%d\n", sum);
}//优化
int main()
{
int n = 0;
int ret = 1;
int sum = 0;
for (n = 1; n <= 10; n++)
{
ret = ret * n;
sum = sum + ret;
}
printf("%d\n", sum);
return 0;
}
//遍历查找在一个有序数组查找一个数
int main()
{
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
int find = 7;
int size = sizeof(arr) / sizeof(arr[0]);
for (int i = 0; i < size; i++)
{
if (arr[i] == find)
{
printf("找到了,下标是:%d\n", i);
break;
}if (i == size)
{
printf("找不到\n");
}
}
}
二分法查找
//二分法查找在一个有序数组查找一个数
int main()
{
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
int find = 7;
int size = sizeof(arr) / sizeof(arr[0]);int left = 0;
int right = size-1;
while(left <= right)
{
int mid = (left + right)/2;
if (arr[i] find)
{
left = mid +1;
}else if (arr[mid]>find)
{
right = mid -1;
}else{
printf("找到了,下标是:%d\n", i);
}
if(left > right)
{
printf("找到了,下标是:%d\n", i);
}
}}