江苏计算机C语言上机试题45道.docx

上传人:b****5 文档编号:5326318 上传时间:2022-12-15 格式:DOCX 页数:60 大小:31.44KB
下载 相关 举报
江苏计算机C语言上机试题45道.docx_第1页
第1页 / 共60页
江苏计算机C语言上机试题45道.docx_第2页
第2页 / 共60页
江苏计算机C语言上机试题45道.docx_第3页
第3页 / 共60页
江苏计算机C语言上机试题45道.docx_第4页
第4页 / 共60页
江苏计算机C语言上机试题45道.docx_第5页
第5页 / 共60页
点击查看更多>>
下载资源
资源描述

江苏计算机C语言上机试题45道.docx

《江苏计算机C语言上机试题45道.docx》由会员分享,可在线阅读,更多相关《江苏计算机C语言上机试题45道.docx(60页珍藏版)》请在冰豆网上搜索。

江苏计算机C语言上机试题45道.docx

江苏计算机C语言上机试题45道

45置换矩阵中的某个特定数。

#include

#include

voidmatrix_change(intx[][3],intn)

{

inti,j,k,t[5]={0},max,maxi,maxj,v;

max=x[0][0];maxi=maxj=0;

for(i=0;i

for(j=0;j<3;j++)

if(x[i][j]>max){max=x[i][j];maxi=i;maxj=j;}

k=0;

while(max>0){t[k++]=max%10;max=max/10;}

for(i=0;i

for(j=0;j

if(t[j]

for(i=0;i

max=max*10+t[i];

x[maxi][maxj]=max;

}

voidmain()

{

inta[3][3]={4,8,16,32,64,128,256,512,1024},i,j;FILE*fp;

matrix_change(a,3);

fp=fopen("myf2.out","w");

if(fp==NULL)

{printf("can'topenfile");return;}

for(i=0;i<3;i++)

{for(j=0;j<3;j++)

{fprintf(fp,"%5d",a[i][j]);printf("%5d",a[i][j]);}

printf("\n");

fprintf(fp,"\n");

}

printf("\nMyexamnumberis:

WLJY001\n");

fprintf(fp,"\nMyexamnumberis:

WLJY001\n");

fclose(fp);

getch();

}

44找出满足下列条件的整数对(m,n):

(1)m小于n

(2)a(m)=a(n)=m+n+1,其中a(m)表示m的所有因子和,a(n)同上;

#include

#include

intfactor(intn)

{inti,s=0;

for(i=1;i<=n;i++)

if(n%i==0)s=s+i;

returns;

}

intfun(intn,inta[][2])

{inti,j,g1,g2,k=0;

for(i=2;i<=n;i++)

{

g1=factor(i);

for(j=1;j

{

g2=factor(j);

if(g1==g2&&g1==i+j+1)

{a[k][0]=j;a[k++][1]=i;}

}

}

returnk;

}

voidmain()

{

FILE*fp;inti,n,m,a[100][2];

if((fp=fopen("myf2.out","w"))==NULL)

{printf("Thefilecallnotopen!

");exit(0);}

scanf("%d",&n);

m=fun(n,a);

for(i=0;i

{

printf("(%d,%d)\n",a[i][0],a[i][1]);

fprintf(fp,"(%d,%d)\n",a[i][0],a[i][1]);

}

printf("\nMyexamnumberis:

WLJY001\n");

fprintf(fp,"\nMyexamnumberis:

WLJY001\n");

fclose(fp);

getch();

}

43将一个十进制整数m转换成r进制整数的字符串表示形式。

#include

#include

voidtrdec(char*str,intidec,intibase)

{charch;

inti,idr,k=0;

while(idec!

=0)

{

idr=idec%ibase;

if(idr>=10)

str[k++]=idr-10+'A';

else

str[k++]=idr+'0';

idec/=ibase;

}

for(i=0;i

{ch=str[i];

str[i]=str[k-i-1];

str[k-i-1]=ch;

}

str[k]='\0';

}

voidmain()

{

intx;charstr[20];FILE*fp;

if((fp=fopen("myf2.out","w"))==NULL)

{printf("Thefilecannotopen!

");exit(0);}

printf("Enteranumber");scanf("%d",&x);

trdec(str,x,2);

printf("%sB,",str);fprintf(fp,"%sB,",str);

trdec(str,x,8);

printf("%sQ,",str);fprintf(fp,"%sQ,",str);

trdec(str,x,16);

printf("%sH\n",str);fprintf(fp,"%sH\n",str);

printf("\nMyexamnumberis:

WLJY001\n");

fprintf(fp,"\nMyexamnumberis:

WLJY001\n");

fclose(fp);

}

42已知x数组中存储的n接矩阵有一个鞍点(鞍点是指该位置上的数十所在行的最大数,同时也是所在列的最小数),程序实现将矩阵中鞍点所在列移动到最右侧。

#include

#include

#defineN4

voidmove(inta[][N])

{

inti,j,k,f,t,m,mj;

for(i=0;i

{

m=a[i][0];mj=0;f=1;

for(j=0;j

if(a[i][j]>m)

{

m=a[i][j];mj=j;

}

for(k=0;k

if(a[k][mj]

f=0;

if(k>=N)break;

}

if(f)

{

printf("Andian:

a[%d][%d]\n",i,mj);

for(i=0;i

{

t=a[i][mj];

for(j=mj;j

a[i][j]=a[i][j+1];

a[i][N-1]=t;

}

}

}

voidmain()

{

intx[N][N]={{1,3,2,0},{4,6,5,-1},{7,9,8,0},{-1,10,3,2}},i,j;

for(i=0;i

{

for(j=0;j

printf("%3d",x[i][j]);

printf("\n");

}

printf("\n");

move(x);

for(i=0;i

{

for(j=0;j

printf("%3d",x[i][j]);

printf("\n");

getch();

}

}

41在给定的范围内查找满足特定条件的整数。

#include

#include

#include

intfind(longn1,longn2,longx[])

{longi,y;

intj,m=0,k=0,f,t[10],d[10];

for(i=n1;i<=n2;i++)

{for(j=0;j<10;j++)d[j]=0;

y=i*i;

f=1;m=0;

for(j=2;j

if(i%j==0){f=0;break;}

if(!

f)continue;

while(y>0){t[m++]=y%10;y=y/10;}

for(j=0;j

{

d[t[j]]++;

if(d[t[j]]>1){f=0;break;}

}

if(f)

x[k++]=i;

}

returnk;

}

main()

{

longa[50],i,n;

FILE*fp=fopen("myf2.out","w");

if(fp==NULL){printf("can'topenfile");return;}

n=find(1000,1500,a);

for(i=0;i

{printf("\n%ld%ld",a[i],a[i]*a[i]);

fprintf(fp,"\n%ld%ld",a[i],a[i]*a[i]);}

printf("\nMyexamnumberis:

WLJY001\n");

fprintf(fp,"\nMyexamnumberis:

WLJY001\n");

fclose(fp);

getch();

}

40求级数的前n项之和。

编写函数doublefun(doublex,intn)

#include

#include

#include

#defineN40

doublefun(doublex,intn)

{doubles=0,y;

longinti,j,a[N]={1,1};

for(i=2;i<=n;i++)

a[i]=a[i-2]+a[i-1];

for(i=1;i<=n;i++)

{y=1;

for(j=1;j<=a[i];j++)

y*=x;

s+=y/(a[i-1]*a[i]);

}

returns;

}

main()

{

doublex,s;intn;

FILE*fp;

fp=fopen("myf2.out","w");

if(fp==NULL)

{printf("Thefilecannotopen!

");exit(0);}

printf("inputnandx:

");

scanf("%d,%lf",&n,&x);

s=fun(x,n);

printf("s=%lf\n",s);

fprintf(fp,"s=%lf\n",s);

printf("\nMyexamnumberis:

WLJY001\n");

fprintf(fp,"\nMyexamnumberis:

WLJY001\n");

fclose(fp);

getch();

}

39求级数的前n项之和。

编写函数doublefun(doublex,doubleeps)功能是对于给定的x计算下列级数前n项的和,直到第n项的绝对值小于eps为止。

#include

#include

#include

doublefun(doublex,doubleeps)

{doubles=x,t=x,temp=x;

intn=1,flag=1;

while(fabs(t)>=eps)

{flag=-flag;

temp*=x*x*(2*n-1)/(2.0*n);

t=flag*temp/(2.0*n+1);

s+=t;n++;

}

returns;

}

main()

{

doublex,s,eps;FILE*fp;

fp=fopen("myf2.out","w");

if(fp==NULL)

{printf("thefilecannotopen!

");exit(0)}

scanf("%lf",&x);

while(fabs(x)>1)scanf("%lf",&x);

scanf("%lf",&eps);

s=fun(x,eps);

printf("s=%lf\n",s);

fprintf(fp,"s=%lf\n",s);

printf("\nMyexamnumberis:

WLJY001\n");

fprintf(fp,"\nMyexamnumberis:

WLJY001\n");

fclose(fp);

getch();

}

38验证:

任意一个四位数不全相同的四位正整数经以下变换后均能变成6174,编程实现这个验证过程,输出变换过程所产生四位数及变成6174的步骤次数。

编写函数intjudge(intn,inty[])

#include"stdio.h"

#include

#include"stdlib.h"

intjudge(intn,inty[])

{

inta[4],x,i,j,t,step=0;

x=n;

do

{

for(i=0;i<4;i++)

{a[i]=x%10;x/=10;}

for(i=0;i<4;i++)

for(j=i+1;j<4;j++)

if(a[i]

x=a[0]*1000+a[1]*100+a[2]*10+a[3];

t=a[0]+a[1]*10+a[2]*100+a[3]*1000;

x=x-t;y[step++]=x;

if(x==6174)break;

}

while(step<=7);

if(x==6174)returnstep;

elsereturn-1;

}

voidmain()

{

FILE*fp;inti,n,k,x[7]={0};

if((fp=fopen("myf2.out","w"))==NULL)exit(0);

scanf("%d",&n);

k=judge(n,x);

if(k!

=-1)

{for(i=0;i

fprintf(fp,"%8d\n",k);printf("%8d\n",k);}

else

{

fprintf(fp,"%ddoesn'tmeetstherequirments\n",n);

printf("%ddoesn'tmeetstherequirments\n",n);

}

printf("\nMyexamnumberis:

WLJY001\n");

fprintf(fp,"\nMyexamnumberis:

WLJY001\n");

fclose(fp);

getch();

}

37查找四位超级素数。

若一个素数从低位到高位依次去掉一位数字之后剩下的数任然是素数,则称此数为超级素数。

例如23、233、2333、2均为素数故2333是一个超级素数。

#include

#include

#include

#defineN100

intprime(intn)

{

inti;

if(n==1)return0;

if(n==2)return1;

for(i=2;i<=sqrt(n);i++)

if(n%i==0)return0;

return1;

}

intsuperprime(inta[])

{inti,k=0;

for(i=1000;i<10000;i++)

if(prime(i)&&prime(i/10)&&prime(i/100)&&prime(i/1000))

a[k++]=i;

returnk;

}

main()

{

inta[N]={0};inti,n;FILE*fp;

fp=fopen("myf2.out","w");

if(fp==NULL)

{printf("Thefilecannotopen!

");exit(0);}

n=superprime(a);

for(i=0;i

{if(i%5==0)

{

fprintf(fp,"\n");printf("\n");

}

fprintf(fp,"%12d",a[i]);

printf("%12d",a[i]);

}

fprintf(fp,"\nn=%d\n",n);printf("\nn=%d\n",n);

printf("\nMyexamnumberis:

WLJY001\n");

fprintf(fp,"\nMyexamnumberis:

WLJY001\n");

fclose(fp);

getch();

}

36求素数及反序数。

编写函数intlwval(intm,intx[],inty[])

#include

#include

#include

#include

intlmval(intm,intx[],inty[])

{inti,k=0,s,n;

while(--m)

{

for(i=2;i<=sqrt(m);++i)

if(m%i==0)break;

if(i<=sqrt(m))continue;

if(m>1)

{

x[k]=m;

s=0;n=m;

while(n)

{s=s*10+n%10;n/=10;}

y[k++]=s;

}

}

returnk;

}

main()

{

intm,i,x[100],y[100],n;FILE*fp;

if((fp=fopen("myf2.out","w"))==NULL)

{printf("can'topenthefile");exit(0);}

scanf("%d",&m);

n=lmval(m,x,y);for(i=0;i

printf("\n");fprintf(fp,"\n");

for(i=0;i

printf("\nMyexamnumberis:

WLJY001\n");

fprintf(fp,"\nMyexamnumberis:

WLJY001\n");

fclose(fp);

getch();

}

35在一组数据中查找并删除完全数。

编写函数intfactor(intx[],intn,inty[])

#include

#include

intfactor(intx[],intn,inty[])

{

inti,j,k=0,s,c,d,a;

for(i=0;i

{

a=x[i];s=1;c=2;

do

{

d=a/c;

if(a==a/c*c)

{if(c==d)s=s+c;

elses=s+c+d;

}

c=c+1;

}

while(c

if(s==a)

{for(j=i;j

y[k++]=a;

n--;

}

}

returnk;

}

voidmain()

{

FILE*fp;

inta[10]={5,6,12,23,28,200,496,3000,8010,8128},b[10]={0},m,n=10,i;

fp=fopen("myf2.out","w");

if(fp==NULL){printf("Can

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1