实验四
1.编写程序,输入一个整数x,按照下式输出对应的y值。
#include<stdio.h> int main() { int x,y=0,i; printf("请输入一个整数x"); scanf("%d",&x); if(x%2==0) { for(i=2;i<=x;i=i+2) { y=y+i; } printf("%d",y); } else if(x%2==1) { for(i=1;i<=x;i=i+2) { y=y+i; } printf("%d",y); } return 0; }
2.编程求1-1/2+1/3-1/4+1/5- … +1/99-1/100,结果保留两位小数。
#include<stdio.h> int main() { int i,n; float y=1; for(i=2;i<=100;i=i+2) { y=y-1.00/i; } for(n=3;n<=100;n=n+2) { y=y+1.00/n; } printf("%.2f",y); return 0; }
3.输出2000年至3000年所有闰年的年号,每输出10个年号换一行。最后统计一共有多少个闰年。
#include<stdio.h> int main() { int i=0,n; for(n=2000;n<=3000;n++) { if((n%4==0&&n%100!=0)||(n%400==0)) { printf("%d ",n); i++; if(i%10==0) { printf("\n"); } } } printf("一共有%d个闰年",i); return 0; }
4.输入一个实数x和一个整数m,计算xm,不允许调用pow()函数。
#include<stdio.h> int main() { int m,i; float x,y=1; printf("请输入一个实数x和整数m"); scanf("%f%d",&x,&m); if(m>0) { for(i=1;i<=m;i=i+1) { y=y*x; } } else if(m==0) { y=1; } else if(m<0) { for(i=-1;i>=m;i--) { y=y*(1/x); } } printf("%f",y); return 0; }
5.输入一串字符,分别统计其中字母、空格、数字和其他字符的个数。
#include<stdio.h> int main() { char c1; int num=0,konggenum=0,intnum=0,othernum=0; while((c1=getchar())!='\n') { if(c1>='a'&&c1<='z'||c1>='A'&&c1<='Z') { num++; } else if(c1==' ') { konggenum++; } else if(c1>='0'&&c1<='9') { intnum++; } else { othernum++; } } printf("字母有%d个,空格有%d个,数字有%d个,其他有%d个",num,konggenum,intnum,othernum); return 0; }
6.输入一批数(正数和负数),输入0结束,分别计算其中正数的平均值和负数的平均值,
#include<stdio.h> int main() { int a,b,c,d,e,f,g; a=0; b=0; d=0; e=0; while(1) { scanf("%d",&c); if(c<0) { a+=c; d++; } else if(c>0) { b+=c; e++; } else if(c==0) break; } if(e==0) { printf("没有正数的平均数"); } else { printf("正数的平均数为%f",(float)b/e); } if(d==0) { printf("没有负数的平均数"); } else { printf("负数的平均数为%f",(float)a/d); } return 0; }
7.输出1000以内的所有素数,每行10个,最后输出一共有多少个素数。(每列对齐)
#include<stdio.h> int main() { int m,n,flag=0,z=0; for(m=2;m<=1000;m++) { for(flag=0,n=2;n<=m-1;n++) { if(m%n==0) { flag=1; break; } } if(flag!=1) { printf("%4d ",m); z++; if(z%10==0) { printf("\n"); } } } printf("一共有%d个素数",z); return 0; }
8.打印下列图形
#include<stdio.h> int main() { int i,j; for(i=1;i<=5;i++) { for(j=1;j<=i-1;j++) { printf(" "); } for(j=1;j<=2*(5-i)+1;j++) { printf("*"); } printf("\n"); } return 0; }
实验总结:
(1)for,if,while后面没有分号
(2)每条语句后面都有分号
(3)一开始没有附初始值
(4)素数不包括1
(5)printf里没有&
知识点总结:
(1)在循环语句中,break语句一般与if语句一起使用
(2)break只能终止并跳出最近一层的结构
(3)累乘初始值为1
(4)有明确的循环次数是用for比较好