第六章 循环结构程序设计
学习目的与要求:1,领会程序设计中构成循环的三要素。
2,掌握for、while、do-while 语句的用法。
3,了解break、continue 在循环语句中的作用。
重点:for、while、do-while 语句的用法。
第1讲
知识归纳
1,while语句
while (条件)
{
语句 // 如果不加花括弧{},while语句的范围只有一个语句;
}
(1) 循环三要素:循环变量初值、循环条件、循环趋于结束语句。
(2) 在循环体中应有使循环趋向于结束的语句。
2,Do…while语句
do {
语句 // 如果不加花括弧{},do…while语句的范围只有一个语句;
} while ( 条件) ;
(1) 循环三要素:循环变量初值、循环条件、循环趋于结束语句。
(2) 注意:do…while 循环与while 循环的区别。
基础练习(A)
一、选择题
1,C语言中while和do-while循环的主要区别是( )。
A) do-while的循环体至少无条件执行一次
B) while的循环控制条件比do-while的循环控制条件严格
C) do-while允许从外部转到循环体内
D) do-while的循环体不能是复合语句
2,以下描述中正确的是( )。
A) 由于 do-while 循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句
B) do-while循环由do开始,用while结束,在while(表达式)后面不能写分号
C语言程序设计上机指导与同步训练
·156·
·156·
C) 在do-while循环体中,一定要有能使while后面表达式的值变为零(“假”)的操作
D) do-while循环中,根据情况可以省略while
3,设有程序段
int k=10;
while(k) k=k-1;
则下面描述中正确的是( )。
A) while循环执行10次 B) 循环是无限循环
C) 循环体语句一次也不执行 D) 循环体语句执行一次
4,下列循环语句中有语法错误的是( )。
A) while(x=y) 5; B) while(0) ;
C) do 2;while(x==b); D) do x++ while(x==10);
5,已知int i=1; 执行语句while (i++<4) ;后,变量i的值为( )。
A) 3 B) 4 C) 5 D) 6
6,语句while(!E);中的表达式!E等价于( ) 。
A) E==0 B) E!=1 C) E!=0 D) E==1
7,下面程序段的运行结果是( )。
a=1; b=2; c=2;
while(a<b<c) { t=a; a=b; b=t; c--; }
printf(“%d,%d,%d”,a,b,c);
A)1,2,0 B)2,1,0 C) 1,2,1 D) 2,1,1
8,下面程序的运行结果是( )。
#include <stdio.h>
main()
{
int num=0;
while(num<=2)
{
num++;
printf(“%d\n”,num);
}
}
A) 1 B) 1 C) 1 D) 1
2 2 2
3 3
9,以下能正确计算1×2×3×…×10的程序段是( )。
A) do{i=1; s=1; B} do{i=1; s=0;
s=s*i; s=s*i;
i++; i++;
}while(i<=10); }while(i<=10);
C) i=1; s=1; D) i=1; s=0;
第二部分 C语言程序设计同步训练
·157·
·157·
do{s=s*i; do{s=s*i;
i++; i++;
}while(i<=10); }while(i<=10);
10,下面程序的运行结果是( )。
#include <stdio.h>
main()
{
int y=10;
do{ y--; }while(--y);
printf(“%d\n”,y--);
}
A)-1 B)1 C)8 D)0
11,已知int i=1,j=0;执行下面语句后j的值是( )。
while(i)
switch(i)
{ case 1,i+=1;j++;break;
case 2,i+=2;j++;break;
case 3,i+=3;j++;break;
default,i--;j++;break;
}
A) 1 B) 2 C) 3 D) 死循环
12,若运行以下程序时,从g19202g11436g17767g18492473<g3250g17722>,则下面程序的运行结果是( )。
#include <stdio.h>
main()
{
int c;
while((c=getchar())!=‘\n’)
switch(c-‘2’)
{
case 0,
case 1,putchar(c+4);
case 2,putchar(c+4); break;
case 3,putchar(c+3);
default,putchar(c+2); break;
}
printf(“\n”);
}
A)668977 B)668966 C)66778777 D)6688766
一、g3647g12366题
1,执行下面程序段后,k值是 。
k=1; n=263;
do{ k*=n%10; n/=10; }while(n);
C语言程序设计上机指导与同步训练
·158·
·158·
2,下面程序的运行结果是 。
#include <stdio.h>
main()
{
int a,s,n,count;
a=2; s=0; n=1; count=1;
while(count<=7) { n=n*a; s=s+n; ++count; }
printf(“s=%d”,s);
}
3,下面程序段的运行结果是 。
x=2;
do{ printf(“*”); x--; }while(!x==0);
4,g5415运行以下程序时,从g19202g11436g19202g1849 China#<CR>(<CR>g1207表g3250g17722),则下面程序的运行结果是 。
#include <stdio.h>
main()
{
int v1=0,v2=0; char ch;
while((ch=getchar())!=‘#’)
switch(ch)
{
case ‘a’,
case ‘h’,
default,v1++;
case ‘o’,v2++;
}
printf(“%d,%d\n”,v1,v2);
}
g1120、g13546程题
1,g13546程g87261*3*5*7*9的值。
2,g13546写程序计算下列算式的值。
1234
1111
C=1+ (x
xxxx
++++midhorizellipsis g7301)
g11464到g7588一g20045A<=0.000001时为g8502。g17767g1998g7380后g735的值。
3,从g19202g11436g17767g1849的g4395g12538中g13491计g6980g4395g4395g12538的g1022g6980,用g6454行g12538结束循环。
能力提高(B)
一、选择g3647g12366题
1,下面程序的g2163能是g4570从g19202g11436g17767g1849的一g13464g4395g12538中g13491计g1998g3835写g4395g8609的g1022g6980 m 和g4579写g4395
g8609的g1022g6980n,g5194g17767g1998m、n中的g17751g3835g13785,g16843选择g3647g12366。
#include <stdio.h>
main()
{
第二部分 C语言程序设计同步训练
·159·
·159·
int m=0,n=0;
char c;
while(( )!=‘\n’)
{
if(c>=‘A’&&c<=‘Z’) m++;
if(c>=‘a’&&c<=‘z’) n++;
}
printf(“%d\n”,m<n? );
}
(1) A) c=getchar() B) getchar() C) scanf(“%c”,c)
(2) A) n:m B) m:n C) m:m D) n:n
2,下面程序的g2163能是在g17767g1849的一g6221正g6984g6980中g8726g1998g7380g3835g13785,g17767g1849 0 结束循环,g16843选择
g3647g12366。
#include <stdio.h>
main()
{
int a,max=0;
scanf(“%d”,&a);
while( )
{
if(max<a) max=a;
scanf(“%d”,&a);
}
printf(“%d”,max);
}
A) a==0 B) a C) !a==1 D) !a
3,下面程序的g2163能是计算正g6984g69802345的g2520g1313g6980g4395g5191g7053和,g16843选择g3647g12366。
#include <stdio.h>
main()
{
int n,sum=0;
n=2345;
do{
sum=sum+ ;
n= ;
}while(n);
printf(“sum=%d”,sum);
}
(1) A) n%10 B) (n%10)*(n%10) C) n/10 D) (n/10)*(n/10)
(2) A) n/1000 B) n/100 C) n/10 D) n%10
g1120、g16847g6038程序g5194g6365g10043程序的g2163能g4570程序g15929g1817g4448g6984
1,下面程序的g2163能是用“g17771转g5831g19512法”g8726g1016g1022正g6984g6980的g7380g3835g1856g13434g6980,g16843g3647g12366。
#include <stdio.h>
main()
{
C语言程序设计上机指导与同步训练
·160·
·160·
int r,m,n;
scanf(“%d %d”,&m,&n);
if(m<n) ;
r=m%n;
while(r) { m=n; n=r; r= ; }
printf(“%d\n”,n);
}
2,下面程序的g2163能是用do-while语句g87261至1000g1055g19400g9397g17287“用3g19512g13252;用5g19512g13253;
用7g19512g13252”的g6980,g1000一行只g6183g23725g1022g6980,g16843g3647g12366。
#include <stdio.h>
main()
{
int i=1,j=0;
do{
if( )
{
printf(“%4d”,i);
j=j+1;
if( ) printf(“\n”);
}
i=i+1;
}while(i<1000);
}
3,等g5058g6980列的g12544一g20045 a=2,g1856g5058 d=3,下面程序的g2163能是在g2081 n g20045和中,g17767g1998能g15999 4
g6984g19512的所有的和,g16843g3647g12366。
#include <stdio.h>
main()
{
int a,d,sum;
a=2; d=3; sum=0;
do{
sum+=a;;
if( ) printf(“%d\n”,sum);
}while(sum<200);
}
三、g13546程题
1,从g19202g11436g17767g1849g1231意的g4395g12538,g6365下列g16280则g17839行分g12879计g6980。
g12544一g12879 '0','1','2','3','4','5','6','7','8','9'
g12544g1120g12879 '+','-','*','/','%','='
g12544三g12879 g1866g1194g4395g12538
g5415g17767g1849g4395g12538'\'时g1820计g6980,g9994后g1584g8502g6521g6922g17767g1849,g6183g2372计g6980的结果。
2,g8726g16311g10245g3252g7043g3386g6980g4410题。有一条g19283g19466g7811,若g8611g8505g173402g19466,则g7380后g2109g13251g19466,若g8611g8505g17340
3g19466,则g7380后g21092g19466,若g8611g8505g173405g19466,则g7380后g21094g19466,若g8611g8505g173406g19466则g7380后g21095g19466,若g8611
第二部分 C语言程序设计同步训练
·161·
·161·
g8505g173407g19466,g7380后g6177正g3921一g19466不g2109。g16843g19394,g17837条g19466g7811g1861有g3822少g19466?
分g7524:据题意,g19466g7811g6980g9397g17287下面一g13464g2528g1325式
x mod 2==1
x mod 3==2
x mod 5==4
x mod 6==5
x mod 7==0
3,从g19202g11436g990g17767g1849若g5190g4410g10995的g6116g13501,g13491计g5194g17767g1998g7380g20652g6116g13501和g7380g1314g6116g13501,g5415g17767g1849g17139g6980时结束g17767g1849。
第2讲
知识归纳
1,for 语句
for 循环的一g14336g5430式,for ( 表达式1; 表达式2; 表达式3 )
{ 语句 }
(1) for 语句中的三g1022表达式,g4557应循环中的三要素,
表达式1g252g252循环变量的初值;
表达式2g252g252循环结束的条件;
表达式3g252g252循环趋于结束语句。
(2) for 语句中的三g1022表达式,可以变g6454g1313g13634,g1306g2163能不变,
g3926:表达式1;
for ( ; 表达式2; 表达式3 )
{ 语句 }
for ( 表达式1; 表达式2; )
{ 表达式3 ;
语句 }
for ( 表达式1; ; 表达式3 )
{ if ! (表达式2) break ;
语句 }
表达式1 ;
for ( ; 表达式2; )
{ 表达式3 ;
语句 }
C语言程序设计上机指导与同步训练
·162·
·162·
2,循环的嵌套
三g12193循环可以g1126g11468g4896g3883。
3,break和continue
(1) break 语句作用:g5390行g13468g8502循环,转到循环体下面语句g2447执行。
(2) continue 语句作用:结束g7424次循环,g1889g2447g2040g7041条件,根据条件决定循环是否继续
执行。
g1120g13785区别:continue 只是结束g7424次循环,而不是g13468g8502g6984g1022循环的执行。
break 则是结束g6984g1022循环过程,不g1889g2040g7041执行循环的条件是否g6116立。
另外:continue 只能用于循环体中,而break 即可用于循环体中,还可用于switch语句中。
基础训练(A)
一、选择题
1,下面有关for循环的正确描述是( )。
A) for循环只能用于循环次g6980已经确定的情况
B) for循环是g1820执行循环体语句,后g2040g7041表达式
C) 在for循环中,不能用break语句跳g1998循环体
D) for循环的循环体语句中,可以包含g3822条语句,g1306必须用花括号括起来
2,g4557for(表达式1;;表达式3)可理g16311为( )。
A) for(表达式1;0;表达式3)
B) for(表达式1;1;表达式3)
C) for(表达式1; 表达式1;表达式3)
D) for(表达式1; 表达式3;表达式3)
3,下列说法中正确的是( )。
A) break 用在switch语句中,而continue 用在循环语句中。
B) break 用在循环语句中,而continue用在switch语句中。
C) break 能结束循环,而continue只能结束g7424次循环。
D) continue能结束循环,而break只能结束g7424次循环。
4,以下正确的描述是( )。
A) continue语句的作用是结束g6984g1022循环的执行
B) 只能在循环体内和switch语句体内使用break语句
C) 在循环体内使用break语句或continue语句的作用g11468g2528
D) 从g3822层循环g4896g3883中退g1998时,只能使用goto语句
5,若i为g6984型变量,则以下循环执行次g6980是( )。
for(i=2;i==0;) printf(“%d”,i--);
A) 无限次 B) 0次 C) 1次 D) 2次
6,以下for循环的执行次g6980是( )。
for(x=0,y=0;(y=123)&&(x<4);x++)
第二部分 C语言程序设计同步训练
·163·
·163·
A) 是无限循环 B)循环次g6980不定 C) 执行4次 D) 执行3次
7,以下不是无限循环的语句为( )。
A) for(y=0,x=1;x>++y;x=i++) i=x
B) for(;;x++=i);
C) while(1) { x++; }
D) for(i=10;;i--) sum+=i;
8,执行语句for(i=1;i++<4;);后变量i的值是( )。
A) 3 B) 4 C) 5 D) 不定
9,下面程序段( )。
for(t=1;t<=100;t++)
{
scanf(“%d”,&x);
if(x<0) continue;
printf(“%3d”,t);
}
A) g5415x<0时g6984g1022循环结束 B) x>=0时什么也不g17767g1998
C) printf函g6980永远也不执行 D) g7380g3822允许g17767g1998100g1022非g17139g6984g6980
10,下面程序段( )。
x=3;
do{
y=x--;
if(!y) { printf(“x”); continue; }
printf(“#”);
}while(1<=x<=2);
A) g4570g17767g1998# B) g4570g17767g1998##*
C) 是死循环 D) 含有不合法的控制表达式
g1120、写g1998下列程序的运行结果
1,
#include <stdio.h>
main()
{
int i;
for(i=1;i<=5;i++)
{
if(i%2) printf(“*”);
else continue;
printf(“#”);
}
printf(“$\n”);
}
C语言程序设计上机指导与同步训练
·164·
·164·
2,
#include <stdio.h>
main()
{
int i,j;
for(i=4;i>=1;i--)
{
for(j=1;j<=i;j++) putchar(‘#’);
for(j=1;j<=4-i;j++) putchar(‘*’);
putchar(‘\n’);
}
}
3,
#include <stdio.h>
main()
{
int i,k=0;
for(i=1;;i++)
{
k++;
while(k<i*i)
{
k++;
if(k%3==0) goto loop;
}
}
loop,printf(“%d,%d”,i,k);
}
三、g13546程题
1,g87261-3+5-7+ …-99+101的值。
能力提高(B)
一、写g1998下列程序的运行结果
1,
#include <stdio.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++;
}
第二部分 C语言程序设计同步训练
·165·
·165·
x++;
}
printf(“x=%d\n”,x);
}
2,
#include <stdio.h>
main()
{
int i,j,k=19;
while(i=k-1)
{
k-=3;
if(k%5==0) { i++; continue; }
else if(k<5) break;
i++;
}
printf(“i=%d,k=%d\n”,i,k);
}
g1120、根据程序的g2163能g4570程序g15929g1817g4448g6984
下面程序的g2163能是g87261至1000g1055g19400g9397g17287“用3g19512g13252;用5g19512g13253;用7g19512g13252”的
g6980,g1000一行只g6183g23725g1022g6980。
#include <stdio.h>
main()
{
int i,j=0;
for ( )
if(i%3==2 && i%5==3 && i%7= =2)
{ printf(“%4d”,i);
j=j+1;
if( ) printf(“\n”);
}
}
三、g13546程题
1,有一分g6980序列2/1,3/2,5/3,8/5,13/8,21/13,…g8726g1998g17837g1022g6980列的g208120g20045g1055和。
2,从g19202g11436g17767g1849的 10 g1022g6984g6980中,找g1998g12544一g1022能g15999 7 g6984g19512的g6980。若找到,g6183g2372此g6980后退
g1998循环;若未找到,g6183g2372“not exist”。
第3讲
基础训练(A)
一、g13546程题
1,g8611g1022苹果0.8元,g12544一天买2g1022苹果,g12544g1120天开始,g8611天买g2081一天的2倍,g11464至购买的苹果g1022g6980达到不超过100的g7380g3835值。g13546写程序g8726g8611天g5191均花g3822少钱?
C语言程序设计上机指导与同步训练
·166·
·166·
1,g13546写程序,g17767g1998用一元人民币兑g6454g61161分、2分和5分硬币的不g2528兑g6454g7053法。
3,g17767g1849n值,g17767g1998g3926图所示g20652为n的等腰三角g5430。
*
***
*****
*******
*********
***********
能力提高(B)
1,g13546写程序,从g19202g11436g17767g18496名g4410g10995的5门g6116g13501,分别g13491计g1998g8611g1022g4410g10995的g5191均g6116g13501。
2,猴子吃桃g19394题。猴子g12544一天摘下若g5190g1022桃子,g5415即吃了一半,还不过瘾,又g3822吃了一g1022。g12544g1120天早g990又g4570g2109下的桃子吃掉一半,又g3822吃了一g1022。以后g8611天早g990都吃了g2081一天
g2109下的一半零一g1022。到g1254410天早g990g1889g5831吃时,只g2109下一g1022桃子了。g8726g12544一天一g1861摘了g3822少桃子。
链接二级考试
一、选择题
1,以下程序的g17767g1998结果是( )。
A) 10 1 9 2 B) 9 8 7 6 C) 10 9 9 0 D) 10 10 9 1
main()
{ int x=10,y=10,i;
for(i=0;x>8;y=++i)
printf("%d,%d ",x--,y);
}
(1999年9月)
2,以下程序的g17767g1998结果是( )。
A) 2 0 B) 3 1 C) 3 2 1 D) 2 1 0
main()
{ int n=4;
while(n--)printf("%d ",--n);
}
(1999年9月)
3,以下程序的g17767g1998结果是( )。
A) #*#*# B) ##### C) ***** D) *#*#*
main()
{ int i;
for(i=1;i<6;i++)
{ if(i%2){printf("#");continue;}
printf("*");
}
第二部分 C语言程序设计同步训练
·167·
·167·
printf("\n");
}
(1999年9月)
4,以下程序的g17767g1998结果是( )。
A) g13546译不通过,无g17767g1998 B) aceg
C) acegi D) abcdefghi
main()
{ int i;
for(i='A';i<'I';i++,i++) printf("%c",i+32);
printf(" \n");
}
(1999年9月)
5,以下循环体的执行次g6980是( )。
A) 3 B) 2 C) 1 D) 0
main()
{ int i,j;
for(i=0,j=1; i<=j+1; i+=2,j--) printf("%d \n",i);
}
(2000年4月)
6,以下叙述正确的是( )。
A) do-while语句构g6116的循环不能用g1866它语句构g6116的循环来g1207替
B) do-while语句构g6116的循环只能用break语句退g1998
C) 用do-while语句构g6116的循环,在while后的表达式为非零时结束循环
D) 用do-while语句构g6116的循环,在while后的表达式为零时结束循环
(2000年4月)
7,以下程序段的执行结果是( )。
A) a=12 y=12 B) a=12 y=12
a=14 y=16 a=16 y=28
a=16 y=20
a=18 y=24
C) a=12 y=12 D) a=12 y=12
a=14 y=26
a=14 y=44
int a,y;
a=10; y=0;
do
{ a+=2; y+=a;
printf("a=%d y=%d\n",a,y);
if(y>20) break;
} while(a=14);
C语言程序设计上机指导与同步训练
·168·
·168·
,
,
(2000年4月)
8,有g3926下程序
main()
{ int i,sum;
for(i=1;i<=3;sum++)sum+=i;
printf(“%d\n”,sum);
}
该程序的执行结果是( )。
A) 6 B) 3 C) 不确定 D) 0
(2000年9月)
9,有g3926下程序
main()
{ int x=23;
do
{ printf(“%d”,x--);}
while(!x);
}
该程序的执行结果是( )。
A) 321 B) 23 C) 不g17767g1998g1231何内容 D) 陷g1849死循环
(2000年9月)
10,有g3926下程序
main()
{ int n=9;
while(n>6){n--;printf(“%d”,n);}
}
该程序段的g17767g1998结果是( )。
A) 987 B) 876 C) 8765 D) 9876
(2000年9月)
11,有以下程序段
int k=0
while(k=1)k++;
while循环执行的次g6980是( )。
A) 无限次 B) 有语法错,不能执行
C) 一次也不执行 D) 执行1次
(2001年4月)
12,有以下程序段
int x=3
do
第二部分 C语言程序设计同步训练
·169·
·169·
{ printf(“%d”,x-=2); }
while (!(--x));
g1866g17767g1998结果是( )。
A) 1 B) 3 0 C) 1 -2 D) 死循环
(2001年4月)
13,t为intg12879型,g17839人下面的循环g1055g2081,t的值为0
while( t=l )
{ …… }
则以下叙述中正确的是( )。
A) 循环控制表达式的值为0 B) 循环控制表达式的值为1
C) 循环控制表达式不合法 D) 以g990说法都不g4557
(2001年9月)
14,以下程序的g17767g1998结果是( )。
main()
{ int num= 0;
while(num<=2)
{ num++; printf(“%d\n”,num);
}
A) 1 B) 1 C)1 D) l
2 2 2
3 3
4
(2001年9月)
15,以下程序的g17767g1998结果是( )。
main()
{ int a,b;
for(a=1,b=1; a<=100; a++)
{ if(b>=10) break;
if (b%3= =1)
{ b+=3; continue; }
}
printf(“%d\n”,a);
}
A) 101 B) 6 C) 5 D) 4
(2001年9月)
16,以下程序中,while循环的循环次g6980是( )。
main()
{ int i=0;
while(i<10)
{ if(i<1) continue;
if(i==5) break;
i++;
}
C语言程序设计上机指导与同步训练
·170·
·170·
.....,
}
A) 1 B) 10 C) 6 D) 死循环,不能确定
(2002年4月)
17,以下程序的g17767g1998结果是( )。
main()
{ int a=0,i;
for(i=;i<5;i++)
{ switch(i)
{ case 0,
case 3:a+=2;
case 1,
case 2:a+=3;
default:a+=5;
}
}
printf("%d\n",a);
}
A) 31 B) 13 C) 10 D) 20
(2002年4月)
18,以下程序的g17767g1998结果是( )。
#include <stdio.h>
main()
{ int i=0,a=0;
while(i<20)
{ for(;;)
{ if((i%10)==0) break;
else i--;
}
i+=11; a+=i;
}
printh("%d\n",a);
}
A) 21 B) 32 C) 33 D) 11
(2002年4月)
19,以下程序的g2163能是:g6365顺序g16847g184910名g4410g109954门课程的g6116g13501,计算g1998g8611g1313g4410g10995的g5191
均分g5194g17767g1998,程序g3926下
main()
{ int n,k;
float score,sum,ave;
sum=0.0;
for(n=1;n<=10;n++)
{ for(k=1;k<=4;k++)
{ scanf(“%f”,&score); sum+=score;}
ave=sum/4.0;
第二部分 C语言程序设计同步训练
·171·
·171·
printf(“NO%d:%f\n”,n,ave);
}
}
g990述程序运行后结果不正确,调试中发现有一条语句g1998现在程序中的g1313g13634不正确。g17837
条语句是( )。
A) sum=0.0; B) sum+=score;
C) ave=sun/4.0; D) printf(“NO%d:%f\n”,n,ave);
(2002年9月)
20,有以下程序段
int n=0,p;
do{scanf(“%d”,&p); n++;} while(p!=12345 &&n<3);
此处do-while循环的结束条件是( )。
A) P的值不等于12345g5194g1000n的值g4579于3
B) P的值等于12345g5194g1000n的值g3835于等于3
C) P的值不等于12345或g13785n的值g4579于3
D) P的值等于12345或g13785n的值g3835于等于3
(2002年9月)
21,有以下程序
main()
{ int i;
for(i=0;i<3;i++)
switch(i)
{ case 1,printf("%d",i);
case 2,printf("%d",i);
default,printf("%d",i);
}
}
执行后g17767g1998结果是( )。
A) 011122 B) 012 C) 012020 D) 120
(2003年4月)
22,有以下程序
main()
{ int i=0,s=0;
do{
if(i%2){i++;continue;}
i++;
s +=i;
}while(i<7);
printf("%d\n",s);
}
执行后g17767g1998结果是( )。
A) 16 B) 12 C) 28 D) 21
C语言程序设计上机指导与同步训练
·172·
·172·
(2003年4月)
23,有以下程序
main ()
{ int s=0,a=1,n;
scanf("%d",&n);
do
{ s+=1; a=a-2; }
while(a!=n);
printf("%d\n",s);
}
若要使程序的g17767g1998值为2,则应该从g19202g11436给ng17767g1849的值是( )。
A) -1 B) -3 C) -5 D) 0
(2003年9月)
24,若有g3926下程序段,g1866中s、a、b、c均已定义为g6984型变量,g1000a、c均已赋值(cg3835于
0)
s=a;
for(b=1;b<=c;b++) s=s+1;
则与g990述程序段g2163能等价的赋值语句是( )。
A) s=a+b; B) s=a+c; C) s=s+c; D) s=b+c;
(2003年9月)
25,有以下程序
main()
{ int k=4,n=4;
for( ; n<k ;)
{ n++;
if(n%3!=0) continue;
k--; }
printf("%d,%d\n",k,n);
}
程序运行后的g17767g1998结果是( )。
A) 1,1 B) 2,2 C) 3,3 D) 4,4
(2003年9月)
26,要g8726以下程序的g2163能是计算:
11 1
1..
23 10
s =+ + +
main ()
{ int n; float s;
s=1.0;
for(n=10;n>1;n--)
s=s+1/n;
print("%6.4f\n",s);
}
程序运行后g17767g1998结果错误,导致错误结果的程序行是( )。
第二部分 C语言程序设计同步训练
·173·
·173·
A) s=1.0; B) for(n=10;n>1;n--)
C) s=s+1/n; D) printf("%6.4f/n",s);
(2003年9月)
一、g3647g12366题
1,下面程序的g2163能是:计算1~10g1055g19400奇g6980g1055和及偶g6980g1055和,g16843g3647g12366。
#include <stdio.h>
main()
{ int a,b,c,i;
a=c=0;
for(i=0;i<10;i+=2)
{ a+=i;
__________;
c+=b;
}
printf("偶数之和=%d\n",a);
printf("奇数之和=%d\n",c-11);
}
(2000年4月)
2,下面程序的g2163能是:g17767g1998100以内能g159993g6984g19512g1000g1022g1313g6980为6的所有g6984g6980,g16843g3647g12366。
#include <stdio.h>
main()
{ int i,j;
for(i=0; [1] ; i++)
{ j=i*10+6;
if( [2] ) continue;
printf("%d",j);
}
}
(2000年4月)
3,要使以下程序段g17767g199810g1022g6984g6980,g16843g3647g1849一g1022g6984g6980。
for(i=0;i<= ______ ;printf(“%d\n”,i+=2));
(2000年9月)
4,函g6980pi的g2163能是根据以下近似g1856式g8726π值,
(π*π)/6=1+1/(2*2)+1/(3*3)+..+1/(n*n)
现在g16843你在下面的函g6980中g3647g12366,g4448g6116g8726π的g2163能。
#include,math.h”
double pi(long n)
{ double s=0.0; long i;
for(i=1;i<=n;i++) s=s+_______ ;
return(sqrt(6*s));
}
C语言程序设计上机指导与同步训练
·174·
·174·
(2000年9月)
5,若g17767g1849g4395g12538串:abcde<g3250g17722>,则以下while循环体g4570执行________次。
While((ch=getchar())==‘e’) printf(“*”);
(2000年9月)
6,以下程序运行后的g17767g1998结果是________。
main()
{ int i=10,j=0;
do
{ j=j+i; i--;}
while(i>2);
printf(“%d\n”,j);
}
(2001年9月)
7,设有以下程序
main()
{ int n1,n2;
scanf(“%d”,&n2);
while(n2!=0)
{ n1=n2%10;
n2=n2/10;
printf(“%d”,n1);
}
}
(2001年9月)
程序运行后,g3926果从g19202g11436g990g17767g18491298;则g17767g1998结果为________。
8,以下函g6980的g2163能是:g8726x的y次g7053,g16843g3647g12366。
double fun( double x,int y)
{ int i;
double z;
for(i=1,z=x; i<y;i++) z=z*________;
return z;
}
(2001年9月)
9,以下程序的g17767g1998结果是________。
main()
{int s,i;
for(s=0,i=1;i<3;i++,s+=i);
printf("%d\n",s);
}
(2002年4月)
10,以下程序的g17767g1998结果是 。
第二部分 C语言程序设计同步训练
·175·
·175·
main()
{ int x=15;
while(x>10 && x<50)
{ x++;
if(x/3){x++;break;}
else continue;
}
printf(“%d\n”,x);
}
(2002年9月)
11,有以下程序
#include <stdio.h>
main()
{ char c;
while((c=getchar( ))!=’?’)putchar(--c);
}
程序运行时,g3926果从g19202g11436g17767g1849:Y?N?<g3250g17722>,则g17767g1998结果为 。
(2002年9月)
12,以下函g6980的g2163能是计算s=1+
1
2!
+
1
3!
+…+
1
!n
,g16843g3647g12366。
double fun(int n)
{ double s=0.0,fac=1.0; int i;
for(i=1,i<=n;i++)
{ fac=fac+ __ ;
s=s+fac;
}
return s;
}
(2002年9月)
13,以下程序的g17767g1998结果是 。
main()
{ int i,m=0,n=0,k=0;
for (i=9; i<=11; i++)
switch(i/10)
{ case 0,m++; n++; break;
case 10,n++;break;
default,k++;n++;
}
printf("%d %d %d\n",m,n,k);
}
(2003年9月)
14,执行以下程序后,g17767g1998‘#’号的g1022g6980是 。
#include <stdio.h>
main()
C语言程序设计上机指导与同步训练
·176·
·176·
{ int i,j;
for(i=1; i<5; i++)
for(j=2; j<=i; j++) putchar('#');
}
(2003年9月)
15,以下程序的g2163能是调用函g6980 fun 计算:m=1-2+3-4+…+9-10,g5194g17767g1998结果,g16843
g3647g12366。
int fun(int n)
{ int n=0,f=1,i;
for (i=1; i<=n; i++)
{ m+=i*f;
f= _____ _______ ;
}
return m;
}
main()
{printf("m=%d\n",_________________);}
(2003年9月)