理论考试.docx
《理论考试.docx》由会员分享,可在线阅读,更多相关《理论考试.docx(47页珍藏版)》请在冰豆网上搜索。
理论考试
输入一批学生的成绩,遇负数表示输入结束,要求统计并输出各登记成绩的学生个数。
成绩等级分为三级,分别为A(90~100)、P(60~89)和F(0~59)。
运行示例:
Enterscore:
887168705981910607783-10
A:
1;P:
8;F:
2;
【程序】
#include
main()
{intmark,a,p,f;
A=p=f=0;
/*printf(“Enterscores:
”);*/
scanf(“%d”,&mark);
while(_____
(1)_______){
if(mark>=90)a++;
____
(2)_____p++;
____(3)_____f++;
____(4)_____
}
printf(“A:
%d;P:
%d;F:
%d;\n”,a,p,f);
}
【供选择的答案】
(1)A.mark>=0B.mark>0
C.mark<=0D.mark<0
(2)A.elseif(mark>=60)B.if(mark>=60)
C.else(mark>=60)D.if(mark<90)
(3)A.else(mark<60)B.else
C.if(mark>0)D.elseif(mark<=60)
(4)A.scanf(“%d”,mark);B.scanf(“%d”,&mark);
C.;D.mark=getchar();
输入样列
887168705981910607783-10
输出样例
A:
1;P:
8;F:
2;
提示
#include
main()
{intmark,a,p,f;
a=p=f=0;
/*printf("Enterscores:
");*/
scanf("%d",&mark);
while(mark>=0){
if(mark>=90)a++;
elseif(mark>=60)p++;
elsef++;
scanf("%d",&mark);
}
printf("A:
%d;P:
%d;F:
%d;\n",a,p,f);
}
2.求1~999之间所有满足各位数字的立方和等于它本身的数。
例如153的各位数字的立方和是1^3+5^3+3^3=153
【程序】
#include
main()
{intdigit,j,sum,x;
for(j=1;j<1000;j++){
______(5)______
______(6)______
do{
______(7)_____
Sum=sum+digit*digit*digit;
x=x/10;
}while(_____(8)____)
if(sum==j)printf(“%d\n”,sum);
}
}
【供选择的答案】
(5)A.sum=0;B.sum=1;
C.sum=j;D.;
(6)A.x=1;B.x=j;
C.nD.x=sum;
(7)A.digit=x/10;B.;
C.digit=x%10;D.digit=x;
(8)A.x==0B.j!
=0
C.j==0D.x!
=0
输入样列
无
输出样例
无
提示
#include
main()
{intdigit,j,sum,x;
for(j=1;j<1000;j++){
sum=0;
x=j;
do{
digit=x%10;
sum=sum+digit*digit*digit;
x=x/10;
}while(x!
=0);
if(sum==j)printf("%d\n",sum);
}
}
3.输入10个整数,将它们从大到小排序后输出。
【程序】
#include
____(9)______
voidsort(____(10)_____)
{inti,index,k,t;
for(k=0;kindex=k;
for(i=k+1;iif(a[i]>a[index])index=i;
______(11)_______
}
}
voidswap(int*x,int*y)
{intt;
T=*x;*x=*y;*t=t;
}
main()
{inti,a[10];
/*printf(“Enter10integers:
”);*/
for(i=0;i<10;i++)
scanf(“%d”,&a[i]);
_____(12)________
/*printf(“Aftersorted:
”);*/
for(i=0;i<10;i++)
printf(“%d”,a[i]);
printf(“\n”);
}
(9)A.voidswap(int*x,int*y)B.;
C.voidswap(int*x,int*y);D.voidswap(int*x,*y)
(10)A.int&a,intnB.int*a,int*n
C.int*a,intnD.inta,int*n
(11)A.swap(*a[index],*a[k])B.swap(a[index],a[k])
C.swap(index,k)D.swap(&a[index],&a[k])
(12)A.sort(a)B.sort(a[10])
C.sort(a[],10)D.sort(a,10)
输入
输入10个整数
输出
从大到小输出10个整数,每个数后面一个格。
输入样列
1098-9369100-102
输出样例
100981096320-1-9
提示
#include
voidswap(int*x,int*y);
voidsort(int*a,intn)
{inti,index,k,t;
for(k=0;kindex=k;
for(i=k+1;iif(a[i]>a[index])index=i;
swap(&a[index],&a[k]);
}
}
voidswap(int*x,int*y)
{intt;
t=*x;*x=*y;*y=t;
}
main()
{inti,a[10];
/*printf("Enter10integers:
");*/
for(i=0;i<10;i++)
scanf("%d",&a[i]);
sort(a,10);
/*printf("Aftersorted:
");*/
for(i=0;i<10;i++)
printf("%d",a[i]);
printf("\n");
}
4.阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。
【程序】
程序1
#include
main()
{intj,k,s1,s2;
s1=s2=0;
for(j=1;j<=5;j++){
s1++;
for(k=1;k<=j;k++)
s2++;
}
printf(“%d%d”,s1,s2);
}
程序2
#include
main()
{intj,k,s1,s2;
s1=0;
for(j=1;j<=5;j++){
s1++;
for(k=1,s2=0;k<=j;k++)
s2++;
}
printf(“%d%d”,s1,s2);
}
程序3
#include
main()
{intj,k,s1,s2;
s1=0;
for(j=1;j<=5;j++){
s1++;
for(k=1;k<=j;k++,s2=0)
s2++;
}
printf(“%d%d”,s1,s2);
}
程序4
#include
main()
{intj,k,s1,s2;
s1=s2=0;
for(j=1;j<=5;j++,s1=0){
s1++;
for(k=1;k<=j;k++)
s2++;
}
printf(“%d%d”,s1,s2);
}
(13)程序1运行时,输出_____(13)_______
A.015B.50
C.55D.515
(14)程序2运行时,输出_____(14)_______
A.015B.50
C.55D.515
(15)程序3运行时,输出_____(15)_______
A.015B.50
C.55D.515
(16)程序4运行时,输出_____(16)_______
A.015B.50
C.55D.515
5.阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。
【程序】
程序1
#include
main()
{inti,m=15,y=-1;
for(i=2;i<=m/2;i++)
if(m%i==0)y=0;
elsey=1;
printf(“%d”,y);
}
程序2
#include
main()
{inti,m=15,y=-1;
for(i=2;i<=m/2;i++)
if(m%i==0){y=0;break;}
printf(“%d”,y);
}
程序3
#include
main()
{inti,m=15,y=-1;
for(i=2;i<=m/2;i++)
if(m%i==0)break;
if(i>m/2)y=1;
elsey=0;
printf(“%d”,y);
}
程序4
#include
main()
{inti,m=15,y=-1;
for(i=2;i<=m/2;i++)
if(m%i==0){break;y=0;}
printf(“%d”,y);
}
(17)程序1运行时,输出_____(17)_______
A.1B.0
C.15D.-1
(18)程序2运行时,输出_____(18)_______
A.15B.0
C.-1D.1
(19)程序3运行时,输出_____(19)_______
A.-1B.1
C.0D.15
(20)程序4运行时,输出_____(20)_______
A.0B.15
C.1D.-1
试题6(每小题3分,共12分)
阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。
【程序】
#include
main()
{intk;
charch,a[10],*s[10]={“one”,”two”,”three”,”four”};
k=0;
while((ch=getchar())!
=’\n’&&k<9)
if(cj>=’5’&&ch<=’8’)a[k++]=ch;
a[k]=’\0’;
for(k=0;a[k]!
=’\0’;k++)
printf(“%s”,s[(‘9’-a[k])-1]);
}
(21)程序运行时,输入5678,输出_____(21)_______
A.twothreeB.two
C.onefourthreeD.fourthreetwoone
(22)程序运行时,输入8561#,输出_____(22)_______
A.twothreeB.two
C.onefourthreeD.fourthreetwoone
(23)程序运行时,输入7902#,输出_____(22)_______
A.twothreeB.two
C.onefourthreeD.fourthreetwoone
(24)程序运行时,输入7633#,输出_____(22)_______
A.twothreeB.two
C.onefourthreeD.fourthreetwoone
6.问题描述
(1)定义函数fact(n)计算n的阶乘:
n!
=1*2*......*n,函数返回值类型是double。
(2)定义函数cal(e)计算下列算式的值,直到最后一项的绝对值小于eps,函数返回值类型是double。
s=1+1/2!
+1/3!
+1/4!
+……
(3)定义函数main(),输入正整数n,当精度e分别取值为10^-1、10^-2、10^-3、……、10^-n时,分别计算并输出下列算式的值,直到最后一项的绝对值小于精度e,以此较不同精度下计算出的结果。
要求调用函数cal(e)计算下列算式的值。
s=1+1/2!
+1/3!
+1/4!
+……
输入
输入n(1输出
输出n个e的值
输入样列
5
输出样例
1.666667
1.708333
1.718056
1.718254
1.718279
提示
#include
#include
doublefact(intn)
{
doubles=1;
inti;
for(i=1;i<=n;i++)
s=s*i;
returns;
}
doublef1(doublee)
{
intn=1;
doubles=0;
while
(1)
{
if(1/fact(n)break;
s+=1/fact(n);
n++;
}
returns;
}
main()
{
intn,i;
scanf("%d",&n);
for(i=1;i<=n;i++)
printf("%f\n",f1(pow(10,-i)));
}
7.问题描述
填空:
图1:
输入
无
输出
"%.4f\n"
输入样列
无
输出样例
无
提示
#include
#include
main()
{
intdenomintor=1,flag=1;
doubleitem,sum=0;
item=2;
while(fabs(item)>=1e-3)
{
item=flag*1.0/denomintor;sum+=item;
denomintor=denomintor+3;
flag=-flag;
}
printf("%.4f\n",sum);
}
8.问题描述
填空:
图1:
输入
无
输出
每个数后面有一空格,最后不换行。
输入样列
无
输出样例
无
提示
#include
main()
{
inti;
intis(intn);
for(i=1;i<=100;i++)
if(is(i)==1)
printf("%d",i);
}
intis(intn)
{
inti,sum;
if(n==1)
return0;
sum=0;
for(i=1;i<=n/2;i++)
if(n%i==0)
sum=sum+i;
if(n==sum)
return1;
else
return0;
}
9.问题描述
填空:
图1:
输入
无
输出
"sum=%d"
输入样列
无
输出样例
无
提示
#include
main()
{
inti,sum,a[10];
voidfun(intfib[],intn);
fun(a,10);
sum=0;
for(i=0;i<10;i++)
sum=sum+a[i];
printf("sum=%d",sum);
}
voidfun(intfib[],intn)
{
inti;
fib[0]=fib[1]=1;
for(i=2;ifib[i]=fib[i-1]+fib[i-2];
}
10.问题描述
程序阅读:
图1:
输入
无
输出
无
输入样列
无
输出样例
无
11.问题描述
程序阅读:
图1:
输入
无
输出
无
输入样列
无
输出样例
无
出处
12.问题描述
填空:
图1:
输入
无
输出
无
输入样列
无
输出样例
无
提示
#include
#include
main()
{
inti,j;
charstr[10],*s[10]={"SQL","hello","bear","zone"};
gets(str);
for(i=0;i<4;i++)
{
if(strcmp(str,s[i])>0)continue;
j=3;
while(j>=i)
{
s[j+1]=s[j];
j--;
}
s[i]=str;
break;
}
if(i==4)s[4]=str;
for(i=0;i<5;i++)
printf("%s",s[i]);
putchar('\n');
}
13.问题描述
(1)定义函数fact(n)计算n的阶乘:
n!
=1*2*…*n,函数形参n的类型是
int,函数类型是double。
(2)定义函数cal(x,e)计算下列算式的值,直到最后一项的值小于e,函数形参x
和e的类型都是double,函数类型是double。
要求调用自定义函数fact(n)计算n
的阶乘,调用库函数pow(x,n)计算x的n次冥。
(3)定义函数main(),输入两个浮点数x和e,计算并输出下列算式的值,直到最后一
项的值小于精度e。
要求调用自定义函数cal(x,e)计算下列算式的值。
图1:
输入
输入二个实型数
输出
保留5位小数。
输入样列
2.00.00001
输出样例
6.38905
提示
#include
#include
doublefact(intn)
{
doubles=1;
inti;
for(i=1;i<=n;i++)
s=s*i;
returns;
}
doublecal(doublex,doublee)
{
doubles=0,item;
intn=1;
do
{
item=pow(x,n)/fact(n);
s=s+item;
n++;
}while(item>=e);
returns;
}
main()
{
doublex,e;
scanf("%lf%lf",&x,&e);
printf("%.5f\n",cal(x,e));
}
14.问题描述
输入1个正整数n(n>=2),输出菲波那契(Fibonacci)序列的前n项,每行输出6个数。
菲波那契(Fibonacci)序列:
1,1,2,3,5,8,13,……,数列的前两个数都是1,从第三个数开始,每个数是前两个数之和。
#include
main()
{
intcount,i,n,x1,x2,x;
scanf("%d",&n);
x1=x2=1;
printf("%d%d",x1,x2);
____
(1)___________;
for(i=1;i<=n-2;i++){
____
(2)_______;
printf("%d",x);
count++;
if(____(3)____)
printf("\n");
x1=x2;
____(4)____;
}
}
(1)A、count=2B、count=0
C、count=1D、count=-1
(2)A、x=x1-x2B、x=x1+x2
C、x=x1D、x=2
(3)A、count/6==0B、count%6!
=0
C、count%6==0D、count/6!
=0
(4)A、x=x1+x2B、x2=x1
C、x=x2D、x2=x
输入
一个整数数n
输出
每行6个,每个后面一个空格。
输入样列
10
输出样例
112358
13213455
提示
#include
main()
{
intcount,i,n,x1,x2,x;
scanf("%d",&n);
x1=x2=1;
printf("%d%d",x1,x2);
count=2;
for(i=1;i<=n-2;i++){
x=x1+x2;
printf("%d",x);
count++;
if(count%6==0)
printf("\n");
x1=x2;
x2=x;
}
}
15.问题描述
输入2个正整数m和n(1<=m