第七周编程总结

7-1 生成3的乘方表 (15 分)

输入一个非负整数n,生成一张3的乘方表,输出3​0​​~3​n​​的值。可调用幂函数计算3的乘方

1).实验代码

#include<stdio.h>
#include<math.h>
int main()
{
  int n,y,i;
  scanf("%d",&n);
  for(i=0;i<=n;i++)
  {
    y=pow(3,i);
     printf("pow(3,%d) = %d\n",i,y);     
  }
  return 0;  
}

2). 设计思路

第一步:定义变量
第二步:输入变量
第三步:调用for语句,调用库函数
第四步:计算
第五步:输出答案

3).本题调试过程碰到的问题及解决方法

问题:输出的格式错误
解决方法:按照输出样例重新输出

4).运行结果截图

7-2 求平方根序列前N项和 (15 分)

本题要求编写程序,计算平方根序列√​1​​​+√​2​​​+√​3​​​+⋯的前N项之和。可包含头文件math.h,并调用sqrt函数求平方根。

1)实验代码

#include<stdio.h>
#include<math.h>
int main()
{
  int N,i;
  double sum;
  scanf("%d",&N);
  sum=0;  
  for(i=1;i<=N;i++)
  {
    sum+=sqrt(i);    
  }
  printf("sum = %.2f",sum);
  return 0;  
}

2).设计思路

第一步:定义变量
第二步:输入实数
第三步:调用for语句,调用库函数
第四步:计算每一项的平方根,累加求和
第五步:输出答案

3).本题调试过程碰到的问题及解决方法

问题:没有按照题目要求保留来两位小数
解决方法:输出时答案保留两位小数

4).运行结果截图

7-3 求幂之和 (15 分)

本题要求编写程序,计算sum=2​1​​+2​2​​+2​3​​+⋯+2​n​​。可以调用pow函数求幂。

1).实验代码

#include<stdio.h>
#include<math.h>
int main()
{
  int N,i,result;
  scanf("%d",&N);
  result=0;
  for(i=1;i<=N;i++)
  {
 result+=pow(2,i);
  }
  printf("result = %d",result);
  return 0;  
}

2).设计思路

第一步:定义变量
第二步:调用for语句,调用库函数
第三步:累加求和
第四步:输出答案

3).本题调试过程碰到的问题及解决方法

问题:漏掉了取地址符号
解决方法:重新添加取地址符号

4).运行结果截图

7-4 求组合数 (15 分)

本题要求编写程序,根据公式C​n​m​​=​m!(n−m)!​​n!​​算出从n个不同元素中取出m个元素(m≤n)的组合数。

建议定义和调用函数fact(n)计算n!,其中n的类型是int,函数类型是double。

1).实验代码

#include<stdio.h>
double fact(int n);
int main(void)
{
  int n,m,i;
  double result;
  scanf("%d %d",&m,&n);
  result=1;
  for(i=0;i<=n;i++){
  result=fact(n)/(fact(m)*fact(n-m));
  }
  printf("result = %.0f",result); 
  return 0;  
}
double fact (int n)
{ 
  int i;
  double product;  
  product=1;  
  for(i=1;i<=n;i++)
  {
    product=product*i;    
  }
     return product;     
}

2).设计思路

第一步:自定义函数声明,定义变量
第二步:输入变量
第三步:调用for语句
第四步:计算
第五步:定义求阶乘的函数

3).本题调试过程碰到的问题及解决方法

问题:未定义求阶乘的函数
解决方法:定义一个求阶乘的函数

4).运行结果截图

7-5 验证“哥德巴赫猜想” (20 分)

数学领域著名的“哥德巴赫猜想”的大致意思是:任何一个大于2的偶数总能表示为两个素数之和。比如:24=5+19,其中5和19都是素数。本实验的任务是设计一个程序,验证20亿以内的偶数都可以分解成两个素数之和

1).实验代码

#include<stdio.h>
#include<math.h>
int isprime(int N);
int main() 
{
	int i,N;	
	scanf("%d",&N);		
	for(i=2;i<N;i++){	
	if(isprime(i)&&isprime(N-i))	 		
		{		
		printf("%d = %d + %d",N,i,N-i);		
		return 0;
			}	
	}
	return 0;	
}
int isprime(int x)
{
	for(int i=2;i<=sqrt(x);i++){
	    if(x%i==0)
	    return 0;}	    
	    return 1;	   	    
}}  

2).设计思路

第一步:自定义函数声明,定义变量
第二步:输入变量
第三步:调用for语句,if语句
第四步:判断素数
第五步:定义判断素数的函数

3).本题调试过程碰到的问题及解决方法

问题:辨别两个数为素数错误
解决方法:添加逻辑语言使条件正确

4).运行结果截图

posted @ 2018-12-22 11:53  孙笑川6324  阅读(1297)  评论(0编辑  收藏  举报
1 2 3