第四次作业
一,
实验要求:编写程序,输入一个整数x,按照下式输出对应的y值。

代码:
# include <stdio.h> int main () { int x,y=0,i; printf("请输入一个整数:\n"); scanf ("%d",&x); if (x%2==0) { for (i=2;i<=x;i+=2) { y=y+i; } printf ("%d为偶数,y为%d",x,y); } else if (x%2!=0) { for (i=1;i<=x;i+=2) { y=y+i; } printf("%d为奇数,y为%d",x,y); } return 0; }
程序运行结果:

二,
实验要求:编程求1-1/2+1/3-1/4+1/5- … +1/99-1/100,结果保留两位小数。
代码:
# include <stdio.h> int main () { int x; double a,b,c; a=0; b=0; for (x=1;x<=99;x+=2) a=a+1.0/x; for (x=2;x<=100;x+=2) b=b-1.0/x; c=a+b; printf ("%.2lf",c); return 0; }
程序运行结果:

三,
实验要求:输出2000年至3000年所有闰年的年号,每输出10个年号换一行。最后统计一共有多少个闰年。
代码:
# include<stdio.h> int main() { int x,y=0; for(x=2000;x<=3000;x++) { if(x%400==0||(x%4==0&&x%100!=0)) { y=y+1; printf(" %d",x); if(y%10==0) { printf("\n"); } } } printf("\n2000年至3000年共有%d个闰年\n",y); return 0; }
程序运行结果:

四,
实验要求:输入一个实数x和一个整数m,计算xm,不允许调用pow()函数。
代码:
#include <stdio.h> int main() { float x,y=1; int m,n; printf("请输入底数\n"); scanf("%f",&x); printf("请输入指数\n"); scanf("%d",&m); for(n=1;n<=m;n++) { y=y*x; } printf("%.2f",y); return 0; }
程序运行结果:

五,
实验要求:输入一串字符,分别统计其中字母、空格、数字和其他字符的个数。
代码:
#include <stdio.h> int main() { int aa=0,bb=0,cc=0,dd=0; char x; printf("输入一串字符\n"); scanf("%c",&x); while(x!='\n') { if((x>='a'&&x<='z')||(x>='A'&&x<='Z')) { aa=aa+1; } else if(x>='0'&&x<='9') { bb=bb+1; } else if(x=' ') { cc=cc+1; } else { dd=dd+1; } scanf("%c",&x); } printf("字母为%d个,数字为%d,空格为%d,其他字为%d\n",aa,bb,cc,dd); return 0; }
程序运行结果:

六,
实验要求:输入一批数(正数和负数),输入0结束,分别计算其中正数的平均值和负数的平均值,
代码:
#include <stdio.h> #include <stdlib.h> int main() { int x,sum1=0,sum2=0,aa=0,bb=0; float ping1,ping2; printf("输入一串数字,以0为结束\n"); scanf("%d",&x); while(x!=0) { if(x>0) { sum1=sum1+x; aa=aa+1; } else if(x<0) { sum2=sum2+x; bb=bb+1; } scanf("%d",&x); } ping1=(sum1*1.0)/(aa*1.0); ping2=(sum2*1.0)/(bb*1.0); if(bb==0) { if(aa==0) { printf("正数平均值无,负数平均值无\n"); exit(0); } else { printf("正数平均值为%.2f,负数平均值没有\n",ping1); exit(0); } } else if(aa==0) { if(bb==0) { printf("正数平均值无,负数平均值无\n"); exit(0); } else { printf("正数平均值没有,负数平均值为%.2f\n",ping2); exit(0); } } printf("正数平均值为%.2f,负数平均值为%.2f\n",ping1,ping2); return 0; }
程序运行结果:

七,
实验要求:输出1000以内的所有素数,每行10个,最后输出一共有多少个素数。(每列对齐)
代码:
#include <stdio.h> int main() { int a,b,c=0,d=0; for(a=2;a<=1000;a++) { for(c=0,b=2;b<=a-1;b++) { if(a%b==0) { c=1; break; } } if (c!=1) { printf("%4d",a); d++; if (d%10==0) { printf("\n"); } } } return 0; }
程序运行结果:

八,
实验要求:打印下列图形

代码:
#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*i+11;j++) printf("*"); printf("\n"); } return 0; }
程序运行结果:

本次课知识点总结
1,使用while形成死循环
2,要熟练运用while和for的判断
3,要注意错误判断,如求平均数的实验
4,要可以自己找规律,如素数,星号倒三角的实验
实验总结
1,注意i++和++i的区别
2,平均数实验要注意不能除以0

浙公网安备 33010602011771号