第四次作业
1.编写程序,输入一个整数x,按照下式输出对应的y值。
#include<stdio.h> int main() { int i,x,y=0; printf("请输入一个整数:"); scanf("%d",&x); if(x%2!=0) { for(i=1;i<=x;i+=2) { y=y+i; } } else { for(i=2;i<=x;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; float sum=0,t=1.0; for(i=1;i<=100;i++) { sum=sum+t/i; t=-t; } printf("%.2f",sum); return 0; }
3.输出2000年至3000年所有闰年的年号,每输出10个年号换一行。最后统计一共有多少个闰年。
#include<stdio.h> int main() { int i,num=0; for(i=2000;i<=3000;i++) { if(i%4==0&&i%100!=0||i%400==0) { printf(" %d ",i); num=num+1; if(num%10==0) { printf("\n"); } } } printf("共有%d个闰年,哈哈",num); 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++) { y=y*x; } printf("%.2f的%d次方为%.2f",x,m,y); } else if(m==0) { printf("%.2f的%d次方为1 ",x,m); } else { for(i=-1;i>=m;i--) { y=y*(1.0/x); } printf("%.2f的%d次方为%.2f ",x,m,y); } return 0; }
5.输入一串字符,分别统计其中字母、空格、数字和其他字符的个数。
#include<stdio.h> int main() { int m=0,n=0,x=0,y=0; char c; printf("请输入一串字符,回车结束:"); scanf("%c",&c); while(c!='\n') { if(c>='a'&&c<='z'||c>='A'&&c<='Z') { m++; } else if(c>='0'&&c<='9') { n++; } else if(c==' ') { x++; } else { y++; } scanf("%c",&c); } printf("这其中字母有%d个,数字有%d个,空格有%d个,其他字符有%d个",m,n,x,y); return 0; }
6.输入一批数(正数和负数),输入0结束,分别计算其中正数的平均值和负数的平均值,
#include<stdio.h> int main() { int a,num1=0,num2=0; float sum1=0,sum2=0; printf("请输入数,输入0结束:\n"); scanf("%d",&a); while(a!=0) { if(a>0) { num1++; sum1+=a; } else { num2++; sum2+=a; } scanf("%d",&a); } if(num1==0) { num1=1; } if(num2==0) { num2=1; } printf("正数的平均值为%6.2f\n负数的平均值为%6.2f\n",sum1/num1,sum2/num2); return 0; }
7.输出1000以内的所有素数,每行10个,最后输出一共有多少个素数。(每列对齐)
#include<stdio.h> int main() { int i,m,num=0,flag; for(i=2;i<=1000;i++) { flag=0; for(m=2;m<=i-1;m++) { if(i%m==0) { flag=1; break; } } if(flag==0) { printf(" %03d ",i); num++; if(num%10==0) { printf("\n"); } } } printf("共有%d个素数",num); return 0; }
8.打印下列图形
#include<stdio.h> int main() { int i,m,n; for(i=1;i<=5;i++) { for(n=1;n<i;n++) { printf(" "); } for(m=9;m>=2*i-1;m--) { printf("*"); } printf("\n"); } return 0; }
二、本次课知识点总结
1.第二小题中要注意怎么出现的一正一副;
2.在闰年和素数题中都有十个换行,要注意写上求个数的变量;
3.要注意求闰年的方法(i%4==0&&i%100!=0||i%400==0);
4.注意区分使用for和while,while则是不知道循环次数但又有条件限制,for是知道了循环次数;
5.在while循环那注意在开始循环前写的scanf是用来判断while那的那个条件在循环内容完了之后再写一个scanf 这个才是符合条件后的循环;
6.注意换行那个是在哪一个条件里边写;
7.打印三角形那个题输入*要倒着想,从第九个开始,跟正着的三角形不一样;
8.素数那个题用到了标记变量,要知道怎么使用。
三、实验总结(实验中遇到的问题及解决方法)
1.字符那题注意要加单引号;
2.闰年那题为了看的整齐,要控制宽度,所以输出应该是%3d;
3.for和while之后都不加封号;
4.不要忘记切换输入法,有时候输完字之后忘记切换,则输入的符合都是错的;
5.写循环的时候要把循环的语句写对了,不要写错。