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

该博客介绍了C语言的基础练习,包括输出Hello,World!、整数、字符、浮点数的打印,以及数值计算如加法、乘法、除法和比较。还涉及到了ASCII码转换和模运算。通过实例展示了scanf()和printf()函数的使用,以及如何处理浮点数精度问题和字符转ASCII码的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【练习1】输出 "Hello, World!"

0. 题目:
输出 "Hello, World!"
1. 分析:
使用 printf() 输出 "Hello, World!"。
2. 程序:

#include <stdio.h>
int main()
{
    printf("Hello, World!");  // printf() 中字符串的前后需要使用双引号
    return 0;
}

3. 输入输出:

Hello, World!

4. 扩展知识:
printf() 是头文件 stdio.h 中定义的函数,调用格式为:

printf("<格式化字符串>", <参量表>);


【练习2】输出整数

0. 题目:
输出整数
1. 分析:
使用 printf() 与 %d 格式化输出整数。
2. 程序:

#include <stdio.h>
int main()
{
    int intNum;  // 声明 int 变量
    printf("输入一个整数: ");  // printf() 输出字符串
    scanf("%d", &intNum);  // scanf() 格式化输入,"%d"表示整数格式
    printf("输入的整数是: %d", intNum);  // printf() 显示格式化输入
    return 0;
}

3. 输入输出:

输入一个整数: 255
输入的整数是: 255

4. 扩展知识:
scanf() 是头文件 stdio.h 中定义的函数,从标准输入 stdin 读取格式化输入。


【练习3】输出单个字符

0. 题目:
输出单个字符
1. 分析:
使用 printf() 与 %c 格式化输出一个字符。
2. 程序:

#include <stdio.h>
int main()
{
    char oneChar;  // 声明 char 变量
    oneChar = 'C';  // 向变量赋值
    printf("oneChar 的值为 %c", oneChar);  // printf() 格式化输出
    return 0;
}

3. 输入输出:

oneChar 的值为 C

4. 扩展知识:

基本数据类型
int:整型
short:短整型
long:长整型
float:浮点型(单精度)
double:浮点型(双精度)
char:字符型
void:无类型


【练习4】输出浮点数

0. 题目:
输出浮点数
1. 分析:
使用 printf() 与 %f 输出浮点数。
2. 程序:

#include <stdio.h>
int main()
{
    float fVar1,fVar2;  // 声明浮点数变量   
    fVar1 = 12.00123;  // 向变量赋值   
    printf("fVar1 的值为 %f\n", fVar1);   // printf() 格式化输出 
    fVar2 = 123.001234;  // 向变量赋值   
    printf("fVar2 的值为 %f\n", fVar2);   // printf() 格式化输出 
    return 0;
}

3. 输入输出:

fVar1 的值为 12.00123
fVar2 的值为 123.001236

【注意!】 fVar1 的值与赋值完全相同,但 fVar2 的的值与赋值不完全相同。这是因为 float 为单精度浮点数,内存中占 4个字节,有效数位是 7位。如果有效数字位数超过 7位,超出的部分会自动四舍五入。


【练习5】输出双精度数

0. 题目:
输出双精度数
1. 分析:
使用 printf() 与 %e 输出双精度数。
2. 程序:

#include <stdio.h>
{
    double dVar1,dVar2;  // 声明浮点数变量   
    dVar1 = 12.00123;  // 向变量赋值   
    printf("dVar1 的值为 %Lf\n", dVar1);   // 格式化输出:长实数 
    printf("dVar1 的值为 %Le\n", dVar1);   // 格式化输出:科学计数法 
    dVar2 = 123.001234;  // 向变量赋值   
    printf("dVar2 的值为 %Lf\n", dVar2);   // 格式化输出:长实数 
    printf("dVar2 的值为 %Le\n", dVar2);   // 格式化输出:科学计数法 
    return 0;
}

3. 输入输出:

dVar1 的值为 12.001230
dVar1 的值为 1.200123e+001
dVar2 的值为 123.001234
dVar2 的值为 1.230012e+002

【注意!】 double 为双精度浮点数,内存中占 8个字节,有效数位是 16位。dVar2 按科学计数法格式(Le)输出时虽然与赋值不完全相同,这只是格式化输出时的有效数字位数限制所致,但在实际存储和计算时都是与赋值完全相同的,因此在按长实数格式(Lf)输出时与赋值完全相同


【练习6】两个数字相加

0. 题目:
题目两个数字相加
1. 分析:
分析使用 scanf() 来接收输入, printf() 与 %d 格式化输出整数。
2. 程序:

#include <stdio.h>
int main()
{
    int firstNum, secondNum, sumNum;    
    printf("输入两个整数(以空格分隔): "); 
    // scanf() 格式化输入,接收用户输入的两个整数
    scanf("%d %d", &firstNum, &secondNum); 
    // 两个整数相加
    sumNum = firstNum + secondNum; 
    // 输出结果
    printf("%d + %d = %d", firstNum, secondNum, sumNum);
    return 0;
}

3. 输入输出:

输入两个数(以空格分割): -1 99
-1 + 99 = 98

【注意!】 由于scanf()函数中定义的输入格式为"%d %d"(两个%d之间有一个空格),在输入时就必须严格按照定义的格式,在输入的两个整数之间加一个空格,否则可能出错。类似地,如果定义输入格式为"%d,%d",就必须在在输入的两个整数之间加一个逗号。


【练习7】两个浮点数相乘

0. 题目:
两个浮点数相乘
1. 分析:
输入两个浮点数,计算乘积。
2. 程序:

#include <stdio.h>
int main()
{
    double firstNum, secondNum, productNum;
    printf("输入两个浮点数(以空格分隔): ");
    scanf("%lf %lf", &firstNum, &secondNum);   
    productNum = firstNum * secondNum;  // 两个浮点数相乘
    printf("%.2lf * %.2lf = %.2lf\n", firstNum,secondNum,productNum); 
    printf("%lf * %lf = %lf\n", firstNum,secondNum,productNum);
    return 0;
}

3. 输入输出:

输入两个浮点数(以空格分割): 1.2345 66
1.23 * 66.00 = 81.48
1.234500 * 66.000000 = 81.477000

【注意!】(1)变量 secondNum 定义为浮点数,虽然输入为整数也是按浮点数存储的。(2)%.2lf 表示输出格式为保留2位有效数字,但并不影响存储的数据的精度。


【练习8】字符转 ASCII 码

0. 题目:
字符转 ASCII 码
1. 分析:
ASCII 定义了 128 个字符:
(1)0-31、127(删除键)是控制字符
(2)空白字符:空格(32)、 制表符、 垂直制表符、 换行、 回车。
(3)可显示字符:a-z、A-Z、0-9、~、!、@、、%、^、&、#、$、*、(、)、-、+、{、}、[、]、'、"、<、>、,、?、/、|、\、_、:、;、.,还有顿号、。

2. 程序:

#include <stdio.h>
int main()
{
    char oneChar;  // 声明 char 变量
    
    printf("输入一个字符: "); 
    scanf("%c", &oneChar);  // 读取用户输入
    printf("%c 的 ASCII 为 %d", oneChar, oneChar);  // %c 字符格式
    return 0;
}

3. 输入输出:

输入一个字符: A
A 的 ASCII 为 65


【练习9】两数相除

0. 题目:
两数相除
1. 分析:
两数相除,如果有余数,输出余数
2. 程序:

#include <stdio.h>
int main()
{
    int dividend, divisor, quotient, remainder;
    
    printf("输入被除数、除数(以空格分隔): "); 
    // scanf() 格式化输入,接收用户输入的两个整数
    scanf("%d %d", &dividend, &divisor);  // 输入被除数、除数
   
    quotient = dividend / divisor;  // 除法,分子除分母的整数部分
    remainder = dividend % divisor;  // % 为模运算,整除后的余数
    printf("商 = %d, 余数 = %d", quotient,remainder);
    return 0;
}

3. 输入输出:

输入被除数、除数(以空格分隔): 50 10 输出:商 = 5, 余数 = 0
输入被除数、除数(以空格分隔): 51 10 输出:商 = 5, 余数 = 1
输入被除数、除数(以空格分隔): 55 10 输出:商 = 5, 余数 = 5
输入被除数、除数(以空格分隔): 58 10 输出:商 = 5, 余数 = 8

【注意!】除法“/”得出的商是被除数与除数相除的整数部分,不做四舍五入处理。


【练习10】数值比较

0. 题目:
数值比较
1. 分析:
定义了两个整数变量,使用 if 来比较两个数值
2. 程序:

#include <stdio.h>
int main()
{
    int firstNum, secondNum; 

    printf("输入两个整数(以空格分隔): "); 
    scanf("%d %d", &firstNum, &secondNum); 
    
    if(firstNum > secondNum)
        printf("%d 大于 %d", firstNum,secondNum);
    else if(firstNum < secondNum)
        printf("%d 小于 %d", firstNum,secondNum); 
    else
        printf("%d 等于 %d", firstNum,secondNum);
    return 0;
}

3. 输入输出:

输入两个整数(以空格分割): -1 99
-1 小于 99


版权说明:本文的题目和例程 源于 菜鸟教程,作者重新编写了程序、注释和算例,并增加了难点分析。

一、单项选择 1、 C语言源程序文件经过C编译程序编译连接之后生成一个后缀为( C )的文件。  A).c B).obj C).exe D).bas 2、 )完成C源文件编辑后、到生成执行文件,C语言处理系统必须执行的步骤依次为( B ) A)连接、编译 B)编译、连接 C)连接、运行 D)运行 3、 关于C语言的叙述中,不正确的是( D ) A)C程序可由一个或多个函数组成 B)C程序必须包含一个main()函数 C)C程序的基本组成单位是函数 D)注释说明只能位于一条语句的后面 4、 一个C程序的执行是从( C )。 A) 本程序的main函数开始,到main函数结束 B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C) 本程序的main函数开始,到本程序文件的最后一个函数结束 D) 本程序文件的第一个函数开始,到本程序main函数结束 5、 以下正确的叙述是( C ) A) 在C语言中,main函数必须位于文件的开头 B) C语言每行中只能写一条语句 C) C语言本身没有输入、输出语句 D) 对一个C语言进行编译预处理时,可检查宏定义的语法错误 6、 下列选项中,不能用作标识符的是( D )。 A) _1234_ B) _1_2 C) int_2_ D) 2_int_ 7、 常数的书写格式决定了常数的类型和值,0x1011是( C ) A)8进制整型常量 B)字符常量 C)16进制整型常数 D)2进制整型常数 8、 以下4组用户定义标识符中,全部合法的一组是( D ) A)_total clu_1 sum B)if -max turb C)txt REAL 3COM D)int k_2 _001 9、 ( B )是合法的用户自定义标识符。 A) b-b B)float C)123a D) _isw 10、 以下选项中不正确的整型常量是( )。  A) 12L B) -10 C) 1,900 D) 123U 11、 表达式( C )的值是0。 A)3%5 B)3/5)0 C)3/5 D)3<5 12、 设int x=3,y=4,z=5,则下列表达式中的值为0的是 ( ) A) ‘x’&&’y’ B) x||y+z&&y-z C) x<=y D) !((x0||y>0) 等价于( )。 A)!x>0||!y>0 B)!(x>0)||!(y>0) C)!x>0&&!y>0 D)!(x>0)&&!(y>0) 14、 若变量已正确定义并赋值,表达式( )不符合C语言语法。 A)4&&3 B)+a C)a=b=5 D)int(3)14) 15、 C语句”x*=y+2;”还可以写作( ) A) x=x*y+2; B) x=2+y*x; C) x=x*(y+2); D) x=y+2*x; 16、 下列格式符中,可以用于以8进制形式输出整数的是( ) A) %d B) %o C) %ld D) %x
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值