#include <stdio.h>
int main()
{
int num = 4;
if (5 == num)//常量和变量的比较放在左边比较不会出错
{
printf("hehe\n");
}
return 0;
}
//int main()
//{
// int num = 4;
// if (num == 5)
// printf("hehe\n");
// return 0;
//}
//int main()
//{
// int num = 4;
// if (num = 5)
// {
// printf("hehe\n");
// return 0;
// }
//}
//int main()
//{
// int a = 1;
// int b = 0;
// if (a == 1)
// {
// if (b == 2)
// printf("hehe\n");
// }
// else
// printf("haha\n");
// return 0;
//}
//int main()
//{
//
// /int age = 10;
// if (age < 18)
// printf("未成年\n");
// else if (age >= 18 && age < 28)
// printf("青年\n");
// else if (age >= 28 && age < 50)
// printf("壮年\n");
// else if (age >= 50 && age < 90)
// printf("老年\n");
// else
// printf("老不死\n");/
//
// /if (age < 18)
// printf("未成年\n");
// else
// printf("成年\n");/
// /if (age < 18)
// printf("未成年\n");/
// return 0;
//}
练习
判断一个数是否为奇数
int main()
{
int x = 2;
printf("请输入一个整数");
scanf("%d",&x);
if (x%2 == 0)
{
printf("输入的是偶数");
}
else
{
printf("输入的是奇数");
}
}
输出1-100之间的奇数
#define CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int i = 1;
while (i < 100)
{
printf("%d", i);
i += 2;
}
return 0;
}
//int main()
//{
// int i = 0;
// while(i <= 100)
// {
// if (i % 2 == 1)
// printf("%d", i);
// i++;
// }
//
//}
switch语句
#define CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int day = 3;
/scanf("%d", &day);/
switch (day)//switch是整形表达式-----day必须是整形
{
case 1://case是整形常量表达式
printf("星期一\n");
case 2:
printf("星期二\n");
case 3:
printf("星期三\n");
break;
case 4:
printf("星期四\n");
case 5:
printf("星期五\n");
case 6:
printf("星期六\n");
case 7:
printf("星期日\n");
}
}
//int main()
//{
// int day = 0;
//// scanf("%d", &day);
// if (1 == day)
// printf("星期一\n");
// else if (2 == day)
// printf("星期二\n");
// else if (3 == day)
// printf("星期三\n");
// else if (4 == day)
// printf("星期四\n");
// return 0;
//}
练习
#define CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int n = 1;
int m = 2;
switch (n)
{
case 1:
m++;
case 2:
n++;
case 3:
switch (n)
{//switch允许嵌套使用
case 1:
n++;
case 2:
m++;
n++;
break;
default:
break;
}
case 4:
m++;
break;
default:
break;
}
printf("m = %d,n = %d", m, n);
return 0;
}
1.2、循环语句
while语句
while循环格式
//int main()
//{
// int i = 0;//初始化
//
// while (i < 10)//判断
// {
//
// //.....
// i++;//调整
// }
// return 0;
//}
#define CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
//int main()
//{
// int i = 1;
// while (i<=10)
// {
// if (i == 5)
// continue;//continue再while循环中的作用是:continue是用于终止本次循环的,也就是本次循环中的continue后边的代码不会执行,而是直接逃转到while语句的判断部分,进行下一次循环的入口判断
// printf("%d", i);
// i++;
// }
// return 0;
//}
//int main()
//{
// int i = 1;
// while (i<=10)
// {
// if (i == 5)
// break;//break再while循环中的作用是:其实在循环中只要遇到break,就停止后期的所有的循环,直接终止循环,所以:while中的break是用于永久终止循环
// printf("%d", i);
// i++;
// }
// return 0;
//}
练习
#define CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int ch = 0;
//getchar遇到ctrl+z的时候就会获取到EOF
//EOF叫end of file 文件结束标志->本质上的值位-1
while ((ch=getchar())!=EOF)
{
putchar(ch);
}
/int ch = getchar();getchar接受一个键盘的字符
putchar(ch);//输出一个字符
printf("%c", ch);/
return 0;
}
#define _CRT_SECLRE_NO_WARNINGS 1
//#define _CRT_SECURE_NO_DEPRECATE;
//#define _CRT_SECURE_NO_WARNINGS;
//#pragma warning(disable:4996);
#include<stdio.h>
int main()
{
int ch = 0;
while ((ch = getchar()) != EOF)
{
if (ch < ‘0‘ || ch>‘9‘);
continue;
putchar(ch);//putchar只会输出数字字符
}
return 0;
}
//int main()
//{
// int ret = 0;
// int ch = 0;
// char password[20] = { 0 };
// printf("请输入密码:>");
// scanf("%s", password);//请输入密码,并存放在password数组中---scanf只会获取空格前的字符
// //缓冲区还剩余一个\n
// //读取一下\n
// while ((ch = getchar()) != ‘\n‘)//是循环判断scanf最后一个是\n
// {
// ;
// }
// printf("请确认(Y/N):>");
// ret = getchar();//Y/N
// if (ret == ‘Y‘)
// {
// printf("确认成功\n");
// }
// else
// {
// printf("确认失败\n");
// }
// return 0;
//}
for循环
for循环格式
for(表达式1,表达式2,表达式3)
循环语句;
表达式1:为初始化部分,用于初始化循环变量的;
表达式2:为条件判断部分,用于判断循环时候终止;
表达式3:位调整部分,用于循环条件的调整;
练习:
使用for循环在屏幕上打印1-10的数字
#define _CRT_SECLRE_NO_WARNINGS 1
//#define _CRT_SECURE_NO_DEPRECATE;
//#define _CRT_SECURE_NO_WARNINGS;
//#pragma warning(disable:4996);
#include<stdio.h>
//int main()
//{
// int i = 0;
// for (i = 1; i <= 10; i++)
// {
// printf("%d\n", i);
// }
// return 0;
//}
int main()
{
int i = 0;
for (i = 1; i <= 10; i++)
{
printf("%d", i);
}
return 0;
}
#define _CRT_SECLRE_NO_WARNINGS 1
//#define _CRT_SECURE_NO_DEPRECATE;
//#define _CRT_SECURE_NO_WARNINGS;
//#pragma warning(disable:4996);
#include<stdio.h>
int main()
{
int i = 0;
for (i = 1; i <= 10; i++)
{
if (i == 5)
continue;
printf("%d", i);
}
return 0;
}
//int main()
//{
// int i = 0;
// for (i = 1; i <= 10; i++)
// {
// if (i == 5)
// break;
// printf("%d", i);
// }
// return 0;
//}
for循环语句的循环控制变量
一些建议:
1、不可在for循环体内修改循环变量,防止for循环失去控制
2、建议for语句的循环控制变量的取值采用前闭后开区间写法
#define _CRT_SECLRE_NO_WARNINGS 1
//#define _CRT_SECURE_NO_DEPRECATE;
//#define _CRT_SECURE_NO_WARNINGS;
//#pragma warning(disable:4996);
#include<stdio.h>
int main()
{
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
int i = 0;
//10次循环
//10次打印
//10个元素
for (i = 0; i < 10; i++)
{
printf("%d", arr[i]);
}
return 0;
}
//int main()
//{
// int i = 0;
// for (i = 0; i <= 10; i++)
// {
// if (i = 5)
// printf("%d", i);
// }
// return 0;
//}
一些for循环的变种
for循环的初始化、调整、判断都可以省略但是:for循环的判断部分如果省略条件就恒为真
#include<stdio.h>
int main()
{
for (;;)
{
printf("hehe\n");
}
return 0;
}
如果不是非常省略,建议不要省略
变种1:
#define _CRT_SECLRE_NO_WARNINGS 1
//#define _CRT_SECURE_NO_DEPRECATE;
//#define _CRT_SECURE_NO_WARNINGS;
//#pragma warning(disable:4996);
#include<stdio.h>
int main()
{
int i = 0;
int j = 0;
for (; i < 10; i++)
{
for (; j < 10; j++);
{
printf("hehe\n");
}
}
return 0;
}
//int main()
//{
// int i = 0;
// for (i = 0; i < 10; i++)
// {
// int j = 0;
// for (j = 0; j < 10; j++)
// {
// printf("hehe\n");
// }
// }
// return 0;
//}
变种2:
面试题:
请问循环要循环多少次?
#define _CRT_SECLRE_NO_WARNINGS 1
//#define _CRT_SECURE_NO_DEPRECATE;
//#define _CRT_SECURE_NO_WARNINGS;
//#pragma warning(disable:4996);
#include<stdio.h>
int main()
{
int i = 0;
int k = 0;
for (i = 0, k = 0; k = 0; i++, k++)//k=0是赋值为0,0为假所以条件为假,退出循环
{
k++;
}
return 0;
}
0次
do...while()循环
do语句的语法:
do
循环语句;
while(表达式);
#define _CRT_SECLRE_NO_WARNINGS 1
//#define _CRT_SECURE_NO_DEPRECATE;
//#define _CRT_SECURE_NO_WARNINGS;
//#pragma warning(disable:4996);
#include<stdio.h>
int main()
{
int i = 1;
do
{
printf("%d", i);
i++;
} while (i <= 10);
return 0;
}
#define _CRT_SECLRE_NO_WARNINGS 1
//#define _CRT_SECURE_NO_DEPRECATE;
//#define _CRT_SECURE_NO_WARNINGS;
//#pragma warning(disable:4996);
#include<stdio.h>
int main()
{
int i = 1;
do
{
if (i == 5)
continue;
/break;/
printf("%d", i);
i++;
} while (i <= 10);
return 0;
}
练习:
1、计算n的阶乘
int main()
{
int i = 0;
int n = 0;
int ret = 1;
scanf("%d", &n);//100的阶乘在一个整形里面就放不下了,这个就会溢出
for (i = 1; i <= n; i++)
{
ret = ret * i;
}
printf("ret = %d\n", ret);
return 0;
}
2、计算1!+2!+3!+......+10!
#define _CRT_SECLRE_NO_WARNINGS 1
//#define _CRT_SECURE_NO_DEPRECATE;
//#define _CRT_SECURE_NO_WARNINGS;
//#pragma warning(disable:4996);
#include<stdio.h>
int main()
{
int i = 0;
int n = 0;
int ret = 1;
int sum = 0;
for (n = 1; n <= 10; n++)
{
ret = ret * n;
//n的阶乘
sum = sum + ret;
}
printf("sum = %d\n", sum);
return 0;
}
//int main()
//{
// int i = 0;
// int n = 0;
// /int ret = 1;/
// int sum = 0;
// //1+2+6=9
// for (n = 1; n <= 3; n++)
// {
// int ret = 1;
// for (i = 1; i <= n; i++)
// {
// ret = ret * i;
// }
// //n的阶乘
// sum = sum + ret;
// }
// printf("sum = %d\n", sum);
// return 0;
//}
3、在一个有序的数组中查询具体的某个数字n,编写int binsearch(int x, int v[], int n);功能:在v[0]<=v[1]<=v[2]<=......v[n-1]的数组中查找x
---------二分查找---------
#define _CRT_SECLRE_NO_WARNINGS 1
//#define _CRT_SECURE_NO_DEPRECATE;
//#define _CRT_SECURE_NO_WARNINGS;
//#pragma warning(disable:4996);
#include<stdio.h>
int main()
{
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
int k = 7;
int se = sizeof(arr) / sizeof(arr[0]);
int left = 0;//坐下标
int right = se - 1;//右下标
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("找不到\n");
}
return 0;
}
//int main()
//{
// int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
// int k = 7;
// //写一个代码,在arr数组中(有序的)中找到7
// int i = 0;
// int se = sizeof(arr) / sizeof(arr[0]);
// for (i = 0; i < se; i++)
// {
// if (k == arr[i])
// {
// printf("找到了,下表是:%d\n", i);
// break;
// }
// }
// if (i == se)
// printf("找不到\n");
// return 0;
//}
4、编写代码,演示多个字符从两端移动,向中间汇聚。
#define _CRT_SECLRE_NO_WARNINGS 1
#include<stdio.h>
#include <string.h>//strlen函数的头文件
#include <windows.h>//Sleep头文件
#include <stdlib.h>//system头文件
int main()
{
char arr1[] = "welcome to bit!!!!!!";
char arr2[] = "####################";
int left = 0;
//int right = sizeof(arr1)/sizeof(arr2[0]-2);
int right = strlen(arr1) - 1;//strlen求字符串长度的
while (left <= right)
{
arr2[left] = arr1[left];
arr2[right] = arr1[right];
printf("%s\n", arr2);
//休息一秒
Sleep(500);
system("cls");//system是执行系统命令的一个函数-cls-清空屏幕
left++;
right--;
}
printf("welcome to bit!!!!!!");
return 0;
}
5、编写代码实现,模拟用户登录情景,并且只能登录三次。(只允许输入三次密码,如果密码正确则提示登录成功,如果三次输入错误,则退出程序)
#define _CRT_SECLRE_NO_WARNINGS 1
#include<stdio.h>
#include <string.h>//strlen函数的头文件、strcmp函数的头文件
#include <windows.h>//Sleep头文件
#include <stdlib.h>//system头文件
int main()
{
int i = 0;
char password[20] = { 0 };
for (i = 0; i < 3; i++)
{
printf("请输入密码:>");
scanf("%s", password);
if (strcmp(password , "123456") ==0)//等号不能用来比较两个字符串是否相等,应该使用一个库函数--strcmp
{
printf("密码正确");
break;
}
}
if (i == 3)
{
printf("密码输入错误");
}
return 0;
}
原文:https://blog.51cto.com/15049077/2563549