1. c语言的scanf语句格式
例:使用scanf函数输入数据。
#include<stdio.h>
intmain(void)
{
inta,b,c;
printf("Givemethevalueofa,b,cseperatedwithwhitespaces: ");
scanf("%d%d%d",&a,&b,&c);
printf("a=%d,b=%d,c=%d ",a,b,c);
return0;
}
&a,&b,&c中的&是寻址操作符,&a表示对象a在内存中的地址[3],是一个右值。变量a,b,c的地址是在编译阶段分配的(存储顺序由编译器决定)。
这里注意:如果scanf中%d是连着写的如“%d%d%d”,在输入数据时,数据之间不可以用逗号分隔。
只能用空白字符(空格或tab键或者回车键)分隔——“2 (空格)3(tab) 4” 或 “2(tab)3(回车)4”等。若是“%d,%d,%d”,则在输入数据时需要加“,”,如“2,3,4”。
(在有一些实现中,printf函数与scanf函数在使用时可以不使用预编译命令#include <stdio.h>。)它是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。
scanf 是 scan format 的缩写,意思是格式化扫描,也就是从键盘获得用户输入,和 printf 的功能正好相反。
(1)c语言scanf怎么输入才正确扩展阅读:
scanf函数使用注意问题:
(1)在高版本的 Visual Studio 编译器中,scanf 被认为是不安全的,被弃用,应当使用scanf_s代替 scanf。
(2) 对于字符串数组或字符串指针变量,由于数组名可以转换为数组和指针变量名本身就是地址,因此使用scanf()函数时,不需要在它们前面加上"&"操作符。
(3) 可以在格式化字符串中的"%"各格式化规定符之间加入一个整数,表示任何读操作中的最大位数。
(4) scanf函数中没有类似printf的精度控制。
如: scanf("%5.2f",&a); 是非法的。不能企图用此语句输入小数为2位的实数。
(5) scanf中要求给出变量地址,如给出变量名则会出错
如 scanf("%d",a);是非法的,应改为scanf("%d",&a);才是合法的。
(6) 在输入多个数值数据时,若格式控制串中没有非格式字符作输入数据之间的间隔,则可用空格,TAB或回车作间隔。
C编译在碰到空格,TAB,回车或非法数据(如对“%d”输入“12A”时,A即为非法数据)时即认为该数据结束。
(7) 在输入字符数据(%c)时,若格式控制串中无非格式字符,则认为所有输入的字符均为有效字符。
参考资料来源:网络-scanf
2. C语言:scanf不是需要用回车键来确认输入吗
1、除了%c的输入而言:scanf输入:abc[回车]后,遇到回车结束,但是回车还留在输入流中。下一个scanf在输入前碰到回车,会自动把回车抛弃,然后再输入:efg,再碰到回车结束。所以加了getchar()时,它会吃掉一个回车。如果不加,在输入前,它会自动删除这个回车,所以结果是一样的。重点是:空格、回车、跳格等结束符在输入前碰到的话,会自动抛弃,输入后碰到的话,就会认为结束。
2、针对%c的输入而言:%c遇到空格、回车、跳格等结束符都是会读取的。
例如:scanf("%c",&i);
scanf("%c",&j);
输入a[回车]b的话,就会是:i = a; j = 回车;
但如果是:scanf("%c",&i);
getchar();
scanf("%c",&j);
输入a[回车]b,会是:i = a; j = b;
所以一般用getchar()吃回车,都是用在%c 后面。
3、应用:输入一个大写字母,输出对应的小写字母。输入数据的第一行为一个正整数T, 表示测试数据的组数。然后是T组测试数据。每组测试数据包含一个大写字母C。
对于每组测试数据, 输出它的小写字母。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
int main()
{
int i,t;
scanf("%d",&t);
getchar();
char a;
for(i=0;i<t;i++)
{
scanf("%c",&a);
getchar();
printf("%c\n",a+32);
}
return 0;
}
如果scanf("%d",&t);后不加getcahr();输入:2 [回车],则 t = 2; a = 回车
如果scanf("%c",&a);后不加getcahr(),输入:2 [回车] A [回车] B ,则 t = 2; a = A ,下一个循环 ,a = 回车,而不是 B。
3. c语言怎么用scanf输入字符串
c语言用scanf输入字符串:
char s[300];
scanf("%s",s);
这个语句只能输入不包含空格和跳格键的字符串并且以回车符结束输入。
4. 关于c语言scanf输入
死循环的原因是你在else后采取了递归调用,却没有给出递归终结条件。这题也用不着递归,把check函数专稿 如下:
voidcheck(){
inta;
while(1){
scanf("%d",&a);
if(a>0&&a<1000){
printf("%f",sqrt)a));//注意这里是%f而不是%d
break;
}
else
printf("重新输入小于1000的正整数 ");
}
}
5. c语言scanf输入用法
scanf 函数最主要的用法是:
scanf("输入控制符", 输入参数);
函数原型:intscanf(constchar*restrictformat,...);
函数 scanf() 是从标准输入流stdin (标准输入设备,一般指向键盘)中读内容的通用子程序,可以说明的格式读入多个字符,并保存在对应地址的变量中。
(5)c语言scanf怎么输入才正确扩展阅读:
函数的第一个参数是格式字符串,它指定了输入的格式,并按照格式说明符解析输入对应位置的信息并存储于可变参数列表中对应的指针所指位置。每一个指针要求非空,并且与字符串中的格式符一一顺次对应。
发展:
使用scanf函数进行输入,必须指定输入的数据的类型和格式,不仅繁琐复杂,而且很容易出错。C++保留scanf只是为了和C兼容。
以便过去用C语言写的程序可以在C++的环境下运行。C++的编程人员都愿意使用cin进行输入,很少使用scanf。
但是scanf有一个明显的优点,速度比cin函数快。
6. c语言中同时使用多个scanf语句,用键盘怎么输入
摘要 、程序运行时,不管有多少个scanf,一定要按scanf()语句规定的格式输入,否则可能会出现错误的结果。
7. 如何在C语言中用scanf输入数组
#include
main()
struct
int num;
char name[20];
char sex;
int age;
stu[5];
int i;
for(i=0;i<5;i++)
printf("请输入信息 ");
scanf("%d",&stu[i].num);
scanf("%s",&stu[i].name);
scanf("%c",&stu[i].sex); //在%c之前加一个空格
scanf("%d",&stu[i].age);
for(i=0;i<5;i++)
printf( "*%s*",stu[i].name);
(7)c语言scanf怎么输入才正确扩展阅读:
函数 scanf() 是从标准输入流stdin[1](标准输入设备,一般指向键盘)中读内容的通用子程序,可以说明的格式读入多个字符,并保存在对应地址的变量中。
函数的第一个参数是格式字符串,它指定了输入的格式,并按照格式说明符解析输入对应位置的信息并存储于可变参数列表中对应的指针所指位置。每一个指针要求非空,并且与字符串中的格式符一一顺次对应。