《高级语言程序设计》北大上机试题汇总及答案.docx

上传人:b****8 文档编号:10493733 上传时间:2023-02-14 格式:DOCX 页数:33 大小:72.45KB
下载 相关 举报
《高级语言程序设计》北大上机试题汇总及答案.docx_第1页
第1页 / 共33页
《高级语言程序设计》北大上机试题汇总及答案.docx_第2页
第2页 / 共33页
《高级语言程序设计》北大上机试题汇总及答案.docx_第3页
第3页 / 共33页
《高级语言程序设计》北大上机试题汇总及答案.docx_第4页
第4页 / 共33页
《高级语言程序设计》北大上机试题汇总及答案.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

《高级语言程序设计》北大上机试题汇总及答案.docx

《《高级语言程序设计》北大上机试题汇总及答案.docx》由会员分享,可在线阅读,更多相关《《高级语言程序设计》北大上机试题汇总及答案.docx(33页珍藏版)》请在冰豆网上搜索。

《高级语言程序设计》北大上机试题汇总及答案.docx

《高级语言程序设计》北大上机试题汇总及答案

《高级语言程序设计》北大上机试题汇总

作者名:

不详出自:

网友提供05年7月20日

 

C语言上机试题:

1

1.题目:

编一C程序,它能读入一个正整数n(n<20),再逐行读入一个n*n的矩阵的元素(矩阵元素为整数,输入时相邻的整数用空格隔开),找出这个矩阵的最大的元素,再输出该元素的行号和列号(行号和列号均从1开始)。

(注:

程序命名为e1_1.exe)

程序设计:

main()

{intn,i,j,a[20][20],max,max_i,max_j;

printf("Pleaseintern=");

scanf("%d",&n);

printf("\n");

printf("Pleaseintera[][]:

\n");

for(i=0;i

for(j=0;j

scanf("%d",&a[i][j]);

max=a[0][0],max_i=0,max_j=0;

for(i=0;i

for(j=0;j

if(max

{max=a[i][j];

max_i=i;

max_j=j;

}

printf("max_i=%d,max_j=%d\n",max_i+1,max_j+1);

}

2.题目:

设y(n)=1n<=1时

y(n)=-y(n-2)+2*y(n-1)n>1时

编一C程序,它能对读入的任意n(n>=0且n<50),能计算并输出y(n)的值。

(注:

程序命名为e1_2.exe)

程序设计:

inty(n)

intn;

{if(n<=1)return

(1);

elsereturn(-y(n-2)+2*y(n-1));

}

main()

{intn;

printf("Pleaseintern=");

scanf("%d",&n);

printf("\n");

printf("y(%d)=%d\n",n,y(n));

}

3.题目:

编一C程序,它能读入一个字符串(串长<100,串中可能有空格符),计算并输出该字符串中十进制数字的个数。

(注:

程序命名为e1_3.exe)

程序设计:

#include"stdio.h"

#include"string.h"

main()

{chara[100];

inti,l,num=0;

printf("Pleaseinterastring:

\n");

gets(a);

l=strlen(a);

for(i=0;i

if(a[i]>='0'&&a[i]<='9')

num++;

printf("Numberis%d\n",num);

}

C语言上机试题:

2

1.题目:

编一C程序,它能读入一正整数n,(n<10),并输出如下图形:

(可执行文件名为e2_1.exe)

程序设计:

main()

{staticinta[20][20];

intn,i,j,k;

printf("Pleaseintern=");

scanf("%d",&n);

printf("\n");

for(i=0;i

{k=1;

for(j=0;j<2*n-1;j++)

{if(j>n-i-2)a[i][j]=i+1;

if(k<=2*i+1+n-i-2)k++;

elsebreak;

}

}

for(i=0;i

for(j=0;j<2*n-1;j++)

{if(a[i][j]==0)a[i][j]='';

elsea[i][j]+=48;

}

for(i=0;i

{printf("\n");

for(j=0;j<2*n-1;j++)

printf("%c",a[i][j]);

}

for(i=n-2;i>=0;i--)

{printf("\n");

for(j=0;j<2*n-1;j++)

printf("%c",a[i][j]);

}

printf("\n");

}

2.题目:

编一C程序,它能读入矩阵A的行数L,列数M,矩阵B的列数N,矩阵B的行数是M。

L,M,N值都小于20),以及按行读入矩阵A的L*M个元素(整数)及矩阵B的M*N个元素(整数),计算并输出A与B的矩阵乘积(按行,列输出)。

(输入时,相邻的两个整数用空格隔开)。

(可执行文件名为e2_2.exe)

程序设计:

main()

{inta[20][20],b[20][20],c[20][20],l,m,n,i,j,k;

printf("Pleaseintera[l][m]andb[m][n]ofl,m,n:

");

scanf("%d,%d,%d",&l,&m,&n);

printf("\n");

printf("Pleaseintera[l][m]:

\n");

for(i=0;i

for(j=0;j

scanf("%d",&a[i][j]);

printf("Pleaseinterb[m][n]:

\n");

for(i=0;i

for(j=0;j

scanf("%d",&b[i][j]);

for(i=0;i

for(j=0;j

{c[i][j]=0;

for(k=0;k

c[i][j]+=a[i][k]*b[k][j];

}

printf("c[l][n]=a[l][m]*b[m][n]:

");

for(i=0;i

{printf("\n");

for(j=0;j

printf("%-5d",c[i][j]);

}

printf("\n");

}

3.题目:

编一C程序,它能读入n(n<200)个整数(以-9999为结束标记,-9999不算在内,相邻的两个整数用空格隔开),找出第1到第n-1个数中第一个与第n个数相等的那个数,并输出该数读入时的序号(序号从1开始记)。

(可执行文件名为e2_3.exe)

程序设计:

main()

{inta[200],n,i;

scanf("%d",&a[0]);

if(a[0]!

=-9999)

{for(i=1,n=0;a[i-1]!

=-9999;i++,n++)

scanf("%d",&a[i]);

}

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

for(i=0;i

if(a[i]==a[n-1])

{printf("%d\n",i+1);

break;

}

}

C语言上机试题:

3

1.题目:

编一C程序,它能读入一正整数n(n<40),并输出如下图形:

共n行,每行n个A,下一行比上一行右移一列.(注:

可执行文件名为e3_1.exe)

程序设计:

main()

{intn,i,j,k;

charch='A',space='';

printf("Pleaseintern=");

scanf("%d",&n);

printf("\n");

for(i=0;i

{for(j=0;j

for(k=0;k

printf("\n");

}

}

2.题目:

编一C程序,它能读入一个正整数,并输出该正整数的17进制形式,依次用A、B、C、D、E、F、G表示10、11、12、13、14、15、16。

(注:

可执行文件名为e3_2.exe)

程序设计:

main()

{charb[18]={"0123456789ABCDEFG"};

intc[64],d,i=0,base=17;

longn;

printf("Pleaseentern=");

scanf("%ld",&n);

printf("\n");

do

{c[i]=n%base;

i++;

n=n/base;

}

while(n!

=0);

printf("Transmitenewbase=17:

\n");

for(--i;i>=0;--i)

{d=c[i];

printf("%c",b[d]);

}

printf("%c",'\n');

}

3.题目:

编一C程序,它能读入两个整数m与n,计算并输出m与n的绝对值的最大公约数及最小公倍数。

(注:

可执行文件名为e3_3.exe)

程序设计:

main()

{intm,n,d,r;

printf("Pleaseentermandn:

\n");

scanf("%d%d",&m,&n);

if(m<0)m=-m;

if(n<0)n=-n;

if(m

{r=m;m=n;n=r;}

d=m;

while(d%n!

=0)

d+=m;

printf("%d\n",d);

do{r=m%n;

if(r!

=0)

{m=n;n=r;}

}

while(r!

=0);

printf("%d\n",n);

}

C语言上机试题:

4

1.题目:

编一C程序,它能读入一个13进制数(用字符串表示,用A、B、C分别表示10、11和12),输出该数的值(按十进制数输出)。

如输入为3B时,输出为50。

(注:

可执行文件名为e4_1.exe)

程序设计:

main()

{chara[40];

intn=0,i=0,j,k,s=0;

printf("Pleaseentera13basenumber:

\n");

scanf("%s",a);

while(a[i++]!

='\0')n++;

for(i=n-1;i>=0;i--)

{if((a[i]>='0')&&(a[i]<='9'))k=a[i]-'0';

elseif((a[i]>='A')&&(a[i]<='C'))k=a[i]-55;

elseprintf("error!

\n");

for(j=1;j

s+=k;

}

printf("To10basenumberis:

\n");

printf("%d\n",s);

}

2.题目:

编一C程序,它能依次读入三组d1、r1、d2、r2、d3、r3共18个非负整数(其中0<=r1

(输入整数时,相邻的两个用空格隔开)。

(注:

可执行文件名为e4_2.exe)

程序设计:

main()

{intl,i,n,d1,r1,d2,r2,d3,r3;

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

{l=1;

n=1;

printf("Pleaseenterd1>=r1>=0,d2>=r2>=0,d3>=r3>=0:

\n");

scanf("%d%d%d%d%d%d",&d1,&r1,&d2,&r2,&d3,&r3);

while((l!

=0)&&(n<=d1*d2*d3))

{if((n%d1==r1)&&(n%d2==r2)&&(n%d3==r3))

{printf("%d\n",n);l=0;}

elsen++;

}

if(l!

=0)printf("no!

\n");

}

}

3.题目:

编一C程序,它能读如若干浮点数f1、f2、...fn(以-9999.0为结束标记,-9999.0不算在内)并输出在f2、f3、...fn这n-1个数中大于f1的数的个数、等于f1的数的个数和小于f1的数的个数。

(注:

可执行文件名为e4_3.exe)

程序设计:

#include"math.h"

main()

{floatf[100],f1;

intn=0,i,i1=0,i2=0,i3=0;

printf("Pleaseenterfloat:

\n");

scanf("%f",&f1);

f[0]=f1;

while(abs(f[n]+9999.0)>=1e-4)

scanf("%f",&f[++n]);

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

if(f[i]>f1)i1++;

elseif(abs(f[i]-f1)<1e-4)i2++;

elsei3++;

printf(">f1:

%d\n",i1);

printf("=f1:

%d\n",i2);

printf("

%d\n",i3);

}

C语言上机试题:

5

1.题目:

编一C程序,它能读入若干个非零浮点数(相邻的两个数用空格隔开,以0.0为输入结束标记,0.0不算在内),计算并输出这些数的平均值。

(注:

可执行文件名为e5_1.exe)

程序设计:

#include"math.h"

main()

{floatf,s=0.0;

intn=0;

printf("Pleaseenterfloatnumber:

\n");

scanf("%f",&f);

if(fabs(f-0.0)<1e-4)

printf("Nonumber!

\n");

elsewhile(fabs(f-0.0)>1e-4)

{n++;

s+=f;

scanf("%f",&f);

}

if(n!

=0)

printf("%dnumberofaverageis:

%f\n",n,s/n);

}

2.题目:

编一C程序,它能反复读入正整数(相邻的用空格隔开),并判断它是否为素数(质数),若是,则输出"yes",否则,输出"no",直到读入1时,程序终止执行。

(注:

可执行文件名为e5_2.exe)

程序设计:

main()

{intn,m,f;

printf("Pleaseenteranumber:

\n");

scanf("%d",&n);

while(n!

=1)

{f=1;

if(n==2)

printf("%dyes\n",n);

elsefor(m=2;m

if(n%m==0)

{printf("%dno\n",n);

f=0;

break;

}

if(n!

=2&&f==1)

printf("%dyes\n",n);

scanf("%d",&n);

}

}

3.题目:

编一C程序,它能读入21个整数(相邻的两个数用空格隔开),并输出值为中间的整数的值(即恰有10个值小于它,恰有10个值大于它)。

(注:

可执行文件名为e5_3.exe)

程序设计:

main()

{inta[21],i,j,k,t;

printf("Pleaseenter21numbers:

\n");

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

scanf("%d",&a[i]);

for(k=1;k<21;k++)

for(j=20,i=0;i<21-k;i++,j--)

if(a[j]

{t=a[j];

a[j]=a[j-1];

a[j-1]=t;

}

printf("Thecenternumberis%d\n",a[10]);

}

C语言上机试题:

6

1.题目:

编一C程序,它能读入一串整数(用空格隔开相邻的两个整数,以-9999为输入结束标记,-9999不算在内),并以与读入次序相反的次序输出。

(注:

可执行文件名为e6_1.exe)

程序设计:

main()

{inta[100],i=-1,n;

printf("Pleaseenternumbers:

\n");

do{i++;

scanf("%d",&a[i]);

}

while(a[i]!

=-9999);

n=i-1;

for(i=n;i>=0;i--)

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

printf("\n");

}

2.题目:

编一C程序,它能以字符串形式读入两个无符号正整数m和n(两个串各占一行),计算并输出这两个整数的和,其中m和n的值最大可为1000亿。

(注:

可执行文件名为e6_2.exe)

程序设计:

#include"stdio.h"

#include"string.h"

main()

{charm[20],n[20],mn[20];

intml,nl,ms,ns,mns,k,i,j,f;

printf("Pleaseenter2numberstring:

\n");

scanf("%s",m);

scanf("%s",n);

ml=strlen(m);

nl=strlen(n);

if(ml

for(i=ml-1,j=nl-1;i>=ml-nl-1;i--,j--)n[i]=n[j];

for(i=0;i

for(i=ml-1;i>=0;i--)

{ms=m[i]-48;

ns=n[i]-48;

mns=ms+ns;

if(mns<10)f=0;

elsef=1;

if(mns<10)m[i]+=ns;

else{m[i]+=ns-10;

m[i-1]+=f;

}

}

if(f==0)printf("%s\n",m);

else{for(i=ml;i>0;i--)m[i]=m[i-1];m[0]='1';printf("%s\n",m);}

}

3.题目:

编一C程序,它能读入10个浮点数(相邻的两个数用空格隔开),计算并输出其中最大数和最小数之差。

(注:

可执行文件名为e6_3.exe)

程序设计:

main()

{floatf[9],max,min;

inti;

printf("Pleaseenter10float:

\n");

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

scanf("%f",&f[i]);

max=min=f[0];

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

{if(max

max=f[i];

if(min>f[i])

min=f[i];

}

printf("max=%f,min=%f,max-min=%f\n",max,min,max-min);

}

C语言上机试题:

7

1.题目:

编一C程序,它能读入10个用空格隔开的整数n1,n2,…,n10,对于i=1,2,…10,执行:

若ni是某个整数的平方,则输出yes,否则输出no。

(注:

可执行文件名为e7_1.exe)

程序设计:

#include"math.h"

main()

{inta[9],i,j,n;

printf("Pleaseenter10number:

\n");

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

scanf("%d",&a[i]);

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

if(a[i]==1)printf("%dyes\n",a[i]);

else{n=(int)(floor(sqrt(a[i])));

if(a[i]==n*n)printf("%dyes\n",a[i]);

elseprintf("%dno\n",a[i]);

}

}

2.题目:

编一C程序,它能读入由空格隔开的5个正整数,对每个正整数n,判断,若n是完全数(即n=d1+d2+..+dk,其中d1,d2,..dk是n的所有小于它的因子,如6的所有小于它的因子是1,2,3,6=1+2+3,即6是完全数),则输出yes,否则输出no。

(注:

可执行文件名为e7_2.exe)

程序设计:

main()

{inta[5],i,j,n;

printf("Pleaseenter5number:

\n");

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

scanf("%d",&a[i]);

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

{n=0;

for(j=1;j

if(a[i]%j==0)n+=j;

if(n==a[i])printf("%dyes\n",a[i]);

elseprintf("%dno\n",a[i]);

}

}

3.题目:

编一C程序,它能读入一个正整数n(n<10),然后输出如下图形:

程序设计:

main()

{staticinta[20][20];

intn,i,j,k;

printf("Pleaseintern=");

scanf("%d",&n);

printf("\n");

for(i=0;i

{k=1;

for(j=0;j<2*n-1;j++)

{if(j>n-i-2)a[i][j]=i+1;

if(k<=2*i+1+n-i-2)k++;

elsebreak;

}

}

for(i=0;i

for(j=0;j<2*n-1;j++)

{if(a[i][j]==0)a[i][j]='';

elsea[i][j]+=48;

}

for(i=0;i

{printf("\n");

for(j=0;j<2*n-1;j++)

printf("%c",a[i][j]);

}

for(i=n-2;i>=0;i--)

{printf("\n");

for(j=0;j<2*n-1;j++)

printf("%c",a[i][j]);

}

printf("\n");

}

C语言上机试题:

8

1.题目:

编一C程序,它能读入一个正整数n,然后输出如下图形:

(注:

可执行文件名为e8_1.exe)

程序设计:

main()

{staticchara[80][80];

intn,i,j,k;

printf("Pleaseintern=");

scanf("%d",&n);

printf("\n");

f

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

当前位置:首页 > 高等教育 > 经济学

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

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