目录
一、条件语句
if语句:
switch语句
二、循环语句
while 循环
for 循环
三、代码举例
1.密码的确认:输入密码后进行确认,输入Y/N
2、计算1!+2!+3!+4!+。。。+10!
3、 在一个有序数组中查找具体某个数字(折半查找)
4.输出闰年
5、输出素数
6、演示多个字符从两端移动,向中间汇聚
7、模拟密码登陆,三次机会
8.猜数字游戏
9、输入三个数,从大到小输出
一、条件语句
if语句:
if(表达式1) { 语句1;}
else if(表达式2) {语句2;}
…
else if(表达式n){语句n;}
else{语句n+1;}
注:else 与最近的 if 匹配。
switch语句
switch(表达式){
case 整型数值1: 语句 1;
case 整型数值2: 语句 2;
......
case 整型数值n: 语句 n;
default: 语句 n+1;
}
注:
1、在switch 语句中,有 break 一直循环,直到把所有 case 运行完。
2、break 是C语言中的一个关键字,专门用于跳出 switch 语句。break 只在switch和循环语句中使用, continue 只在循环语句中使用。
3、case 后面必须是一个整数,或者是结果为整数的表达式,但不能包含任何变量。
4、default 不是必须的。当没有 default 时,如果所有 case 都匹配失败,那么就什么都不执行。
二、循环语句
while 循环
while (表达式)
循环语句;
注:while循环中,break用来永久终止循环,countinue 的作用是跳过本次循环到continue 后面的代码,直接去判断部分,看是否进入下一次循环。
for 循环
for (var i = 0; i < 10; i++) { 要执行的代码 }
三、代码举例
1.密码的确认:输入密码后进行确认,输入Y/N
//gerchar putchar while
#include <stdio.h>
int main() {
char password[20]={0};
printf("please input password:\n");
scanf("%s",password);//读取密码字符串
printf("please Y or N\n");//确认信息
int tem;
while ((tem=getchar())!='\n')
{
;
} //用来消除缓冲区中多个内容
int ch=getchar();//重新获得字符串进行判断
if (ch=='Y')
printf("success\n");
else
printf("failure");
return 0;
}
2、计算1!+2!+3!+4!+。。。+10!
//计算1!+2!+3!+4!+。。。+10!
#include <stdio.h>
int main() {
int ret=1;
int sum=0;
for (int n = 1; n <=10; ++n)
{
ret*=n;
sum+=ret;
}
printf("%d\n",sum);
return 0;
}
3、 在一个有序数组中查找具体某个数字(折半查找)
//在有序数组中查找数,二分法
#include <stdio.h>
int main() {
int arr[]={1,2,3,4,5,6,7,8,9,10};
int k=7;
int sz=sizeof(arr)/sizeof(arr[0]);
int left=0;
int right=sz-1;
while (left<=right)
{
int mid=(left+right)/2;
if (arr[mid]<k)
left=mid+1;
else if (arr[mid]>k)
right=mid-1;
else
{
printf("find:%d\n",mid);
break;
}
}
if (left>right)
printf("no");
return 0;
}
4.输出闰年
//算法自下而上,逐步细化的方法 输出2000-2100中是闰年的年份,符合下列一条
//能被4整除但不能被100整除
//能被100整除且能被400整除
#include <stdio.h>
int main() {
int year=2000;//年份
while (year<=2100) {
if (year % 4 == 0) {
if (year % 100 != 0)
printf("%d yes\n",year);
else {
if (year % 400 == 0)
printf("%d yes\n",year);
}
}
year = year + 1;
}
return 0;
}
5、输出素数
//判断一个数是否为素数
//能被整除就不是素数
#include"stdio.h"
#include"math.h"
main()
{
int number,i,n;
printf("number:\t");
scanf("%d",&number);
while(number>0)//输入0或小于0的数,结束循环
{
n=(int)sqrt(number);//开平方
if(number==1)
{
printf("1既不是素数,也不是合数\n");//注:1既不是素数,也不是合数
scanf("%d",&number);
continue; //跳出这一次循环
}
for(i=2;i<=n;i++) //2和3的开平方分别为1.414和1.732,不满足循环条件(i<=n)
{
if(number%i==0)
break;
}
if(i>n) //i=2,2和3满足(i>n),所以是素数
printf("%d yes\n",number);
else
printf("%d no\n",number);
printf("number:\t");
scanf("%d",&number);
}
}
6、演示多个字符从两端移动,向中间汇聚
//演示多个字符从两端移动向中间汇聚
#include <stdio.h>
#include <string.h>
#include <windows.h>
int main() {
char arr1[]="welcome to there";
char arr2[]="################";
int left=0;
int right=strlen(arr1)-1;
while (left<=right)
{
arr2[left]=arr1[left];
arr2[right]=arr1[right];
printf("%s\n",arr2);
Sleep(1000);//休眠1s
system("cls");//清空屏幕
left++;
right--;
}
printf("%s\n",arr2);
return 0;
}
7、模拟密码登陆,三次机会
//编写模拟三次密码输入场景,密码假设为123456
#include <stdio.h>
#include "string.h"
int main() {
int i=0;
char password[20]={0};
for (i = 0; i <3 ; ++i) {
printf("input password:\n");
scanf("%s",password);
if (strcmp(password,"123456")==0)//比较字符串内容
{
printf("success\n");
break;
} else
printf("fault\n");
}
if (i==3)
printf("output\n");
return 0;
}
8.猜数字游戏
//猜数字游戏
#include <stdio.h>
#include "stdlib.h"
#include "time.h"
void menu()//打印菜单
{
printf("***********\n");
printf("***1.play**\n");
printf("***0.exit**\n");
}
void game()//进行游戏
{
int ret=rand()%100+1;//随机生成1到100的数
int guess=0;
while (1)
{
printf("guess the number");
scanf("%d",&guess);
if (guess<ret)
printf("small\n");
else if(guess>ret)
{printf("big\n");}
else
{
printf("success\n");
break;
}
}
}
int main() {
int input=0;
srand((unsigned int )time(NULL));
printf("Hello, World!\n");
do
{
menu();
printf("please choose:\n");
scanf("%d",&input);
switch (input) {//选择0 1
case 1:
game();
break;
case 0:
printf("output\n");
break;;
default:
printf("new choose:\n");
break;
}
}while (input);
return 0;
}
9、输入三个数,从大到小输出
//输入3个整数,从大到小输出
#include <stdio.h>
int main() {
int a,b,c;
scanf("%d %d %d",&a,&b,&c);
int tem;
if (b>a)
{
tem=a;//a放到tem b放到a
a=b;
b=tem;
}
if (a<c)
{
tem=a;
a=c;
c=tem;
}
if (c>b)
{
tem=b;
b=c;
c=tem;
}
printf("%d %d %d\n",a,b,c);
return 0;
}
10、 两个数的最大公约数
//最大公约数
#include <stdio.h>
int main() {
int n=0;
int m=0;
scanf("%d %d",&m,&n);
int max=m>n?n:m;//让max=其中的最小值
while(1)
{
if(m%max==0&&n%max==0)
{
printf("%d\n",max);
break;
}
max--;
}
return 0;
}
更多推荐
c语言学习 条件、循环语句
发布评论