一.实验内容
1.编写程序,输入一个整数x,按照下式输出对应的y值。
#include<stdio.h> int main() { float x,y; printf("请输入x的值:"); scanf("%f",&x); if(0<=x&&x<5) { y=2.5+x; printf("%.2f",y); } else if(5<=x&&x<10) { y=2-1.5*(x-3)*(x-3); printf("%.2f",y); } else if(10<=x&&x<20) { y=x/2-1.5; printf("%.2f",y); } else { printf("不符合要求"); } return 0; }
2.编程求1-1/2+1/3-1/4+1/5- … +1/99-1/100,结果保留两位小数。
#include<stdio.h> int main() { int i; float s; for(i=1;i<=100;i++) { if(i%2==0) { s=s-1.0/i; } else if(i%2==1) { s=s+1.0/i; } } printf("%.2f\n",s); return 0; }
3.输出2000年至3000年所有闰年的年号,每输出10个年号换一行。最后统计一共有多少个闰年。
#include <stdio.h> int main() { int i,g=0; for(i=2000;i<=3000;i++) { if(i%4==0&&i%100!=0||i%400==0) { printf(" %5d",i); g++; if(g%10==0) printf("\n"); } } return 0; }
4.输入一个实数x和一个整数m,计算xm,不允许调用pow()函数。
#include <stdio.h> int main() { int i,m; float x,y=1; printf("请输入一个实数x和一个整数m"); scanf("%f %d",&x,&m); for(i=1;i<=m;i++) { y=y*x; } printf("%.2f",y); return 0; }
5.输入一串字符,分别统计其中字母、空格、数字和其他字符的个数。
#include <stdio.h> int main () { char X; int K=0,S=0,Z=0,Q=0; printf ("请输入一串字符:"); while((X=getchar())!='\n') { if(X>='a'&&X<='z'||X>='A'&&X<='Z') { Z++; } else if(X==' ') { K++; } else if (X>'0'&&X<'9') { S++; } else { Q++; } } printf ( "空格有%d个 数字有%d个 字母有%d个 其他字符有%d个",K,S,Z,Q); return 0; }
6.输入一批数(正数和负数),输入0结束,分别计算其中正数的平均值和负数的平均值,
#include <stdio.h> int main() { int x,n=0,m=0; float z=0,f=0; printf("请输入一串数:"); scanf("%d",&x); while(x!=0) { if(x>0) { z=z+x; n++; } else if(x<0) { f=f+x; m++; } scanf("%d",&x); } if(m==0||n==0) { printf("error"); } else { printf("正数平均数为%.2f,负数平均数为%.2f",(float)z/n,(float)f/m); } return 0; }
7.输出1000以内的所有素数,每行10个,最后输出一共有多少个素数。(每列对齐)
#include <stdio.h> int main() { int x,m,n=0; for(x=2;x<=1000;x++) { for(m=2;m<=x-1;m++) { if(x%m==0) break; } if(m==x) { printf(" %3d",x); n++; if(n%10==0) { printf("\n"); } } } printf("共有%d个素数",n); return 0; }
8.打印下列图形
#include <stdio.h> int main() { int i,m,n; for(i=0;i<5;i++) { for(m=0;m<i;m++) { printf(" "); } for(n=0;n<2*(5-i)-1;n++) { printf("*"); } printf("\n"); } return 0; }
二.本次课知识点总结
1分清for语句与while语句与do...while语句的结构
2循环次数已知用for语句,次数未知,条件位置用while语句,至少循环一次用do...while语句(不是强制性)
3嵌套循环中外层循环1次,内层要完成所有循环
三.实验总结
1 ++ --前不能接常量或表达式
2for中表达式可以省略,但 ;不能省略
3无限循环中用break从循环中跳出
4注意分清数据类型,不能混淆%d,%c,%f
5for 与while后无分号 但do...while中的while后有分号
4