实验二
//实验2.1 #include<stdio.h> int main(){ int a=5,b=7,c=100,d,e,f; d=a/b*c; e=a*c/b; f=c/b*a; printf("d=%d,e=%d,f=%d\n",d,e,f); return 0; }
d等于a除以b再乘c,e等于a乘c再除b,f等于c除以b再乘a;计算结果不同是因为计算过程不同
2.
//实验二.2 #include<stdio.h> int main(){ int x=1234; float f=123.456; double m=123.456; int ch='a'; char a[]="Hello World!"; int y=3,z=4; printf("%d %d\n",y,z); printf("y=%d,z=%d\n",y,z); printf("%8d,%2d\n",x,x); printf("%f,%8f,%8.1f,%0.2f,%.2e\n",f,f,f,f,f); printf("%lf\n",m); printf("%3c\n",ch); printf("%s\n%15s\n%10.5s\n%2.5s\n%.3s\n",a,a,a,a,a); return 0; }
可以再%后加数字来限制宽度,对于浮点型数据加.数字限制s数值小数点后的位数即精度并可与宽度同时限制,如%8.2f
3.
//实验二.3 #include<stdio.h> int main(){ float x,y; char c1,c2,c3; int a1,a2,a3; scanf("%d%d%d",&a1,&a2,&a3); printf("a1=%d,a2=%d,a3=%d\n",a1,a2,a3); scanf(" %c%c%c",&c1,&c2,&c3); printf("c1=%c,c2=%c,c3=%c\n",c1,c2,c3); scanf(" %f%f",&x,&y); printf("x=%.1f,y=%.1f\n",x,y); return 0; }
4.
#include<stdio.h>
int main(){
char x;
x=getchar();
if(x>=48&&x<=57)
printf("%c是数字字符\n",x);
else if(x>=65&&x<=90||x>=97&&x<=122)
printf("%c是英文字母\n",x);
else if(x<65||x>=91&&x<=96)
printf("%c是其他字符\n",x);
return 0;
}
5.
#include<stdio.h> int main(){ char ans1,ans2; printf("复习了没?(输入y或Y表示复习了,输入n或N表示没复习)"); ans1=getchar(); getchar(); printf("\n动手敲代码了没?(输入y或Y表示敲了,输入n或N表示木敲)"); ans2=getchar(); if(ans1==89&&ans2==89||ans1==121&&ans2==121) printf("\n罗马不是一天建成的:)\n"); else printf("\n罗马不是一天毁灭的。。。\n"); return 0; }
6.
#include<stdio.h> #include<math.h> int main(){ int a1=1,q=2,s,n; scanf("%d/n",&n); s=a1*(1-pow(q,n))/(1-q); printf("n=%d时,sum=%d",n,s); return 0; }
7.
int main(){ while(1){ printf(" o\n"); printf("<H>\n"); printf("I I\n"); } return 0; }
通过本次实验,我了解了整型变量,实型变量等,认识并体会到while的用法,让我进一步感受到了c语言的魅力。
同时,我了解了是scanf的用法和注意事项:
1.变量前需要输入&2.当有多个数据要输入时,对于整形,浮点型等数值型数据用空格,回车,tab作为分隔符;如scanf("%d%d%d",&a1,&a2,&a3)则三者皆可,而scanf("%d,%d,%d",&a1,&a2,&a3)则必须用逗号做分隔符,
输完后敲回车;类似scanf("a1=%d,a2=%d,a3=%d",&a1,&a2,&a3)普通字符都要原样输入,输完后敲回车。3.输入字符型数据时,回车空格,tab,转义字符将作为有效字符输入。因此,
输入多个字符型数据时%c要连续输入(输入数值型数据时可以连续可以不连续),如scanf("%c%c%c”,&a1,&a2,&a3),输入时为abc再敲回车,abc分别赋给a1,a2,a3,得到abc,
若敲空格等其他字符可被当作有效的字符输入,将其赋给a2;4.输入数据时系统遇到空格,tab,回车或遇到宽度结束作为分隔符或遇到非法输入时会认为输入结束;如scanf("%3d",&a),若输入12345,只会得到123;
如scanf("%d%c%f",&a,&b,&c),若输入123a 123o.26(字符型数据和数值型数据混合输入)则得到a的值为123,b的值为a,c的值为123.000000(系统遇到非法输入o时认为输入结束)。
5.和printf相比,scanf在输入long型数据时格式符必须使用%ld;double型数据输入时格式符必须使用%lf;scanf中很少用\n;6.scanf对于浮点型数据可以能指定数据宽度,不能指定数据精度,如%5.2f不对,而%5f对;
如scanf("%4d%2d%2d",&y,&m,&n),输入20490101,则得到y=2049,m=1,n=1;如scanf("%3c%2c",&c1,&c2),若输入abcde,则得到'a','d'(一个字符变量只能存放一个字符);7.scanf可用修饰符*跳过相应数据,
如scanf("%4d%*4d%4d",&major,&no),若输入201983300912,得到2019,912(8330被跳过)。
问题:对于scanf的用法和注意事项掌握不熟。
。