Java教程

江苏大学计算机考研805编程题

本文主要是介绍江苏大学计算机考研805编程题,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

文章目录

  • 函数递归
    • 2019
    • 2017 切比雪夫多项式
    • 组合数
    • 菲波那数
    • 2014 Hermite
    • 2009 勒让德多项式
    • 2007 勒让德多项式
  • 题目给定义,编程序
    • 水仙花数2006
    • 完数
    • 鞍点 2008
    • 2009 蛇形矩阵
    • 2015 交通
    • 2017
    • 2018 降序数
    • 2019 扑克牌
  • 学生成绩
  • 2016

函数递归

2019

#include <stdio.h>
int main()
{float fab(float,int);
float x;
int n;
scanf("%f %d",&x,&n);
float sum;
sum=fab(x,n);
printf("%f",sum);
return 0;
}

float fab(float x,int n)
{
if(n==0)
return 1;
else
return x*fab(x,n-1) ;
}

2017 切比雪夫多项式

 #include <stdio.h>

#include <stdlib.h>
int main()
{ float add(int ,float);
FILE *fp;
int n;
float x,sum;
if((fp=fopen(“dat.txt”,“w”))==NULL)
{
printf(“error”);
exit(0);
}
scanf("%d %f",&n,&x);
while(n)
{
sum=add(n,x);
fprintf(fp,"%6.2f ",sum);
n–;
}

}
float add(int n,float x)
{
if(n0)
return 1;
else if(n
1)
return x;
else
return 2xadd(n-1,x)-add(n-2,x);
}

组合数

#include <stdio.h>
int p(int,int );
int main()
{ int sum=0;
int n,k;
scanf("%d %d",&n,&k);
sum=p(n,k);
printf("%d ",sum);
return 0;
putchar(10);
}
int p(int n,int k)
{
if(nk||k0)
return 1;
else
return p(n-1,k-1)+p(n-1,k);
}

菲波那数

#include <stdio.h>
#include <stdlib.h>
#define N 20
int p(int );
int main()
{ FILE *fp;
int n=1;
int each;
int sum=0;
int a;
//
if((fp=fopen(“fab.txt”,“w”))==NULL)
{
printf(“error”);
exit(0);
}
do
{
a=p(n);

 fprintf(fp,"%d%c",a,' ');
 sum+=a;
 n++;}while(n<=20);
     printf("%d",sum);
 fprintf(fp,"%d",sum);

fclose(fp);
return 0;

}
int p(int n)
{
if(n1)
return 1 ;
else if(n
2)
return 1;
else
return (p(n-1)+p(n-2));
}

2014 Hermite

#include <stdio.h>
int p(int ,float);
int main()
{

float x;
int n;
float sum;
scanf("%d %f",&n,&x);
sum=p(n,x);
printf("sum=%f",sum);
return 0;

}

int p(int n,float x)
{
if(n0)
return 1;
else if(n
1)
return (2x);
else
return (2
xp(n-1,x)-2(n-1)*p(n-2,x));
}

2009 勒让德多项式

#include <stdio.h>
float p(int,float);
int main()
{
int n;
float x;
scanf("%d %f",&n,&x);
float sum=0;

sum=sum+p(n,x);
printf("%f",sum);

}
float p(int a,float b)
{
if(a0)
return 1;
else if(a
1)
return b;
else
return ((2*a-1)bp(a-1,b)-(a-1)*p(a-2,b)/4)/a ;

}

2007 勒让德多项式

#include <stdio.h>
float p(int ,float);

int main()
{
int n;
float x;
float sum=0;
scanf("%d %lf",&n,&x);
sum=p(n,x);

// sum=p(4,1.5);
printf("%f",sum);
}
float p(int a,float b)
{
if(a0)
return 1;
else if(a
1)
return b;
else
return ((2*a-1)bp(a-1,b)-(a-1)*p(a-2,b))/a;
}

题目给定义,编程序

##2004
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
int prism(int );
int main()
{ FILE *fp;
int t1,t2;
int i,j,n;
while(1)
{
scanf("%d",&n);
j=prism(n);
if(j==1)
printf(“该数是一个素数”);
else
{
printf(“该数是一个偶数”);
break;}
}
for(i=0;i<=n/2;i++)
{
if(prism(i)&&prism(n-i))
{
t1=i;
t2=n-i;
}
}
printf("%d %d",t1,t2);

if((fp=fopen(“result.txt”,“w”))==NULL)
{
printf(“打开文件失败”);
exit(0);
}

fprintf(fp,"%d",t1);
fprintf(fp,"%d",t2);
fclose(fp);

 return 0;

}

int prism(int n)
{ int i;
int j=sqrt(n);
for(i=2;i<=j;i++)
if(n%i==0)
{
return 0;}
if(i>j)
return 1;
}

水仙花数2006

#include <stdio.h>
#include <math.h>
int main()
{ int i;
int n,m,sum;
printf(“请输入水仙花数”);
for(n=100;n<1000;n++)
{i=n;
sum=0;
while(i!=0)
{m=i%10;
sum=sum+(mmm);
i=i/10;
}
if(n==sum)
{
printf("%d ",n);
}

}
return 0;
}

完数

#include <stdio.h>
#include <math.h>
int main()
{ int m;
int i,j,n;
int sum;
float k;
for(i=2;i<1000;i++)
{sum=0;

/*	for(j=1;j<i;j++)
	if(i%j==0)
	sum=sum+j;
*/	
	k=sqrt(i);
	for(j=1;j<=k;j++)
	if(i%j==0)sum=sum+j;
	if(i==sum)
	printf("%d ",i);
}
return 0;

}

鞍点 2008

#include <stdio.h>
#define N 4
#define M 5

int main()
{ int result;
int i,j,n;
int maxj=0;
int a[N][M];
for(i=0;i<N;i++)
for(j=0;j<M;j++)
scanf("%d",&a[i][j]);

	  for(i=0;i<N;i++)
	  {
	  	maxj=0;
	  	  for(j=1;j<M;j++)
	  	    if(a[i][j]>a[i][maxj])
	  	       maxj=j;
	  	       
	  	       n=i;
	  	       result=1;
	  	          for(i=n+1;i<N;i++)
	                   if(a[n][maxj]>a[i][maxj])
                       {
                        result=0;
							break;
								}         
	  
               if(result==1)
			   {
			   	 printf("存在鞍点为a[%d][%d]\n",i,maxj);
						 }		  
}
if(!result)
    printf("I t is not exist!\n");
    return 0;

}

2009 蛇形矩阵

#include <stdio.h>
#define SIZE 100

int main()
{
int n;
int i = 0; // 行
int j = 0; // 列
// k代表数组移动方向
int k = 1; // k=1 → k=2 ↙ k=3 ↓ k=4 ↗
int data[SIZE][SIZE] = {0};
data[0][0] = 1;
printf(“please input N:”);
scanf("%d", &n);

while (i != n - 1 || j != n - 1) { // i == j == n-1 即到达数组右下角
    if (k == 1) { // →
        data[i][j+1] = data[i][j] + 1;
        j++;
        if (i == n - 1) k = 4; // data位于矩阵的最下面一行时, k变为4
        else k = 2; // data位于矩阵的第一行时, k变为2
    } else if (k == 2) { // ↙
        data[i + 1][j - 1] = data[i][j] + 1;
        j--;i++;
        if (j == 0 && i != n - 1) k = 3; // data位于矩阵的第一列时,k变为3
        else if (i == n - 1) k = 1; // data位于矩阵的最下面一行时,k变为1
        else k = 2; // data位于矩阵其它位置时,k仍为2
    } else if (k == 3) { // ↓
        data[i + 1][j] = data[i][j] + 1;
        i++;
        if (j == n - 1) k = 2; // data位于矩阵的第一列时,k变为4
        else k = 4; // data位于矩阵的最后一列时,k变为2
    } else if (k == 4) { // ↗
        data[i - 1][j + 1] = data[i][j] + 1;
        i--;j++;
        if (i == 0 && j != n - 1) k = 1; // data位于矩阵的第一行时,k变1
        else if (j == n - 1) k = 3; // data位于矩阵的最后一列时,k变为3
        else k = 4; // data位于矩阵其它位置时,k仍为4
    }
}

//显示矩阵
for (int a = 0; a < n; a++) {
    for (int b = 0; b < n; b++)
        printf("%d\t", data[a][b]);
    printf("\n");
}

return 0;

}

2015 交通

#include <stdio.h>
#include <math.h>

int get1(int i)
{
return i/1000 ;
}
int get2(int i)
{
return (i-1000*get1(i))/100;

}
int get3(int i)
{
return (i-1000get1(i)-100get2(i))/100;
}
int get4(int i)
{
return i%10;
}
int main()
{ int n=0;
int i;
int a,b,c,d;
for(i=1000;i<1000;i++)
{ a=get1(i);
b=get2(i);
c=get3(i);
d=get4(i);
if((ab)&&(cd))
{
for(int j= (int)sqrt(1000);j<(int)sqrt(9999);j++)
{
if(j*j==i)
n=i;
}
}
}
if(n!=0)
printf("%d\n\n",n);

	/*for(int j=10;j<100;j++)       
	{
		if(i==j*j)
	     {
	     	a=i/1000;
			 b=(i-a*1000)/100;
			 c=(i-a*1000-b*100)/10;
			 d=i%10;
			 if(a==b&&c==d)
			 printf("%d %d %d %d\n",a,b,c,d);
			   break;
		 }
	*/

return 0;
}

2017

#include <stdio.h>
#define N 5
int main()
{ int fale=1;
int a[N][N]={11,4,2,7,8,5,9,23,1,25,3,22,21,18,15,17,16,24,12,6,13,10,19,20,14};
int minj=0;
int min=0;
int i,j;
int mini=0;
for(i=0;i<N;i++)
{mini=i;
min=a[mini][minj];
for(j=1;j<N;j++)
if(min>(a[i][j]))
{
min=a[i][j];
minj=j;
}//已经找到行最小的数
for(j=0;j<N;j++)
{
if(a[j][minj]<a[mini][minj])
break;

}
if(j==N){
	//遍历完列元素
	 printf("%d %d %d\n",a[mini][minj],mini+1,minj+1); 
       fale=0;
 }	


	 
	
}
if(fale==1)
{
	printf("NO FINE");
}
return 0;	
}

2018 降序数

#include <stdio.h>
#define N 6
int main()
{ int flase;
char a[N];
gets(a);
int i,j;
int maxi;
int max=0;

for(i=0;i<N;i++)
{maxi=i;
   for(j=i+1;j<N;j++)
   if(a[j]>a[i])
   {flase=1;
   break;
   }
   if(flase==1)
   break;
  	            
}
if(i==N)
{
	printf("该数是一个降序数");
}
else
{
	printf("不是降序数"); 
}
return 0;

}

2019 扑克牌

#include <stdio.h>
#define N 53
//int fanzhuan(int *);
//正面为1 反面为0 ,先使全部朝上
int main()
{
int a[N];
int count,i,j;
for(i=1;i<N;i++)
a[i]=1;//所有卡片朝上
for(i=2;i<N;i++)
{
for(j=2;j<N;j++)
if(j%i==0)
{if(a[j]==1)
a[j]=0;
else a[j]=1;

}
}
for(i=1;i<N;i++)
if(a[i]1)
++count;
printf("%d\n",count);
return 0;
}
/* int fanzhuan(int *p)
{
if(*p
1)
return 0;
else
return 1;
}*/

学生成绩

2016

#include <stdio.h>
#define N 30
struct student
{ int no;
char name[10];
float math;
float chinese;
float p;
float h;
float English;
float sum;
}student[30] ;
int main()
{ struct student temp;
int i;
float sum;
printf(" 数学 语文 物理 化学 英语 学号 姓名\n");
for(i=0;i<N;i++)
{printf("%d “,i+1);
scanf(”%f %f %f %f %d %s",&student[i].math,&student[i].chinese,&student[i].p,&student[i].h,&student[i].English,&student[i].no,&student[i].name);
printf("\n");
}//输入学生的成绩
for(i=0;i<N;i++)
{
student[i].sum=(student[i].math+student[i].chinese+student[i].p+student[i].h+student[i].English);
}//计算每个学生的总成绩;

//冒泡排序,分数从高分向低分输入
for(i=0;i<N-1;i++)

  for(int j=0;j<N-i;j++) 
{
  if(student[j].sum<student[j+1].sum) 
  {
  	  temp=student[j];
  	        student[j]=student[j+1];
  	                 student[j+1]=temp;
  }

}

  //输出前10的学生成绩  
  for(i=0;i<N;i++)
  {
  	printf("%d %s ",&student[i].no,&student[i].name);
  	}

}


这篇关于江苏大学计算机考研805编程题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!