前言
本文为业余学习《明解C语言入门篇》的记录,包含代码清单和练习题。
开始学习时间:2022年8月21日
+++++++++++++++++++++++++++++++
第1章 初识C语言
第2章 运算和数据类型
第3章 分支结构程序
第4章 程序的循环控制
第5章 数组
第6章 函数
第7章 基本数据类型
第8章 动手编写各种程序吧
第9章 字符串的基本知识
第10章 指针
第11章 字符串和指针
第12章 结构体
第13章 文件处理
+++++++++++++++++++++++++++++++
第3章、分支结构程序
3-1 if语句
代码清单 3-1
// 输入的整数能被5整除吗
#include <stdio.h>
int main()
{
int n;
printf("请输入一个整数:");
scanf("%d",&n);
if (n%5)
{
puts("输入的整数不能被5整除。");
}
return 0;
}
代码清单 3-2
//输入的整数是奇数吗
#include <stdio.h>
int main()
{
int n;
printf("请输入一个整数:");
scanf("%d",&n);
if (n%2)
{
puts("输入的整数是奇数。");
}
return 0;
}
代码清单 3-3
//输入的整数能被5整除吗
#include <stdio.h>
int main()
{
int n;
printf("请输入一个整数:");
scanf("%d",&n);
if (n%5)
{
puts("输入的整数不能被5整除。");
}
else
{
puts("输入的整数能被5整除。");
}
return 0;
}
代码清单 3-4
//输入的整数值是奇数还是偶数
#include <stdio.h>
int main()
{
int n;
printf("请输入一个整数:");
scanf("%d",&n);
if (n%2)
{
puts("输入的是奇数。");
}
else
{
puts("输入的是偶数。");
}
return 0;
}
练习 3-1
//练习3-1,约数
#include <stdio.h>
int main()
{
int n1,n2;
printf("请输入整数n1:");
scanf("%d",&n1);
printf("请输入整数n2:");
scanf("%d",&n2);
if (n1%n2)
{
puts("n2不是n1的约数。");
}
else
{
puts("n2是n1的约数。");
}
return 0;
}
代码清单 3-5
//输入的整数是否为0
#include <stdio.h>
int main()
{
int n;
printf("请输入一个整数:");
scanf("%d",&n);
if (n)
{
puts("该整数不是0。");
}
else
{
puts("该整数是0。");
}
return 0;
}
代码清单 3-6
//输入的两个整数相等吗
#include <stdio.h>
int main()
{
int n1,n2;
printf("请输入整数n1:");
scanf("%d",&n1);
printf("请输入整数n2:");
scanf("%d",&n2);
if (n1==n2)
{
puts("它们相等。");
}
else
{
puts("它们不相等。");
}
return 0;
}
代码清单 3-7
//输入的两个整数相等吗
#include <stdio.h>
int main()
{
int n1,n2;
printf("请输入整数n1:");
scanf("%d",&n1);
printf("请输入整数n2:");
scanf("%d",&n2);
if (n1!=n2)
{
puts("它们不相等。");
}
else
{
puts("它们相等。");
}
}
代码清单 3-8
//个位数是5吗
#include <stdio.h>
int main()
{
int n;
printf("请输入一个整数:");
scanf("%d",&n);
if (n%10==5)
{
puts("该整数的个位数是5。");
}
else
{
puts("该整数的个位数不是5。");
}
}
代码清单 3-9
//判断输入的整数的符号
#include <stdio.h>
int main()
{
int n;
printf("请输入一个整数:");
scanf("%d",&n);
if (n==0)
{
puts("该整数为0。");
}
else
if (n>0)
{
puts("该整数为正整数。");
}
else
{
puts("该整数为负整数。");
}
return 0;
}
练习 3-2
//练习3-2
#include <stdio.h>
int main()
{
int n;
printf("请输入一个整数:");
scanf("%d",&n);
if (n==0)
{
puts("此整数为0。");
}
else if (n>0)
{
puts("此整数为正整数。");
}
else if (n<0)
{
puts("此整数为负整数。");
}
return 0;
}
练习 3-3
//练习3-3 显示输入整数的绝对值
#include <stdio.h>
int main()
{
int n;
printf("请输入一个整数:");
scanf("%d",&n);
if (n >= 0)
{
printf("它的绝对值是%d。\n",n);
}
else
{
printf("它的绝对值是%d。\n",-n);
}
return 0;
}
练习 3-4
//练习3-4,比较两个整数大小
#include <stdio.h>
int main()
{
int n1,n2;
puts("请输入两个整数。");
printf("n1 = ");
scanf("%d",&n1);
printf("n2 = ");
scanf("%d",&n2);
if (n1==n2)
{
puts("n1和n2相等。");
}
else if (n1>n2)
{
puts("n1大于n2。");
}
else
{
puts("n1小于n2。");
}
return 0;
}
代码清单 3-10
//如果输入的整数值为正,则判断该值的奇偶性并显示
#include <stdio.h>
int main()
{
int n;
printf("请输入一个整数:");
scanf("%d",&n);
if (n>0)
if (n%2)
{
puts("该整数为奇数。");
}
else
{
puts("该整数为偶数。");
}
else
{
puts("您输入的不是正数。");
}
return 0;
}
练习 3-5
//练习3-5,确认相等运算符和关系运算符的运算结果是1和0
#include <stdio.h>
int main()
{
int n;
n=(1==2); //结果为假(0)
printf("%d\n",n);
n=(1<2); //结果为真(1)
printf("%d\n",n);
n=(1>2); //结果为假(0)
printf("%d\n",n);
n=(1!=2); //结果为真(1)
printf("%d\n",n);
return 0;
}
代码清单 3-11
//显示所输入的两个整数中较大的数
#include <stdio.h>
int main()
{
int n1, n2;
puts("请输入两个整数。");
printf("整数1:"); scanf("%d", &n1);
printf("整数2:"); scanf("%d", &n2);
if (n1 > n2)
{
printf("较大的数是%d。\n", n1);
}
else
{
printf("较大的数是%d。\n", n2);
}
return 0;
}
代码清单 3-12
//显示所输入的两个整数中较大的数(其2)
#include <stdio.h>
int main()
{
int n1, n2, max;
puts("请输入两个整数。");
printf("整数1:"); scanf("%d", &n1);
printf("整数2:"); scanf("%d", &n2);
if (n1 > n2)
{
max = n1;
}
else
{
max = n2;
}
printf("较大的数是%d。\n", max);
return 0;
}
代码清单 3-13
//计算所输入的三个整数中最大值并显示
#include <stdio.h>
int main()
{
int n1, n2, n3, max;
puts("请输入三个整数。");
printf("整数1:"); scanf("%d", &n1);
printf("整数2:"); scanf("%d", &n2);
printf("整数3:"); scanf("%d", &n3);
max = n1;
if (n2 > max)
{
max = n2;
}
if (n3 > max)
{
max = n3;
}
printf("最大值是%d。\n", max);
return 0;
}
代码清单 3-14
//显示所输入的两个整数中较大的数(其3:条件运算符)
#include <stdio.h>
int main()
{
int n1, n2, max;
puts("请输入两个整数。");
printf("整数1:"); scanf("%d", &n1);
printf("整数2:"); scanf("%d", &n2);
max = n1 > n2 ? n1:n2;
printf("较大的数是%d。\n", max);
return 0;
}
代码清单 3-15
//计算输入的两个整数的差并显示(条件运算符)
#include <stdio.h>
int main()
{
int n1, n2;
puts("请输入两个整数。");
printf("整数1:"); scanf("%d", &n1);
printf("整数2:"); scanf("%d", &n2);
printf("它们的差是%d。\n", n1 > n2 ? n1 - n2:n2 - n1);
return 0;
}
练习 3-6
//编写一段程序,计算出输入的三个整数中的最小值并显示
#include <stdio.h>
int main()
{
int n1, n2, n3, min;
puts("请输入三个整数。");
printf("整数1:"); scanf("%d", &n1);
printf("整数2:"); scanf("%d", &n2);
printf("整数3:"); scanf("%d", &n3);
min = n1;
if (n2 < min)
{
min = n2;
}
if (n3 < min)
{
min = n3;
}
printf("最小值是%d。\n", min);
return 0;
}
练习 3-7
//编写一段程序,计算出输入的四个整数中的最大值并显示
#include <stdio.h>
int main()
{
int n1, n2, n3, n4, max;
puts("请输入四个整数。");
printf("整数1:"); scanf("%d", &n1);
printf("整数2:"); scanf("%d", &n2);
printf("整数3:"); scanf("%d", &n3);
printf("整数4:"); scanf("%d", &n4);
max = n1;
if (n2 > max)
{
max = n2;
}
if (n3 > max)
{
max = n3;
}
if (n4 > max)
{
max = n4;
}
printf("最大值是%d。\n", max);
return 0;
}
练习 3-8
//使用if语句替换代码清单3-15程序中的条件运算符,实现同样的功能
#include <stdio.h>
int main()
{
int n1, n2, diff;
puts("请输入两个整数。");
printf("整数1:"); scanf("%d", &n1);
printf("整数2:"); scanf("%d", &n2);
if (n1 > n2)
{
diff = n1 -n2;
}
else
{
diff = n2 - n1;
}
printf("它们的差是%d。\n", diff);
return 0;
}
练习 3-9
//使用条件运算符替换练习3-6的程序中的if语句,实现同样的功能
#include <stdio.h>
int main()
{
int n1, n2, n3;
puts("请输入三个整数。");
printf("整数1:"); scanf("%d", &n1);
printf("整数2:"); scanf("%d", &n2);
printf("整数3:"); scanf("%d", &n3);
printf("最小值是%d。\n", (n1 < n2 ? n1:n2) < n3 ? (n1 < n2 ? n1:n2):n3);
return 0;
}
代码清单 3-16
//计算输入的两个整数中较大值和较小值并显示。
#include <stdio.h>
int main()
{
int n1,n2,max,min;
puts("请输入两个整数。");
printf("整数n1:"); scanf("%d",&n1);
printf("整数n2:"); scanf("%d",&n2);
if (n1>n2)
{
max=n1;
min=n2;
}
else
{
max=n2;
min=n1;
}
printf("两个整数中较大值是%d,较小值是%d。\n",max,min);
return 0;
}
代码清单 3-17
//显示所输入的月份所处的季节
#include <stdio.h>
int main()
{
int month;
printf("请输入月份:");
scanf("%d",&month);
if (month>=3 && month <=5)
{
printf("%d月是春季。\n",month);
}
else if (month>= 6 && month<=8)
{
printf("%d月是夏季。\n",month);
}
else if (month>=9 && month<=11)
{
printf("%d月是秋季。\n",month);
}
else if (month==12 || month==1 || month==2)
{
printf("%d月是冬季。\n",month);
}
else
{
printf("%d月不存在。\n",month);
}
return 0;
}
练习3-10
//输入三个整数,判断有几个相等。
#include <stdio.h>
int main()
{
int A,B,C;
puts("请输入三个整数。");
printf("整数A:"); scanf("%d",&A);
printf("整数B:"); scanf("%d",&B);
printf("整数C:"); scanf("%d",&C);
if (A==B && A==C)
{
printf("三个值都相等。\n");
}
else if (A!=B && A!=C && B!=C)
{
printf("三个值都不相等。\n");
}
else
{
printf("有两个值相等。\n");
}
return 0;
}
练习 3-11
//用逻辑或运算符判断两个整数小于等于10还是大于等于11
#include <stdio.h>
int main()
{
int A,B;
printf("整数A:"); scanf("%d",&A);
printf("整数B:"); scanf("%d",&B);
if (A-B>=10||B-A>=10)
{
puts("它们的差大于等于10。");
}
else
{
puts("它们的差小于等于10。");
}
}
3-2 switch语句
代码清单 3-18
//显示所输入的整数除以3的余数
#include <stdio.h>
int main()
{
int no;
printf("请输入一个整数no:");
scanf("%d",&no);
if (no % 3 == 0)
{
printf("该整数能被3整除。\n");
}
else if (no % 3 == 1)
{
printf("该整数除以3的余数是1。\n");
}
else
{
printf("该整数除以3的余数是2。\n");
}
return 0;
}
代码清单 3-19
//显示所输入整数除以3的余数
#include <stdio.h>
int main()
{
int no;
printf("请输入一个整数:");
scanf("%d",&no);
switch (no % 3)
{
case 0: puts("该整数能被3整除。"); break;
case 1: puts("该整数除以3余数为1。"); break;
case 2: puts("该整数除以3余数为2。"); break;
}
return 0;
}
代码清单 3-20
//确认switch语句动作的程序
#include <stdio.h>
int main()
{
int sw;
printf("整数:");
scanf("%d",&sw);
switch (sw)
{
case 1 : puts("A"); puts("B"); break;
case 2 : puts("C");
case 5 : puts("D"); break;
case 6 :
case 7 : puts("E"); break;
default : puts("F"); break;
}
return 0;
}
练习 3-12
//输入的整数是奇数还是偶数
#include <stdio.h>
int main()
{
int no;
printf("请输入一个整数:");
scanf("%d",&no);
switch (no % 2)
{
case 0 : puts("该整数是偶数。"); break;
default : puts("该整数是奇数。");
}
return 0;
}
练习 3-13
//练习3-13,用switch语句改写代码清单3-17
#include <stdio.h>
int main()
{
int month;
printf("请输入月份:");
scanf("%d",&month);
switch (month)
{
case 3 :
case 4 :
case 5 : puts("春"); break;
case 6 :
case 7 :
case 8 : puts("夏"); break;
case 9 :
case 10 :
case 11 : puts("秋"); break;
case 12 :
case 1 :
case 2 : puts("冬"); break;
default : puts("该月份不存在。");
}
return 0;
}
总结
summary1
#include <stdio.h>
int main()
{
int month;
printf("请输入月份:");
scanf("%d", &month);
if (month < 1 || month > 12)
{
printf("%d月不存在!!\a\n", month);
}
else if (month <= 2 || month == 12)
{
printf("%d月是冬季。\n", month);
}
else if (month >= 9)
{
printf("%d月是秋季。\n", month);
}
else if (month >= 6)
{
printf("%d月是夏季。\n", month);
}
else
{
printf("%d月是春季。\n", month);
}
return 0;
}
summary2
#include <stdio.h>
int main()
{
int sw;
printf("请输入颜色[红:1,蓝:2,白:3]:");
scanf("%d", &sw);
switch (sw)
{
case 1 : printf("红色"); break;
case 2 : printf("蓝色"); break;
case 3 : printf("白色"); break;
}
putchar('\n');
return 0;
}
summary3
#include <stdio.h>
int main()
{
int n1, n2;
puts("请输入两个整数。");
printf("整数1:"); scanf("%d", &n1);
printf("整数2:"); scanf("%d", &n2);
if (n1 > n2)
{
printf("较大的数是n1。\n");
printf("它们的差是%d。\n", n1 - n2);
}
else
{
printf("较大的数是n2。\n");
printf("它们的差是%d。\n", n2 - n1);
}
return 0;
}