任务18:循环结构程序设计应用 《编程语言-C语言》45分钟专题训练
|
2份
|
25页
|
80人阅读
|
3人下载
内容正文:
湖南省职教高考《编程语言—C语言》45分钟专题训练专辑,共43份试卷。试卷命题与高考紧密相关,精选具有代表性和典型性的高考常考题。旨在帮助学生系统地复习和巩固计算机类理论知识,熟悉高考题型和命题规律,提高解题能力和应试技巧,为高考取得优异成绩打下坚实的基础,本训练卷适用于即将参加计算机类高考的学生。与本专辑配套的还有湖南省职教高考《计算机应用基础》《计算机组装与维护》《计算机网络技术》45分钟专题训练专辑,欢迎同学和老师们下载使用。
《编程语言—C语言》
项目三: 循环结构程序设计
第18卷: 循环结构程序设计应用
时间:45分钟 总分:100分
班级___________ 姓名__________ 学号__________ 成绩________
一、选择题(共23小题,每小题2分,共46分)
1.在C语言中,循环语句while和do…while的主要区别是( )
A.do…while的循环体不能是复合语句
B.do…while的循环语句不允许嵌套
C.while的循环控制条件更严格
D.do…while的循环体至少无条件执行一次
2.下列选项中,不是无限循环语句的是( )
A.for(y=0,x=1;x>++y;x++) B.for( ; ;x++)
C.while(1){x++;} D.for(i=10; ;i--)sum+=i;
3.设变量均已正确定义,则以下for循环( )
for(x=0,y=0;(y!=123)&&(x<4);x++);
A.执行3次 B.执行4次 C.执行123次 D.死循环
4.以下选项中,不构成无限循环的语句或语句组是( )
A.n=0;do{++n;}while(n<=0);
B.n=0;while(1){n++;}
C.n=10;while(n);{n--;}
D.for(n=0,i=1; ;i++) n+=i;
5.以下程序段中,与其他三个功能不同的程序段是( )
A.s-0;i=1;for( ; ;){s+=i;i++;if(i<=10) break;}
B.s=0,i=1;for( ; i<=10; ) {s+=i;i++;}
C.s=0;for(i=1;i<=10;i++) {s+=i;}
D.for(s=0,i=1;i<=10;s+=i,i++);
6.下列程序的功能计算a的n次方并存储在s中输出,请你选择填空。( )
main()
{int i,n=3,a=2;double s=1.0;
for(i=1;i<=n;i++) s=【 】;
printf("%.2f",s);
getch();}
A.s*i B.s+i*i C.s+a*a D.s*a
7.设以下变量均已正确定义,以下不能统计出一行中输入字符个数(不包含回车符)的程序段是( )
A.n=0;char ch;while((ch=getchar( ))!='
') n++;
B.n=0;while(getchar( )!='
') n++;
C.for(n=0;getchar( )!= '
';n++);
D.n=0;for(ch=getchar( )!= '
';n++);
8.下列程序段的功能是找出整数的所有因子,请填空。( )
scanf(“%d”,&x);i=1;
for( ; 【 】; ){if(x%i==0) printf(“%3d”,i);i++;}
A.i<=x B.i<x C.i!=x D.i==x
9.鸡兔共有30只,脚共有90只,下列程序段是计算鸡兔各有多少只。请填空。( )
for(x=0;x<=30;x++)
{y=30-x;
if(【 】) printf("%d,%d
",x,y);}
A.2*x+4*y=90 B.2*x+4*y==90
C.4*x+4*y==90 D.x*x+y*y*y*y==90
10.下面程序的功能是计算1~50中7的倍数的数值之和,请选择填空。( )
int i,sum=0;
for(i=1;i<=50;i++)
if(【 】) sum+=i;
printf("%d",sum);
A.(int)(i/7)==i/7 B.(int)i/7==i/7
C.i%7=0 D.i%7==0
11.执行以下程序段的输出结果是( )
int i,j;
for(i=0;i<5;i++)
for(j=1;j<10;j++)
{if(j==6)break;
if(i<3)continue;}
printf("j=%d,i=%d",j,i);
A. j=6,i=5 B. j=5,i=6 C. j=6,i=4 D. j=4,i=6
12.下列程序的功能是:求 的值。请选择填空。( )
main()
{int i=2;float sum=1;
while(i<=50)
{sum=sum+1.0/i;i=【 】;}
printf("sum=%f",sum);
getch();}
A.i++ B.i+2 C.i*i D.i--
13.下列程序的功能是:从键盘输入若干个学生的成绩,统计最高成绩和最低成绩,当输入为负数时,结束输入。请选择填空。( )
main()
{float x,max,min;scanf("%f",&x);max=min=x;
do{if(x>max) max=x;
if(x<min) min=x;
scanf("%f",&x);}while(【 】);
printf("%f,%f",max,min);getch();}
A.x>=0 B.x<0 C.x>0 D.x!=0
14.下列程序的功能是:根据近似公式 ,求π的值。请选择填空。( )
#include <math.h>
#include <stdio.h>
#include<conio.h>
main()
{double s=0.0;int i,n;scanf("%d",&n);
for(i=1;i<=n;i++) s=s+【 】;
printf("pi=%f",sqrt(6*s));getch();}
A.1/i*i B.1.0/i*i C.1.0/(i*i) D.(i*i)/1.0
15.下列程序的功能是:计算100~1000中有多少个各位数字之和是5的数。请填空。( )
main()
{int i,s,k,count=0;
for(i=100;i<=1000;i++)
{s=0;k=i;while(k!=0){s=s+k%10;k=【 】;}
if(s!=5) continue;
else count++;}
printf("%d",count);getch();}
A.k/10 B.k%10 C.k%10/10 D.k/10%10
16.下列程序的功能是:解决百马百担问题,有一百匹马,驮100担货,大马驮3担,中马驮2担,两匹小马驮1担,求大马、中马、小马各多少匹。请选择填空。( )
main()
{int m,n,k,sum=0;
for(m=1;m<=100;m++)
for(n=1;n<=100-m;n++)
{k=【 】;
if((2*3*m+2*2*n+k)==2*100)
{printf("大马:%d;中马:%d;小马:%d
",m,n,k);sum++;}}
printf("共有%d种驮法。",sum);getch();}
A.100-m B.100-(m-n) C.m+n D.100-m-n
17.下列程序的功能是:输入20个整数,统计并输出其中正数、负数和零的个数。请选择填空。( )
main()
{int i,d,n=0,z=0,p=0;
for(i=1;i<=20;i++)
{printf("输入第%d个整数",i);scanf("%d",&d);
if(d<0) n++;
else if(【 】) p++;
else z++;}
printf("负数有%d个,正数有%d个,零有%d个
",n,p,z);getch();}
A.d>0 B.d!=0 C.d==0 D.d<=0
18.下列程序的功能是:从键盘输入2个数,由小到大排序输出。当输入的2个数是相等数时,结束循环。请选择填空。( )
main()
{int a,b,t;scanf("%d%d",&a,&b);
while(【 】)
{if(a>b){t=a;a=b;b=t;}
printf("%d,%d
",a,b);
scanf("%d%d",&a,&b);}getch();}
A.a==b B.a!=b C.a<b D.!(a!=b)
19.下列程序的功能是:从键盘输入一组字符,将其中的小写字母变成对应的大写字母后的第二个字母,其中,y变成A,z变成B。请选择填空。( )
main()
{char c;
while((c=getchar( ))!='
')
{if(c>='a'&&c<='z')
{c=【 】;
if(c>'Z'&&c<='Z'+2)c=c-26;}printf("%c",c);}getch();}
A.c-30 B.c-32 C.c+32 D.c+30
20.下列程序的功能是:从键盘输入一个整数,判断是否为素数,若为素数则输出“yes”,否则输出“no”。请选择填空。( )
main()
{int i,x,f=1;scanf("%d",&x);
for(i=2;i<=x/2;i++)
if(x%i==0){f=0;break;}
if(【 】) printf("yes");
else printf("no");getch();}
A.f==1 B.f=1 C.f!=1 D.f==0
21.下列程序的功能是:计算并输出从键盘输入的任意一个正整数的各位数字之和s及各位数字之积t。请选择填空。( )
main()
{int n,yw,s=0,t=1;scanf("%d",&n);
while(n!=0)
{yw=n%10;s=s+yw;t=t*yw;n=【 】;}
printf("s=%d,t=%d",s,t);getch();}
A.n%10 B.n/100 C.n++ D.n/10
22.下列程序的功能是:倒序打印26个英文字母。请选择填空。( )
main()
{char x='z';
while(x>='a')
{printf("%3c",x);【 】;}getch();}
A.x++ B.x-=1; C.x-1 D.x+=2
23.下面程序的功能是完成用100元人民币换成1元、2元、5元的所有兑换方案。请选择填空。( )
main()
{int i,j,k,y=1;
for(i=0;i<=20;i++)
for(j=0;j<=50;j++){k=【 】;
if(k>=0){printf(" %3d %3d %3d ",i,j,k);y=y+1;
if(y%4==0) printf("
");}}getch();}
A. 100-i*5-j B.100-i*5-j*2 C.100-i-j D.100-(i+j)
二、程序运行结果题(本题共7小题,每题3分,共21分)
24.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
main()
{int i,j,x=0;
for(i=0;i<2;i++)
{x++;for(j=0;j<=3;j++)
{if(j%2) continue;x++;}
x++;}
printf("x=%d
", x);
getch();}
25.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
main()
{int a=5,b,c,d,m,n;
b=c=d=4;m=n=0;
for( ;a>b;++b) m++;
while(a>++a)n++;
printf("m=%d,n=%d
",m,n);
getch();}
26.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
main()
{char c;
while((c=getchar())!='$')
{ if('A'<=c&&c<='Z') putchar(c);
else if('a'<=c&&c<='z') putchar(c-31); }getch();}
运行程序时输入:TESTcomeon
27.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
main()
{int sum=10,n=1;
while(n<3)
{sum=sum-n;n++; }
printf("%d,%d",n,sum);
getch();}
28.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
main()
{int x, y =0;
for(x=1;x<=10;x++)
{ if(y>=10) break;
y=y+x;}
printf("%d %d",y,x);
getch();}
29.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
main()
{ int i,sum=0; i=1;
do{ sum=sum+i; i++; }while(i<=10);
printf("%d",sum);
getch();}
30.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
main()
{int x1=1,x2=2,i;
for(i=1;i<=4;i++)
{ printf("%3d%3d",x1,x2);
if(i%2==0)
printf("
");
x1=x1+x2;
x2=x2+x1;}
getch();}
三、阅读程序,修改程序中的错误,不得增行或删行,也不得更改程序结构。请指出错误代码所在的行号,并给出该行修改后的程序代码。(每处3分,共9分)
31.如果整数A的全部因子(包括1,不包括A本身)之和等于B;且整数B的全部因子(包括1,不包括B本身)之和等于A,则将整数A和B称为亲密数。下列程序求3000以内的全部亲密数。程序中有三处错误,请改正。
L1 #include <stdio.h>
L2 #include<conio.h>
L3 main()
L4 { int a,i,b,n;
L5 for(a=1;a<3000;a++)
L6 {for(b=0,i=1;i<=a/2;i++)
L7 if(!a%i)
L8 b+=i;
L9 for(n=0,i=1;i<b/2;i++)
L10 if(!(b%i))
L11 n+=i;
L12 if(n!=a&&a<b)
L13 printf("%4d——%4d ",a,b);}
L14 getch();}
四、程序填空。按照题目要求,将正确的内容填入相应位置,使得程序完整(每空3分,共24分)
32.所谓勾股数,是指能够构成直角三角形三条边的三个正整数(a,b,c,),以下程序求100以内的所有勾股数。请填空。
#include <math.h>
#include <stdio.h>
#include<conio.h>
main()
{ int a,b,c,count=0;
printf("100以内的勾股数有:
");
printf(" a b c a b c a b c a b c
");
for(a=1;a<=100;a++)
for(b=【1】;b<=100;b++)
{c=(int)sqrt(【2】);
if(c*c==a*a+b*b&&【3】 &&c<=100)
{printf("%4d %4d %4d ",a,b,c);
count++;
if(【4】)
printf("
");
}}printf("
");
getch();}
33.以下程序是采用梯形法求sin(x)cos(x)的定积分。求定积分的公式为:
,其中,,并假设a=0,b=1.2为积分上下限,积分区间分隔数n=100。请填空。
#include <stdio.h>
#include<conio.h>
#include<math.h>
main()
{ int i,n;
double h,s,a=0,b=1.2;n=100;
h=【1】;
s=0.5*(sin(a)*cos(a)+【2】);
for(i=1;i<=n-1;i++) s+=sin(【3】)*cos(a+i*h);
【4】;
printf("s= %.4f
",s);
getch();}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$$
湖南省职教高考《编程语言—C语言》45分钟专题训练专辑,共43份试卷。试卷命题与高考紧密相关,精选具有代表性和典型性的高考常考题。旨在帮助学生系统地复习和巩固计算机类理论知识,熟悉高考题型和命题规律,提高解题能力和应试技巧,为高考取得优异成绩打下坚实的基础,本训练卷适用于即将参加计算机类高考的学生。与本专辑配套的还有湖南省职教高考《计算机应用基础》《计算机组装与维护》《计算机网络技术》45分钟专题训练专辑,欢迎同学和老师们下载使用。
《编程语言—C语言》
项目三: 循环结构程序设计
第18卷: 循环结构程序设计应用
时间:45分钟 总分:100分
班级___________ 姓名__________ 学号__________ 成绩________
一、选择题(共23小题,每小题2分,共46分)
1.在C语言中,循环语句while和do…while的主要区别是( )
A.do…while的循环体不能是复合语句
B.do…while的循环语句不允许嵌套
C.while的循环控制条件更严格
D.do…while的循环体至少无条件执行一次
【答案】D
2.下列选项中,不是无限循环语句的是( )
A.for(y=0,x=1;x>++y;x++) B.for( ; ;x++)
C.while(1){x++;} D.for(i=10; ;i--)sum+=i;
【答案】A
3.设变量均已正确定义,则以下for循环( )
for(x=0,y=0;(y!=123)&&(x<4);x++);
A.执行3次 B.执行4次 C.执行123次 D.死循环
【答案】A
4.以下选项中,不构成无限循环的语句或语句组是( )
A.n=0;do{++n;}while(n<=0);
B.n=0;while(1){n++;}
C.n=10;while(n);{n--;}
D.for(n=0,i=1; ;i++) n+=i;
【答案】A
5.以下程序段中,与其他三个功能不同的程序段是( )
A.s-0;i=1;for( ; ;){s+=i;i++;if(i<=10) break;}
B.s=0,i=1;for( ; i<=10; ) {s+=i;i++;}
C.s=0;for(i=1;i<=10;i++) {s+=i;}
D.for(s=0,i=1;i<=10;s+=i,i++);
【答案】A
6.下列程序的功能计算a的n次方并存储在s中输出,请你选择填空。( )
main()
{int i,n=3,a=2;double s=1.0;
for(i=1;i<=n;i++) s=【 】;
printf("%.2f",s);
getch();}
A.s*i B.s+i*i C.s+a*a D.s*a
【答案】D
7.设以下变量均已正确定义,以下不能统计出一行中输入字符个数(不包含回车符)的程序段是( )
A.n=0;char ch;while((ch=getchar( ))!='
') n++;
B.n=0;while(getchar( )!='
') n++;
C.for(n=0;getchar( )!= '
';n++);
D.n=0;for(ch=getchar( )!= '
';n++);
【答案】D。省略表达式1可省,但不可省略其分号。
8.下列程序段的功能是找出整数的所有因子,请填空。( )
scanf(“%d”,&x);i=1;
for( ; 【 】; ){if(x%i==0) printf(“%3d”,i);i++;}
A.i<=x B.i<x C.i!=x D.i==x
【答案】A
9.鸡兔共有30只,脚共有90只,下列程序段是计算鸡兔各有多少只。请填空。( )
for(x=0;x<=30;x++)
{y=30-x;
if(【 】) printf("%d,%d
",x,y);}
A.2*x+4*y=90 B.2*x+4*y==90
C.4*x+4*y==90 D.x*x+y*y*y*y==90
【答案】B
10.下面程序的功能是计算1~50中7的倍数的数值之和,请选择填空。( )
int i,sum=0;
for(i=1;i<=50;i++)
if(【 】) sum+=i;
printf("%d",sum);
A.(int)(i/7)==i/7 B.(int)i/7==i/7
C.i%7=0 D.i%7==0
【答案】D
11.执行以下程序段的输出结果是( )
int i,j;
for(i=0;i<5;i++)
for(j=1;j<10;j++)
{if(j==6)break;
if(i<3)continue;}
printf("j=%d,i=%d",j,i);
A. j=6,i=5 B. j=5,i=6 C. j=6,i=4 D. j=4,i=6
【答案】A
12.下列程序的功能是:求 的值。请选择填空。( )
main()
{int i=2;float sum=1;
while(i<=50)
{sum=sum+1.0/i;i=【 】;}
printf("sum=%f",sum);
getch();}
A.i++ B.i+2 C.i*i D.i--
【答案】B
13.下列程序的功能是:从键盘输入若干个学生的成绩,统计最高成绩和最低成绩,当输入为负数时,结束输入。请选择填空。( )
main()
{float x,max,min;scanf("%f",&x);max=min=x;
do{if(x>max) max=x;
if(x<min) min=x;
scanf("%f",&x);}while(【 】);
printf("%f,%f",max,min);getch();}
A.x>=0 B.x<0 C.x>0 D.x!=0
【答案】A
14.下列程序的功能是:根据近似公式 ,求π的值。请选择填空。( )
#include <math.h>
#include <stdio.h>
#include<conio.h>
main()
{double s=0.0;int i,n;scanf("%d",&n);
for(i=1;i<=n;i++) s=s+【 】;
printf("pi=%f",sqrt(6*s));getch();}
A.1/i*i B.1.0/i*i C.1.0/(i*i) D.(i*i)/1.0
【答案】C
15.下列程序的功能是:计算100~1000中有多少个各位数字之和是5的数。请填空。( )
main()
{int i,s,k,count=0;
for(i=100;i<=1000;i++)
{s=0;k=i;while(k!=0){s=s+k%10;k=【 】;}
if(s!=5) continue;
else count++;}
printf("%d",count);getch();}
A.k/10 B.k%10 C.k%10/10 D.k/10%10
【答案】A
16.下列程序的功能是:解决百马百担问题,有一百匹马,驮100担货,大马驮3担,中马驮2担,两匹小马驮1担,求大马、中马、小马各多少匹。请选择填空。( )
main()
{int m,n,k,sum=0;
for(m=1;m<=100;m++)
for(n=1;n<=100-m;n++)
{k=【 】;
if((2*3*m+2*2*n+k)==2*100)
{printf("大马:%d;中马:%d;小马:%d
",m,n,k);sum++;}}
printf("共有%d种驮法。",sum);getch();}
A.100-m B.100-(m-n) C.m+n D.100-m-n
【答案】D
17.下列程序的功能是:输入20个整数,统计并输出其中正数、负数和零的个数。请选择填空。( )
main()
{int i,d,n=0,z=0,p=0;
for(i=1;i<=20;i++)
{printf("输入第%d个整数",i);scanf("%d",&d);
if(d<0) n++;
else if(【 】) p++;
else z++;}
printf("负数有%d个,正数有%d个,零有%d个
",n,p,z);getch();}
A.d>0 B.d!=0 C.d==0 D.d<=0
【答案】A
18.下列程序的功能是:从键盘输入2个数,由小到大排序输出。当输入的2个数是相等数时,结束循环。请选择填空。( )
main()
{int a,b,t;scanf("%d%d",&a,&b);
while(【 】)
{if(a>b){t=a;a=b;b=t;}
printf("%d,%d
",a,b);
scanf("%d%d",&a,&b);}getch();}
A.a==b B.a!=b C.a<b D.!(a!=b)
【答案】B
19.下列程序的功能是:从键盘输入一组字符,将其中的小写字母变成对应的大写字母后的第二个字母,其中,y变成A,z变成B。请选择填空。( )
main()
{char c;
while((c=getchar( ))!='
')
{if(c>='a'&&c<='z')
{c=【 】;
if(c>'Z'&&c<='Z'+2)c=c-26;}printf("%c",c);}getch();}
A.c-30 B.c-32 C.c+32 D.c+30
【答案】A
20.下列程序的功能是:从键盘输入一个整数,判断是否为素数,若为素数则输出“yes”,否则输出“no”。请选择填空。( )
main()
{int i,x,f=1;scanf("%d",&x);
for(i=2;i<=x/2;i++)
if(x%i==0){f=0;break;}
if(【 】) printf("yes");
else printf("no");getch();}
A.f==1 B.f=1 C.f!=1 D.f==0
【答案】A
21.下列程序的功能是:计算并输出从键盘输入的任意一个正整数的各位数字之和s及各位数字之积t。请选择填空。( )
main()
{int n,yw,s=0,t=1;scanf("%d",&n);
while(n!=0)
{yw=n%10;s=s+yw;t=t*yw;n=【 】;}
printf("s=%d,t=%d",s,t);getch();}
A.n%10 B.n/100 C.n++ D.n/10
【答案】D
22.下列程序的功能是:倒序打印26个英文字母。请选择填空。( )
main()
{char x='z';
while(x>='a')
{printf("%3c",x);【 】;}getch();}
A.x++ B.x-=1; C.x-1 D.x+=2
【答案】B
23.下面程序的功能是完成用100元人民币换成1元、2元、5元的所有兑换方案。请选择填空。( )
main()
{int i,j,k,y=1;
for(i=0;i<=20;i++)
for(j=0;j<=50;j++){k=【 】;
if(k>=0){printf(" %3d %3d %3d ",i,j,k);y=y+1;
if(y%4==0) printf("
");}}getch();}
A. 100-i*5-j B.100-i*5-j*2 C.100-i-j D.100-(i+j)
【答案】B
二、程序运行结果题(本题共7小题,每题3分,共21分)
24.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
main()
{int i,j,x=0;
for(i=0;i<2;i++)
{x++;for(j=0;j<=3;j++)
{if(j%2) continue;x++;}
x++;}
printf("x=%d
", x);
getch();}
【答案】x=8
25.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
main()
{int a=5,b,c,d,m,n;
b=c=d=4;m=n=0;
for( ;a>b;++b) m++;
while(a>++a)n++;
printf("m=%d,n=%d
",m,n);
getch();}
【答案】m=1,n=0
26.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
main()
{char c;
while((c=getchar())!='$')
{ if('A'<=c&&c<='Z') putchar(c);
else if('a'<=c&&c<='z') putchar(c-31); }getch();}
运行程序时输入:TESTcomeon
【答案】TESTDPNFPO
27.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
main()
{int sum=10,n=1;
while(n<3)
{sum=sum-n;n++; }
printf("%d,%d",n,sum);
getch();}
【答案】3,7
28.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
main()
{int x, y =0;
for(x=1;x<=10;x++)
{ if(y>=10) break;
y=y+x;}
printf("%d %d",y,x);
getch();}
【答案】10 5
29.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
main()
{ int i,sum=0; i=1;
do{ sum=sum+i; i++; }while(i<=10);
printf("%d",sum);
getch();}
【答案】55
30.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
main()
{int x1=1,x2=2,i;
for(i=1;i<=4;i++)
{ printf("%3d%3d",x1,x2);
if(i%2==0)
printf("
");
x1=x1+x2;
x2=x2+x1;}
getch();}
【答案】
1 2 3 5
8 13 21 34
三、阅读程序,修改程序中的错误,不得增行或删行,也不得更改程序结构。请指出错误代码所在的行号,并给出该行修改后的程序代码。(每处3分,共9分)
31.如果整数A的全部因子(包括1,不包括A本身)之和等于B;且整数B的全部因子(包括1,不包括B本身)之和等于A,则将整数A和B称为亲密数。下列程序求3000以内的全部亲密数。程序中有三处错误,请改正。
L1 #include <stdio.h>
L2 #include<conio.h>
L3 main()
L4 { int a,i,b,n;
L5 for(a=1;a<3000;a++)
L6 {for(b=0,i=1;i<=a/2;i++)
L7 if(!a%i)
L8 b+=i;
L9 for(n=0,i=1;i<b/2;i++)
L10 if(!(b%i))
L11 n+=i;
L12 if(n!=a&&a<b)
L13 printf("%4d——%4d ",a,b);}
L14 getch();}
答案:
L7 if(!(a%i))
L9 for(n=0,i=1;i<=b/2;i++)
L12 if(n==a&&a<b)
四、程序填空。按照题目要求,将正确的内容填入相应位置,使得程序完整(每空3分,共24分)
32.所谓勾股数,是指能够构成直角三角形三条边的三个正整数(a,b,c,),以下程序求100以内的所有勾股数。请填空。
#include <math.h>
#include <stdio.h>
#include<conio.h>
main()
{ int a,b,c,count=0;
printf("100以内的勾股数有:
");
printf(" a b c a b c a b c a b c
");
for(a=1;a<=100;a++)
for(b=【1】;b<=100;b++)
{c=(int)sqrt(【2】);
if(c*c==a*a+b*b&&【3】 &&c<=100)
{printf("%4d %4d %4d ",a,b,c);
count++;
if(【4】)
printf("
");
}}printf("
");
getch();}
答案:①a+1 ②a*a+b*b ③a+b>c&&a+c>b&&b+c>a ④count%4==0
33.以下程序是采用梯形法求sin(x)cos(x)的定积分。求定积分的公式为:
,其中,,并假设a=0,b=1.2为积分上下限,积分区间分隔数n=100。请填空。
#include <stdio.h>
#include<conio.h>
#include<math.h>
main()
{ int i,n;
double h,s,a=0,b=1.2;n=100;
h=【1】;
s=0.5*(sin(a)*cos(a)+【2】);
for(i=1;i<=n-1;i++) s+=sin(【3】)*cos(a+i*h);
【4】;
printf("s= %.4f
",s);
getch();}
答案:①(b-a)/n ②sin(b)*cos(b) ③a+i*h ④s*=h
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$$