首页 > 其他分享 >04-输入输出

04-输入输出

时间:2023-05-18 23:48:43浏览次数:34  
标签:字符 ch 04 int scanf 输入输出 printf 输入

输入输出

1.字符输出函数

c语言中没有I/O语句,I/O操作由函数实现

#include <stdio.h

1.1 字符输出函数 - putchar

格式:putchar(c)
参数:c为字符常量\变量\表达式
功能:把字符c输出到显示器上
返回值:正常,为显示的代码值ASCII码
#include <stdio.h>

int main()
{
  int a = 65;
  char ch = 'B';
  putchar(a); // int值 -- 显示A
  putchar('\n'); // 字符 -- 显示换行
  putchar(ch); // 字符 -- 显示B
  
  return 0;
}

1.2 格式输出函数

printf("格式控制串",输出表)
功能:按照指定格式向显示器输出数据
输出表:要输出的数据
格式控制串:包含两种信息
  格式说明:%[修饰符]格式字符,用于指定输出的格式
  普通字符:原样输出

#include <stdio.h>

int main()
{
  int a = 255;
  char ch = 'C';
  char s[] = 'sdfsdf';  
  
  float fl = 567.534;
 
  printf("%d %o %x\n",a,a,a);
  printf("%c %d\n",ch,ch); // %c 打印字符  %d 打印字符ascii码值   
  printf("%s\n",s);
  printf("%f %e %g\n",fl,fl,fl);
  
  printf("%%"); // 打印一个%
  return 0;
}

1.3 附加格式说明符

m.n

int a = 1234;
float b = 123.456;
char ch = 'a';

printf("%8d,%2d\n",a,a); // 8d指的是数据位宽m ,不够左侧补空格
                          // 位宽 < 实际位数,原样输出
                          // 
printf("%8f,%8.1f,%.2f\n",f,f); // .n表示保留小数 

printf("%3c",ch); // 补充空格

char s[] = "Hello,World!";
printf("%15s\n",s); // 字符串打印15个字符长度,不够左侧补空格
printf("%15.5s\n",s); // 要打印15个,打印5个字符
printf("%2.5s\n",s); // 2 < 12(实际长度,原样输出),打印5个字符 
printf(".5s\n",s);  // 

0 + 
0 -- 用0填充
+ -- 整数显示加号
int a = 1234;
float b = 123.456;
char ch = 'a';

printf("%08d %0+8d\n",a); // 8d指的是数据位宽m ,不够左侧补0
                          // + 表示正数的时候添加加号                     
printf(%08.1f\n",f); //  

printf("%3c",ch); // 补充空格

2.字符输入函数

2.1 字符输入函数 -- getchar()

getchar()
  --格式:getchar()
  --功能:从键盘读取一个字符
  --返回值:正常,返回读取的ASCII码值;出错或者结束输入,返回-1(用int接收)
    ctrl d返回-1,表示结束输入
#include <stdio.h>

int main()
{
  int ch;
  printf("input:")
  ch = getchar();
  putchar(ch);  // 输入什么字符显示什么字符
  putchar('\n');
  printf("ch = %d\n",ch); // 结束键盘输入的时候显示-1
  return 0;
}

2.2 格式输入函数 scanf

scanf("格式控制串,地址表")
功能:按照指定格式从键盘读入数据,存入地址表指定存储单元中,并按回车键结束
  格式控制串可以表示输入的是多少进制的数
返回值:正常,返回输入数据的个数
地址表:变量的地址,常用取地址运算符&
#include <stdio.h>

int main()
{  
  int ch,n;
  printf("Enter a character:");
  
  n = scanf("%d",&ch); // 输入65
  
  printf("%d\n",ch);  // 打印65
  printf("n = %d\n",n); // n小于输入变量的个数表示输入失败
  
  
  return 0;
}


修饰符

#include <stdio.h>

int main()
{  
  int ch,n;
  // long m; 
  int y,m,d
  printf("Enter a character:");
  
  n = scanf("%x %ld",&ch,&m); // 输入 21 5
  
  // printf("n = %d\n, %d %ld",n,ch,m); //2 33 5  
   
  scanf("%4d%2d%2d",&y,&m,&d); // 20221213  
                               // 4d 表示位宽 -- 自动将输入的前四位给y 
  printf("%d %d %\n",y,m,d);// 2022 12 13
  return 0;
}
* -- 抑制符,输入的值不赋值给变量
scanf("%2d%*3d%2d",&a,&b);  // 1234567  a = 12 b = 67 中间取到值不给变量
// 字符型变量连续输入
#include <stdio.h>
int main()
{
  char y,m,d;
  
  scanf("%c%c%c".&y,&m,&d);
  
  printf("%d:%d:%d\n",y,m,d);
                              // 输入abc 打印97:98:99
                              // a  b c  97:32:32
                              // 字符型变量在进行连续输入的时候,空格和转义字符是有效字符
                              // 数值型进行连续输入的时候空格不是有效字符
  return 0;
}

总结:整型数据输入的时候,遇到空格\会出\TAB都认为是数据结束,此外,非法输入(整型输入字母)和遇到宽度也表示结束

scanf("%d%c%f",&a,&b,&c);

输入:1234a123o.26
a = 1234 b = 'a' c = 123

3.输入函数留下的"垃圾"

int a ;
char x;
printf(">");
scanf("%d",&a);
scanf("%c",&x);

printf("%d:%c:%d\n",a,x,x);  // 输入5,然后回车,打印 5:回车:10
                             // 回车会赋值个x
// 方法1:使用getchar清除
int x;
char ch;

scanf("%d",&x);
getchar()
ch = getchar();

printf("x = %d,ch = %d\n",x,ch);

// 方法2:使用空格%c或者%*c接收字符型数据
int x;
char ch;

scanf("%d",&x);
// scanf(" %c",&ch);
scanf("%*c",ch);

printf("x = %d,ch = %d\n");

4.字符串输入输出函数

4.1 字符串输入函数-gets

gets
  格式:char * gets(char *s)
  功能:从键盘输入一个以回车结束的字符串放入字符数组中,并且自动加入'\0'
  说明1:输入串长度应小于字符数组长度
  说明2:与scanf函数不同,gets函数并不以空格作为字符串输入结束的标志
char s[5];  // 定义长度为5的字符数组用于存储字符串,只能存储4个
gets(s);    // 输入字符串
printf("%s\n",s) // 打印字符串

// 用户输入字符串的长度超过字符数组的长度,会报错
// 这个函数是有风险的
char s[5];
scanf("%s",s); // 空格会作为分割符结束,可以用循环,使用%c存储空格
printf("%s\n",s);

4.2 字符串输出函数-puts

char s[5];
gets(s); 
printf("s:%s",s); // printf() 默认不换行
printf("***\n");
puts("$$$$"); // 自动换行
puts(s);  
puts
  格式:int puts(const char *s)
  功能:向显示器输出字符串(输出完,换行)
  说明:字符数组必须以'\0'结束
#include <stdio.h>
#include <math.h>
int main()
{
  int a,b,c;
  int delt;
  float result1,result2;
  
  scanf("%d%d%d",a,b,c);  
  delt = b*b-4*a*c;
  result1 = [(-b)+sqrt(delt)]/(2*a);
  result2 = [(-b)-sqrt(delt)]/(2*a);

  printf("result1 = %f,result2 = %f\n",result1,result2);
  return 0;
}

标签:字符,ch,04,int,scanf,输入输出,printf,输入
From: https://www.cnblogs.com/Icer-newer/p/17407372.html

相关文章

  • GYM104363 2023 ccpc 黑龙江省赛 题解
    比赛链接:https://codeforces.com/gym/104363题解:B//bySkyRainWind#include<bits/stdc++.h>#definemprmake_pair#definedebug()cerr<<"Yoshino\n"#definepiipair<int,int>#definepbpush_backusingnamespacestd;typedeflong......
  • linux学习day04(shell学习)
    shell是一个命令执行器,作用是遵循一定的语法将输入的命令加以解释并传给系统,用户可以用shell来启动、挂起、停止甚至是编写一些程序。shell是用户和linux的桥梁,定义了各种变量和参数,并提供了很多在高阶语言中才具有的控制结构,包括循环和分支,虽然他不是内核的一部分,但是她调用了系......
  • 输入输出流
    一.问题描述:定义一个Dog类,包括体重和年龄两个数据成员及其成员函数,声明一个实例dog1,体重5,年龄10,使用I/O流把dog1的状态写入磁盘文件。再声明一个实例dog2,通过读取文件dog1的状态赋给dog2。分别用文本方式和二进制方式操作文件。二.代码实现: #include<iostream>#include<fst......
  • 04]FlexCel之预览Excel
    在窗体上放置组件FlexCelPreviewer1procedureTForm13.Button1Click(Sender:TObject);varXLS:TXlsFile;ImgExport:TFlexCelImgExport;begin//读取Excel文件Xls:=TXlsFile.Create('C:\Users\Administrator\Desktop\金税三期系统权限申请表1.xls');//将Exce......
  • web自动化测试入门篇04——selenium+python基础方法封装
      ......
  • ubuntu 20.04 root 登录设置
    ubuntu20.04设置root默认登录1.设置root密码sudopasswdroot2.root用户编辑/etc/ssh/sshd_config文件vi/etc/ssh/sshd_config修改前:#PermitRootLoginprohibit-password修改后:PermitRootLoginyes3.重启ssh服务sudosystemctlrestartssh......
  • 机器学习:04 Kaggle 信用卡欺诈
    文章目录前期准备目标数据集介绍建模思路场景分析数据预处理导入库加载数据数据分析正负样本分布信用卡正常与被盗刷用户分析是否欺诈和交易金额关系分析消费和时间关系分析V1-V28字段分析特征工程特征重要性分析降维与聚类模型训练样本不平衡解决方法SMOTE的基本原理样本不均衡过......
  • [AGC048D] Pocky Game
    [AGC048D]PockyGame这题第一印象可想到一个辛苦暴力。设\(f_{l,r,x,y}\)表示取到\([l,r]\)区间,第\(l\)堆石子为\(a_l\),第\(r\)堆石子为\(a_r\)。很快抛弃从这里入手的想法。观察一下性质,不难得到一个经典结论:先手所取的石子堆中石子越多越好。这是因为取的石子个数......
  • 输入输出流(C++)
    一、问题描述定义一个Dog类,包括体重和年龄两个数据成员及其成员函数,声明一个实例dog1,体重5,年龄10,使用I/O流把dog1的状态写入磁盘文件。再声明一个实例dog2,通过读取文件dog1的状态赋给dog2。分别用文本方式和二进制方式操作文件。二、代码实现1#include<fstream>2#includ......
  • (04)流程控制语句
    1.流程控制语句在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的。所以,我们必须清楚每条语句的执行流程。而且,很多时候要通过控制语句的执行顺序来实现我们想要的功能。1.1流程控制语句分类​ 顺序结构​ 判断和选择结构(if,switch)​ 循环结构(for,......