文档库 最新最全的文档下载
当前位置:文档库 › 循环结构程序设计典型例题

循环结构程序设计典型例题

循环结构程序设计典型例题
循环结构程序设计典型例题

循环结构程序设计典型例题

例1有数列2/3、4/5、6/9、10/15……求此数列前30项的和。

算法分析:

对于数列的题,首先要找出通项公式,或前后项的计算关系公式,根据公式求所需。由于数列的题一般执行次数能确定,用for语句来编写比较方便。

此题,前后项的关系是:后一项的分子是前一项的分母加1,后一项的分母是前一

项的分子加分母。解题思路是用循环语句求各项,并把值累加,因为是求前30项的和,循环执行30次。

1.初值i=2,j=3,s=0;

2.用n从1到30循环

3.s=s+ i/j;

4.c=i; i=j+1; j=c+j;

5输出s;

程序:

#in clude

mai n() { int i=2,j=3, n,c;

float s=0;

for(n=1; n<=30 ;n++)

{ s=s+(float)i/j;

c=i;

i=j+1;

j=c+j;

}

printf( "n%f” ,s);

}

此题中的n与循环体中的执行语句没有数值上的联系,仅仅用做决定循环执行的次数。

例2:下面这个程序,想想它实现的是什么功能?

#in clude

mai n() { int i,s=0;

for(i=1;i<=100;i++)

{if(i%5==0) continue;

s=s+i;

}

printf( n“d' ,s);

}

在左边的程序中,i从1到100循环,当i是5的倍数时,直接进入下一个i,当i不是5的倍数时,把i累加到s,最后输出s。所以,这个程序实现的是求1~100中间所有非5的倍数的数之和。

例3:输出n~m中(0<*m)能被3整除,且至少有一个数字是5的所有数。

算法分析:

1输入n与m的值

2用整型变量a从n-m循环,每次值加1

3?若a能被3整除,执行第4步,否则执行第9步

4令整型变量x=a

5?若x>0,执行第6步,否则执行第9步

6.i=x%10

7?若i值不为5,执行第8步,否则输出a,并执行第9步

8.x=x/10,并返回第5步

9?返回第2步,察看下一个 a

程序:

#in clude

mai n()

{ long a,x,i,t, n,m;

scanf( “ %ld%ld ”,&n,&m);

for(a=n; a<=m;a++)

if(a%3==0)

{ x=a;

while(x>0)

{ i=x%10;

if(i==5) {printf ( “%ld ” ,a);break;}

x=x/10;

}

}

}

问:能把a%3==0也放到for循环语句的表式2中,写成a<=m&&a%3==0吗? 答:不可以!

例4:求3-150中所有素数的和。

算法分析:

1.用变量a从3到150循环,每次值增加 1

2.用变量i从2到a-1循环,每次值增加1

3.若a%i==0 ,结束i的循环,执行第4步

4.若i==a,把a累加到s上。

5.输出s的值

注意:此题中执行第4步时有两种情况。第一种:在第3步中发现了满足a%i==0的情况,直接跳出了i的循环,此时的

i 一定是在2到a-1中间的一个值,而且a不是素数。第二种:一直没有发现满足a%i==0的i,在i==a 时,不再满足i循环的执行条件,i循环结束,此时的a是素数!

程序:

#in clude

mai n()

{ int a,s=0,i;

for(a=3;a<=150;a++)

{ for(i=2;i<=a-1;i++)

if(a%i==O) break;

if(a==i) s=s+a;

}

printf( n“d' ,s)

}

求素数的方法很多,大同小异。此题可以做一些改动。如:i的值可以是从2取到sqrt(a);

可以不用最后察看i的值,而是通过在发现因子时改动标志变量,最后根据标志变量的值判断是否是素数。

例5:有一个八层高的灯塔,每层所点灯数都等于上一层的两倍,一共有765盏灯,求塔底

灯数。

算法分析:

此题的关键在于塔顶的灯数,只要知道了塔顶的灯数,就可知道塔底灯数。这里采取试探的方法来求塔顶灯数。

设塔顶灯数为x,x的初值从1开始循环,每次值加1。求出相应的灯的总数,总

数不为765,继续下一个x的循环,直到某次求得灯总数为765时,结束x的循环,输出此

时塔底灯数。

1.x从1开始循环,每次值加 1

2?设k初值x,计算每层灯数。设s初值0,累加每层灯数

3.i从1到8循环,每次值加1

4.s=s+ k; k=k*2;

5.如果s==765 ,结束x的循环

4. s=s+ k; k=k*2;

程序:

#in clude

mai n()

{ int x,s,i,k;

for(x=1;;x++)

{ s=0;

k=x;

for(i=1;i<=8;i++)

{s=s+k;k=k*2;}

if(s==765) break;

}

printf( n“d' ,k/2);

}例5:已知a>b>c>0,a、b、c 为整数,且a+b+c<100,求满足1/a2+1/b2=1/c2 的a、b、c共有多少组?

算法分析:

这是一道典型的三重嵌套循环的题目。a、b、c都是位于1到99之间整数。编程的基本思

路是:找出1到99之间的所有a、b、c的排列,察看同时满足a>b>c、a+b+c<100、1/a2+1/b2=1/c2 这三个条件的a、b、c有多少组。值得注意的是,1/a2+1/b2=1/c2这个条件并不能简单的原

样照写,因为在求分数的过程中必然有四舍五入,不能得出真正的准确的结果,必须把条件变形成:C2(a2+b2)=a2b2才能得出正确的结果。

1.a从1到99循环

2.b从1到99循环

3.C从1到99循环

4.若

a>b&&b>c&&a+b+c<100&&c*c*(a*a+b*b)==a*a*b*b ,统计找到了一组

5?输出找到的组数

程序:

#in clude

mai n()

{ long a,b,c,n=0;

for(c=1;c<=97;c++)

for(b=c+1;b<=98;b++) for(a=b+1;a<=99;a++)

if(a+b+c<100&&c*c*(a*a+b*b)==a*a*b*b)

n++;

printf( n%ld ” ,n);

}

特别注意此题中变量不能定义成int型。

此题可做改进,在循环时确保a>b>c,而不需要再在if中判断。改进如下所示:

for(a=1;a<=99;a++)

for(b=1;b<=99;b++)

for(c=1;c<=99;c++)

if(a>b&&b>c&&a+b+c<100

&&c*c* (a*a+b*b)==a*a*b*b)

n++;

例6: e=1+1/1!+1/2!+ ….+1/n!(精度为1e-6)

分析:用变量e求和,e初值为1。用变量t求阶乘,t初值为1。用变量i从1开始累加循

环,t=t*i,e=e+1.O/t。

#in clude

void mai n()

{ int i=1;

long t=1;

float e=1;

while(e-(i nt)e>=1e-6)

{ t=t*i;

e=e+1.0/t;

i++;}

printf( n“.10f ” ,e);

}

例7:数列1,1,2,3,5,8 ….有f(n)=f(n-1)+f(n-2),f(1)=1,f(2)=1, 求f(40)。

分析:用变量f1、f2、f作为数列相邻的三项,初值f1=1,f2=1 o用变量n从3到40循环, f=f1+f2,f1=f2,f2=f.

#in clude

mai n()

{ long f1=1,f2=1,f, n;

for( n=3;n<=40 ;n++)

{ f=f1+f2;

f1=f2; f2=f;

}

printf( nf=%ld ” ,f);

}

思考:求14万之内的最大的f (n).

例8: Sn=1-1/3+1/5-1/7+…1/(2n-1)求s(100)(保留 4 位小数)

分析:用变量s求和,s初值为0。用变量n从1到100循环,如果n是奇数(n%2!=0),s=s+1/(2*n-1),否则s=s-1/(2*n-1)。

#in clude mai n() {int n;

float s=0;

for( n=1; *=100; n++) if(n %2!=0) s=s+1.0/(2* n-1) else s=s-1.0/(2* n-1); printf( nf.4f ” ,s);

}

例9:用牛顿迭代法求方程f(x)=2x3-4x2+3x-7=0在x=2.5附近的实根,直到满足|xn-xn-1|<10-6 为止。

牛顿迭代公式为:xn=xn-1-f(xn- 1)/f ' -xn

算法分析:

牛顿迭代法认为,以任意一个x的初值开始,都可以根据牛顿迭代公式xn=xn-1-f(xn-1)/f(xn-1) 求出一串x的序列,这个序列将越来越趋向于某一个值,这个值就是方程f(x)的一个实根。

#in clude

#in clude mai n()

{ float x=2. 5,x0,f,f2;

do{ x0=x;

f=2*x0*x0*x0-4*x0*x0+3*x0-7;

f2=6*x0*x0-8*x0+3;

x=x0-f/f2;

}while(fabs(x-x0)>=10e-6);

printf( f %f” ,x);

}

例10:求1000以内最大的20个素数之和。

分析:用变量s求和,s初值为0。用变量I统计以求得素数的个数,I初值为0。用变量a 从1000到1循环,如果a是素数,则s=s+a,I++。当i值等于20时,跳出循环。

mai n()

{int a,s=0,I=0, j;

for( a=1000;a>=1;a--) {for( j=2;j

if( j==a)

{ s=s+a; I++; }

if(l==20) break;

}

printf( n“d' ,s);

}

例11: [200,1000]的双胞胎数的对数。双胞胎数:两素数差为2称为双胞胎数。

分析:用变量n统计以求得双胞胎数的对数,n初值为0。用变量a从200到998循环,如

果a是素数,则令变量b=a+2,如果b也是素数,则n值增1。素数求法同前,用变量I循环。

mai n()

{int a,b,n=0,1;

for(a=200;a<=998;a++)

{for(I=2;I

if(a%I==0) break;

{b=a+2;

for(I=2;I

if(b%I==0) break;

if(b==I ) n++;

}

}printf( n%'d' ,n);

}

例12:求[10,200]间可以被其因子的个数整除的整数的个数。

分析:用变量n统计所求的整数个数,n初值为0。用变量a从10到200循环,如果a可以被其因子的个数整除,则n值增1。判断a是否可以被其因子的个数整除:用变量c求a的

因子的个数,c初值为0,用变量I从1到a循环,如果a%I==0,则c值增1。得出c值后,若a%c==0,则a 是所求整数。

mai n()

{int a,c ,n=0,1;

for( a=10;a<=200;a++)

{c=0;

for(I=1;I<=a;I++)

if( a%I==0) c++;

if(a%c==0) n++;

}

printf( nn=%d" ,n);

}

例13:求1000以内最大的完数。完数就是其真因子的和等于其本身的数。

分析:用变量a从1000到1循环,如果a等于其真因子的和,则循环结束。判断a是否等于其真因子的和:用变量s求a的真因子的和,s初值为0,用变量I从1到a-1循环,如果a%I==0,则s=s+i。得出s值后,若a==s,则a为所求。

mai n()

{ int a,I,s;

for(a=1000;a>=1;a--)

{s=0;

for(l=1;l

lf(a%l==O) s=s+l;

if(a==s) break;

}

printf( n“d' ,a);

}

思考:求1000以内所有完数的和。

例14:S=sqrt(ln(1)+ln(2) + …+ln(n)),n=50 (结果保留 6 位小数)

分析:开平方数及自然对数都是math.h函数库中已定义的函数。可用n从1到50循环直接

求得。注意函数定义的数据类型。

#in clude

#include “ math.h ”

{double s,a=0,n;

for( n=1; n<=50 ;n++)

a=a+log( n);

s=sqrt(a);

printf( ns=%.6lf ” ,s);

}

例15:0

分析:用变量a从1至U sqrt( 2698)-1循环。变量s初值为6000。若2698%a==0,则b=2698/a, 若s>a+b,则s=a+b,并保存b的值在变量t.

mai n()

{int a,b,s=6000,t;

for( a=1;a

{if(2698%a==0)

{b=2698/a;

if(s>(a+b))

{s=a+b;

t=b;

}

}

}

printf( n“d' ,b);

}

顺序结构选择结构和循环结构的程序设计典型例题分析与解答

顺序结构、选择结构和循环结构的程序设计典型例题分析与解答 1 在三种选择结构中,能用2个条件,控制从3个操作中选择一个操作执行的选择结构是______选择结构 【分析】能用1个条件,控制某个操作做或不做的选择结构是单分支结构;能用1个条件,控制从2个操作中选择一个操作执行的选择结构是双分支结构;能用n(n>l)个条件,控制从n+ l个操作中选择一个操作执行的选择结构是多分支结构。【答案】多分支 2 在三种循环结构中,先执行循环操作内容(即循环体),后判断控制循环条件的循环结构是______循环结构。 【分析】当型循环结构是先判断控制循环的条件,条件成立,执行循环体;条件不成立,则退出循环体。次数型循环结构也是先判断是否达到循环次数,没有达到循环次数,执行循环体;达到循环次数的,退出循环。只有直到型循环结构才是先执行循环体,然后再判断控制循环的条件,如果条件成立,进行循环;条件不成立,退出循环。 【答案】直到型 3 使用“getchar( )”函数时,程序的开头必须写一条包含命令为____________。 【分析】凡是使用系统函数的程序,都要在程序的开头写一条包含命令,包含命令中的“头函数.h”是一个文件,其中有关于该系统函数的定义。系统函数“getchar( )”是在名为“stdio.h(标准输入输出函数)”的头函数文件中定义的。【答案】#include"stdio.h"或#include<stdio.h> 4 执行输入语句“scanf("x=%c,y=%d",&x,&y);”,要使字符型变量X的值为'A'、整型变量y的值为12,则从键盘上正确的输入是( ) ①'A'/②A/③x=A/ ④x=A,y=12/ 12/ 12/ y=12/ 说明:备选答案中的"/"表示回车换行键 【分析】输入语句的格式控制符串中的“x=”、“,”、“y=”都是非格式控制符, 在输入时必须原样位置输人,所以只有备选答案④才符合这个要求。【答案】④ 5 设有下列程序段,则执行该程序段后的输出是( ) int i=012; float f=1.234E-2; printf("i=%-5df=%5.3f",i,f); ... ①i=__012f=1.234 ②i=10___f=0.012 ③10___O.012 ④___100.012 注:答案中的_代表一个空格。 【分析】输出语句的格式控制符串中的“i=”、“f=”都是非格式控制符,在输出时必须原样,原位置输出,所以只有备选答案①和②才符合这个要求;格式控制符“%-5d”的格式控制是数据左对齐、宽度为5的整型数据,备选答案①中的数据是右对齐的;此外,该答案中的实数“1.234E-2”应该代表“0.01234”,而不是“1.234”。只有备选答案②符合题意。【答案】② 6 在Turbo C的主屏幕中,将当前编辑的源程序以原名存盘,可以选用___________菜单项,也可以直热键________。 【分析】如果选用“File/Save”菜单项,或者使用热键(f12),当前编辑的源程序将以原来的文件名存盘;如果选用“File /Write to”,当前编辑的源程序将以新的文件名存盘。 【答案】File/Save F2 7 下列各种选择结构的问题中,最适合用if-else语句来解决的是( ) ①控制单个操作做或不做的问题 ②控制两个操作中选取一个操作执行的问题 ③控制三个操作中选取一个操作执行的问题 ④控制10个操作中选取一个操作执行的问题 【分析】if-else语句是专门解决“双分支结构”的,而“双分支结构”的问题就是用单个条件控制从两个操作中选取一个操作来执行的问题。 【答案】② 8 下列程序是输入一个小写字母,转换成对应大写字母的后一个字母输出。例如:'a'将转换成’B’、…、‘y’将转换成’Z’,其中的’Z’将转换成’A’。请填写程序中所缺少的语句。 main() {char ch ; scanf(”%c”,&ch〕; ch=ch- 32+1; ___________________; printf("%c\n",ch); } 【分析】分析程序库中的“ch=ch- 32+ 1;”语句,可知是将字符型变量 ch中的小写字母转换成对应的大写字母(- 32)的后一个字母(+ l)。如果ch中的字母是' a'、' b'、··,'y',转换结果都不会出错,但是,如果 ch中的字母是'Z',则-32后是大写字母'Z',再+l后将不是大写字母了。为了使其转换成'A',需要用一个单分支结构来实现:如果ch的值等于'Z'+ l,则硬性将 ch的值改成'A'。完成这个任务的语句是一条单分支语句,正是所缺少的语句。 【答案】 if (ch=='Z'+l) h='A'; 9不能正确计算下列分段函数的程序段是_________ |-1 x<0 y=|0 x=0 x>0 ① switch(x< 0)② if(x> 0) {case1:y=-1;break; y=1; case 0:switch(x==0)else {casel:y=0;break;if(x==0) case 0: y= l;y=0 } else } &ny=-l ③ y= l;④ y= l; if(x==0)if(x<0) y=0; y =-l; else else y=- l; if(x== 0) y=0; 【分析】先来分析备选答案①:表达式“x<0”的值只有两种可能性,成立值为1、不成立值为on如果“x<0”的值为 1(即 x< 0),则执行“easel:”后的语句“y=-l”后,退出 switch语句,符合分段函数要求。如果“x<0”的值为0(即x>=0),则执行“case 0:”后的switch语句。该switch语句的表达式是“x==0”,结果也有两种:成立为1、不成立为0.如果“x==0”的值为1(即x=0),则执行“case l:”后的语句“y=0”后,退出 switch语句,符合分段函数要求。如果“x==0”的值为0(即x>0),则执行“case 0:”后的语句“y=1”,也符合分段函数要求。再分析备选答案②:这是标准的用嵌套双分支结构来实现三分支的分段函数,结果显然是能求解分段函数的。分析备选答案③:双分支语句的条件是“x==0”,条件成立时,y值为0,符合分段函数的要求,条件不成立时(包含x>0和x<0两种情况),结果y值为-l,显然不符合分段函数的要求,所以本题要选该答案。至于备选答案④,是能正确计算分段函数的,首先置y为1;接着用双分支结构处理“x<0”和“x>=0”的两种情况:前者使得y值为一l;后者再执行一个单分支结构,如果“x==0”则使y值为0,否则不改变y值,保持y的原值1,符合分段函数的要求。 【答案】③ 10 三种循环语句都能解决循环次数已经确定的次数型循环,其中__________循环语句最适合。 【分析】当“for(表达式 1;表达式 2;表达式 3)语句;”中的表达式1为:整型变量 k=l;表达式 2为:整型变量 k<= n;表达式 3为:整型变量 k++;则这个 for循环就是次数为n次的标准次数型循环结构。 【答案】for 11执行下列程序段后的输出是() x=l; while(x<=3) x++,y=x+++x; printf("%d,%d",x,y); ① 6,10 ②5,8 ③4,6 ④3,4 【分析】我们可以使用逐步记录运行结果的方法来获得输出结果,记录如下: x=1; 进入循环,条件满足执行循环体:计算x+十得x为2,计算y=x+++x,得y为4、x为3; 继续循环,条件满足执行循环体:计算x+十得x为4,计算y=x+++x,得y为8、x为5; 继续循环,条件不满足退出循环; 输出x和y的值为5,8。 【答案】② 12 执行下列程序段,其中的do-while循环一共执行_次。 static int x; do x+=x*x; while (x); 【分析】对静态型变量,不赋初值也有值,对整型变量,其值为 0。执行循环语句 do-while 的循环体,x+=x* x是x=x+(x*

实验2-循环结构程序设计

实验2 循环结构程序设计 一、实验目的 1.学习循环语句for、while和do-while语句的使用方法。 2.学习用循环语句实现各种算法,例如穷举法、迭代法等。 3.进一步熟悉C语言集成环境的使用方法 二、实验内容 1.用while循环实现数据统计问题。:从键盘输入一批任意数量的整数,统 计其中不大于100的非负数数值的个数。 2.编写并调试程序,使用do-while循环控制语句实现上面的数据统计问 题。调试数据仍参照上面给出的几种情况设计使用。 3.编写并调试程序,使用for循环控制语句实现上面的数据统计问题。 4.阶乘累加问题。编写程序,求1+2!+3!+…+n!的值。 三、实验指导 1.用while循环实现数据统计问题。 ?编程分析 由于输入数据个数是不确定的,因此每次执行程序时,循环次数都是不确定的。在进行程序设计时,确定循环控制的方法是本实验的一个关键问题。循环控制条件可以有多种确定方法: (1).使用一个负数作为数据输入结束标志。 (2).输入一个数据后通过进行询问的方式决定是否继续输入下一个数 据。 ?参考程序 参考程序一 /* 使用负数作为数据输入结束标志的程序 */ #include "stdio.h" void main()

{ int m,counter=0; while(1) { printf("请输入一个整数:"); scanf("%d",&m); if(m<0) break; if(m<=100) counter++; printf("\n"); } printf("符合要求的整数个数为: %d\n",counter); } 参考程序二 /* 通过进行询问的方式决定是否继续输入下一个数据的程序 */ #include int main() { int m,counter=0; char ask; while(1) { printf("请输入一个整数:"); scanf("%d",&m); getchar(); if(m>=0&&m<=100) counter++; printf("继续输入下一个数据?(Y/N)"); ask=getchar();

顺序结构程序设计习题

一维数组程序设计习题 1、【逆序输出问题】 题目描述:按照顺序从键盘读入十个数据,以逆序方式输出。 输入数据:1 2 3 4 5 6 7 8 9 10 输出结果:10 9 8 7 6 5 4 3 2 1 2、【数组元素的移动问题】 题目描述:将元素个数为10的数组a中的第一个元素移到数组末尾,其余数据依次往前平移一个位置,请编程实现。 输入数据:1 2 3 4 5 6 7 8 9 10 输出结果:2 3 4 5 6 7 8 9 10 1 3、【斐波那契数列问题】 题目描述:有这样一种数列:1、1、2、3、5、8、……,这个数列的特点是:第1、2两个数为1,1,从第3个数开始,该数是其前面两个数之和。这种数列被称为Fibonacci(斐波那契)数列,请编程输出斐波那契数列的前20项(用一维数组完成)。 输出结果:1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 4、【求和问题】 题目描述:编程计算并输出S=∑ = 10 1 i i i y x 其中,Xi的值为1、8、5、7、2、99、34、67、2589、19,Yi的值为2、22、14、3、7、9、11、8、132、30。 输出结果:344402 5、【排序问题】 题目描述:从键盘输入10个数,将它们按照从小到大的顺序输出。 输入数据:72 98 79 66 39 95 96 25 5 37 输出结果:5 25 37 39 66 72 79 95 96 98 6、【进制转换问题】 题目描述:请编程将一个从键盘输入的十进制整数转化为二进制数输出。 输入格式:32570 输出格式:111111********* 7、【圆环找数问题】 题目描述:有一组数,其排列形式如下:11,19,9,12,5,20,1,18,4,16,6,10,15,2,17,3,14,7,13,15,8且尾部8和头部11首尾相连,构成环形的一组数,编程找出相邻的4个数,其相加之和最大,并给出它们的起始位置。 输出结果:58 19 8、【质数问题】 题目描述:用筛选法求100之内的质数,要求每行输出5个数据。 输出结果:2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97

循环结构程序设计代码

实验五代码: 基础能力落实: 1)编写一个程序,将用分钟表示的时间转化成以小时和分钟表示的时间。使用#define 或者const来创建一个代表60的字符常量。使用while循环来允许用户重复键入值,并且当键入一个小于等于0的时间时终止循环。要求用while语句 #include int main(void) { const int minperhour = 60; int minutes, hours, mins; printf("Enter the number of minutes to convert: "); scanf("%d", &minutes); while (minutes > 0 ) { hours = minutes / minperhour; mins = minutes % minperhour; printf("%d minutes = %d hours, %d minutes\n", minutes, hours, mins); printf("Enter next minutes value (0 to quit): "); scanf("%d", &minutes); } printf("Bye\n"); return 0; } 2)编写一个程序打印一个表,表的每一行都给出一个整数,它的平方以及它的立方,要求用户输入表的上限和下限。使用一个for循环。 #include int main( void ) { int lower, upper, index; int square, cube; printf("Enter starting integer: "); scanf("%d", &lower);

顺序结构程序设计练习题

顺序结构程序设计练习题 一、选择题 1、下面正确的赋值语句是()。A)x+y=30B)y=π*r*r C)y=x+30D)3y=x 2、为了给x,y,z三个变量赋初值1,下面正确的赋值语句是()A)x=1:y=1:z=1B)x=1,y=1,z=1C)x=y=z=1D)xyz=1 3、赋值语句:a=123+left("123456",3)执行后,a变量中的值是。A)"12334"B)123C)12334D)246 4、在Visual Basic中,下列____程序行是正确的。A)X=Y=5B)A+B=C^3C)Y=1&Y=Y+1D)I=X10” 5、假定X是一个数值型变量,那么由函数组成的表达式INT(X/2)=X/2,作用是____。 A)用于测试X是否偶数B)返回一个整数C)返回一个奇数D)用于测试X是否整数 6、在Visual Basic中,下列____单词用于注释语句。A)Rem B)End C)Else D)Loop 7、inputBox函数反回值的类型为()。A)数值B)字符串C)变体D)数值或字符串(视输入的数据而定) 8、如果在立即窗口中执行以下操作: a=8:b=9 print a>b 则输出结果是()。A)–1B)0C)False D)True 9、语句Print Format(32548.5,"000,000.00")的输出结果是()A)32548.5B)32,548.5C)032,548.50D)32,548.50 10、为了把焦点移到某个指定的控件,所使用的方法是()A)SetFocus B)Visible C)Refresh D)GetFocus 11、在窗体(Name属性为Form1)上画两个文本框(其Name属性分别为Text1和Text2)和一个命令按钮(Name属性为Command1),然后编写如下两个事件过程: Private Sub Command1_Click() a=Text1.Text+Text2.Text Print a End Sub Private Sub Form_Load() Text1Text="" Text2Text="" End sub 程序运行后,在第一个文本框(Text1)和第二个文本框(Text2)中分别输入123和321,然后单击命令按钮,则输出结果为()。 A)444B)321123C)123321D)132231 12、在VB中,下列()语句可以改变变量A的值:A)a=a+1B)t=A C)print a+1D)b=a+1 13、在VB中,下列()语句是错误的:A)PRINT"x="&x B)PRINT"X=";X C)PRINT A+1D)PRINT"X="+X 14、下列VB程序段运行后,变量X,Y的结果为(): A=256:X=INT(A/100):Y=INT(A/10)-X*10A)65B)652C)25D)665 15、.在VB中,下列()表达式能够表达[10,50]之间的随机整数: A)INT(10*RND)+40B)40*INT(RND(10+40))C)10+INT(41*RND)D)INT(10*RND)*(10+40) 16、在VB中,要交换变量A和B的值,应用的语句组是(): A)A=B:B=A B)C=A:B=A:B=C C)A=B:B=C:C=A D)C=A:A=B:B=C 17、在某个VB程序中,变量A的值为A=3.14,则应定义为()类型:A)integer B)single C)boolean D)string 18、下列VB程序运行后,变量A、B的值为():A)-6,5B)-5,4C)5,-6D)4,-5 A=4:B=-5:A=A+1:B=B-1:M=A:A=B:B=M 19、在VB中,欲显示静态的文本,可采用下列():A)命令按钮B)标签控件C)文本框D)定时器控件 20、下列关于Print方法的说法中,()不正确: A)Print方法具有计算和输出的双重功能B)使用Print方法输出数据时,前面的窗体名称可以省略 C)Print方法对于字符串是原样输出,但不包括定界符双引号D)Print方法在窗体的Load事件下也可以运行 21、下面程序运行结果为(): Dim a as single,b as single,c as single A)123B)321C)231D)632 A=1:b=2:c=3:Let b=a*b*c:Let a=b/(c*2):Let c=a*c:Let b=b/3:Print a,b,c 22、设有语句x=inputbox(“输入数值”,“0”,“示例”),程序运行后如果从键盘上输入数值10并按回车键,则下列叙述正确的是() A)变量X的值是数值10B)在INPUTBOX对话框标题栏中显示的是“示例”C)0是默认值D)变量X的值是字符串“10” 23、要使控件与框架捆绑在一起,以下操作正确的是() A)在窗体不同位置上分别画一框架和控件,再将控件拖到框架上B)在窗体上画好控件,再画框架将控件框起来 C)在窗体上画好框架,再在框架中画控件D)在窗体上画好框架,再双击工具箱中的控件 24、要使文本框获得输入焦点,则应采用文本框控件的哪个方法()A)GotFocus B)LostFocus C)KeyPress D)SetFocus 25、能够获得一个文本框中被选取文本的内容的属性是()A)Text B)Length C)SelText D)SelStart 26、要使标签能够显示所需要的东西,则在程序中应设置其哪一属性的值()A)Caption B)Text C)Name D)AutoSize 27、在运行阶段,要在文本框TEXT1获得焦点时选中文本框中所有内容,对应的事件过程是 A)Private Sub Text1_GotFocus() Text1.SelStart=0 Text1.Sellength=Len(Text1.Text) End Sub B)Private Sub Text1_LostFocus() Text1.SelStart=0 Text1.Sellength=Len(Text1.Text) End Sub C)Private Sub Text1_Change() Text1.SelStart=0 Text1.Sellength=Len(Text1.Text) End Sub D)Private Sub Text1_SetFocus() Text1.SelStart=0 Text1.Sellength=Len(Text1.Text) End Sub

循环结构程序设计典型例题

循环结构程序设计典型例题 例1有数列2/3、4/5、6/9、10/15……求此数列前30项的和。 算法分析: 对于数列的题,首先要找出通项公式,或前后项的计算关系公式,根据公式求所需。由于数列的题一般执行次数能确定,用for语句来编写比较方便。 此题,前后项的关系是:后一项的分子是前一项的分母加1,后一项的分母是前一 项的分子加分母。解题思路是用循环语句求各项,并把值累加,因为是求前30项的和,循环执行30次。 1.初值i=2,j=3,s=0; 2.用n从1到30循环 3.s=s+ i/j; 4.c=i; i=j+1; j=c+j; 5输出s; 程序: #in clude mai n() { int i=2,j=3, n,c; float s=0; for(n=1; n<=30 ;n++) { s=s+(float)i/j; c=i; i=j+1; j=c+j; } printf( "n%f” ,s); } 此题中的n与循环体中的执行语句没有数值上的联系,仅仅用做决定循环执行的次数。 例2:下面这个程序,想想它实现的是什么功能? #in clude mai n() { int i,s=0; for(i=1;i<=100;i++) {if(i%5==0) continue; s=s+i; } printf( n“d' ,s); } 在左边的程序中,i从1到100循环,当i是5的倍数时,直接进入下一个i,当i不是5的倍数时,把i累加到s,最后输出s。所以,这个程序实现的是求1~100中间所有非5的倍数的数之和。 例3:输出n~m中(0<*m)能被3整除,且至少有一个数字是5的所有数。 算法分析:

循环结构程序设计练习题

第三单元循环结构练习题 选择题: 1、有以下程序执行后的输出结果是()。 main( ) { int i,s=0; for(i=1;i<10;i+=2) s+=i+1; printf("%d\n",s);} A.自然数1~9的累加和 B.自然数1~10的累加和 C.自然数1~9中的奇数之和 D.自然数1~10中的偶数之和 2、以下关于for语句的说法不正确的是()。 A. for循环只能用于循环次数已经确定的情况 B. for循环是先判断表达式,后执行循环体语句 C. for循环中,可以用break跳出循环体 D. for循环体语句中,可以保含多条语句,但要用花括号括起来 3、若i和k都是int类型变量,有以下for语句 for(i=0,k=-1;k=1;k++) printf("*****\n"); 下面关于语句执行情况的叙述中正确的是()。 A.循环体执行两次 B.循环体执行一次 C.循环体一次也不执行 D.构成无限循环 4、已知 int t=0; while(t=1){...} 则以下叙述正确的是()。 A)循环控制表达式的值为0 B)循环控制表达式的值为1 C)循环控制表达式不合法 D)以上说法都不对 5、设有以下程序段 int x=0,s=0; while(!x!=0)s+=++x; printf("%d",s); 则 A)运行程序段后输出0 B)运行程序段后输出1 C)程序段中的控制表达式是非法的 D)程序段执行无限次 6、设i,j,k均为int型变量,则执行完下面的for语句后,k的值为()。for(i=0, j=10; i<=j; i++, j- -) k=i+j; A.6 B.9 C.10 D.11 7、C语言中,break; 语句可以用于循环语句和( )语句中。 A.if B.switch C.for D.while 8、for(i=0; i<=15; i++) printf("%d", i ); 循环结束后,i 的值为()。 A.14 B.15 C.16 D.17 9、与语句“while(!x)”等价的语句是()。 A. while(x==0) B. while(x!=0) C. while(x==1) D. while(x!=1) 10、下述程序段中,while循环执行次数是()。 int k=0;

第八讲:顺序结构程序设计举例

第八讲:顺序结构程序设计举例 所谓的顺序结构就是从头到尾一步步按部就班的执行下去,不会中途出现放弃或者跳转的情况。利用这样的思想实现的程序我们称之为顺序结构程序。在前面学习了许多知识点之后我们就可以开始最基本的顺序结构程序的设计了。 8.1 顺序结构 所谓的顺序结构可以用一个成语形容叫“按部就班”。任何事情都遵循着先做什么,再做什么的思想进行。这样的结构是我们日常生活中最常见的结构。在顺序结构中当一件事情开始后就再也不会停下,直到最后一步完成,整件事情做完为止,中途不会有放弃或者选择性放弃的过程。 8.2 经典算法—数据交换 很多语言的程序设计大多数都是从数据交换这个最经典的算法开始的,所谓的数据交换是将两个同等性质的物质进行对换,例如有两个整数a和b,a = 1,b = 2,在交换之后,使得a = 2,b = 1。 交换的算法是由于变量的性质所决定的,由于变量在同一时刻只能够存储一个数据,因此我们不能直接使用 a = b,b = a的方式对数据进行交换。此时我们就需要想出一些方法,帮助程序实现最正确的交换。 对于任何的数据我们都可以采用“第三变量法”进行交换。所谓的“第三变量法”即借助第三个变量实现对数据的交换,例如对a和b的数据交换,就有: 接下来我们将通过如下示意图对“第三变量法”进行简单的介绍: b

在程序未执行交换前,a = 1,b = 2。在执行交换算法的过程中,首先执行“t = a;”一句,将a中的值1转移到t中暂存,接下来执行“a = b;”一句,将b之中的值2存放到变量a中,a中原先的1被覆盖;最后执行“b = t;”一句,将t中所暂存的原先a的值1存放到变量b中,b中原有的2被覆盖。此时 a = 2,b = 1,t = 1。 当然,读者也可以使用先暂存b的方式对a和b之中的数据进行交换。下面给出该案例的完整代码: [例] 使用“第三变量法”交换a和b之中的数据。 当然对于一些数值型的数据(所谓的数值型数据是指单纯的数字或者ASCII 码),我们也可以直接采用“算数交换法”进行交换。所谓的算数交换法是指利用数值型数据可进行算术运算的特性进行交换。以上例a与b的值交换为例,则有: 假设a = 1,b = 2。首先执行“a = a + b;”,此时a = a + b = 1 +2 = 3,而b = 2;

第3章顺序结构程序设计练习题及答案

第3章顺序 一、单选题: 1.己知int k,m=1;执行语句k=-m++;后k的值是( A)。(提示:负号与自加运算符同级,结合方向从右向左) A)-1 B) 0 C)1 D)2 2.若变量a, b已正确定义,且a,b均已正确赋值,下列选项中合法的语句是( B) A) a=b B)++a; C) a+=b++=1; D)a=int(b); (提示:a=b 只是表达式非语句; b++是个表达式)3.若有定义int x=4;则执行语句 x + = x * = x + 1;后,x的值为( C )。 A)5 B)20 C)40 D)无答案 4.若有定义和语句: int s,p; s=p=5; p=s++,++p,p+2,p++;则执行语句后 p的值是( C) A)9 B)8 C)7 D)6 5.若有定义:int a,b;则表达式 a=4,b=3,a+b+2,a++,a+b+2的值为( C)。 A) 12 B)11 C)10 D)无答案 6.若有定义:float a=3.0,b=4.0,c=5.0;则表达式 1/2*(a+b+c)的值为( C )。 A)6.0 B)6 C)0.0 D)无答案 7.以下程序段的输出结果是( C )。(提示:a当约束过严时,约束失效。按自由格式输出。) int a=1234; printf("%2d\n",a); A)12 B)34 C)1234 D)提示出错,无结果 8.下列程序段的输出结果是(C)。 int a=1234; float b=123.456; double c=12345.54321; printf("%2d,%3.2f,%4.1f",a,b,c); A)无输出 B)12, 123.46, 12345.5 C)1234,123.46,12345.5 D)1234,123.45, 1234.5 9.设x, y均为整型变量,且x=8, y=5,则以下语句的输出结果是(D)。 printf("%d,%d\n",x--,++y); A)8,5 B)7,5 C) 7,6 D) 8,6 10.以下程序的输出结果是( A )。 void main() { int a=20,b=10; printf("%d,%%d\n",a+b,a-b); } A) 30,%d B)30,10 C)30,%10 D)以上答案均不正确(%%d中第一个%后面的表示字符)11.下列程序的运行结果是(A)。 void main() { float x=2.5; int y; y=(int)x; printf("x=%f,y=%d",x,y);} A) x=2.500000,y=2 B)x=2.5,y=2 C)x=2,y=2 D) x=2.500000,y=2.000000 12.己知int k=10 , m=3,n;则下列语句的输出结果是(B)。 printf("%d\n",n=(k%m,k/m));

实验5_循环结构程序设计2题目及解答

4.3 循环结构程序设计2 【注意事项: (1)题中页码均为《C语言程序设计教程》中的页码 (2)题后为原程序文件名 (3)仅提交名为【*.c】的源程序文件,可一起提交,也可逐题提交 调试程序中常见问题及处理方法: (1)出现死循环时:关闭运行窗口即可。 】 1、按照下面的流程图书程序,用for语句实现。 【提示:参见p97—例4.23 ,并按照下面的左流程图书写007张三511.c,右流程图书写007张三512.c 程序运行结果: s=2550 】 2、用for语句编程,求300~500之间的水仙花数(如135:153=13+53+33)。(007张三52.c) 【程序运行结果: 300~500之间的全部水仙花数如下:??370??371??407 】 3、判断输入的数是否为素数。【提示:素数是只能被1和其自身和整除的数,】(007张三53.c) 【提示:参见p114—例4.36 程序运行时:程序运行结果: 请输入一个正整数:25?25不是素数 请输入一个正整数:12?125不是素数 请输入一个正整数:13?13是素数 】 4、判断输入的一个不超过32767的正整数是几位数。(007张三54.c)【提示:按照右侧的N-S图编程 运行时:运行结果: 请输入一个正整数(1~32767): 135?135是3位数请输入一个正整数(1~32767): 1356?1356是4位数请输入一个正整数(1~32767): 28906?28906是5位数】

附加题: 1、求出100~200间的所有素数。(007张三5附加1.c )。 【 运行结果: 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199 】 2、根据以下公式求π值(直到最后一项小于10 –6 为止)(007张三5附加2.c ) 【 运行结果: pi=3.141590 】 3、百钱百鸡问题中国古代数学家张丘建在他的《算经》中提出了著名的“百钱买百鸡问题”:鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁、母、雏各几何?(007张三5附加3.c ) 【提示:在编程之前,需先根据题意列出方程, 如: 设鸡翁x 只,鸡母y 只,鸡雏z 只 则有下列方程: x+y+z=100 和 5x+3y+z/3=100 因为2个方程,3个未知数,故为不定方程,需用穷举法解题。 运行结果: x=0??? y=25??z=75?? x=4??? y=18??z=78?? x=8??? y=11??z=81?? x=12?? y=4???z=84?? 】 参考解答: 1、~2、略 3、 #include void main( ) { int x, I, k; printf(“请输入一个正整数:”); scanf("%d", &x); k=x/2; while ( i <=k ) { if( x%i ==0 ) break; } if ( i>k ) { printf(“%d is \n”, x); } ??????+???+??+?++=9 4 73523173523152313112π

循环结构程序设计典型例题

循环结构程序设计典型例题 例1:有数列2/3、4/5、6/9、10/15……求此数列前30项的和。 算法分析: 对于数列的题,首先要找出通项公式,或前后项的计算关系公式,根据公式求所需。由于数列的题一般执行次数能确定,用for语句来编写比较方便。 此题,前后项的关系是:后一项的分子是前一项的分母加1,后一项的分母是前一项的分子加分母。解题思路是用循环语句求各项,并把值累加,因为是求前30项的和,循环执行30次。 1. 初值i=2,j=3,s=0; 2. 用n从1到30循环 3. s=s+ i/j; 4. c=i; i=j+1; j=c+j; 5.输出s; 程序: #include<> main( ) { int i=2,j=3,n,c; float s=0; for(n=1;n<=30;n++) { s=s+(float)i/j; c=i; i=j+1; j=c+j; } printf(“\n%f”,s); } 此题中的n与循环体中的执行语句没有数值上的联系,仅仅用做决定循环执行的次数。 例2:下面这个程序,想想它实现的是什么功能? #include<> main( ) { int i,s=0; for(i=1;i<=100;i++) {if(i%5==0) continue; s=s+i; } printf(“\n%d”,s); } 在左边的程序中,i从1到100循环,当i是5的倍数时,直接进入下一个i,当i不是5的倍数时,把i累加到s,最后输出s。所以,这个程序实现的是求1~100中间所有非5的倍数的数之和。 例3:输出n~m中(0

循环结构程序设计课后习题及答案

循环结构程序设计习题及答案1、循环语句的三要素分别 是、、。 2、for语句括号内的3个表达式的作用分别 是、、。 3、在2层循环嵌套中,外层循环语句的每个执行周期中,内层循环语句都要完整地,只有当时,才结束整个循环。 4、在循环结构中,break语句的作用是;continue语句的作用是。 5、当循环条件一开始就为假时,对于while语句、do…while语句、for 语句,分别执行循环体次、次、 次。 6、下面程序段的执行次数: int a=0; while(a=0) { printf("good\n"); a--; } 7、下面程序段的执行次数: int a=0; while(a==0)

{ printf("good\n"); a--; } 8、下面程序段的执行次数: int a=1; while(a=1) { printf("good\n"); a++; } 9、下面程序段的执行次数: int a=1; while(a==1) { printf("good\n"); a++; } 10、下列程序段的运行结果是。 for(i=5;i>=0;i--) printf(“%d “,i); 11、下列程序段的运行结果是。 for(n=1;n<20;n=n+3) printf(“%d “,n); 12、下列程序段的运行结果是。

for( ch='a' ;ch<='e' ;ch++) printf(“%d“,ch-97); 13、下列程序段的运行结果是。 for(i=1,j=5 ; i

实验一 顺序结构程序设计

实验一顺序结构程序设计 一、实验目的 1. 掌握C语言数据类型,熟悉如何定义一个整型、字符型、实型变量,以及对它们赋值的方法,了解以上类型数据输出时所用的格式转换符。2 2. 学会使用有关算术运算符,以及包含这些运算符的表达式。 3. 掌握数据的输入输出方法,能正确使用各种格式转换符。 二、实验学时数 4学时 三、实验内容和步骤 1..启动TC 2.0编译系统,进入编辑界面,建立一个新文件。文件名自定。(要求每个学生建立一个自己的文件夹,每个同学的练习和作业的源程序命名形成系列,便于检查、查找和考核)。 利用一个小程序验证常量、变量的使用方法与特点,验证数据类型和表达式值的计算规则及其输出格式。 参考程序: main( ) { char c1,c2; c1=97;c2=98; printf(″%c,%c\n″,c1,c2); } (1)在此基础上加入以下printf语句,并运行。 printf(″%d,%d\n″,c1,c2); (2)将第二行改为以下语句,并运行。 int c1,c2; (3)将第三行改为以下语句,并运行。 c1=300;c2=400; 分别写出三次运行结果。 2.编程并调试运行 (1)编程序,用getchar函数读入两个字符给c1、c2,然后分别用putchar函数和printf 函数输出这两个字符。上机运行此程序,比较putchar和printf函数输出字符的特点。 (2)试编写程序,从键盘输入一个大写字母,要求改用小写字母输出。 3.写出下面程序的运行结果: 1)main() { int x=1,y=1,z=1; y=y+x; x=x+y; printf(″%d\n″,x); printf(″%d\n″,y); } 2) main()

C语言——顺序结构程序设计练习题

顺序结构程序设计习题 一、选择题:(以下各题□代表空格。) 1.以下程序运行的结果是: #include int main() {int m=5,n=10; printf(“%d,%d\n”,m++,--n); } A)5,9 B)6,9 C)5,10 D)6,10 2.以下程序运行的结果是: #include int main() {int a=201,b=012; printf(“%2d,%2d\n”,a,b); return 0 } A)01,12 B)201,10 C)01,10 D)20,01 3.有定义语句int a,b;若要通过语句scanf(“%d,%d,”&a,&b);使变量a得到数值6,变 量b得到数值5,下面输入形式,错误的是: A)6,5<回车> B)6,□□<回车> C)6 5<回车> D)6,<回车>5<回车> 4.设有如下程序: #include int main() {char ch1=’A’,ch2=’a’; printf”%c\n”,(ch1,ch2)); return 0; } 则以下叙述正确的是: A)程序的输出结果为大写字母A; B)程序的输出结果为小写字母a; C)运行时产生错误信息; D)格式说明符的个数少于输出项个数,编译出错。 5.以下程序运行的结果是: #include int main() {int x1=0xabc,x2=oxdef;

x2-=x1; printf(“%X\n”,x2); return 0; } A)ABC B)0XABC C)0X333 D)333 6.以下程序输出的结果是: #include int main() { printf(“\n*s1=%15s*”,”chinabeijing”); printf(“\n*s2=%-5s*”,”chi”); } A)*s1=chinabeijing□□□* S2=**chi* B)*s1=chinabeijing□□□* *s2=chi□□* C)*s1=*□□chinabeijing* *s2=□□chi* D)*s1=□□□chinabeijing* *s2=chi□□* 7.已有定义int a=-2;和输出语句:printf(“%8lx”,a);以下正确的描述是: A)整形变量的输出格式符只有%d一种; B)%x是格式符的一种,它可以适应与任何一种类型的数据; C)%x是格式符的一种,其变量的值按十六进制输出,但%8lx是错误的 D)%8lx不是错误的格式符,其中数字8规定了输出字段的宽度。 8.以下C程序的运行结果是: #include int main() {long y=-43456; printf(y=%-8ld\n”,y); printf(y=%-08ld\n”,y); printf(y=%08ld\n”,y); printf(y=%+8ld\n”,y); return 0;

03实验三 顺序结构程序设计_答案

湖北工业大学实验报告 课程名称:C语言程序设计实验内容实验三顺序结构程序设计 学院:工程技术学院专业班级: 姓名:学号:教师:成绩: 一、实验目的 1、掌握赋值语句、表达式语句、函数调用语句、复合语句、空语句的使用方法。 2、掌握输入、输出函数的格式及格式符的使用。掌握文件包含预处理命令的使用方法。 3、掌握数据的输入、存储、输出之间的关系。 4、掌握顺序程序设计的逻辑结构,掌握数据结构的功能。 二、预习作业 1、程序填空题:试在括号中填入正确的答案,并上机验证程序的正确性。(1) 输入大写字符A,则输出为( )。(文件名:ex3_1.c) (#include ) main( ) { ( char ch,chr; ) chr=(ch= getchar( )) main( ) { ( long int) a =80000 , b = 60000, c, d; ( c) = ( a - b ,a + b ); ( d) = (a + b,a - b); printf(“%ld ,%ld\n”, c, d); }

2、程序改错并上机调试运行 (1)更改下列程序中的位运算符和逻辑运算符,能使变量d、e输出的结果为零。 (文件名:ex3_3.c) #include main( ) { int a = 8, b = 2,c = 3,d,e; /********** found **********/ d = (a % c & ^ a % c); e = a / c - b || && c + + ; printf (“%d, %d\n”, d, e); } (2) 查找改程序中的错误,并修改正确。(文件名:ex3_4.c) #include main( ) { int a = 4, b = 6, c= 3; /********** found **********/ a = a + b = b + c ; b = a < b ?a :b < c ?b :c printf(“%d,%d\n”, a, b); } 3、读程序写结果并上机验证其正确性 (1) 变量 a,b,c,d如下,将变量a以各种格式输出并输出表达式c+a,d – 32的值。(文件名:ex3_5.c) #include main( ) 结果为:(-1,4294967295,37777777777,ffffffff ) { int a = - 1 , b = 2 ; C,B char c = …D?,d = …b?; b = b + c;//??? printf (“%d, %u,%o,%x \n ”,a,a,a,a ); printf (“%c,%c \n ”,c + a, d - 32); } (2) 运行程序后输入”a空格b空格c回车”后,输出结果是(a ,b )。(文件

相关文档
相关文档 最新文档