1实验要求:
编写程序,输入一个整数x,按照下式输出对应的y值。
#include<stdio.h> int main() { int x,y,sum,i; printf("请输入一个大于零的整数,若是奇数将求出它之内的所有奇数和,若是偶数则亦然。 "); scanf("%d",&x); sum=0; if(x%2==0&&x>0) { for(i=2;i<=x;i=i+2) { sum=sum+i; } printf("偶数和为%d ",sum); } else if(x%2!=0&&x>0) { for(i=1;i<=x;i=i+2) { sum=sum+i; } printf("奇数和为%d ",sum); } else { printf("输入错误。 "); } return 0; }
2实验要求:
编程求1-1/2+1/3-1/4+1/5- … +1/99-1/100,结果保留两位小数。
#include<stdio.h> int main () { float i,sum,a; sum=0; a=1; for(i=1;i<=100;i++) { sum=sum+(1/i)*a; a=a*-1; /*要设一个符号变量。*/ } printf("和为%0.2f。 ",sum); return 0; }
3实验要求:
输出2000年至3000年所有闰年的年号,每输出10个年号换一行。最后统计一共有多少个闰年。
#include<stdio.h> int main() { int a,b; b=0; for(a=2000;a<=3000;a++) { if(a%4==0&&a%100!=0||a%400==0) { printf("%d ",a); b++; if(b%10==0) { printf(" "); } } } printf("一共有%d个闰年。 ",b); return 0; }
4实验要求:
输入一个实数x和一个整数m,计算xm,不允许调用pow()函数。
#include<stdio.h> int main() { int m,i; float x,sum; sum=1; /*sum=1,不能等于0*/ printf("请输入一个实数x和一个整数m,将求出x的m次方。 "); scanf("%f%d",&x,&m); if(m>0) { for(i=1;i<=m;i++) { sum=sum*x; } printf("%.2f的%d次方为%.2f。 ",x,m,sum); } else if(m==0) { printf("%.2f的%d次方为1。 ",x,m); } else { for(i=0;i>m;i--) { sum=sum*(1.0/x); } printf("%.2f的%d次方为%.2f。 ",x,m,sum); } return 0; }
5实验要求:
输入一串字符,分别统计其中字母、空格、数字和其他字符的个数。
#include<stdio.h> int main() { int a,b,c,d; char e; a=0; b=0; c=0; d=0; printf("请输入任意一串字符。 "); do { scanf("%c",&e); if(e>='1'&&e<='9') { a++; } else if(e>='A'&&e<='Z'||e>='a'&&e<='z') { b++; } else if(e==' ') { c++; } else { d++; } }while(e!=' '); printf("数字有%d个,字母有%d个,空格有%d个,其他字符有%d个。 ",a,b,c,d-1); return 0; }
6实验要求:
输入一批数(正数和负数),输入0结束,分别计算其中正数的平均值和负数的平均值。
#include<stdio.h> int main() { int a,i=1,e=1,sum1=0,sum2=0; float average1,average2; printf("请输入一批数(正数和负数),输入0时结束,将分别计算出正数的平均值和负数的平均值。 "); while(1) { scanf("%d",&a); if(a==0) { break; } else if(a>0) { sum1=sum1+a; i++; } else { sum2=sum2+a; e++; } } if(i-1==0) { printf("无正数。 "); } else { average1=(float)sum1/(i-1); printf("正数的平均数为%f。 ",average1); } if(e-1==0) { printf("无负数。 "); } else { average2=(float)sum2/(e-1); printf("负数的平均数为%f。 ",average2); } return 0; }
7实验要求:
输出1000以内的所有素数,每行10个,最后输出一共有多少个素数。(每列对齐)
#include<stdio.h> #include<math.h> int main() { int i,n,flag=0,m=0,a; printf("将列出一千以内的所有素数。 "); for(i=2;i<=1000;i++,flag=0) /*使flag重新为零*/ { a=sqrt(i); for(n=2;n<=a;n++) { if(i%n==0) { flag=1; break; } } if(flag==0) { printf("%3d ",i); m++; if(m%10==0) { printf(" "); } } } printf("总数为%d个。 ",m); return 0; }
8实验要求:
打印下列图形
#include<stdio.h> int main() { int a,b,i; for(a=1,i=1;a<=5;a++) { for(b=1;b<=a-1;b++) { printf(" "); } for(b=1;b<=10-i;b++) { printf("*"); } i=i+2; printf(" "); } return 0; }
知识点总结:1.选择循环的一般原则:如果循环次数已知,那么选择计数控制的循环for语句;如果循环次数未知,由给定条件控制,那么选择条件控制的循 环while语句;如果循环体至少要执行一次,那么选择do...while语句。
2.i++(后缀)先使用后加,++i(前缀)先加后使用;
3.do...while语句中while语句后要加分号,其他不加。
4.break只能用于循环语句和switch语句,continue只能用于循环体中。
5.在循环体中,break从循环体中途跳出,提前结束循环体,执行循环体后面的语句,而continue是跳过循环体中剩余的语句,强制执行下一 次循环。
6.goto语句,一般形式:goto 语句标号,无条件转向语句标号处执行(不推荐使用)。
7.在循环体中镶嵌循环体,一般为外行内列。
8.在累加累乘中不要忘记对求和变量赋初始值。
实验总结: 累乘是sum初始值应该为一而不是零。
外循环体和内循环体尽量不要使用同一变量,或者再对变量初赋值。
输入字符型时考虑缓存,用空格接触缓存的影响。