热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

c语言3月7日学习总结

1.变量的一些问题1).当变量的值有可能是0时,初始化为-1.2)C99标准中新增布尔类型,可直接使用_BoolisTrue;C99isTrue1<2;

1.变量的一些问题
1).当变量的值有可能是0时,初始化为-1.
2)C99标准中新增布尔类型,可直接使用

_Bool isTrue; // C99
isTrue = 1 <2;

printf("%d\n", isTrue);//打印0;

2.程序的结构分类
1).结构化程序设计(英语:Structured programming),一种编程范型。它采用子程序、代码区块、for循环以及while循环等结构,来取代传统的 goto。希望借此来改善计算机程序的明晰性、质量以及开发时间,并且避免写出面条式代码。

2).程序结构分成:顺序结构、分支结构和循环结构

3.if语句
1)复合语句
将多条语句,用花括号括起来,那么就构成一个复合语句,在逻辑上相当于一条语句。

 {
if(1 > 2);
printf("打印一下");
printf("程序结束");
//代码段中的语句称为复合语句
}

2).空语句
只有一个分号的语句称为空语句。也就是什么也不做的语句

         if(1 > 2);
printf("打印一下");
printf("程序结束");

该段代码执行结果为 :打印一下执行结束,if后为空语句

4.if else 与 if else if语句

/*
学校现在不允许给学生打分,值能够给打 ABCDE 几个等级
如果分数大于等于 90,那么就是 A
如果分数在 80 到 89 之间,就是 B
如果分数在 70 到 79 之间,就是 C
如果分数在 60 到 69 之间,就是 D
如果分数低于 60 分,那么就是 E
*/

if(score <= 100 && score >= 90) {
printf("评级为 A 级\n");
} else if(score >= 80) {
printf("评级为 B 级\n");
} else if(score >= 70) {
printf("评级为 C 级\n");
} else if(score >= 60) {
printf("评级为 D 级\n");
} else {
printf("评级为 E 级\n");
}

注意点:
1、空语句
2、if 语句与复合语句
3、if 语句与 return 语句
4、if 语句的作用域问题
5、作用域紊乱

if(1 > 2) {
int num = 10;
}
printf("%d\n", num);
// 无法获得num
if(1 <2) int num = 10;


6、if 语句与 else 子句的配对问题(悬停 else 问题)

if(num >= 0)
if(num <5)
printf("printf1\n");
else
if (num <10)
printf("printf2\n");
if(num > 12)
printf("printf3\n");
else
printf("printf4\n");

打印结果为:printf2 printf4
技巧:从下往上,else 与最近的 if 配对

5.剪刀石头布游戏
思路分析
1)将规则数字化(剪刀:0 石头:1 布:2)
2)计算机出拳
随机出拳,即随机生成一个 0 到 3 的数字
头文件:stdlib.h
arc4random_uniform(int num);
3)提示用户出拳
4)开始比较(详细分析)

 // 给出规则 剪刀0 石头1 布2

// 1,声明变量
int computer, player;

// 2,计算机随机的出一个数字(0,1,2)
// 参数为一个非负的整数,表达的含义是创建一个 0 到 该数的随机数
// 这个数字本身取不到
computer = arc4random_uniform(3);

printf("计算机出的是%d\n", computer);

// 3,用户输入数字
printf("请出拳:剪刀0 石头1 布2\n");
scanf("%d", &player); // 假定不会出错

// 5,进行比较
if(computer == player) {
printf("平局\n");
} else if(computer == 2) {
// 看看用户会不会出 0 ,如果用户出0 那么用户赢,否则计算机赢
if(player == 0) {
printf("玩家赢\n");
} else {
printf("电脑赢\n");
}
} else if(player == 2) {
// 看计算机是否出0
if(computer == 0) {
printf("电脑赢\n");
} else {
printf("玩家赢\n");
}
} else if(player > computer) {
printf("玩家赢\n");
} else {
printf("电脑赢\n");
}

6.switch语句
1).switch 后面的表达式的值应该是整型或可以转换为整型的数据
2).switch贯穿:case后不加break执行完成以后,会继续往下执行其他的case.
一个case后可以执行多条语句,也可以执行空语句
例:

case 0: printf("零\n");printf("哈哈哈\n");printf("嘻嘻\n");break;

case 4: case 6: case 9:
case 11:printf("30天\n");break;

注:
1)、switch 需要是整型
2)、case 后可以跟多条语句(变量问题)
3)、break 与 default 都是可选的
4)、default 可以是任意位置


switch (1) {

default:printf("没有匹配\n");
case num:printf("打印2\n");
case 3:printf("打印3\n");
case 4:printf("打印4\n");

}
//打印结果为: 没有匹配 打印2 打印3 打印4

5)、case 后只允许使用常量
6)、case 后也不允许使用小数
7)、case后定义变量时必须加{}

//错误写法
case 1:
printf("请输入一个数字\n");
// int num=2;
// scanf("%d", &num);
break;
//正确写法
case 1:{
printf("请输入一个数字\n");
// int num=2;
// scanf("%d", &num);
}
break;

7.练习
1). 简单计算器

//简单计算器
int calculator(){

int num1,num2,oper; //operation
char array[] = "+-*/";
//0,1,2,3代表+ - * /
//提示用户输入
printf("请输入第一个数:");
scanf("%d",&num1);
printf("请输入运算符(0,1,2,3代表+ - * /):");
scanf("%d",&oper);
printf("请输入第二个数:");
scanf("%d",&num2);

switch(oper){
case(0):printf("%d %c %d = %d",num1,array[oper],num2,num1+num2);break;
case(1):printf("%d %c %d = %d",num1,array[oper],num2,num1-num2);break;
case(2):printf("%d %c %d = %d",num1,array[oper],num2,num1*num2);break;
case(3):printf("%d %c %d = %d",num1,array[oper],num2,num1/num2);break;
}
printf("\n");

2).铁路托运行李规定:行李重不超过50公斤的,托运费按0.15元每公斤计算,如果超过50公斤,超出部分每公斤加收0.1元。编程实现上述功能

double weight; //行李的重量
double delta; //超出部分的重量
double userPrice; //运费
const double price = 0.15;
const double baseWight = 50;
const double deltaPrice = 0.1;


printf("请输入重量:\n");
scanf("%lf",&weight);

if (weight <= baseWight) {
userPrice = weight * price;
} else if (weight > baseWight){
delta = weight - baseWight;
userPrice = baseWight * price+ delta * (price + deltaPrice);
}
printf("你的重量为:%.2lf,运费为%.2lf元\n",weight,userPrice);

3).有3个整数a,b,c,由键盘输入,输出其中最大的数

int a,b,c,max;
//用户输入三个整数
printf("请输入第一个数:\n");
scanf("%d",&a);
printf("请输入第二个数:\n");
scanf("%d",&b);
printf("请输入第三个数:\n");
scanf("%d",&c);

//判断
if (a > b) {
max = a;
if (max max = c;
}
}else{
max = b;
}if (max max = c;
}
printf("最大的数是:%d\n",max);

4).由用户输入两个日期(1/31/1900),比较哪一个日期更早

int year1,month1,day1;
int year2,month2,day2;
//提示用户输入日期
printf("请输入第一个日期(格式为:1/31/1900):\n");
scanf("%d/%d/%d",&month1,&day1,&year1);
printf("请输入第二个日期(格式为:1/31/1900):\n");
scanf("%d/%d/%d",&month2,&day2,&year2);

//判断
if (year1 > year2){
printf("%d%d%d日更早\n",year2,month2,day2);
}else if (year1 printf("%d%d%d日更早\n",year1,month1,day1);
}else if (year1 == year2){
if (month1 > month2) {
printf("%d%d%d日更早\n",year2,month2,day2);
}else if (month1 printf("%d%d%d日更早\n",year1,month1,day1);
}else if (month1 == month2){
if (day1 > day2) {
printf("%d%d%d日更早\n",year2,month2,day2);
}else if (day1 printf("%d%d%d日更早\n",year1,month1,day1);
}else if (day1 == day2){
printf("%d%d%d日和%d%d%d日是同一天\n",year1,month1,day1,year2,month2,day2);
}
}
}

5).由用户输入一个两位数,用汉字输出出来

int num;
int decade; //保存十位
int unit; //保存个位

//提示用户输入
printf("请输入一个两位数:\n");
scanf("%d",&num);
if (num <10 || num >99) {
printf("输入有误,请重新输入\n");
scanf("%d",&num);
}
/*
if (num % 10 == 0) {
switch(num / 10){
case 1: printf("一");break;
case 2: printf("二");break;
case 3: printf("三");break;
case 4: printf("四");break;
case 5: printf("五");break;
case 6: printf("六");break;
case 7: printf("七");break;
case 8: printf("八");break;
case 9: printf("九");break;
}
printf("十");
}else if (num / 10 == 1){
switch(num % 10){
printf("十");
case 1: printf("一");break;
case 2: printf("二");break;
case 3: printf("三");break;
case 4: printf("四");break;
case 5: printf("十");break;
case 6: printf("十");break;
case 7: printf("十");break;
case 8: printf("十");break;
case 9: printf("十");break;
}
}else{
switch(num / 10){
case 2: printf("二");break;
case 3: printf("三");break;
case 4: printf("四");break;
case 5: printf("五");break;
case 6: printf("六");break;
case 7: printf("七");break;
case 8: printf("八");break;
case 9: printf("九");break;
}
printf("十");
switch(num % 10){
case 1: printf("一");break;
case 2: printf("二");break;
case 3: printf("三");break;
case 4: printf("四");break;
case 5: printf("五");break;
case 6: printf("六");break;
case 7: printf("七");break;
case 8: printf("八");break;
case 9: printf("九");break;
}
}
printf("\n");
*/

//方法二,将两位数拆分,商为十位,余数为个位,加权
decade = num / 10;
unit = num % 10;
switch(decade){
case 1: printf("你输入的数为:十");break;
case 2: printf("你输入的数为:二十");break;
case 3: printf("你输入的数为:三十");break;
case 4: printf("你输入的数为:四十");break;
case 5: printf("你输入的数为:五十");break;
case 6: printf("你输入的数为:六十");break;
case 7: printf("你输入的数为:七十");break;
case 8: printf("你输入的数为:八十");break;
case 9: printf("你输入的数为:九十");break;
}
switch(unit){
case 1: printf("一");break;
case 2: printf("二");break;
case 3: printf("三");break;
case 4: printf("四");break;
case 5: printf("五");break;
case 6: printf("六");break;
case 7: printf("七");break;
case 8: printf("八");break;
case 9: printf("九");break;
}
printf("\n");

6).输入年月得到当月天数

//由于2月有28天和29天所以需判断闰年
// 年份可以被4整除且不能被100整除,或者可以被400整除
// year % 4 == 0 && year % 100 != 0 || year % 400 == 0
// 该年就是闰年


int year, month;

// 1,提示输入
printf("请输入年月,2000年1月,可以写作2000-1\n");

// 2,输入内容
scanf("%d-%d", &year, &month);

// 3,判断得结果
/*
if(2月) {
if(闰年)
}else {
switch
}
*/
//先判断简单的
if(mOnth== 2) {
if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
// 闰年
printf("29天\n");
} else {
printf("28天\n");
}
} else {
switch (month) {
/*
case 1:printf("31天\n");break;
case 3:printf("31天\n");break;
case 4:printf("30天\n");break;
case 5:printf("31天\n");break;
case 6:printf("30天\n");break;
case 7:printf("31天\n");break;
case 8:printf("31天\n");break;
case 9:printf("30天\n");break;
case 10:printf("31天\n");break;
case 11:printf("30天\n");break;
case 12:printf("31天\n");break;
*/
//简化后,将结果分为30天和31
case 4: case 6: case 9:
case 11:printf("30天\n");break;
default:printf("31天\n");
}
}

推荐阅读
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • 本文讨论了使用差分约束系统求解House Man跳跃问题的思路与方法。给定一组不同高度,要求从最低点跳跃到最高点,每次跳跃的距离不超过D,并且不能改变给定的顺序。通过建立差分约束系统,将问题转化为图的建立和查询距离的问题。文章详细介绍了建立约束条件的方法,并使用SPFA算法判环并输出结果。同时还讨论了建边方向和跳跃顺序的关系。 ... [详细]
  • c语言\n不换行,c语言printf不换行
    本文目录一览:1、C语言不换行输入2、c语言的 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • ALTERTABLE通过更改、添加、除去列和约束,或者通过启用或禁用约束和触发器来更改表的定义。语法ALTERTABLEtable{[ALTERCOLUMNcolu ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • 本文介绍了深入浅出Linux设备驱动编程的重要性,以及两种加载和删除Linux内核模块的方法。通过一个内核模块的例子,展示了模块的编译和加载过程,并讨论了模块对内核大小的控制。深入理解Linux设备驱动编程对于开发者来说非常重要。 ... [详细]
  • JDK源码学习之HashTable(附带面试题)的学习笔记
    本文介绍了JDK源码学习之HashTable(附带面试题)的学习笔记,包括HashTable的定义、数据类型、与HashMap的关系和区别。文章提供了干货,并附带了其他相关主题的学习笔记。 ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
  • C语言常量与变量的深入理解及其影响
    本文深入讲解了C语言中常量与变量的概念及其深入实质,强调了对常量和变量的理解对于学习指针等后续内容的重要性。详细介绍了常量的分类和特点,以及变量的定义和分类。同时指出了常量和变量在程序中的作用及其对内存空间的影响,类似于const关键字的只读属性。此外,还提及了常量和变量在实际应用中可能出现的问题,如段错误和野指针。 ... [详细]
  • 《2017年3月全国计算机等级考试二级C语言上机题库完全版》由会员分享,可在线阅读,更多相关《2017年3月全国计算机等级考试二级C语言上机题库完全版( ... [详细]
  • C语言自带的快排和二分查找
    Author🚹:CofCaiEmail✉️:cai.dongjunnexuslink.cnQQ😙:1664866311personalPage&#x ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
author-avatar
dongmyee
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有