初识C语言检测答案
选择题
有疑惑可在评论区提出,答案若出现错误恳请在评论区指正
C D B C B
C C B B B
C B A C
编程题
编程题答案不唯一,不同解答可写在评论区
//BC17-计算表达式的值
#include <stdio.h>
int main()
{
int a=40,c=212;
printf("%d",(-8+22)*a-10+c/2);
return 0;
}
//BC41-你是天才吗?
#include <stdio.h>
int main()
{
int n;
scanf("%d",n);
if(n>=140)
{
printf("Genius");
}
return 0;
}
//BC32-输出学生信息
#include <stdio.h>
int main()
{
printf("Name Age Gender\n");
printf("---------------------\n");
printf("Jack 18 man \n");
return 0;
}
//BC83-被5整除问题
#include <stdio.h>
int main()
{
int a;
scanf("%d",&a);
if(a%5==0)
printf("YES");
else
printf("NO");
return 0;
}
//BC18-计算带余除法
#include <stdio.h>
int main()
{
int a,b;
scanf("%d %d",&a,&b);
if(a>0&&b<10000)
{
printf("%d %d",a/b,a%b);
}
return 0;
}
//BC19-反向输出一个四位数
#include <stdio.h>
int main()
{
int n;
scanf("%d",&n);
while(n)
{
printf("%d",n%10);
n=n/10;
}
return 0;
}
//BC33-计算机平均成绩
#include <stdio.h>
int main()
{
int i;
float sum = 0,n;
for (i = 0; i <5; i++)
{
scanf("%f",&n);
sum += n;
}
printf("%.1f", sum /5.0);
return 0;
}
//BC49-判断2个数的大小
#include<stdio.h>
int main()
{
int a,b;
while(scanf("%d %d",&a,&b)!=EOF)
{
if(a>b)
{
printf("%d>%d\n",a,b);
}
else if (a<b)
{
printf("%d<%d\n",a,b);
}
else printf("%d=%d\n",a,b);
}
return 0;
}
//BC23-时间转换
#include<stdio.h>
int main()
{
int m,f,s,n;
scanf("%d",&n);
m=n%3600%60;
f=n%3600/60;
s=n/3600;
printf("%d %d %d",s,f,m);
return 0;
}
前言
C语言是一门结构化程序设计语言,主要包括顺序结构,选择结构以及循坏结构。
仔细想想,生活中任何事情都可以拆分成这三种结构的。
本文章将详细介绍分支(选择))语句和循环语句以及goto语句
什么是语句?
在正文开始前,我们先来了解一下,什么是语句?
在C语言中,语句可分为以下五类:
- 表达式语句
- 函数调用语句
- 控制语句
- 复合语句
- 空语句
本章后面介绍的是控制语句。 控制语句用于控制程序的执行流程,以实现程序的各种结构方式(C语言支持三种结构:顺序结构、选择结构、循环结构),它们由特定的语句定义符组成,C语言有九种控制语句。
可分成以下三类:
- 条件判断语句也叫分支语句:if语句、switch语句;
- 循环执行语句:do while语句、while语句、for语句;
- 转向语句:break语句、goto语句、continue语句、return语句。
语句是以 分号; 结尾的。
分支(选择)
经过初识C语言(一)我们已经知道分支(选择)语句包含了
if
switch
在我们人生当中,是到处面临选择的。拿自己来说,高考后分数够不够及格线,大学毕业后是选择就业还是考研这种选择,高考填志愿选择什么类别专业这样多种选择。
这种将改变人生的选择,也是我们生活中的一部分。好好学习就是为了让我们未来有更多的选择。
if语句
那if语句的语法结构是怎么样的呢?
//if语法结构
if(表达式)
语句;
//分支
if(表达式)
语句1;
else
语句2;
//多分支
if(表达式1)
语句1;
else if(表达式2)
语句2;
else
语句3;
以上代码核心思想是这样的:
表达式的结果如果为真,语句就可以执行
在C语言中,零表示假,非零为真,也就是说,当表达式为非零的时候,我们就可以继续往下执行语句
分支语句就是有多种选择,表达式为真,我们执行语句1,否则表达式为零,我们执行语句2。
多分支语句就是,表达式1为真,则执行语句1;如果表达式1为假,表达式2为真,则执行语句2,否则执行语句3。
拿刚才的话来说,就是我的分数线能够满足上大学,那我就上大学。
代码表示:
#include <stdio.h>
int main()
{
float score = 0; //去定义一个高考成绩
scanf("%f", &score); //输入自己的高考成绩
if (444 <= score) //如果高考成绩大于或等于444,就可以上大学
{
printf("恭喜你已达到本科录取分数线,可以上大学!");
}
return 0;
}
友情提示,本分数线是山东省本科录取分数线,来源于网络
运行结果:
假设很快大学四年过去了,我马上面临毕业,那么我要选择考研还是就业,这种可以用代码这么表示:
#include <stdio.h>
int main()
{
int num = 0; //定义一个数字
printf("请输入数字 1 or 0\n");
scanf("%d", &num); //输入一个数字 1或0
if (num) //当输入的数字为 1 时,选择考研,否则就业
{
printf("考研\n");
}
else
{
printf("就业\n");
}
return 0;
}
执行结果:
在这里还要特别强调个格式,如果语句是多个语句,则用 { } 括起来,否则编译器会报错,我本人是不管用多少个语句,哪怕一个我也会加上 { } 主要是为了方便,也避免了一些问题。
适当的使用{ }可以使代码的逻辑更加清楚。
代码风格很重要
被 { } 括起来的叫做语句块.
if(表达式)
{
语句列表1;
}
else
{
语句列表2;
}
#include <stdio.h>
int main()
{
int num = 0;
printf("请输入数字 1 or 0");
scanf("%d", &num);
if (num)
{
printf("考研\n");
printf("一战成硕,一举上岸!\n");
}
else
{
printf("就业\n");
}
return 0;
}
运行结果:
好,大学毕业了,该收拾行李回家了,这时候恰好有一段自行支配的时间可以选择和伙伴出去旅游,从山东到北京,出行方式可以选择高铁,自驾,飞机。
#include <stdio.h>
int main()
{
int num = 0;
printf("请输入数字 0 , 1 or 2 选择出行方式\n");
scanf("%d", &num);
if (1 == num)
{
printf("高铁\n");
}
else if(num==2)
{
printf("飞机\n");
}
else
{
printf("自驾\n");
}
return 0;
}
运行结果:
在这儿特别要注意 == 与 = 号的区别,前者判断两边是否相等,而后者是将右边的值赋值给左边
if嵌套
if语句可以嵌套,也就是说if与局内可以包含多个if语句
if (表达式1)
{
if (表达式2)
{
语句1;
}
else
{
语句2;
}
}
else
{
语句3;
}
在生活中,很多大的选择当中包含着小选择,比如前面所说的话, 当高考分数到达录取分数线,就要开始填写志愿,比如要去青岛大学,除了分数要到达本科录取分数线之外,还要满足青岛大学对省内最低录取分数线529分。青岛大学分数线来源于网络
#include <stdio.h>
int main()
{
float score = 0;
scanf("%f", &score);
if (444 <= score)
{
printf("恭喜你已达到本科录取分数线,可以上大学!\n");
if (529 <= score)
{
printf("恭喜您的分数满足青岛大学最低录取分数线!\n");
}
else
{
printf("很抱歉,您的分数未满足青岛大学最低录取分数线!\n");
}
}
else
{
printf("很抱歉,您并未达到本科录取分数线\n");
}
return 0;
}
运行结果:
else的匹配:else是和它离的最近的if匹配的
switch语句
switch语句也是一种分支语句。 常常用于多分支的情况
switch语法结构:
switch(表达式)
{
case 常量表达式1: 语句1;
case 常量表达式2: 语句2;
case 常量表达式3: 语句3;
...
default :语句;
}
switch( 表达式 )中的表达式可以是字符型表达式也可以是整型表达式 ,但不能是字符串或浮点数
常量表达式像是普通的表达式,不能包含变量和函数调用,例如可以是1,2+3,a…但绝对不能是n+1,除非n是表示常量的宏。
C语言不允许有重复的分支标号,也就是说常量表达式不能相同
语句可以写一个或者多个,可不加 { },不出意外每组语句后面通常是break语句
switch语句中的default子句可以放在任意位置,每个switch语句中只能出现一条default子句,也可以不写default。
break 跳出循环
break语句
C 语言中 break 语句有两种用法:
其实在循环中只要遇到break,就停止后期的所有的循环,直接终止循环。所以:while中的break是用于永久终止循环的
它可用于终止switch 语句中的一个 case。使程序不再往下执行
下面来举例说明第一种用法
//输出1-10以内第一个被2整除的数
#include <stdio.h>
int main()
{
int num = 1;
while (num <= 10)
{
if (num % 2 == 0)
{
printf("%d\n", num);
break;
}
num++;
}
return 0;
}
执行结果:
接下来是第二种用法
当高考分数出来后,接下来就该填写志愿,如果大专业类选择的是信息类,于是可以选择通信工程,物联网工程,网络工程,软件工程,计算机科学与技术,数字媒体技术等各种小专业
例如这些小专业通信工程为1,物联网工程为2,网络工程为3,软件工程为4,计算机科学与技术为5,数字媒体技术为6,可写成以下代码
#include <stdio.h>
int main()
{
int code = 0;
scanf("%d", &code);
switch (code)
{
case 1:
printf("通信工程\n");
break;
case 2:
printf("物联网工程\n");
break;
case 3:
printf("网络工程\n");
break;
case 4:
printf("软件工程\n");
break;
case 5:
printf("计算机科学与技术\n");
break;
case 6:
printf("数字媒体技术\n");
break;
default:
printf("非信息类别\n");
}
return 0;
}
运行结果:
当我们去掉break的时候,运行结果会是怎样?
#include <stdio.h>
int main()
{
int code = 0;
scanf("%d", &code);
switch (code)
{
case 1:
printf("通信工程\n");
case 2:
printf("物联网工程\n");
case 3:
printf("网络工程\n");
case 4:
printf("软件工程\n");
break;
case 5:
printf("计算机科学与技术\n");
break;
case 6:
printf("数字媒体技术\n");
break;
default:
printf("非信息类别\n");
}
return 0;
}
运行结果:
由此可以看出break的作用
若以上代码,我们用if语句来写
#include <stdio.h>
int main()
{
int num = 0;
scanf("%d", &num);
if (1 == num)
{
printf("通信工程\n");
}
else if (2 == num)
{
printf("物联网工程\n");
}
else if (3 == num)
{
printf("网络工程\n");
}
//......以此类推
return 0;
}
相较于switch语句 if …else i的形式太复杂 ,所以多分支常用switch来表达。