1.编写程序,输入一个整数x,按照下式输出对应的y值。
# include <stdio.h> int main() { int x,y=0,i; printf("请输入一个整数x:\n"); scanf("%d",&x); if(x%2==0) { for(i=2;i<=x;i=i+2) { y=y+i; } printf("%d",y); } else { for(i=1;i<=x;i=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 x=100,z,i; float y=1; for(i=2;i<=x;i=i+1) { if(i%2==0) { y=y-1.0/i; } else { y=y+1.0/i; } } printf("%.2f",y); return 0; }
3.输出2000年至3000年所有闰年的年号,每输出10个年号换一行。最后统计一共有多少个闰年。
# include <stdio.h> int main() { int x=3000,y=0,i; for(i=2000;i<=x;i++) { if((i%4==0&&i%100!=0)||i%400==0) { printf(" %d",i); y=y+1; if(y%10==0) { printf("\n"); } } } printf("\n"); printf("闰年有%d个",y); return 0; }
4.输入一个实数x和一个整数m,计算xm,不允许调用pow()函数。
# include <stdio.h>
int main()
{
int m,i;
float y=1.0,x;
printf("请输入一个实数x,和一个整数m(用逗号隔开):\n");
scanf("%f,%d",&x,&m);
if(m>0)
{
for(i=1;i<=m;i++)
{
y=y*x;
}
}
else if(m==0)
{
y=1;
}
else
{
for(i=-1;i>=m;i--)
{
y=y*(1/x);
}
}
printf("%f",y);
return 0;
}
5.输入一串字符,分别统计其中字母、空格、数字和其他字符的个数。
# include <stdio.h> int main() { int b=0,c=0,d=0,e=0,i; char a; printf("请输入一串字符(将分别统计其中字母、空格、数字和其他字符的个数,输入回车结束):\n"); for(i=1;i>0;i++) { scanf("%c",&a); if(a=='\n') { break; } else if((a>='A'&&a<='Z')||(a>='a'&&a<='z')) { b++; } else if(a==' ') { c++; } else if(a>='0'&&a<='9') { d++; } else if(a!='\n') { e++; } } printf("字母有%d个,空格有%d个,数字有%d个,其他字符有%d个\n",b,c,d,e); return 0; }
6.输入一批数(正数和负数),输入0结束,分别计算其中正数的平均值和负数的平均值,
# include <stdio.h> int main() { int ia,sum1=0,sum2=0,x=0,y=0; printf("请随意输入一批数(正数和负数),输入0结束:\n"); scanf("%d",&ia); while(ia!=0) { if(ia>0) { sum1=sum1+ia; x++; scanf("%d",&ia); } else { sum2=sum2+ia; y++; scanf("%d",&ia); } } if(x==0&&y==0) { printf("正数的平均值为0,负数的平均值为0\n"); } else if(x==0&&y!=0) { printf("正数的平均值为0,负数的平均值为%.2f\n",(double)sum2/y); } else if(x!=0&&y==0) { printf("正数的平均值为%.2f,负数的平均值为0\n",(double)sum1/x); } else { printf("正数的平均值%.2f,负数的平均值%.2f",(double)sum1/x,(double)sum2/y); } return 0; }
7.输出1000以内的所有素数,每行10个,最后输出一共有多少个素数。(每列对齐)
# include <stdio.h> # include <math.h> int main() { int ia,ib=0,i,flag; float ic; for(ia=2;ia<=1000;ia++) { flag=0; ic=sqrt(ia); for(i=2;i<=ic;i++) { if(ia%i==0) { flag=1; } } if(flag!=1) { printf(" %-3d",ia); ib++; if(ib!=0&&ib%10==0) { printf("\n"); } } } printf("\n"); printf("一共有%d个素数\n",ib); return 0; }
8.打印下列图形
# include <stdio.h> int main() { int i,ia,ib; for(i=5;i>=1;i--) { for(ia=4;ia>=i;ia--) { printf(" "); } for(ib=1;ib<=2*i-1;ib++) { printf("*"); } printf("\n"); } return 0; }
本次课知识点总结:
1.不同循环结构之间互相嵌套。
2.do while至少执行一次循环,而while可以一次都不执行循环。
3.输出三位数字,不足三位在后面补空格用%-3d。
实验总结:
1.对于不同的要求选择不同的循环方式。
2.遇到复杂的题需要使用循环的嵌套形式。
3.如果循环计算乘积,则积的初值要赋1,千万不能赋0;计算和时初值要赋0。