北京自考高级语言程序设计上机题及参考命案Word文档格式.docx
《北京自考高级语言程序设计上机题及参考命案Word文档格式.docx》由会员分享,可在线阅读,更多相关《北京自考高级语言程序设计上机题及参考命案Word文档格式.docx(13页珍藏版)》请在冰豆网上搜索。
9'
A'
B'
C'
D'
E'
F'
G'
};
scanf("
%ld"
&
n);
while(n!
=0)
{b[i++]=a[n%17];
n/=17;
}
printf("
Theresultis:
"
);
for(--i;
i>
=0;
i--)
printf("
%c"
b[i]);
}
2.输入两个整数,输出两个数绝对值的最大公约数。
math.h"
voidmain()
{inta,b,i,t;
scanf("
%d%d"
a,&
b);
a=abs(a);
b=abs(b);
if(a>
b){t=a;
a=b;
b=t;
for(i=a;
0;
if(a%i==0&
&
b%i==0){printf("
%d"
i);
break;
}
双号题
3.编一C程序,它能依次读四个15进制数(用字符串表示每个字符串占一行,用A、B、C、D、E依次表示10、11、12、13、14),输出这四个数的值(按十进制输出,每个占一行)。
如输入为3B,输出为56。
参考答案之一:
main()
{chara[4][20];
inti,j;
longb[4]={0};
for(i=0;
i<
4;
i++)
gets(a[i]);
for(j=0;
a[i][j]!
='
\0'
;
j++)
{if(a[i][j]=='
||a[i][j]=='
||a[i][j]=='
)
b[i]=b[i]*15+a[i][j]-'
elseb[i]=b[i]*15+a[i][j]-'
\n"
%s(15)=%ld(10)\n"
a[i],b[i]);
4.编一C程序,它能依次读三组d1,r1;
d2,r2;
d3,r3共18个非负整数(其中0<
=r1<
d1,0<
=r2<
d2,0<
=r3<
d3)对每组6个非负整数依次判断是否有正整数n,满足n%d1=r1且n%d2=r2且n%d3=r3,若有则输出其中的最小者,否则输出no.(输入整数时,相邻两个用空格隔开)
{inta[3][6],d[15],t,i,j,k,m=0,min,flag;
/*输入数据*/
3;
j<
6;
%d"
a[i][j]);
/*冒泡法排序*/
for(k=0;
k<
k++)
5;
for(j=5;
j>
i;
j--)
if(a[k][j]<
a[k][j-1]){t=a[k][j];
a[k][j]=a[k][j-1];
a[k][j-1]=t;
{flag=0;
for(k=1;
{for(t=0;
t<
k;
t++)
{if(a[i][j]%a[0][k]==a[0][t]){flag++;
}}
if(flag==1)break;
if(flag==1)
{if(a[i][j]%a[1][k]==a[1][t]){flag++;
if(flag==2)break;
if(flag==2)
{if(a[i][j]%a[2][k]==a[2][t]){flag++;
if(flag==3)break;
if(flag==3)d[m++]=a[i][j];
\nThenumberswhicharematchedconditionare:
"
for(m=0;
d[m]!
m++)
d[m]);
if(d[0]==0)printf("
no!
else
{min=d[0];
for(m=1;
if(min>
d[m])min=d[m];
\nTheminofnumberwhichismatchedconditionis:
min);
}
《高级语言程序设计》北大上机试题总汇
C语言上机试题:
1
5.题目:
编一C程序,它能读入一个正整数n(n<
20),再逐行读入一个n*n的矩阵的元素(矩阵元素为整数,输入时相邻的整数用空格隔开),找出这个矩阵的最大的元素,再输出该元素的行号和列号(行号和列号均从1开始)。
(注:
程序命名为e1_1.exe)
程序设计:
main()
{intn,i,j,a[20][20],max,max_i,max_j;
Pleaseintern="
Pleaseintera[][]:
for(i=0;
N;
I++)
for(j=0;
J++)
a[j]);
max=a[0][0],max_i=0,max_j=0;
if(max<
A[I][J])
{max=a[j];
max_i=i;
max_j=j;
max_i=%d,max_j=%d\n"
max_i+1,max_j+1);
6.题目:
设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));
{intn;
y(%d)=%d\n"
n,y(n));
7.题目:
编一C程序,它能读入一个字符串(串长<
100,串中可能有空格符),计算并输出该字符串中十进制数字的个数。
程序命名为e1_3.exe)
string.h"
{chara[100];
inti,l,num=0;
Pleaseinterastring:
gets(a);
l=strlen(a);
l;
i++)
if(a>
a<
)
num++;
Numberis%d\n"
num);
8.题目:
编一C程序,它能读入一正整数n,(n<
10),并输出如下图形:
(可执行文件名为e2_1.exe)
{staticinta[20][20];
intn,i,j,k;
n;
{k=1;
2*n-1;
j++)
{if(j>
n-i-2)a[j]=i+1;
if(k<
=2*i+1+n-i-2)k++;
elsebreak;
{if(a[j]==0)a[j]='
'
elsea[j]+=48;
{printf("
a[j]);
for(i=n-2;
i--)
9.题目:
编一C程序,它能读入矩阵A的行数L,列数M,矩阵B的列数N,矩阵B的行数是M。
L,M,N值都小于20),以及按行读入矩阵A的L*M个元素(整数)及矩阵B的M*N个元素(整数),计算并输出A与B的矩阵乘积(按行,列输出)。
(输入时,相邻的两个整数用空格隔开)。
(可执行文件名为e2_2.exe)
{inta[20][20],b[20][20],c[20][20],l,m,n,i,j,k;
Pleaseintera[l][m]andb[m][n]ofl,m,n:
%d,%d,%d"
l,&
m,&
Pleaseintera[l][m]:
m;
Pleaseinterb[m][n]:
b[j]);
{c[j]=0;
for(k=0;
k++)
c[j]+=a[k]*b[k][j];
c[l][n]=a[l][m]*b[m][n]:
%-5d"
c[j]);
10.题目:
编一C程序,它能读入n(n<
200)个整数(以-9999为结束标记,-9999不算在内,相邻的两个整数用空格隔开),找出第1到第n-1个数中第一个与第n个数相等的那个数,并输出该数读入时的序号(序号从1开始记)。
(可执行文件名为e2_3.exe)
{inta[200],n,i;
a[0]);
if(a[0]!
=-9999)
{for(i=1,n=0;
a[i-1]!
=-9999;
i++,n++)
a);
%d,%d\n"
n,a[n-1]);
if(a==a[n-1])
%d\n"
i+1);
3
11.题目:
编一C程序,它能读入一正整数n(n<
40),并输出如下图形:
共n行,每行n个A,下一行比上一行右移一列.(注:
可执行文件名为e3_1.exe)
{intn,i,j,k;
charch='
space='
{for(j=0;
j++)printf("
space);
k++)printf("
ch);
12.题目:
编一C程序,它能读入一个正整数,并输出该正整数的17进制形式,依次用A、B、C、D、E、F、G表示10、11、12、13、14、15、16。
可执行文件名为e3_2.exe)
{charb[18]={"
0123456789ABCDEFG"
intc[64],d,i=0,base=17;
longn;
Pleaseentern="
do
{c=n%base;
i++;
n=n/base;
while(n!
=0);
Transmitenewbase=17:
for(--i;
--i)
{d=c;
b[d]);
\n'
13.题目:
编一C程序,它能读入两个整数m与n,计算并输出m与n的绝对值的最大公约数及最小公倍数。
可执行文件名为e3_3.exe)
{intm,n,d,r;
Pleaseentermandn:
if(m<
0)m=-m;
if(n<
0)n=-n;
n)
{r=m;
m=n;
n=r;
d=m;
while(d%n!
=0)
d+=m;
d);
do{r=m%n;
if(r!
{m=n;
while(r!
n);
4
14.题目:
编一C程序,它能读入一个13进制数(用字符串表示,用A、B、C分别表示10、11和12),输出该数的值(按十进制数输出)。
如输入为3B时,输出为50。
可执行文件名为e4_1.exe)
{chara[40];
intn=0,i=0,j,k,s=0;
Pleaseentera13basenumber:
%s"
a);
while(a[i++]!
)n++;
for(i=n-1;
{if((a>
)&
(a<
))k=a-'
elseif((a>
))k=a-55;
elseprintf("
error!
for(j=1;
n-i;
j++)k*=13;
s+=k;
To10basenumberis:
s);
15.题目:
编一C程序,它能依次读入三组d1、r1、d2、r2、d3、r3共18个非负整数(其中0<
d1,0<
d2,0<
d3),对每组6个非负整数依次判断是否有正整数n,满足n%d1=r1且n%d2=r2且n%d3=r3,若有,则输出其中最小者;
否则,输出No。
(输入整数时,相邻的两个用空格隔开)。
可执行文件名为e4_2.exe)
{intl,i,n,d1,r1,d2,r2,d3,r3;
=2;
{l=1;
n=1;
Pleaseenterd1>
=r1>
=0,d2>
=r2>
=0,d3>
=r3>
=0:
%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))
l=0;
elsen++;
if(l!
=0)printf("
16.题目:
编一C程序,它能读如若干浮点数f1、f2、...fn(以-9999.0为结束标记,-9999.0不算在内)并输出在f2、f3、...fn这n-1个数中大于f1的数的个数、等于f1的数的个数和小于f1的数的个数。
可执行文件名为e4_3.exe)
{floatf[100],f1;
intn=0,i,i1=0,i2=0,i3=0;
Pleaseenterfloat:
%f"
f1);
f[0]=f1;
while(abs(f[n]+9999.0)>
=1e-4)
f[++n]);
for(i=1;
=n-1;
if(f>
f1)i1++;
elseif(abs(f-f1)<
1e-4)i2++;
elsei3++;
>
f1:
i1);
=f1:
i2);
<
i3);
5
17.题目:
编一C程序,它能读入若干个非零浮点数(相邻的两个数用空格隔开,以0.0为输入结束标记,0.0不算在内),计算并输出这些数的平均值。
可执行文件名为e5_1.exe)
{floatf,s=0.0;
intn=0;
Pleaseenterfloatnumber:
f);
if(fabs(f-0.0)<
1e-4)
Nonumber!
elsewhile(fabs(f-0.0)>
{n++;
s+=f;
if(n!
%dnumberofaverageis:
%f\n"
n,s/n);
18.题目:
编一C程序,它能反复读入正整数(相邻的用空格隔开),并判断它是否为素数(质数),若是,则输出"
yes"
,否则,输出"
no"
,直到读入1时,程序终止执行。
可执行文件名为e5_2.exe)
{intn,m,f;
Pleaseenteranumber:
=1)
{f=1;
if(n==2)
%dyes\n"
elsefor(m=2;
m<
m++)
if(n%m==0)
%dno\n"
f=0;
=2&
f==1)
19.题目:
编一C程序,它能读入21个整数(相邻的两个数用空格隔开),并输出值为中间的整数的值(即恰有10个值小于它,恰有10个值大于它)。
可执行文件名为e5_3.exe)
{inta[21],i,j,k,t;
Pleaseenter21numbers:
21;
for(k=1;
k++)(排序的算法)
for(j=20,i=0;
21-k;
i++,j--)
if(a[j]<
a[j-1])
{t=a[j];
a[j]=a[j-1];
a[j-1]=t;
Thecenternumberis%d