0008scanf输入
scanf(格式控制,地址列表)
&:地址符号例如scanf("a=%f,b=%f,c=%f",&a,&b,&c)
int data;
printf("请输入一个整数:\n");
scanf("%d",&data);
printf("输入完毕\n");
printf("你输入的数据是%d\n",data);
return 0;
结果:
一定要在data前面加&,否则无法执行
避坑点:例如sanf("data=%d",data);时
在执行程序时,需要手动输入“data=”后输入数字再回车,就是说要输入相同的内容才能执行否则直接输入数据data最后显示的数据为0,所以千万不要在scanf的格式控制中间加任何字符。但中间加空格是支持的。且不要加\n.
需要输入多个数据时,如scanf("%d%d%d",&data1,&data2,&data3);在执行程序时,每输入一个数据需要回车一次,直到全部输入完成,或者空格。
尽量分开写
0009scanf混合输入
char data1;
char data2;
char data3;
printf("请输入三个字符\n");
scanf("%c%c%c",&data1,&data2,&data3);
printf("您输入的数据是:data1=%c,data2=%c,data3=%c",data1,data2,data3);
return 0;
输入字符时不能有空格,因为空格也被视为字符。
混合输入:
int Int;
char Char;
float Float;
printf("请依次输入整数,字符和小数\n");
scanf("%d%c%f",&Int,&Char,&Float);
printf("您输入的数据是:Int=%d,Char=%c,Float=%f",Int,Char,Float);
结果
一定要注意中间不要有任何空格,系统会按顺序自动识别类型,而且系统默认只能识别一个字符,多写了会出错。
一般建议分开写,不要混合写
0010putchar
char c;
puts("请输入一个字符");
c = getchar();
puts("你输入的符是");
putchar(c);
puts跟printf区别
1.自动加入换行符2.printf支持多种类型输出puts只能输出字符串
0011练习
1.实现在键盘上按大写字母,显示出小写字母。
ASCII码表
char a = 'a';
char b = 'b';
char A = 'A';
char B = 'B';
printf("%c,%c,%c,%c\n",a,b,A,B);
printf("a=%d,b=%d,A=%d,B=%d\n",a,b,A,B);
puts("请输入一个大写字母");
scanf("%c",&a);
printf("对应的小写字母是%c\n",a+32);
printf("测试");
getchar(); //吸收回车符,来源于scanf("%c",&a);。当多次连续scanf获取字符串时候,要注意回车符
putchar(getchar()+32);
return 0;
0012初始c练习
1.输入两个数,获得两个数加减乘除的值
源代码:
#include <stdio.h>
int main()
{
int data1;
int data2;
float data3;
float data4;
puts("请输入两个整数:");
scanf("%d%d",&data1,&data2);
printf("输入的两个数是:data1=%d,data2=%d\n",data1,data2);
printf(">>>两数之和是%d\n",data1+data2);
printf(">>>两数之差是%d\n",data1-data2);
printf(">>>两数之积是%d\n",data1*data2);
printf(">>>两数之比是%f\n",(float)data1/data2);
puts("请输入两个小数:");
scanf("%f%f",&data3,&data4);
printf("输入的两个数是:data3=%f,data4=%f\n",data3,data4);
printf(">>>两数之和是%f\n",(float)data3+data4);
printf(">>>两数之差是%f\n",(float)data3-data4);
printf(">>>两数之积是%f\n",(float)data3*data4);
printf(">>>两数之比是%f\n",(float)data3/data4);
return 0;
}
效果:
2.将“China”译成密码,密码的规律是:用原来的字母后面第4个字母代替原来的字母。例如字母A用E替代,因此,“China”译成“Glmre”。请写一个程序,用赋初值的方法使得c1,c2,c3,c4,c5这5个变量的值为C,h,i,n,a,经过运算,c1,c2,c3,c4,c5的值分别变为G,l,m,r,e。分别用putchar和printf输出这5个字符。
第一次运行不成功:
char c1 = 'C';
char c2 = 'h';
char c3 = 'i';
char c4 = 'n';
char c5 = 'a';
printf("原码是%c%c%c%c%c\n",c1,c2,c3,c4,c5);
printf("译码是%c%c%c%c%c\n",c1+4,c2+4,c3+4,c4+4,c5+4);
putchar(c1+4,c2+4,c3+4,c4+4,c5+4);
return 0;
错误原因如下:
putchar里面只能放一个参数,输出一个字符。
修改错误:
char c1 = 'C';
char c2 = 'h';
char c3 = 'i';
char c4 = 'n';
char c5 = 'a';
printf("原码是%c%c%c%c%c\n",c1,c2,c3,c4,c5);
printf("译码是%c%c%c%c%c\n",c1+4,c2+4,c3+4,c4+4,c5+4);
putchar(c1+4);
putchar(c2+4);
putchar(c3+4);
putchar(c4+4);
putchar(c5+4);
return 0;
结果:
加油,初识c已学完
今日思考,每次都要手写基本框架,能不能在notepad++中设置快捷键直接敲出基本框架呢?