作业四
一、实验内容 :
1.编写程序,输入一个整数x,按照下式输出对应的y值。
#include<stdio.h> int main() { int x,y=0,i; scanf("%d",&x) ; if(x%2==0) {for(i=2;i<=x;i=i+2) { y=y+i; } printf("%d",y); } else {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; double y=1; for(i=2;i<=100;i++) {if(i%2==0) { y=y-1.0/i; } else { y=y+1.0/i; } } printf("%.2f",y); return 0; }
3.输出2000年至3000年所有闰年的年号,每输出10个年号换一行。最后统计一共有多少个闰年。
#include<stdio.h> int main() { int x,y=0; for(x=2000;x<=3000;x++) { if((x%4==0&&x%100!=0)||(x%400==0)) { printf(" %d",x);y=y+1; } if(y%10==0) { printf("\n"); } } printf("\n %d",y); return 0; }
4.输入一个实数x和一个整数m,计算xm,不允许调用pow()函数。
#include<stdio.h> int main() { int m,i; float y=1.0,x; printf("输入x与m的值,用逗号隔开。\n"); scanf("%f,%d",&x,&m); for(i=1;i<=m;i++) { y=x*y; } printf("%.2f",y); return 0; }
5.输入一串字符,分别统计其中字母、空格、数字和其他字符的个数。
#include<stdio.h> int main() { int a=0,b=0,c=0,d=0,e,i; printf("输入字符:\n"); char x; do { for(i=0;i>=0;i++) { scanf("%c",&x); if(x=='\n') { break; } else if(x>='A'&&x<='z') { a++; } else if(x==' ') { b++; } else if(x>='0'&&x<='9') { c++; } else if(x!='\n') { d++; } } }while(x!='\n'); printf("字母%d个,空格%d个,数字%d个,其他字符%d个\n",a,b,c,d); return 0; }
6.输入一批数(正数和负数),输入0结束,分别计算其中正数的平均值和负数的平均值。
#include<stdio.h> int main() { int n1=0,n2=0,m,sum1,sum2; char x; printf("请输入数字\n"); scanf("%d",&m); do { if(m>=0) { sum1=sum1+m; scanf("%d",&m); n1++; } else { sum2=sum2+m; scanf("%d",&m); n2++; } } while(m!=0); if(n1==0&&n2==0) { printf("正数平均数为0,负数平均数也为0"); } else if(n1!=0&&n2==0) { printf("正数平均数为%.2f,负数平均数为0",(double)sum1/n1); } else if(n1==0&&n2!=0) { printf("正数平均数为0,负数平均数为%.2f",(double)sum2/n2); } else { printf("正数平均数为%.2f,负数平均数为%.2f",(double)sum1/n1,(double)sum2/n2); } return 0; }
7.输出1000以内的所有素数,每行10个,最后输出一共有多少个素数。(每列对齐)
#include<stdio.h> #include<math.h> int main() { int i1,i2,m=0,k,x,flag=0; for(i1=2;i1<=1000;i1++) { x=sqrt(i1); flag=0; for(i2=2;i2<=x;i2++) { if(i1%i2==0) { flag=1; break; } } if(flag==0) { printf(" %03d",i1); m++; if(m%10==0&&m!=0) { printf(" \n"); } } } printf("\n 素数有%d个",m); return 0; }
8.打印下列图形
#include<stdio.h> int main() { int i,j; for(i=1;i<=5;i++) { for(j=0;j<=i-1;j++) { printf(" "); } for(j=1;j<=10-(2*i-1);j++) { printf("*"); } printf("\n"); } return 0; }
二、本次课知识点总结:
for循环,while循环,do while循环的使用以及嵌套,程序运行可以使用无限循环,但需要注意循环的退出,,continue与break有区别,前者结束本次循环,后者结束整个循环。
三、实验总结(实验中遇到的问题及解决方法)
1.要注意素数的判断,利用标记变量,并且循环嵌套。
2.正负数求平均数时要注意合法判断,因为可能没有正数或者没有负数。
3.输出图案时要注意外行内列,以及每行空格和星号的个数。
4.回车也算字符,注意限定条件else if(字符!='\n')。
5.用float输入的变量要用%f。记得保留小数。