3.1.1printf()函数
1.printf 函数输出格式中printf(“%d[标志设置][栏宽设置][.精度设置][数据长度修饰词]格式化字符,其中[]的内容均可忽略,而[数据长度修饰词]包括h,l两种字符,h表示将int转换为short int,l表示将int转化为long int。例如:
printf("%ld",123)
>>>123
上表是格式化字符声明。
2.栏宽设置(达到对齐的效果)
printf("%10d\n"123);
>>> 123
printf("%*d",10,123);
>>> 123
3.1.2 scanf()函数
scanf 函数与printf()函数相反,scanf函数将输入的数值,字符或字符串送给指定的变量,是C语言常用的输入函数。
scanf (char*格式化字符串,自变量列表);
使用scanf函数的时候必须使用变量地址作为参数,程序中使用&获取变量的地址。连续输入多笔数值,在准备输入数据时需要用space或enter或tab隔开,如下:scanf(”%d%f“, &num1, &num2);
输入数据时:20 123.99
格式化字符串中,用逗号分割那么输入时也要用逗号:
scanf(”%d,%f“,&num1,&num2); 输入数据时:20,123.09
scanf和printf差不多只不过scanf只作为读取函数数据所以不能显示格式化字符之外的字符或字符串
scanf(”请输入:%o“,&a)必须改为printf(”请输入:“);scanf(”%o“,&a);我现在的理解就是scanf()函数就是识别存放数值类型的,把用户输入的数值送给指定扽变量,printf()可以将字符按指定的格式化输出,例如打印出一个八进制的十进制数值
char c;
printf(“请输入一个八进制数:”);
scanf ("%o",c);
printf("十进制:%d",c);
char c;
printf("输入字符:");
scanf("%c\n",&c); /*将输入的字符赋给变量c*/
printf("你输的字符的ASCII码为:%d\n",c);
>>>输入字符:a
>>>你输入的字符的ASCII码为:97
结果:请输入一个八进制数:654
十进制:428
scanf函数和栏宽设置
int main()
{
int areacode,telnum;
printf("请输入十位电话号码:”);
scanf(“%3d%7d”,&areacode,&telnum);
printf("电话区号:%3d\n",areacode);
printf("电话号码:%7d\n",telnum);
return 0;
}
3.2其他输入输出函数简介
char str []={'h','e','l','l','o','\0');
char str[]="hello"; 都是字符串合法的声明方式。
3.2.1getchar()函数和putchar()函数
getchar()会将用户输入的字符响应在屏幕上,回车后读取第一个字符,putchar()则是打印功能,如下:
int main()
{
char a,c[20];
printf("请输入字符:");
a=getchar(); /*回车后a读取为输入的字符串的第一个字符*/
printf("你输入的字符为:");
putchar(a);
scanf("%s",c); /*读取剩下的字符*/
printf("\n%s\n",c);
putchar("\n");
return 0;
}
>>>请输入字符:happy
>>>你输入的字符为:h
appy
3.2.2getche()函数和getch()函数
int main()
{
char a,c;
printf("输入字符:");
a=getche(); /*将获取字符显示在屏幕上*/
putchar("\n");
printf("输入字符:");
c=getch(); /*获取字符不能显示*/
putchar('\n');
printf("getche()获取的字符为:%c\n",a);
printf("getch()获取的字符为:%c\n",c);
return 0;
}
运行结果:
>>>输入字符:a
输入字符:
getche()获取的字符为a
getch()获取的字符为c
3.2.3gets()函数和puts()函数
int main()
{
char c[30];
printf("输入字符串:\n",c);
gets (c);
puts(c);
return 0;
}
>>>输入字符串:happy
happy
3.3练习
(1)自定义日期格式:
int year,month,day;
printf("请输入日期:");
scanf("%d %d %d",&year,&month,&day);
printf("日期:%d-%d-%d\n",year,month,day);
return 0;
>>>请输入日期:2018 11 14
日期:2018-11-4
(2)scanf()和gets()获取的区别:
int main()
{
char a,b[];
printf("输入:");
a=getchar();
scanf("%s",&b);
printf("%s",b);
return 0
}
>>>i am ww
am
>>>ni hao
i
int main()
{
char a,b[];
printf("请输入:”);
a=getchar();
gets(b);
printf("%s",b);
return 0;
}
>>>i am ww
am ww
>>>ni hao
i hao
- 字符串
“i am happy”双引号内的内容就是一个字符串,而双引号不是,只是来告诉编译器下面的内容为字符串。
C语言没有专门存储字符串的变量类型,所有的字符串都被存储在char类型的数组中,数组是一行连续的多个存储单元,是同类型的数据元素的有序数列。
* 运用printf赋值
比如:
#include<stdio.h>
int main()
{
int a=212;
int b;
b=printf("these are %d characters.",a);
printf("%d",b)
}
>>>these are 212 characters. 24 #包含空格和字符