首页 > 其他分享 >(四)C语言基础学习(3):深入理解输入输出函数、数据类型的格式控制与流程控制

(四)C语言基础学习(3):深入理解输入输出函数、数据类型的格式控制与流程控制

时间:2025-01-15 21:33:22浏览次数:3  
标签:输出 字符 int 42 scanf 输入输出 数据类型 C语言 printf

一、标准输入输出函数

1. 字符输入输出:getchar和putchar

这两个函数是最基本的输入输出函数,用于单个字符的读取和显示。

int getchar(void);  // 从键盘获取一个字符
int putchar(int c); // 向终端输出一个字符

示例:

char ch = getchar(); // 读取一个字符
putchar(ch);        // 输出这个字符
putchar('A');       // 直接输出字符'A'
putchar(65);        // 输出ASCII码为65的字符(即'A')

2. 格式化输入输出:printf和scanf

printf函数

printf函数用于格式化输出,其基本语法为:

int printf(const char *format, ...);

格式:

printf("格式控制字符串",输出的参数列表);
数据类型的格式控制
  1. 整型数据格式控制
%d - 有符号十进制整数
    例如: printf("%d", -42);    // 输出: -42
    
%u - 无符号十进制整数
    例如: printf("%u", 42);     // 输出: 42
    
%x/%X - 十六进制整数
    例如: printf("%x", 255);    // 输出: ff
    printf("%X", 255);          // 输出: FF
    
%o - 八进制整数
    例如: printf("%o", 64);     // 输出: 100
  1. 浮点型数据格式控制
%f - 小数形式
    例如: printf("%f", 3.14159);    // 输出: 3.141590
    
%e - 科学计数法
    例如: printf("%e", 3141.59);    // 输出: 3.141590e+03
    
%g - 简洁输出(自动选择%f或%e)
    例如: printf("%g", 3.14);       // 输出: 3.14
  1. 字符型数据格式控制
%c - 单个字符
    例如: printf("%c", 65);         // 输出: A
    
%s - 字符串
    例如: printf("%s", "Hello");    // 输出: Hello

辅助控制符的使用

  1. #号前缀控制
printf("%#x", 255);    // 输出: 0xff
printf("%#o", 64);     // 输出: 0100
  1. 宽度控制(m)
printf("%5d", 42);     // 输出: "   42" (右对齐)
printf("%-5d", 42);    // 输出: "42   " (左对齐)
printf("%05d", 42);    // 输出: "00042" (用0填充)
  1. 精度控制(.n)
printf("%.2f", 3.14159);    // 输出: 3.14
printf("%.3s", "Hello");    // 输出: Hel
  1. 长度修饰符
printf("%ld", 123456789L);          // 长整型
printf("%lld", 123456789123LL);     // 长长整型
printf("%hd", 32767);               // 短整型
printf("%hhd", 127);                // char类型
printf("%Lf", 3.14159265358979L);   // 长双精度

注意:

  1. 占位符和参数的对应关系必须严格匹配:
// 正确使用
printf("%d %d", 42, 52);

// 错误使用(参数过多)
printf("%d", 42, 52);    // 警告但可运行

// 错误使用(参数不足)
printf("%d %d", 42);          // 警告且可能输出随机值
  1. 格式控制符的组合使用:
// 组合使用宽度、精度和对齐控制
printf("%8.2f", 3.14159);     // 输出: "    3.14"
printf("%-8.2f", 3.14159);    // 输出: "3.14    "
scanf函数

scanf函数用于格式化输入,其基本语法为:

int scanf(const char *format, ...);

格式:

scanf("格式控制字符串",地址列表);

使用注意事项:

  1. scanf后面必须使用取地址符&(除非是数组名)
  2. scanf会被空白字符(空格、回车、制表符)分割输入
  3. scanf读取时会将输入存入缓冲区

示例:

int num;
float decimal;
scanf("%d %f", &num, &decimal);
编程小技巧
  • 输入输出函数的缓冲区问题:当使用scanf读取字符时,注意处理多余的换行符,可以用getchar()消化掉。

二、流程控制

1. 关系运算符与逻辑运算符

关系运算符:

  • > 大于
  • >= 大于等于
  • < 小于
  • <= 小于等于
  • == 等于
  • != 不等于

逻辑运算符:

  • && 逻辑与(一假则假)
  • || 逻辑或(一真则真)
  • ! 逻辑非(真假相对)

关于真假的判断,这里有个重要的概念

  • C语言中任何非0的值都被认为是"真"
  • 只有0被认为是"假"
    因此,像2、-1、'a’这些都会被判断为"真"。

特别需要注意的是短路特性

  • 对于&&运算,如果左边为假,右边就不会再计算
  • 对于||运算,如果左边为真,右边就不会再计算

2. if语句

单分支if语句:

if (表达式) {
    // 条件为真时执行的代码
}

双分支if语句:

if (表达式) {
    // 条件为真时执行的代码
} else {
    // 条件为假时执行的代码
}

实际应用示例:找出两个数中的最大值

int main(void)
{
	double num1,num2;
	scanf("%lf%lf",&num1,&num2);
	if (num1 > num2)
	{
		printf("最大值:%g\n",num1);
	}else
	{	
		printf("最大值:%g\n",num2);
	}

	return 0;
}
注意
  • 不要在if后面直接加分号
  • 即使只有一条语句,也建议使用大括号包围
  • 条件表达式要用圆括号包围

标签:输出,字符,int,42,scanf,输入输出,数据类型,C语言,printf
From: https://blog.csdn.net/m0_63086257/article/details/145167063

相关文章

  • C语言常见的概念
    1.C语⾔是什么? c语言是一种通用的、高级的编程语言。 我们可以联想一下,⼈和⼈交流使⽤的是⾃然语⾔,如:汉语、英语、⽇语。那⼈和计算机使⽤计算机语⾔。⽬前已知已经有上千种计算机语⾔,⼈们是通过计算机语⾔写的程序,给计算机下达指令,让计算机⼯作的。C语⾔就是众多计算机......
  • 【C语言分支和循环练习题】
    分支和循环练习1.打印1-100之间的所有素数2.随机数的生成:生成100-200之间的随机数1.打印1-100之间的所有素数#include<stdio.h>#include<math.h>intmain(){ inti=0; for(i=101;i<=200;i+=2) { intflag=1;//假设i是素数 intj=0; for(......
  • C语言输入输出
    一、语句以分号作为语句结束标志(一)分类 1.控制语句  2.函数调用语句  3.表达式语句 4.空语句  5.复合语句 (二)输入输出 输入--->计算机--->输出         [内存] c语言中用到的输入输出的功能,并不是c语言本身的一部分。而是......
  • 洛谷 P8469 [Aya Round 1 D] 文文的数学游戏 C语言
    题目:P8469[AyaRound1D]文文的数学游戏-洛谷|计算机科学教育新生态题目背景在解决了上一题之后,琪露诺觉得自己仿佛就是天才。于是,射命丸文又给了她一道简单的数学题。题目描述给定长度为 n 的整数序列 a,你需要构造一个长度为 n 的整数序列 b 满足对于所有......
  • 【C语言】_字符串函数strcpy
    目录1. 函数声明及功能2.使用示例3.注意事项4. 模拟实现4.1第一版:基本功能+判空+const修饰4.2第二版:优化对于'\0'的单独拷贝4.3第三版:仿strcpy的char*返回值1. 函数声明及功能char*strcpy(char*destination,constchar*source); strcpy功能:字......
  • 分类统计字符个数(PTA)C语言
    本题要求实现一个函数,统计给定字符串中英文字母、空格或回车、数字字符和其他字符的个数。函数接口定义:voidStringCount(chars[]);其中chars[]是用户传入的字符串。函数StringCount须在一行内按照letter=英文字母个数,blank=空格或回车个数,digit=数字字符......
  • C语言代码题:有评委对选手进行打分,分数为整数,接收数据为-1的时候结束,去掉一个最高分,去
    思路:    1、定义数组进行接收分数    2、用循环求最高分,最低分,总值    3、求平均分,输出#include<stdio.h>intmain(void){inti=0,val=0;inta[100]={0};doublemin=0,max=0,num=0,avg=0;//给数组赋值......
  • 如何理解C语言之动态内存管理
     目录1.为什么要有动态内存分配2.malloc 和free2.1malloc2.2free3.calloc和realloc3.1calloc3.2realloc4.常⻅的动态内存的错误4.1对NULL指针的解引⽤操作4.2对动态开辟空间的越界访问 4.3对⾮动态开辟内存使⽤free释放4.4使⽤free释放⼀块动态......
  • 6、原来可以这样理解C语言_函数(4/8)形参和实参
    目录 四、形参和实参四、(1)、实参 四、(2)、形参四、(3)、实参和形参的关系 四、形参和实参        在函数使⽤的过程中,把函数的参数分为,实参和形参。#include<stdio.h>intAdd(intx,inty){intz=0;z=x+y;returnz;}intmain(......
  • C语言常见概念(上篇)
     C语言是什么人与人的沟通,可以用肢体语言、汉语、英语、法语和德语等。你若要与计算机沟通,就需要使用计算机能够听懂的语言。而我们学习的“C语言”便是计算机语言的一种。编译器的选择语⾔是⼀⻔编译型计算机语⾔,C语⾔源代码都是⽂本⽂件,⽂本⽂件本⾝⽆法执⾏,必须通过编......