学习笔记4-C语言-开关、循环、跳转

一、开关语句

switch(n)       //n可以是数值、表达式,运算结果必须是整型
{case val:       //必须是常量,如果val等于n,则打开开关...;break;          //关闭执行开关,switch中不能与continue配合使用//如果所有的case后面都有break,就形成了多分支结构default:       //如果所有的case都没有匹配成功,则打开default执行开关,而且放在任何位置都一定会执行...;break;       //a ... b 表示一段范围,但是不推荐使用
}练习1:输入一个月份,判断季节
#include<stdio.h>int main(int argc,const char* argv[])
{int mon;printf("请输入一个月份");scanf("%d",&mon);if(mon<1 || mon>12){printf("输入错误");}else{switch(mon/3){case 1:printf("春天");break;case 2:printf("夏天");break;case 3:printf("秋天");break;default:printf("冬天");break;}}return 0;
}
练习2:输入一个月份,忽略润平年问题,判断该月多少天
#include<stdio.h>int main(int argc,const char* argv[])
{char mon;printf("请输入月份");scanf("%hhd",&mon);if(mon<1 || mon>12){printf("输入错误");	}else{switch(mon){case 2:printf("该月28天");break;case 4:case 6:case 9:case 11:printf("该月30天");break;default:printf("该月31天");break;}}return 0;	
}

二、循环语句

循环是一种让一段代码反复执行,从而达到你想要的结果
for是哟中比较灵活而且危险(相比较其他循环)的一种循环
一般使用一个变量来引导这个循环的运行,这个变量叫做循环变量i(index 索引)
for([1];[2];[3])
{[4];
}
[1] 给循环变量赋值,C99可以再次定义循环变量
[2] 判断循环变量是否达到边界
[4] 被反复执行的代码语句,也叫做循环体
[3] 改变循环变量,防止出现死循环,一般对循环体变量进行自加或自减
[2]...[4]...[3]...大括号问题:1、如果循环体只有一行代码,大括号可以省略,但不利于扩展,一般商业代码都要求大括号不能省略。2、建议上下对齐(方便查看是否缺少大括号)for循环的多种循环:for(;;)
{//死循环
}int i = 0;
for(;i<10;i++)
{}for(int i=0;i<10;)
{printf("---");i++;
}while语句:while(条件) //当条件为真执行循环体,为假时结束{//循环体}
while循环语句相当于for循环语句的精简版本
for循环负责明确知道循环次数的问题
while循环负责只知道结束条件而不确定循环次数的问题do while语句
do{//循环体
}while(执行条件);  //分号不能少
先执行循环体语句,在判断循环条件,该循环语句至少执行一次
适合先干活,后检查的特殊情况,例如:输入密码,文件读写循环嵌套:循环语句中包含了循环语句外层循环执行一次,内层循环执行全部练习3:计算出所有3位水仙花数
#include<stdio.h>int main(int argc,const char* argv[])
{int num;int i;int a,b,c;for(i=100;i<1000;i++){	a=i/100;b=i/10%10;c=i%10;num=a*a*a+b*b*b+c*c*c;if(i == num){printf("%d ",num);	}}return 0;
}
练习4:输入一个正整数,判断是否是素数
#include<stdio.h>int main(int argc,const char* argv[])
{int i;int num;int k=2;printf("请输入一个数");scanf("%d",&num);if(num<0){printf("输入错误");return -1;}for(i=2;i<(num/2);i++){if(0== num % i){k++;	}}if(2==k){printf("是素数");	}else{printf("不是素数");	}return 0;
}
练习5:输入一个整数,分解显示
#include<stdio.h>int main(int argc,const char* argv[])
{int a[14];int num,num_0,k=0;int i;printf("请输入一个整数");scanf("%d",&num);num_0=num;while(0 != num){a[k]=num%10;num /= 10;k++;}if(num_0<0){printf("- ");for(i=k-1;i>=0;i--){printf("%d ",0-a[i]);	}}else{for(i=k-1;i>=0;i--){printf("%d ",a[i]);	}}return 0;
}
练习6:输入一个正整数,判断是否是回文数
#include<stdio.h>int main(int argc,const char* argv[])
{int num,num_0=0,key;printf("请输入一个正整数");scanf("%d",&num);key=num;while(0 != key){num_0=num_0*10+key%10;key /= 10;}if(num==num_0){printf("是回文数");	}else{printf("不是回文数");}return 0;
}

三、跳转语句

goto 可以在函数内任意跳转
它可能会破坏已经设计好的分支或者循环语句,因此绝大多数公司都是禁用的。
但是它他别适合驱动编程中的异常处理。标签名:...goto 标签名;练习7:不使用循环语句计算N的阶乘break   1、在switch语句中用于关闭执行开关2、在循环语句中,用于跳出循环,只能跳出1层continue结束本次循环,进入下一次循环return1、返回一个数据给调用者2、结束函数的执行

练习8:不使用循环语句,计算出前N项的斐波那契数列
1 1 2 3 5 8 13

#include<stdio.h>int main(int argc,const char* argv[])
{int N;int key,num=1,ret=1;printf("请输入N");scanf("%d",&N);if(N<=2){int i=N;
loop1:printf("1 ");i--;if(i>0){goto loop1;	}return 0;}else{printf("1 1 ");		N -= 2;}
loop2:key=num;num=num+ret;ret=key;N--;printf("%d ",num);if(N>0){goto loop2;	}
}

作业:

1、打印99乘法表
#include<stdio.h>int main(int argc,const char* argv[])
{int i,j;for(i=1;i<10;i++){for(j=1;j<=i;j++){printf("%d*%d=%2d  ",i,j,i*j);	}printf(" \n");}return 0;
}
2、百鸡百钱问题  公鸡5  母鸡3   3小鸡1
#include<stdio.h>int main(int argc,const char* argv[])
{int i,j,k;for(i=0;i<=20;i++){for(j=0;j<=(100-5*i);j++){k=100-5*i-3*j;if(100 == i+j+3*k){printf("公鸡%d只,母鸡%d只,小鸡%d只\n",i,j,3*k);	}}}return 0;
}
3、计算100~1000所有素数
#include<stdio.h>int main(int argc,const char* argv[])
{int i,j,key=0;for(i=100;i<=1000;i++){key=0;for(j=2;j<=i/2;j++){if(0 == i%j){key++;	}}if(0 == key){printf("%d ",i);	}}return 0;
}
4、输入一个日期(yyyy-mm-d)计算公元1年到日期为止过了多少天time(NULL) 获取1970-1-1 0秒 到运行此函数为止过了多少秒srand(time(NULL));rand() 随机数,伪随机
#include<stdio.h>int main(int argc,const char* argv[])
{int year,month,day,i,daymax;int time=0;printf("请输入日期(year-month-day)\n");scanf("%d%d%d",&year,&month,&day);if(month < 1 || month>12){printf("输入有误");return -1;}else{switch(month){case 2:daymax=28;break;case 4:case 6:case 9:case 11:daymax=30;break; default:daymax=31;}if(0 == year%4 && month == 2){daymax++;if(0 == year%100 && 0!= year%400){daymax--;}}if(day > daymax || day<1){printf("输入有误,日最大为%d",daymax);return -2;}}time += (year-1)*365;for(i=1;i<year;i++){if(0 == i%4 && 0 != i%100 || 0 == i%400){time++;}}for(i=1;i<month;i++){time += 31;switch(i){case 2:time -= 3;break;case 4:case 6:case 9:case 11:time -=1;break; }}if(0 == year%4 && 0 != year%100 || 0 == year%400){time += 1;}time += day-1;printf("过了%d天",time);return 0;
}
5、显示平行四边形,每个printf只能输出一个符号
#include<stdio.h>int main(int argc,const char* argv[])
{int i,j,k,l=9;for(i=9;i>=0;i--){for(j=i;j>=0;j--){printf(" ");}for(k=0;k<10;k++){printf("*");}printf("\n");}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/443465.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JQuery,ajax异步加载selectoption/option/select多选框:

摘要&#xff1a;最近项目中用到了jquery&#xff0c;ajax&#xff0c;由于很长时间没用了&#xff0c;所以这次做花了很多时间&#xff0c;现在记录一下&#xff0c;方便以后回忆&#xff1a; 一&#xff1a;js文件&#xff1a; <script type"text/javascript"&…

学习笔记5-C语言-数组

数组&#xff1a; 什么是数组&#xff1a; 相同类型变量的组合,是一种批量定义变量的方式 定义&#xff1a; 类型 数组名[数组变量数量]&#xff1b;int arr[5]; 使用&#xff1a;数组名[下标]&#xff1b;arr[0];数组下标从零开始&#xff0c;范围&#xff1a;0~数量-1 遍历…

学习笔记6-小项目-走迷宫、推箱子

获取方向键的功能&#xff1a;使用getch.h头文件中的getch函数 1、把windows中的getch.h头文件放到共享文件夹中 2、终端输入 cd /media/sf_GONGXIANG进入共享文件夹 3、sudo cp getch.h /usr/include 4、cd /usr/include/ 5、sudo chmod r getch.h头文件中的getch函数 time.h…

学习笔记7-C语言-进制转换、原返补、位运算、函数

进制转换 为什么要使用二、八进制、十六进制&#xff1f;因为现在的CPU只能识别高低两种电流&#xff0c;因此只能对二进制数据进行运算二进制数据虽然可以直接被cpu识别&#xff0c;但不方便人们书写、记录&#xff0c;所以把二进制数据转换成八进制是为了方便记录在文件中。…

学习笔记8-作业

作业1&#xff1a;实现一个函数&#xff0c;判断一个整数是否是素数&#xff0c;调用该函数来显示出100~10000之间的所有素数 #include<stdio.h> #include<stdbool.h> #include<math.h> bool is_sushu(int num) {for(int i2;i<sqrt(num);i){if(num%i0)re…

学习笔记9-C语言-传参、类型限定符、递归

函数传参&#xff1a; 1、形参变量属于它所在的函数&#xff0c;出了该函数就不能使用 2、实参与形参之间都是以赋值的形式进行数据传递&#xff08;值传递&#xff09; 3、return 其实是把返回值数据放置到一个公共的区域&#xff08;函数和函数调用者&#xff09;&#xff0…

Oracle创建视图实现获取当前数据所在的页数,这里以每页2条数据分页

摘要&#xff1a;Oracle创建视图实现获取当前数据所在的页数&#xff0c;这里以每页2条数据分页&#xff0c;详细请看&#xff1a; 一&#xff1a; DROP VIEW MIP.TB_CMS_FLGTINFO_D_VIEW;/* Formatted on 2014/12/4 8:35:36 (QP5 v5.115.810.9015) */ CREATE OR REPLACE FOR…

学习笔记10-C语言-小项目-五子棋

小项目&#xff1a; 需要的数据 1、定义棋盘的二维数组 2、定义变量用于记录下棋的坐标 3、定义角色 黑棋 O 白棋 * 空位业务逻辑&#xff1a; 是否需要对数据初始化 for(;;) {1、清屏、显示棋盘2、落子坐标是否合法、该位置是否有棋子3、判断是否五子连珠4、交换角色5、显示…

学习笔记11-C语言-指针

什么是指针&#xff1a; 指针是一种特护的数据类型&#xff0c;使用它可以定义指针变量&#xff0c;指针变量存储的是整型数据&#xff0c;代表内存的编号&#xff0c;通过这个编号可以访问到对应内存。为什么使用指针 1、函数与函数之间是相互独立的&#xff0c;但是有些时候…

学习笔记12-C语言-堆内存、字符串

什么是堆内存&#xff1a; 是进程中的一个内存段&#xff08;text\data\bss\heap\stack&#xff09;&#xff0c;由程序猿手动控制。 特点是足够大&#xff0c;缺点是使用麻烦为什么要使用堆内存&#xff1a; 1、随着程序的复杂&#xff0c;数据会越来越多。 2、其他的内存段…

学习笔记13-C语言-字符串函数、缓冲区

字符串的常用函数: #include<string.h> size_t strlen(const char* s); 功能&#xff1a;计算字符串长度&#xff0c;但是结果不包括\0 返回值&#xff1a;返回字符串中字符的个数size_t str_len(const char* str) {assert(NULL ! str);const char* tmp str;while(*tmp…

Oracle数据库里面查询字符串类型的字段不为空和为空的SQL语句:

摘要&#xff1a;近期项目中&#xff0c;在做高级查询的时候有个条件是根据选择的字段&#xff0c;然后再选择字段的值为空和不为空做查询&#xff0c;在写SQL语句的时候费了很长时间&#xff0c;现在记录一下&#xff0c;方便日后查看&#xff1a; 一&#xff1a;查询字符串类…

学习笔记14-C语言-小项目-通讯录

通讯录&#xff1a; 要求&#xff1a; 姓名&#xff0c;性别、电话&#xff0c;最多储存50个联系人 功能&#xff1a;1、添加联系人2、按名字删除联系人3、按姓名修改联系人信息4、查找联系人&#xff0c;可通过电话&#xff0c;名字查找&#xff0c;支持模糊查找5、显示所有联…

学习笔记15-C语言-预处理指令、条件编译、头文件

预处理指令&#xff1a; 程序猿编写的代码不是标准C代码&#xff0c;并不能被真正的编译器索编译&#xff0c;需要一段程序把代码翻译一下。 翻译的过程叫做预处理&#xff0c;被翻译的代码叫做预处理指令&#xff0c;以#开头的都是预处理指令查看预处理的过程&#xff1a;gcc…

学习笔记16-C语言-小项目-使用Makefile完成2048

Makefile: Makefile是一系列编译指令组成的可执行文本&#xff0c;也叫做编译脚本。 在终端执行make命令会自动执行Makefile脚本中的编译命令&#xff0c; 而且它还可以根据文件的最后修改时间来判断哪些文件是否需要重新编译、哪些文件不需要重新编译&#xff0c;从而大大提高…

学习笔记17-C语言-结构、联合、枚举

结构&#xff1a; struct 结构是由程序猿自己设计的一种数据类型&#xff0c;用于描述一个事务的各项数据&#xff0c;由若干个不同的基础数据类型组成。设计结构&#xff1a;struct 结构体名{类型 成员名&#xff1b;...}&#xff1b;定义结构体变量struct 结构体名 变量名&a…

Maven 3.0.5 安装和配置:

摘要&#xff1a;现在的Web项目越来越多的都用maven管理了&#xff0c;所以我也抽时间学习学习&#xff0c;为了赶上时代&#xff01; 一&#xff1a;首先到maven官网&#xff1a;http://maven.apache.org/&#xff0c;然后选择相应的版本下载&#xff0c;我这里下载的是maven…

学习笔记18-C语言-文件

文件的分类&#xff1a; 文本文件&#xff1a; 存储的是ASCII码值的二进制 二进制文件&#xff1a; 存储的是数据的补码文件IO&#xff1a; FILE *fopen(const char *path, const char *mode); 功能&#xff1a;打开或者创建文件 path&#xff1a;文件的路径 mode&#x…

使用INNER JOIN ON 多表关联查询,获取指定用户下指定权限的资源SQL:

摘要&#xff1a;最近在看一个开源框架&#xff0c;其中用户&#xff0c;角色&#xff0c;资源&#xff0c;这块我感觉比较重要&#xff0c;所以就自己也模仿着写了下&#xff0c;其中在获取指定用户下的权限资源的时候遇到问题了&#xff0c;开始时&#xff0c;我首先想到的方…

Maven学习记录之maven基本操作命令,maven本地工厂的创建,maven骨架的生成,以及在eclipse中创建maven工程:...

摘要&#xff1a;今天又学习了一下maven&#xff0c;之前是下载并安装和配置好了maven的环境&#xff0c;今天主要学习的内容包括&#xff1a;maven本地工厂的创建&#xff0c;maven骨架的生成命令&#xff0c;maven在dos下创建maven工程&#xff0c;以及在eclipse中创建mavne工…