实验四

1.编写程序,输入一个整数x,按照下式输出对应的y值。

      

 

#include <stdio.h>
#include <stdlib.h>
int main()
{
	int i,x,y=0;
	printf("输入一个整数\n");
	scanf("%d",&x);
	if(x<=0)
	{
		printf("error\n");
		exit(0);
	}
	else if(x%2==0)
	{
		for(i=2;i<=x;i+=2)
		{
			y=y+i;
		}
		printf("y的值是%d",y);
	}
	else if(x%2!=0)
	{
		for(i=1;i<=x;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 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,y=1;
	float x;
	printf("输入xm的值\n");
	scanf("%f%d",&x,&m);
	for(i=1;i<=m;i++)
	{
		y=x*y;
	}
	printf("%d",y);
	return 0;
}

  

5.输入一串字符,分别统计其中字母、空格、数字和其他字符的个数。

  

#include <stdio.h>
int main()
{
	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;
}

  

6.输入一批数(正数和负数),输入0结束,分别计算其中正数的平均值和负数的平均值,

  

#include <stdio.h>
int main()
{
int a,b=0,c=0,d=0,e=0;
float i,j;
printf("输入数字,按0结束");
scanf("%d",&a);
if(a==0)
{
printf("no");
}
else
{
while(a!=0)
{
if(a>0)
{
b=b+a;
d++;
}
if else
{
c=c+a;
e++;
}
scanf("%d",&a);
if else(d==0)
{
printf("没有平均值\n");
}
else(e==0)
{
pritnf("没有平均值\n");
}
}
i=(float)b/d;
j=(float)c/e;
printf("正数的平均值为%.2f负数的平均值为%,2f",i,j);
}
return 0;
}

 
 

  

7.输出1000以内的所有素数,每行10个,最后输出一共有多少个素数。(每列对齐)

  

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
	int a,b=0,c,d,i,flag;
	for(a=2;a<=1000;a++)
	{
		c=sqrt(a);
		flag=0;
		for(i=2;i<=c;i++)
		{
			if(a%i==0)
			{
				flag=1;
				break;
			}
		}
		if(flag!=1)
		{
			printf("%d ",a);
			b++;
		    if(b!=0&&b%10==0)
			{
		 	 printf("\n");
			}
		}
	}
	printf("\n");
	printf("%d个素数",b);
	return 0;
}

  

8.打印下列图形

     

  

#include <stdio.h>
int main()
{
	int i,j,k;
	for(i=1;i<=6;i++)
	{
		for(k=5;k>=(6-i);k--)
		{
			printf(" ");
		}
		for(j=9;j>=(i*2-1);j--)
		{
			printf("*");
		}
		printf("\n");
	}
	return 0;
}

  

二知识总结:
1.外循环控制行,内循环控制列。
2.float强制转换
3.continue语句只结束本次循环,而break语句结束整个循环过程

  

三实验总结:
1.注意一直加到x
2.输出10个数换行必须在大循环里
3.scanf的输出形式 最好用%d,%d,否则用逗号必须输出逗号
4.注意变量赋初值,否则结果无法输出

  

posted @ 2016-10-25 21:22  计科王翊宁  阅读(265)  评论(3编辑  收藏  举报