一、实验内容
1.编写程序,输入一个整数x,按照下式输出对应的y值。
#include<stdio.h> int main() { int x,i,y=0; printf("输入一个整数x: "); scanf("%d",&x); if(x%2!=0) { for(i=1;i<=x;i=i+2) { y=y+i; } } else { for(i=2;i<=x;i=i+2) { y=y+i; } } printf("y=%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 y=0,t; for(i=1;i<100;i=i+2) { t=(float)1/i-(float)1/(i+1); y=y+t; } printf("y=%.2f",y); return 0; }
3.输出2000年至3000年所有闰年的年号,每输出10个年号换一行。最后统计一共有多少个闰年。
#include<stdio.h> int main() { int i,y=0; for(i=2000;i<=3000;i++) { if(i%400==0||i%4==0&&i%100!=0) { printf(" %d ",i); y++; if(y%10==0) { printf(" "); } } } printf("%d",y); return 0; }
4.输入一个实数x和一个整数m,计算xm,不允许调用pow()函数。
#include<stdio.h> int main() { int i,m; float x,y=1; printf("输入一个实数x和一个整数m"); scanf("%f%d",&x,&m); for(i=1;i<=m;i++) { y=y*x; } printf("%.2f",y); return 0; }
5.输入一串字符,分别统计其中字母、空格、数字和其他字符的个数。
#include<stdio.h> int main() { int b=0,c=0,d=0,others=0; char a; printf("输入一串字符,按回车结束"); if(a==' ') {printf("error");} else { while(a!=' ') { scanf("%c",&a); if(a>='a'&&a<='z'||a>='A'&&a<='Z') { b=b+1; } else if(a==' ') { c=c+1; } else if(a<='9'&&a>='0') { d=d+1; } else { others=others+1; } } printf("有%d个字母,%d个空格,%d个数字,%d个其他字符",b,c,d,others-1); } return 0; }
6.输入一批数(正数和负数),输入0结束,分别计算其中正数的平均值和负数的平均值,
#include<stdio.h> int main() { int sum1=0,sum2=0,n1=0,n2=0,y1,y2,x; printf("输入一批数(正数和负数),输入0结束"); scanf("%d",&x); if(x==0) { printf("error"); } else { while(x!=0) { if(x>0) { n1=n1+1; sum1=sum1+x; } else { n2=n2+1; sum2=sum2+x; } scanf("%d",&x); } } y1=(float)sum1/n1; y2=(float)sum2/n2; printf("正数的平均数为%d,负数的平均数为%d",y1,y2); 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(" "); } } } printf("共有%d个素数",num); return 0; }
8.打印下列图形
#include<stdio.h> int main() { int i,j,h; for(i=1;i<=6;i=i+1) { for(h=5;h>=(6-i);h--) {printf(" ");} for(j=9;j>=(i*2-1);j--) {printf("*");} printf(" "); } }
二、本次课知识点总结
1·循环次数已知:计数控制的for循环语句;
循环次数未知,由给定条件控制:条件控制的while循环语句;
循环次数至少要执行一次:do...while循环语句。
2·break结束整个循环过程,不在判断循环条件是否成立,continue结束本次循环。
3·循环嵌套时外层执行一次,内层循环要完成所有的循环。
4·自增自无条件转移语句用goto减运算符以及区分使用前缀及后缀。(++、--不能用于常量和表达式
三、实验总结(实验中遇到的问题及解决方法)
1·输出的结果不唯一确定,需要给变量赋初值。
2·计算分数的四则运算时,运行结果错误,应该在分数前进行强制类型转换,从而避免出现“1/2等于0”的情况。
3·“for循环语序”中的第二表达式为判断条件,当条件成立时执行循环体,所以分清第二表达式应该为“>”或“>=”,避免出现多执行一次循环体的情况发生。
4·当用“while循环语序”时,跳出循环用到break。
5·遇到阶乘问题时,乘积要初始化为1。
6·使用while循环语序时while后面的括号后不应加分号,且循环体外的大括号不能丢失。