10月29日实验
#ex1
#include<stdio.h> int main(){ int a =5,b=7,c=100,e,d,f; d=a/b*c;//d=0 其对应的数学式为d=(a/b)*c e=a*c/b;//e=71 其对应的数学式为e=(a*c)/b f=c/b*a;//f=70 其对应的数学式为f=(c/b)*a printf("d=%d,e=%d,f=%d\n",d,e,f)
/*
* 变量d e f计算结果不同的原因是因为以上程序中的所有变量均为整形,无法取到小数点之后的数字,
*使得答案出现大的误差
*/ return 0;
}
#include<stdio.h> int main(){ int x=1234; float f=123.456; double m=123.456; char ch='a'; char a[]="Hello World";//定义一个数组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); /* *由实验结果看%2d所对映的数据输出为4位,C语言的规定中 *%mdm为指定的输出字段的宽度。如果数据的位数小于m则左端补以空格,若大于m,则按实际位数输出。 */ printf("%f,%8f,%8.1f,%0.2f,%.2e\n",f,f,f,f,f); /* *%f数输出的最后一位会出现一个1,这种情况是因为十进制与二进制转换时有误差。 *%mf改数据的输出于%m同规则 *%m.nf输出8位小数占一位被舍去的第一位四舍五入。 *%0.nf输出的数小数占两位被舍去的第一位四舍五入。 *%.2e指数型小数小数点前都为1位,%m.ne m为整个数据输出后占的位数,n为该数小数点后占的位数。 */ printf("%lf\n",m);//取双精度型所以这里在小数点后6位输出的情况下,不会出现最后一位为1的情况 。 printf("%3c\n",ch);//输出3位不够左边补齐。 printf("%s\n%15s\n%10.5s\n%2.5s\n%.3s\n",a,a,a,a,a);//m.ns中n表示输出字符串前面的多少位。(剩余规则与前面一致) return 0; }
#include<stdio.h> int main(){ double x,y; char c1,c2,c3; int a1,a2,a3; scanf("%d%d%d",&a1,&a2,&a3); /* *&是取地址操作符,当接收元素不是地址时要用&获得变量的地址,当接收元素已经是地址时就不用&了 *比如输入的是数字组的时候。 */ printf("%d,%d,%d\n",a1,a2,a3); scanf("%c%c%c",&c1,&c2,&c3);// 输入时不能有空格 printf("%c%c%c\n",c1,c2,c3); scanf("%lf,%lf",&x,&y);//因为定义的x与y是双精度型小数,所以输入所对应的也应是双精度型 printf("%f,%lf\n",x,y); return 0; }
#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
printf("%c是其他字符",x);
return 0;
}
#include<stdio.h> int main(){ char ans1,ans2; printf("复习了没?(复习了就输入y或Y,没有就输入n或N):"); ans1=getchar(); getchar(); printf("\n动手敲代码了吗?(敲了就输入y或Y,没有就输入n或H):"); ans2=getchar(); if((ans1=='y'||ans1=='Y')&&(ans2=='y'||ans2=='Y'))//因为该处为逻辑判断所以需要输入“==” printf("\n罗马不是一天建成的:)\n"); else printf("\n罗马不是一天毁灭的。。。\n"); return 0; }
#include<stdio.h> #include<math.h> int main (){ int n,a,z,c; c=2; printf("请输入n的值,n>=1且n<=10\n"); scanf("%d",&n); z=pow(c,n); a=1*(1-z)/(1-c); printf("%d",a); return 0; }
#include<stdio.h> int main(){ int a,b,c,d,e,f,g,h; a=10,b=12,c=a,d=a,h=6; while(b>0&&h>0) {b-=2,a=b,c=a,d=a,h-=1,e=5-h,f=e,g=e; while (e-->0){ printf("\t"); } while(a-->0){ printf(" 0\t"); } printf(" 0\n"); while (f-->0){ printf("\t"); } while(c-->0){ printf("<H>\t"); } printf("<H>\n"); while (g-->0){ printf("\t"); } while(d-->0){ printf("I I\t"); } printf("I I\n\n"); } return 0; }
实验1 2 3 5的实验总结都在代码的注释里
关于实验4有一点需要注意:65到128所对应的字符不只有英文字符,91到96所对应的字符不是英文字符,需要去掉。