C语言开发_if语句、循环语句深入练习

举报
DS小龙哥 发表于 2022/05/25 23:57:52 2022/05/25
【摘要】 介绍基本数据类型、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 乘法口诀表


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。