注:1.八进制:以0开头,由0~7组成的数。如,0126,050000
输出格式: printf("0%o",1234);
2..十进制:除表示正负的符号外,以1~9开头,由0~9组成。如,128,+234,-278
3.printf可以使用格式控制串“%md”输出域宽为m的十进制整数。
4.十六进制:以0X或0x开头,由0~9,A~F或a~f 组成。如,0x12A,0x5a000
输出格式: printf("0X%X",1234);
C中的三种结构:1.顺序结构 2.选择结构 3.循环结构
分支语句
if
语法结构:
if(表达式)
语句;
if(表达式)
语句1;
else
语句2;
//多分支
if(表达式1)
语句1;
else if(表达式2)
语句2;
else
语句3;
if默认只控制之后的一条语句,所以想控制两行以上得加{}
非0 就是真;0 就是假
return 之后的代码不再执行
注: 良好的代码风格《高质量C/C++编程》
常量和变量比较相等时,常量放在左边
swicth
switch(整型表达式)
{
语句项;
语句项;
语句项;
}
语句项: case 整形常量表达式:
语句;
注:在switch语句中我们没法直接实现分支,搭配break使用才能实现真正的分支。
//输出星期
int main()
{
int day = 0;
scanf("%d", &day);
switch (day)
{
case 1:
printf("星期1\n");
break;
case 2:
printf("星期2\n");
break;
case 3:
printf("星期3\n");
break;
case 4:
printf("星期4\n");
break;
case 5:
printf("星期5\n");
break;
case 6:
printf("星期6\n");
break;
case 7:
printf("星期天\n");
break;
}
//if (1 == day)
//{
// printf("星期1\n");
//}
//else if (2 == day)
//{
// printf("星期2\n");
//}
//else if (3 == day)
//{
// printf("星期3\n");
//}
......
return 0;
}
//1. 输入1 - 5输出的是“weekday”;
//2. 输入6 - 7输出“weekend”
int main()
{
int day = 0;
switch (day)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("weekday\n");
break;
case 6:
case 7:
printf("weekend\n");
break;
default: //default子句用于不能匹配的时候
printf("输入有误,请输入1-7\n");
break;
}
return 0;
}
break语句的实际效果是把语句列表划分为不同的部分。
循环语句
while
while 语法结构:
while(表达式)
{
循环语句;
}
在屏幕上打印1-10的数字。
int main()
{
int i = 1;
while (i <= 10)
{
printf("%d ", i);
i++;
}
return 0;
}
注: getchar -从键盘获取字符(先从输入缓冲区获取,没有之后再等待键盘输入),scanf同理
putchar -把字符打印到屏幕
gets() --获取字符可以读取空格
scanf("%s", )–获取字符只能读取到空格前
for
语法
for(表达式1;表达式2;表达式3)
循环语句;
表达式1 表达式1为初始化部分,用于初始化循环变量的。 表达式2 表达式2为条件判断部分,用于判断 循环时候终止。 表达式3 表达式3为调整部分,用于循环条件的调整。
int main()
{
int i = 0;
for (i = 1; i <= 10; i++)
{
printf("%d ", i);
}
return 0;
}
//int main()
//{
// int i = 0;
// for (i = 1; i <= 10; i++)
// {
// if (5 == i)
// //break;
// continue;
// printf("%d ", i);
// }
// return 0;
//}
//int main()//死循环
//{
// int i = 0;
// for (i = 1; i <= 10; i++)
// {
// if (i=5)
// printf("%d ", i);
// }
// return 0;
//}
//int main()
//{
// int i = 0;
// for (i = 1; i <= 10; i++)
// {
// printf("%d ", i);
//
// i++;
// }
// return 0;
//}
//int main()
//{
// int arr[10] = { 0 };//0-9
// int i = 0;
// for(i= 0;i<10;i++)//前闭后开
// {
// scanf("%d", &arr[i]);
//
// }
// for (i = 0; i < 10; i++)
// {
// printf("%d", arr[i]);
//
// }
//
// return 0;
//}
//int main()
//{
// int i = 0;
// //初始化判断调整均省略
// //1.可以省略
// //2.判断省略,意味着判断恒为真
// //3。尽量不要省略
// for (;;)
// {
// printf("hehe\n");
// }
//
// return 0;
//}
do while
// do while循环 --至少执行一次
//int main()
//{
// int i = 1;
//
// do
// {
// if (i == 5)
// //break;// 1234
// continue;// 1234死循环
//
// printf("%d ", i);
// i++;
// } while (i <= 10);
//
// return 0;
//}
习题
//计算N的阶乘
//int main()
//{
// int n = 0;
// scanf("%d", &n);
// int i = 0;
// int ret = 1;
// for (i = 1; i <= n; i++)
// {
// ret = ret * i;
// }
// printf("%d", ret);
//
// return 0;
//}
//int main()
//{
// int n = 0;
// //scanf("%d", &n);
// int i = 0;
// int ret = 1;
// int sum_ret = 0;
//
// for (n = 1; n <= 10; n++)
// {
// ret = ret * n;
// sum_ret = sum_ret + ret;
// }
//
// printf("%d", sum_ret);
//
// return 0;
//}
//打印有序数组指定数字下标
//int main()
//{
// int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
// //int i = 0;
// //int k = 7;
// //int sz = sizeof(arr) / sizeof(arr[0]);
//
// //for (i = 0; i < sz; i++)
// //{
// // if (arr[i] == k)
// // {
// // printf("找到了,下标为:%d\n",i);
// // break;
// // }
// //}
// //if (i == sz)
// //{
// // printf("找不到");
// //}
//
//
// //二分查找(折半查找),效率提升
// int sz = sizeof(arr) / sizeof(arr[0]);
// int left = 0;
// int right = sz - 1;
// int k = 5;
// while (left<=right)
// {
// int mid = (left + right) / 2;
// if (arr[mid] > k)
// {
// right = mid - 1;
//
// }
// else if (arr[mid] < k)
// {
// left = mid + 1;
// }
// else
// {
// printf("找到了,下标为:%d\n", mid);
// break;
// }
// }
// if (left > right)
// {
// printf("找不到");
// }
//
// return 0;
//}
//显示hello,world
#include<Windows.h>
#include<string.h>
//int main()
//{
// char arr1[] = "hello world!!!!!!!";
// char arr2[] = "##################";
// int len = strlen(arr1);
//
// int left = 0;
// int right = len - 1;
//
// while (left<=right)
// {
// arr2[left] = arr1[left];
// arr2[right] = arr1[right];
// printf("%s\n", arr2);
// Sleep(1000);//1000毫秒=1秒
// system("cls");//system为库函数,用来执行系统命令
// left++;
// right--;
// }
// printf("%s\n", arr2);
//
// return 0;
//}
//登录程序
//#include<string.h>
//int main()
//{
// int i = 0;
// char password[20] = { 0 };
// for (i = 0; i < 3; i++)
// {
// printf("输入密码:>");
// scanf("%s", password);//数组不用取地址&,数组名本身就是地址
// if (strcmp(password , "abcdef")==0)//比较字符串 http://cplusplus.com/reference/cstring/strcmp/?kw=strcmp
// {
// printf("登录成功\n");
// break;
// }
// else
// {
// printf("密码错误\n");
// }
//
// }
// if (3 == i)
// {
// printf("退出程序\n");
// }
//
// return 0;
//}
goto语句
//goto语句 不能跨函数跳转
//int main()
//{
//again:
// printf("hehe\n");
// goto again;
//
// return 0;
//}
//关机程序
//程序运行起来就倒计时关机,1分钟内,输入:我是猪,就取消关机
#include <string.h>
#include <stdlib.h>
//int main()
//{
// char input[20] = { 0 };
// system("shutdown -s -t 60");
//
//again:
// printf("请注意,你的电脑在1分钟内关机,如果输入:我是猪,就取消关机\n");
// scanf("%s", input);
// if (strcmp(input, "我是猪") == 0)
// {
// system("shutdown -a");
// }
// else
// {
// goto again;
// }
// return 0;
//}
//
```c
//int main()
//{
// char input[20] = { 0 };
// system("shutdown -s -t 60");
//
// while (1)
// {
// printf("请注意,你的电脑在1分钟内关机,如果输入:我是猪,就取消关机\n");
// scanf("%s", input);
// if (strcmp(input, "我是猪") == 0)
// {
// system("shutdown -a");
// break;
// }
// }
// return 0;
//}