1 scanf输入,printf输出,它俩一般配套使用
最基础的例子:
#include<stdio.h>
int main()
{
int score =0;
printf("请输入成绩:");
scanf("%d",&score);
printf("成绩是:%d\n,score);
return 0
}
2 原理:输入先放入缓存,等按下回车键后,按照占位符对缓存进行解读
变量前⾯必须加上 & 运算符(指针变量除外),因为 scanf() 传递的不是值,⽽是地址
若输入123,
scanf("%d",&n)//输出是一个整数“123”
scanf("%c%c%c",&a,&b,&c)//输出是三个字符'1''2''3'
3 scanf()表示成功读取的变量个数。
没有读取到则返回到0,错误返回常量EOF(end of file文件结束标志)
scanf的返回值很有用,在OJ的刷题中,有多组输入场景的时候,可能会用到!
4 预定格式要匹配
这是正确做法
若输入格式不匹配,则会有以下错误
换成下面写法,输入其他格式时就避免了解析失败的情况
注意
scanf函数在VS上报错→解决措施
法一:scanf函数不安全,可换为scanf_s,但代码将只能在VS上编译,其他编译器不认识
法二:在使用scanf函数的.c文件第一行加上#define _CRT_SECURE_NO_WARNINGS 1
练习1
描述:
给定两个整数a和b (0 < a,b < 10,000),计算a除以b的整数商和余数。
输入描述: 一行,包括两个整数a和b,依次为被除数和除数(不为零),中间用空格隔开。
输出描述: 一行,包含两个整数,依次为整数商和余数,中间用一个空格隔开。
代码:
#include <stdio.h>
int main()
{
int a = 0;
int b = 0;
scanf("%d %d", &a, &b);
int m = a/b;
int n = a%b;
printf("%d %d\n", m, n);
return 0;
}
练习2
描述:
输入一个整数表示一个人的智商,如果大于等于140,则表明他是一个天才,输出“Genius”。
输入描述:多组输入,每行输入包括一个整数表示的智商。
输出描述:针对每行输入,输出“Genius”。
代码:
#include <stdio.h>
int main()
{
int n = 0;
while(scanf("%d", &n) != EOF)
{
if(n>=140)
printf("Genius");
}
return 0;
}