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

文章目录

  • 函数递归
    • 2019
    • 2017 切比雪夫多项式
    • 组合数
    • 菲波那数
    • 2014 Hermite
    • 2009 勒让德多项式
    • 2007 勒让德多项式
  • 迭代法
    • 2014
    • 2009 求近似值
    • 2018 牛顿迭代法
  • 题目给定义,编程序
    • 水仙花数2006
    • 英文图案
    • 完数
    • 鞍点 2008
    • 2009 蛇形矩阵
    • 2015 交通
    • 2017
    • 2018 降序数
    • 2019 扑克牌
  • 学生成绩
  • 2016
    • 2014年 学生系统
    • 2008学生 全局变量
    • 2006年
    • 2005 学生管理 函数
    • 2004
    • 模拟选举
  • 文件 从屏幕输出到文件简单
    • 从键盘中输入2015年 在上面和递归一起
    • 2016年 不太会
    • 2018年
    • 2019年 上面有
    • 2021年 考过,具体题目没有,但是考过

函数递归

2019

#include
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 

#include
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
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
#include
#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
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
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
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;
}

迭代法

2017 牛顿迭代法
#include
#include
int main()
{
float x0,x1=-1,f1,f;
do{
x0=x1;
f=pow(x0,41)+pow(x0,3)+1;
f1=41pow(x0,40)+3pow(x0,2)+1;
x1=x0-f/f1;
}while(fabs(x0-x1)>1e-6);
printf("%f",x1);

}

2014

#include
#include
int main()
{ int n=1;
double x0,x1=2.7;
do{
x0=x1;
x1=pow(1+1/n,n);
n++;
}while(fabs(x0-x1)>=1e-6);
printf("%lf %d",x1,n);
return 0;
}

2009 求近似值

#include
#include
#define EPS 1e-6
int main()
{
float foat=1.0;
float p=1;

float sum=0;
do
{
	sum=sum+p;
	n=n+2;
foat=-foat;
	p=foat/n;
}while(fabs(p)>EPS);
printf("%10.8f",4*sum);
return 0;

2018 牛顿迭代法

#include 

#include
int main()
{
float x0,x1=-1,f1,f;
do{
x0=x1;
f=pow(x0,41)+pow(x0,3)+1;
f1=41pow(x0,40)+3pow(x0,2)+1;
x1=x0-f/f1;
}while(fabs(x0-x1)>1e-6);
printf("%f",x1);

}

题目给定义,编程序

##2004
#include
#include
#include
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
#include
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
int main()
{ int m,k,n,i,j,q;
char ch;
scanf("%c",&ch);
n=ch-‘A’;

for(i=0;i<=n;i++)
  {
  for(j=0;j<=n-i-1;j++)
   printf(" ");
   
   for(k=0;k<=2*i;k++)
     printf("%c",'A'+i);
     printf("\n");

}
for(i=0;i<=n;i++)
{
for(j=0;j<=i;j++)
printf(" “);
for(k=0;k<(ch-‘A’)2-1-2i;k++)
printf(”%c",ch-i-1);
printf("\n");
}

完数

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

/*	for(j=1;j

}

鞍点 2008

#include
#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 for(j=0;j scanf("%d",&a[i][j]);

	  for(i=0;ia[i][maxj])
	  	       maxj=j;
	  	       
	  	       n=i;
	  	       result=1;
	  	          for(i=n+1;ia[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
#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
#include

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
#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 {mini=i;
min=a[mini][minj];
for(j=1;j if(min>(a[i][j]))
{
min=a[i][j];
minj=j;
}//已经找到行最小的数
for(j=0;j {
if(a[j][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
#define N 6
int main()
{ int flase;
char a[N];
gets(a);
int i,j;
int maxi;
int max=0;

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

}

2019 扑克牌

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

}
}
for(i=1;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

h>
#define N 3
struct student
{
float a[5];
char name[10];
int no;// 学号
float sum;
}stu[N];

int main()
{
int i;
int j;
struct student temp;
for(i=0;i { printf(“输入第%d的名字\n”,i+1);
scanf("%s",&stu[i].name);
printf(“输入第%d的编号\n”,i+1);
scanf("%d",&stu[i].no);

	printf("请输入第%d个学生的成绩 数学 语文 物理 化学 英语\n",i+1);
	for(j=0;j<5;j++)
	scanf("%f",&stu[i].a[j]);
     stu[i].sum=stu[i].a[1]+stu[i].a[2]+stu[i].a[3]+stu[i].a[4]+stu[i].a[0] ;
     
}
for(int i=0;i

}
for(i=5;stu[i].sum==stu[i+1].sum;i++){
printf(“NO:%d name: %s\n”,stu[i+1].no,stu[i+1].name);
}
printf("请特别关照同学 “);
for(int i=0;i for(int j=0;j<5;j++)
if(stu[i].a[j]<80)
printf(”%d ",i+1);

 	}

2014年 学生系统

#include
#include
#define N 3
struct student{
int no;
char name[10];
float d[3];
float aver;//d0为数学成绩,d1为语文成绩,d2为英语成绩
}s[N];

int main()
{float sum;
FILE *fp;
int i,j;
struct student temp;//标记
for(i=0;i {
printf("请输入第%d个学生信息 ",i+1);
printf(“学号 “);
scanf(”%d “,&s[i].no);
printf(“姓名”);
scanf(”%s”,&s[i].name);
for(j=0;j<3;j++)
{
printf(“成绩%d “,j+1);
scanf(”%f”,&s[i].d[j]);
}
}

2008学生 全局变量

2006年

#include
int main()
{
int a[4]={0},count=0,anandon;
char name[4][10]={“zhang”,“wang”,“li”,“zhao”};
int t=0;
int i;
while(t!=0)
{
count++;
printf(“please choose 1zhang 2.wang 3.li 4.zhao”);
scanf("%d",&t);
switch(t)
{
case 1:a[0]++;
case 2:a[1]++;
case 3:a[2]++;
case 4:a[4]++;

	  }
}
for(i=0;i<4;i++)
{
	if(a[i]>count/2)
	{
	printf("success %s %d",name[i],a[i]);
	continue;}
	
}

}

2005 学生管理 函数

#include
#define N 3
#define M 2
int i,j;
void aver(struct student stu[]);
void chazhao(struct student stu[]);
struct student{
char num[10];
float grade[M];

}stu[N];
int main()
{ int n;
float sum=0;
struct student stu[N];

for(i=0;i

}
void aver(struct student stu[])
{

float sum;
for(i=0;i sum=sum+stu[i].grade[0];
printf(“sum is %f”,sum);

}
void chazhao(struct student stu[])
{int n;
for(i=0;i {n=0;
for(j=0;j {
if(stu[i].grade[j]<60)
{n++;
}
}
if(n>=2)
{

     printf("%d",i+1);

}
}
}

2004

#include
#define M 4
#define N 2
float a[M][N];
float a_stu[M];
float a_cour[N];
int i,j;
void input(void)
{
int i,j;
for(i=0;i for(j=0;j scanf("%f",&a[i][j]);

     for(i=0;i

}
/*void average(void)
{
float sum;

int i,j;
for(i=0;i

/
int main()
{
void input(void);
void average(void);
input();
/
for(i=0;i for(j=0;j printf("%f",a[i][j]);
*///average();
return 0;
}

模拟选举

#include
int main()
{
char c[4][10]={“cao”,“jian”,“xu”,“lu”};
int a[4]={0};
char ch;
int b;
int t=0;
int count=0;
while(t!=-1)
{
printf(“please choose 1-zhang 2-wang 3-li 4-zhao\n”);
scanf("%d",&t);
switch(t)
{
case 0:a[0]++;break;
case 1:a[1]++;break;
case 2:a[2]++;break;
case 3:a[3]++;break;

}
}

for(int i=0;i<4;i++)
  {
  
  if(a[i]>count/2)
   {
   printf("胜利者为%s",c[i]);

continue;
}
printf("%s %d",c[i],a[i]);
}
return 0;
}

文件 从屏幕输出到文件简单

从键盘中输入2015年 在上面和递归一起

2016年 不太会

2018年

#include
#include
#include
int main()
{ FILE *fp;
int i;
float T;
float a,b,c;
if((fp=fopen(“data.txt”,“w”))==NULL)
{
printf(“error”);
exit(0);
}

 for(int i=0;i<5;i++)
 {  printf("第%d组数据",i+1);
 	scanf("%f %f %f",&a,&b,&c);
 	T=(4.25*(a+b)+log(a+b+sqrt(a+b)+1/(a+b)))/(4.25*c+log(c+sqrt(c)+1/c));
 	fprintf(fp,"%6.2f %6.2f %6.2f %6.2f\n",a,b,c,T);
 	printf("%6.2f %6.2f %6.2f %6.2f\n",a,b,c,T);
 	
 }
 fclose(fp);
 return 0;

}
(for循环就好)
从文件输出暂时还没有搞定

2019年 上面有

2021年 考过,具体题目没有,但是考过

文件越来越重要了


你可能感兴趣的:(c语言,笔记,c语言,算法,c++)