C语言开发_if语句、循环语句深入练习
任务1:基本数据类型
基本数据类型
int |
整型,只能存放整数,占4个字节。通过sizeof()语句进行计算。 比如: 在8位机中占2个字节。 |
char |
字符类型; 可以存放整数,可以存放字符。(字符在计算机中都是以整数形式存放) ’A’ ‘B’ “中文” |
float |
单精度浮点类型(小数点)。可以存放带小数的数据。理论上精度到小数点后6位。 |
double |
双精度浮点类型。理论上精度到小数点后10位。 |
计算机处理一个浮点数的时间可以处理10个整型的时间。
(操作系统都有内核 –没有浮点数)
C语言的变量
变量:存入的数据可以改变。
定义格式:<数据类型> <变量的名称>; int data; |
< > :表示该参数必须填。
常量:存放的数据不能改变。
C语言框架
#include <stdio.h> //include 引用 stdio.h 文件 int main() //主函数。 程序运行的起点。 { return 0; //结束语句。功能:结束函数,并且可以向函数的调用处返回一个值。 } // 0一般表示成功 负数一般表示错误。 |
标准输入和输出
标准输入函数:scanf(“<格式>”,<变量(需要加&取地址符号)>); 标准输出函数:printf(“<格式>”,<数据>); 格式: %d : 表示整数类型 %c : 表示字符类型 %f : 表示浮点数类型 %s : 表示字符串 %x: 表示16进制格式 |
标准输入:从键盘上获取数据。
标准输出:向屏幕上输出数据进行显示。
(标准输入和标准输出有一个缓存空间:这个缓存空间就是一个文件。)
标准输出示例1:
#include <stdio.h> int main() { printf("%d\n",123); // \n 回车键 /*输出的过程: 将123和%d进行替换。 结果: "123\n" */ printf("%d %f\n",789,123.456); //输出多个数据。 return 0; } |
标准输出示例2:
#include <stdio.h> int main() { printf("%0.2f\n",123.456123); //%0.2f表示保留2位小数点 printf("%10.2f\n",123.456123); // %10.2f 这里的10表示左补的空格个数 return 0; } |
标准输入示例1:
#include <stdio.h> int main() { int data; //变量 --用来存放数据的空间 int a,b; //123 : 整型常量。 123本身就是数据。 scanf("%d",&data); //回车键表示结束。 //等待用户输入的过程:阻塞过程。 printf("%d\n",data); scanf("%d%d",&a,&b); //输入的过程中空格键表示间隔符号 printf("%d ,%d\n",a,b); return 0; } |
解决以下的输入错误。
#include <stdio.h> int main() { // int a,b,c; // scanf("%d%d%d",&a,&b,&c); // printf("%d %d %d\n",a,b,c); // char a,b,c; // scanf("%c%c%c",&a,&b,&c); // printf("%c %c %c\n",a,b,c); char a,b,c; printf("请输入第一个字符:"); //没有格式的情况下,默认输出字符串。"" scanf("%c",&a); printf("请输入第二个字符:"); //没有格式的情况下,默认输出字符串。"" scanf("%c",&b); printf("请输入第三个字符:"); //没有格式的情况下,默认输出字符串。"" scanf("%c",&c); printf("结果: %c %c %c\n",a,b,c); return 0; } |
答案1:
#include <stdio.h> int main() { char a,b,c; printf("请输入第一个字符:"); //没有格式的情况下,默认输出字符串。"" scanf("%c",&a); fflush(stdin); //flush 刷新缓冲区 f--file文件简写 //stdin :标准输入 printf("请输入第二个字符:"); //没有格式的情况下,默认输出字符串。"" scanf("%c",&b); fflush(stdin); //flush 刷新缓冲区 printf("请输入第三个字符:"); //没有格式的情况下,默认输出字符串。"" scanf("%c",&c); fflush(stdin); //flush 刷新缓冲区 printf("结果: %c %c %c\n",a,b,c); return 0; } |
任务:if()语句
2.1 if: 判断语句
普通格式: if(<表达式>) //表达式的结果只有两个: 0和1 (真和假) { 语句; …… } 完整格式: if(<表达式>) //表达式的结果只有两个: 0和1 (真和假) { 语句; …… } else //表达式为假的时候执行 { 语句; } 嵌套格式: if(<表达式>) //条件1 { } else if(表达式) //条件2 { } ........ else //所有条件都不成立的情况下执行 { } |
2.2 if语句常用的运算符
关系运算符 |
> , <, ==,>=,<= ,!= |
逻辑运算符 |
&& (逻辑与—并且)、|| (逻辑或—或者) 、 ! (逻辑非。真为假,假为真) |
练习题目:
判断闰年。
从键盘上输入一个年份,判断是否是闰年 (要求: 只用一个if语句)。
条件: (1. 能被4整除,并且不能被100整除)
2. 能被400整除
( 这个两个条件其中一个成立,就是闰年)
注意:加入一个if判断范围:1979----2020
基本运算符:= , %(取余) , / , * , + , - |
示例:
#include <stdio.h> int main() { int data; printf("请输入年份: "); scanf("%d",&data); /*1. 限制范围 1979 - 2020*/ if(data>=1979 && data<=2020) { /*2. 判断闰年*/ if( (data%4==0 && data%100!=0) || data%400==0) { printf("闰年!\n"); }else { printf("平年\n"); } }else { printf("输入的年份有误!\n"); } return 0; } |
输入任意三个数,按从小到大的顺序输出。 56 1 90 --> 1 56 90
(基本排序原理)
#include <stdio.h> int main() { int a,b,c; int tmp; printf("请输入3个整数:\n"); scanf("%d%d%d",&a,&b,&c); // a=10 b=5 c=40 // a=5 b=10 c=40 /*1. 第一轮 规律: 每次一轮之后,最后一个数就是最大值*/ if(a>b) { tmp=a; a=b; b=tmp; } if(b>c) { tmp=b; b=c; c=tmp; } /*2. 第二轮*/ if(a>b) { tmp=a; a=b; b=tmp; } printf("%d,%d,%d\n",a,b,c); return 0; } |
3. 输入一个华氏温度,输出摄氏温度,计算公式为(华氏度-32)×5÷9 要求结果保留两位小数。
示例:
#include <stdio.h> int main() { float t1,t2; //(华氏度-32)×5÷9 printf("输入华氏度温度:\n"); scanf("%f",&t1); t2=(t1-32)*5/9; printf("%0.2f\n",t2); return 0; } |
输入一个不多于5位的正整
数,判断他是几位数,并逆序输出。
#include <stdio.h> int main() { int data; int a,b,c,d,e; //12345 //45 printf("输入不大于5位的整数:"); scanf("%d",&data); /*1. 数位分离*/ a=data/10000; //1 0 b=data%10000/1000; //2 0 c=data%1000/100; //3 0 d=data%100/10; //4 4 e=data%10/1; //5 5 if(a!=0) { printf("%d是5位数\n",data); printf("%d%d%d%d%d\n",e,d,c,b,a); } else if(b!=0) { printf("%d是4位数\n",data); printf("%d%d%d%d\n",e,d,c,b); } else if(c!=0) { printf("%d是3位数\n",data); printf("%d%d%d\n",e,d,c); } else if(d!=0) { printf("%d是2位数\n",data); printf("%d%d\n",e,d); } else { printf("%d是1位数\n",data); printf("%d\n",e); } return 0; } |
5. 判断回文数。从键盘上输入一个整数(不超过5位),判断是否是回文。
比如:35553 、323、3223、55、11
#include <stdio.h> int main() { int data; int a,b,c,d,e; //12345 //45 printf("输入不大于5位的整数:"); scanf("%d",&data); /*1. 数位分离*/ a=data/10000; //1 0 b=data%10000/1000; //2 0 c=data%1000/100; //3 0 d=data%100/10; //4 4 e=data%10/1; //5 5 if(a!=0) { printf("%d是5位数\n",data); if(a==e && b==d) { printf("回文\n"); }else { printf("不是回文\n"); } } else if(b!=0) { printf("%d是4位数\n",data); printf("%d%d%d%d\n",e,d,c,b); if(b==e && c==d) { printf("回文\n"); }else { printf("不是回文\n"); } } else if(c!=0) { printf("%d是3位数\n",data); printf("%d%d%d\n",e,d,c); if(c==e) { printf("回文\n"); }else { printf("不是回文\n"); } } else if(d!=0) { printf("%d是2位数\n",data); printf("%d%d\n",e,d); if(d==e) { printf("回文\n"); }else { printf("不是回文\n"); } } else { printf("%d是1位数\n",data); printf("%d\n",e); printf("回文\n"); } return 0; } |
任务:for循环语句
功能:循环
for(<初始化语句>;<条件语句>;<自增/自减语句>) { 执行的代码语句; } for(i=0;i<5;i++) { printf("hello\n"); } 执行的顺序: 初始化语句->条件语句(成立)->执行的代码语句->自增/自减语句 循环的顺序:( 条件语句(成立)->执行的代码语句->自增/自减语句 ) |
练习题目:
输出所有200~400以内能被3整除且个位数字为6的整数。
判断10~100直接的所有素数。 (素数:只能被1和本身整除的数。比如: 2,3,7)
输出所有的水仙数。(水花数是一个三位数,个十百位上的立方和等于该数本身 123)
输出100~500直接的所有回文数
编程计算1*2*3+4*5*6+。。。。+97*98*99的值。
编程计算1!+2!+3!+。。+10!的值。(阶乘)
输出 9*9 乘法口诀表
- 点赞
- 收藏
- 关注作者
评论(0)