【练习11】计算 int, float, double 和 char 字节大小

0. 题目:

计算 int, float, double 和 char 字节大小

1. 分析:

使用 sizeof 操作符计算int, float, double 和 char四种变量字节大小。

sizeof 是单目操作符,以字节形式给出了其操作数的存储大小。

2. 程序:

#include <stdio.h>
int main()
{
int integerType;
float floatType;
double doubleType;
char charType; // sizeof 操作符用于计算变量的字节大小
printf("Size of int: %ld bytes\n",sizeof(integerType));
printf("Size of float: %ld bytes\n",sizeof(floatType));
printf("Size of double: %ld bytes\n",sizeof(doubleType));
printf("Size of char: %ld byte\n",sizeof(charType)); return 0;
}

3. 输入输出:

Size of int: 4 bytes

Size of float: 4 bytes

Size of double: 8 bytes

Size of char: 1 byte


【练习12】交换两个数的值

0. 题目:

交换两个数的值

1. 分析:

本例程使用中间变量。

2. 程序:

#include <stdio.h>
int main()
{
float firstNum, secondNum, tempVar; printf("输入两个浮点数(以空格分隔): ");
scanf("%f %f", &firstNum, &secondNum); tempVar = firstNum;
firstNum = secondNum;
secondNum = tempVar; printf("\n交换后 firstNum = %.2f", firstNum);
printf("\n交换后 secondNum = %.2f", secondNum); return 0;
}

3. 输入输出:

输入两个浮点数(以空格分隔): 1 2

交换后 firstNum = 2.00

交换后 secondNum = 1.00


【练习13】判断奇数/偶数

0. 题目:

判断奇数/偶数

1. 分析:

判断用户输入的整数是奇数还是偶数。

2. 程序:

#include <stdio.h>
int main()
{
int iNum; printf("输入一个整数: ");
scanf("%d", &iNum); // 判断这个数除以 2 的余数
if(iNum % 2 == 0)
printf("%d 是偶数。", iNum);
else
printf("%d 是奇数。", iNum); return 0;
}

3. 输入输出:

输入一个整数: 99

99 是奇数。


【练习14】区间内的奇偶判断

0. 题目:

判断循环区间内的奇数/偶数

1. 分析:

循环输出区间范围内的奇数/偶数可以通过除于 2 的余数来判断。

2. 程序:

#include <stdio.h>
int main()
{
int i;
for(i=1;i<=10;i++)
{
if(i%2 == 0)
printf(" %d\n", i);
}
return 0;
}

3. 输入输出:

2

4

6

8

10


【练习15】判断元音/辅音

0. 题目:

判断元音/辅音

1. 分析:

判断输入的字母是元音还是辅音。英语有26个字母,只有 a、e、i、o、u 是元音。

2. 程序:

#include <stdio.h>
int main()
{
char cInput;
int isLowercaseVowel, isUppercaseVowel; printf("输入一个字母: ");
scanf("%c",&cInput); isLowercaseVowel = ((cInput=='a') || (cInput=='e') || (cInput=='i') || (cInput=='o') || (cInput=='u')); // 小写字母元音
isUppercaseVowel = ((cInput=='A') || (cInput=='E') || (cInput=='I') || (cInput=='O') || (cInput=='U')); // 大写字母元音 if (isLowercaseVowel || isUppercaseVowel)
printf("%c 是元音。", cInput);
else
printf("%c 是辅音。", cInput);
return 0;
}

3. 输入输出:

输入一个字母: S

S 是辅音

【注意!】 关系运算符 '==" 优先于 逻辑运算符 "||",因此 (cInput=='a') 中的小括号 ()也可以省略。


【练习16】判断三个数中的最大数

0. 题目:

判断三个数中的最大数

1. 分析:

分析使用 scanf() 来接收输入,if 分支语句进行条件判断。

2. 程序:

#include <stdio.h>
int main()
{
float fNum1, fNum2, fNum3; printf("请输入 3 个数(以逗号分隔): ");
scanf("%f,%f,%f", &fNum1, &fNum2, &fNum3); if(fNum1>=fNum2 && fNum1>=fNum3 )
printf("最大数是 %.2f。", fNum1); if(fNum2>=fNum1 && fNum2>=fNum3 )
printf("最大数是 %.2f。", fNum2); if(fNum3>=fNum1 && fNum3>=fNum1 )
printf("最大数是 %.2f。", fNum3); return 0;
}

3. 输入输出:

请输入三个数(以逗号分隔): 0,1,2

最大数是 2.00

【注意!】 1、本程序采用的多次条件判断并不是最好的方法,但思路容易理解,程序可读性也较好。2、如果将题目理解为找到最大数的数值,这个程序是正确的;但如果将题目理解为找到第几个数是最大数,则不仅输出结果不符合要求,而且整体算法也存在Bug。


【练习17】一元二次方程

0. 题目:

一元二次方程

1. 分析:

求一元二次方程:ax2+bx+c=0 的根。

输入三个实数a,b,c的值,且a不等于0。

2. 程序:

#include <stdio.h>
#include <math.h>
int main()
{
float fParaA,fParaB,fParaC,fRoofX1,fRoofX2,fDelta; printf("\n一元二次方程:ax2+bx+c=0:");
printf("\n输入系数a,b,c(以逗号分隔):");
scanf("%f %f %f",&fParaA,&fParaB,&fParaC); if(fParaA!=0)
{
fDelta = fParaB*fParaB - 4*fParaA*fParaC;
if(fDelta>0)
{
fRoofX1=(-fParaB+sqrt(fDelta))/(2*fParaA);
fRoofX2=(-fParaB-sqrt(fDelta))/(2*fParaA);
printf("x1 = %0.2f, x2 = %0.2f\n",fRoofX1,fRoofX2);
}
else if(fDelta==0)
{
fRoofX1=(-fParaB+sqrt(fDelta))/(2*fParaA);
printf("x1 = x2 = %0.2f\n",fRoofX1);
}
else
{
printf("方程无实数解!\n");
}
} return 0;
}

3. 输入输出:

一元二次方程:ax2+bx+c=0:

输入系数a,b,c(以逗号分隔):1,4,-5

x1 = 1.00, x2 = -5.00


【练习18】判断闰年

0. 题目:

判断闰年

1. 分析:

能被4整除的年份是闰年,但被100整除的年份不是闰年;但被400整除的年份还是闰年。

2. 程序:

#include <stdio.h>
int main()
{
int iYear; printf("输入年份: ");
scanf("%d",&iYear); //被4整除的年份是闰年,但被100整除的年份不是闰年,但被400整除的年份还是闰年
if((iYear%4 == 0 && iYear%100 != 0) || iYear%400 == 0)
printf("%d 是闰年", iYear);
else
printf("%d 不是闰年", iYear); return 0;
}

3. 输入输出:

输入年份: 2021

2021不是闰年


【练习19】判断正数/负数

0. 题目:

判断正数/负数/零

1. 分析:

两数相除,如果有余数,输出余数

2. 程序:

#include <stdio.h>
int main()
{
float fNum; printf("输入一个实数: ");
scanf("%f", &fNum); if(fNum < 0.0)
printf("输入的 %.2f 是负数\n",fNum);
else if(fNum > 0.0)
printf("输入的 %.2f 是正数\n",fNum);
else
printf("输入的 %.2f 是零\n",fNum); return 0;
}

3. 输入输出:

输入一个实数: 0.0

输入的 0.00 是零

【注意!】该程序将输入值与数值 0.0 比较大小是可以的。但如果比较两个实数变量的大小,由于存在有效数字位数问题,一般不能直接比较二者是否相等。


【练习20】判断输入字符是否字母

0. 题目:

判断输入字符是否字母

1. 分析:

大写字母和小写字母都属于字母

2. 程序:

#include <stdio.h>
int main()
{
char cInput;
printf("输入一个字符: ");
scanf("%c",&cInput); if( (cInput>='a' && cInput<='z') || (cInput>='A' && cInput<='Z'))
printf("%c 是字母",cInput);
else
printf("%c 不是字母",cInput); return 0;
}

3. 输入输出:

输入一个字符: S

S 是字母


版权说明:

题目和例程 源于 菜鸟教程,作者重新编写了程序、注释和算例,并增加了难点分析。

C语言编程 菜鸟练习100题(11-20)的更多相关文章

  1. C语言编程 菜鸟练习100题(21-30)

    [练习21]计算自然数的和 0. 题目: 计算自然数的和 1. 分析: 练习使用 for 循环结构.for 循环允许一个执行指定次数的循环控制结构. 2. 程序: #include <stdio ...

  2. C语言编程 菜鸟练习100题(51-60)

    [练习51]矩阵转置 0. 题目: 矩阵的转置 1. 分析: 练习使用 for 循环嵌套,多维数组的表达. 2. 程序: #include <stdio.h> int main() { i ...

  3. C语言编程 菜鸟练习100题(31-40)

    [练习31]判断质数 0. 题目: 判断质数 1. 分析: 质数(prime number),指大于 1的.且除 1 和本身以外没有其他因数的自然数. 2. 程序: #include <stdi ...

  4. C语言编程 菜鸟练习100题(41-50)

    [练习41]字符串翻转 0. 题目: 字符串翻转 1. 分析: 学习递归思想和方法. 2. 程序: 方法一: #include <stdio.h> void reverseSentence ...

  5. C语言编程 菜鸟练习100题(01-10)

    [练习1]输出 "Hello, World!" 0. 题目: 输出 "Hello, World!" 1. 分析: 使用 printf() 输出 "He ...

  6. C语言编程学习打造——做题游戏

    C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现 ...

  7. python面试的100题(20)

    76.递归函数停止的条件? 递归的终止条件一般定义在递归函数内部,在递归调用前要做一个条件判断,根据判断的结果选择是继续调用自身,还是return:返回终止递归.终止的条件:1.判断递归的次数是否达到 ...

  8. C语言100题集合004-统计各个年龄阶段的人数

    系列文章<C语言经典100例>持续创作中,欢迎大家的关注和支持. 喜欢的同学记得点赞.转发.收藏哦- 后续C语言经典100例将会以pdf和代码的形式发放到公众号 欢迎关注:计算广告生态 即 ...

  9. 数据结构+算法面试100题~~~摘自CSDN

    数据结构+算法面试100题~~~摘自CSDN,作者July 1.把二元查找树转变成排序的双向链表(树) 题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表.要求不能创建任何新的结点,只调 ...

随机推荐

  1. Salesforce学习之路(十)Aura组件工作原理

    很喜欢曾经看到的一句话:以输出倒逼输入.以输出的形式强制自己学习,确实是高效的学习方式,真的很棒.以下仅为个人学习理解,如有错误,欢迎指出,共同学习. 1. 什么是Lightning Componen ...

  2. 14.Quick QML-TextInput详解

    1.TextInput属性用来编辑一行文本,对应QLineEdit,除了正常输入外,我们还可以设置echoMode属性改为密码显示状态,也可以通过validator属性和inputMask属性来设置验 ...

  3. BLUENRG-LP 学习笔记

    在学习 BLUENRG-LP 的过程中,及时地把碰到的问题记录下来,并作解答,形成本文档. 该文档会时时更新,并且当某些章节内容过多时,会独立出来,形成新的文章. BLUENRG-LP 的特性 芯片内 ...

  4. 使用Font Awesome替换EasyUI的图标

    用过EasyUI的朋友都知道,大部分组件都有一个iconCls属性,用于显示一个图标.但是EasyUI自带图标数量少.不美观,于是想到了使用Font Awesome来更换和拓展这些图标. 先看看Eas ...

  5. 内网渗透-windows认证

    前言:全国HW刚结束,加强一波内网概念,去年11月红队成绩并不理想,这次必拿下好成绩.冲!!! 0x00 本地认证 本地认证基础知识 在本地登录Windows的情况下,操作系统会使用用户输入的密码作为 ...

  6. 这一篇文章帮你搞定Java(含Java全套资源)

    当下想学习Java开发的人越来越多,对于很多零基础的人来说,没有相关的视频教程及相关的学习线路,学起来是一件很费劲的事情,还有很多人从网上及其它渠道购买视频,这些视频资料的价格对于刚毕业的大学生来说也 ...

  7. 789. Escape The Ghosts

    You are playing a simplified Pacman game. You start at the point (0, 0), and your destination is (ta ...

  8. MyBatisPlus入门学习

    目录 MyBatisPlus 概述 快速入门 配置日志输出 CRUD拓展 插入 主键生成策略 更新操作 自动填充 乐观锁 查询操作 分页查询 删除操作 逻辑删除 性能分析插件 条件构造器 代码自动生成 ...

  9. 初中级php程序员面试时常见问题整理

    初中级php程序员面试问题收集 感悟 有时候草率给出一个答案,比思而无果更糟糕 php基础 php的数据类型 php数据类型的转换 php魔术方法 php 的trait的概念及特点 php 虚拟类和接 ...

  10. 【原创】Centos8使用ansible

    目录 使用ansible发布公钥 ansible基本命令 ansbile配置文件详解 一.使用ansible发布公钥 1.0 生成秘钥对 1.生成命令 ssh-keygen -t rsa# 推送单个公 ...