第四次作业
1.编写程序,输入一个整数x,按照下式输出对应的y值。
#include <stdio.h> int main() { int x,y,z; printf("请输入一个数值\n"); scanf("%d",&x); y=0; if(x%2==0) { for(z=2;z<=x;z=z+2) y=y+z; printf("偶数的和为%d",y); } else { for(z=1;z<=x;z=z+2) y=y+z; printf("奇数的和为%d",y); } return 0; }
1、注意for循环语句的正确使用
2、else前边必须有if
3.a++与++a作用不同。
2.编程求1-1/2+1/3-1/4+1/5- … +1/99-1/100,结果保留两位小数。
#include <stdio.h> int main() { int x; float y; y=0; for(x=1;x<=100;x++) { if(x%2==1) { y=y+(1.0)/x; } else { y=y-(1.0)/x; } } printf("相加的%.2f\n",y); return 0; }
注意float型数据与int型数据的差别。
3.输出2000年至3000年所有闰年的年号,每输出10个年号换一行。最后统计一共有多少个闰年。
#include <stdio.h> int main() { int a,b,c; for(a=2000;a<=3000;a++) { if((a%4==0&&a%100!=0)||(a%400==0)) { printf("%03d ",a); c++; if(c%10==0) printf("\n"); } } printf("\n一共%d个闰年年号",c); return 0; }
当要求几个数据一行时,可以新定义一个量,在用量与每行的个数取余,当余数为0时,输出“\n”
4.输入一个实数x和一个整数m,计算xm,不允许调用pow()函数。
#include <stdio.h> int main() { int a,b,c,d; d=1; printf("请输入两个整数\n"); scanf("%d%d",&a,&b); for(c=1;c<=b;c++) { d=d*a; } printf("最后的值为%d",d); return 0; }
应把变量赋初值,否则会输出一个负数。
5.输入一串字符,分别统计其中字母、空格、数字和其他字符的个数。
char a; int b=0,c=0,d=0,e=0,other=0; printf("输入一串字符,以回车为结束标志\n"); scanf("%c",&a); while(a!='\n') { if(a>='A'&&a<='Z') { b=b+1; } else if(a>='a'&&a<='z') { c=c+1; } else if(a==' ') { d=d+1; } else if(a>='0'&&a<='9') { e=e+1; } else { other=other+1; } scanf("%c",&a); } printf("一共有%d个大写字母,%d个小写字母,%d个空格,%d个数字,有%d个其他字符",b,c,d,e,other); return 0; }
while()后不能加分号;
‘A’ ‘a’ '0',代表不同的数据,并不等同于其本身;
6.输入一批数(正数和负数),输入0结束,分别计算其中正数的平均值和负数的平均值,
#include <stdio.h> int main() { int a,s,d=0,f,g=0,h; float j,k; printf("请输入一串数字,输入0时结束\n"); scanf("%d",&a); if(a==0) { printf("输入数据错误"); } else { while(a!=0) { if(a>0) { s=s+a; d++; } else { f=f+a; g++; } scanf("%d",&a); } j=(float)s/d; k=(float)f/g; if(g==0) printf("正数的平均数是%.3f",j); else if (d==0) printf("负数的平均值是%.3f",k); else printf("正数的平均数是%.3f,负数的平均值是%.3f",j,k); } return 0; }
float型数据用“%f”
7.输出1000以内的所有素数,每行10个,最后输出一共有多少个素数。(每列对齐)
#include <stdio.h> int main() { int a,b,c; for(a=2;a<=1000;a++) { for(b=2;b<a;b++) { if(a%b==0) break; } if(b>=a) { printf("%03d ",a); c++; if(c%10==0) printf("\n"); } } printf("\n一共%d个素数",c); return 0; }
当一个循环陷入死循环时,可以用break语句将其跳出
8.打印下列图形
#include <stdio.h> int main() { int a,b,c; for(a=1;a<=5;a++) { for(c=5;c>=5-a;c--) printf(" "); for(b=9;b>=2*a-1;b--) printf("*"); printf("\n"); } return 0; }
找规律对于程序编译同样有帮助。
知识点总结
1、不同的循环结构可以相互嵌套
2、死循环可以用break语句改正
实验总结
当循环次数已知时,计数控制的循环用for语句
循环次数未知,有给定条件控制,用while语句
循环体至少执行一次用do....while语句
当循环复杂化时,可以用嵌套式循环