第二章基本制结构程序设计习题

第二章基本制结构程序设计习题
第二章基本制结构程序设计习题

第二章基本控制结构程序设计习题

一.基本概念与基础知识自测题

2.1 程序阅读题

2.1.1 设有说明:

int a=3, b=100;

下面的循环语句执行(1)次,执行后a、b的值分别为(2)、(3)。

while(b/a>5){

if(b-a>25) a++;

else b/=a;

}

解答:

本题检查学生整除的概念。跟踪:

(1)14

(2)17

(3)100

2.1.2 设有说明:

int x,y,n,k;

下面程序段的功能是备选答案中的(1),当n=10,x=10打印结果是(2)。cin>>x>>n;

k=0;

do{

x/=2;

k++;

}while(k

y=1+x;

k=0;

do{

y=y*y;

k++;

}while(k

cout<

备选答案:

A. n n x y )1(+=

B. n n x y 2)21(+=

C. n n x y )21(+=

D. n

n x y 21)2

1(++=

解答:

第一个循环使x 成为:n x 2;y 成为:n x 21+;第二个循环使y 成为:n

n x 2)2

1(+; (1)B

考虑整除,当x 连除4次2以后即为0,所以:

n

x

2为0 (2)1

2.1.3 请看如下程序段: if (num==1) cout<<”Alpha”; else if (num==2) cout<<”Bata”;

else if (num==3) cout<<”Gamma”;

else cout<<”Delta”;

当num 的值分别为1、2、3时,上面程序段的输出分别为(1) 、(2) 、(3) 。

解答:

检查条件语句与字符串输出概念: (1)Alpha (2)Bata (3)Gamma

2.1.4 执行下面程序段后,m 和k 的值分别为 (1) 、 (2) 。 int m,k;

for(k=1,m=0;k<=50;k++){

if (m>=10) break; if (m%2==0){

m+=5; continue; } m-=3; }

(1)11 (2)8

二.编程与综合练习题

2.2 有一个函数:

??

?

??≥-≤≤<=)10x ( 113x )10x (1 1-2x 1)(x x

y

编写程序,输入x ,输出y 。

解:

#include using namespace std; int main(){ double x,y; cout<<"输入x="; cin>>x; if (x<1) y=x; else if (x<10) y=2*x-1; else y=3*x-11; cout<<"y="<

2.3 设计程序将输入的百分制成绩转换为五分制输出,90分以上为5分,8089分为4分,

7079分为3分,6069分为2分,60分以下为1分。 解:10分一档用10进行整除获得,转换用开关语句实行。 #include using namespace std; int main(){ int mark,result; //mark 是百分制成绩,result 是5分制 cout<<"请输入百分制成绩:"<>mark; if (mark<0) { cout<<"缺考!"<

result=4;

cout<<"输出五分制成绩:"<

break;

case 7:

result=3;

cout<<"输出五分制成绩:"<

break;

case 6:

result=2;

cout<<"输出五分制成绩:"<

break;

case 5:case 4:case 3:case 2:case 1:case 0:

result=1;

cout<<"输出五分制成绩:"<

break;

default:

cout<<"输入错误!"<

}

return 0;

}

2.4 编程计算个人所得税。个人所得税率表如下:月收入1200元起征,超过起征点500元以内部分税率5%,超过500元到2,000元部分税率10%,超过2,000元到5,000元部分税率15%,超过5,000元到20,000元部分税率20%,超过20,000元到40,000元部分税率25%,超过40,000元到60,000元部分税率30%,超过60,000元到80,000元部分税率35%,超过80,000元到100,000元部分税率40%,超过100,000元部分税率45%。

解:应该从最高税率段开始计算,分段叠加。先算两万元以上各段,每两万为一档,采用switch 语句,注意没有使用break语句。后面各低收入段,用if语句,也没有使用else,这两种方法是对应的。第二要注意计算的入口处,收入减去该段的下限,进行计算,以后各段都是完整的段,计算十分简单。

#include

using namespace std;

int main(){

double income,tax=0;

int k;

cout<<"请输入个人月收入:"<

cin>>income;

if(income<=1200){

cout<<"免征个人所得税"<

return 0;

}

else income-=1200;

if(income>20000){

k=income/20000;

switch(k){

default: tax+=(income-100000)*0.45;income=100000;

case 4: tax+=(income-80000)*0.40;income=80000;

case 3: tax+=(income-60000)*0.35;income=60000;

case 2: tax+=(income-40000)*0.30;income=40000;

case 1: tax+=(income-20000)*0.25;income=20000;

}

}

if(income>5000){

tax+=(income-5000)*0.20;

income=5000;

}

if(income>2000){

tax+=(income-2000)*0.15;

income=2000;

}

if(income>500){

tax+=(income-500)*0.10;

income=500;

}

tax+=income*0.05;

cout<<"应征所得税:"<

return 0;

}

2.5 编程打印如下图形:

*

* * *

* * * * *

* * * * * * *

* * *

* * *

* * *

解:难点在三角形左边的空格的控制,嵌套一个循环语句完成此任务。#include

using namespace std;

int main(){

int i,j;

for (i=1;i<=4;i++){

for(j=4-i;j>0;j--) cout<<" ";//三角形每行前部的空格

for(j=1;j<=2*i-1;j++) cout<<" *";

cout<

}

for(i=1;i<=3;i++) cout<<" * * *\n";

return 0;

}

2.6 编程输出下列图形,中间一行英文字母由输入得到。

A

B B B

C C C C C

D D D D D D D

C C C C C

B B B

A

解:分上三角和下三角两部分分别处理左边的空格。

#include

using namespace std;

int main(){

char in;

int i,j;

do{

cout<<"输入一个字母:";

cin>>in;

if((in>=97)&&(in<=122)) in-=32;//小写改大写

}while((in<65)||(in>90));

int line=in-'A';

for (i=0;i<=line;i++){//上三角

for(j=line-i;j>0;j--) cout<<" ";//前方空格

for(j=1;j<=2*i+1;j++) cout<<' '<

cout<

}

for (i=line;i>0;i--){//下三角(少一行)

for(j=0;j<=line-i;j++) cout<<" ";

for(j=1;j<=2*i-1;j++) cout<<' '<

cout<

}

return 0;

}

2.7 输入n,求1!+2!+3!+…+n!

解:通常求和作为外循环,阶乘作为内循环。这里考虑到:n!=n*(n-1)!,利用递推法运算速度大大提高,同时两者可合并为一个循环。本程序考虑了输入的健壮性。

#include

#include

using namespace std;

int main(){

int n,i,jch=1;

double result=0; //result是结果

cout<<"请输入正整数n:"<

cin>>n;

if(n<1){

cout<<"输入错误!"<

return 1;

}

result=1;

for(i=2;i<=n;i++){

jch*=i; //jch是i的阶乘,注意n!=n*(n-1)!这样可少一层循环

result+=jch;

}

cout<

return 0;

}

2.8 猴子吃桃问题:猴子摘下若干个桃子,第一天吃了桃子的一半多一个,以后每天吃了前一天剩下的一半多一个,到第十天吃以前发现只剩下一个桃子,问猴子共摘了几个桃子。解:采用递推法。从最后一天逆推到第一天,9次循环。

#include

using namespace std;

const int day=10;

int main(){

int i,x=1;//最后一天只有一个

for(i=1;i

cout<<"开始共有桃子"<

return 0;

}

2.9 从键盘输入一组非0整数,以输入0标志结束,求这组整数的平均值,并统计其中正数和负数的个数。

解:将这组整数放在整型数组中,一边输入一边求和及统计正数和负数的个数,平均数由和除以整数数量取得。

#include

#include

using namespace std;

int main(){

int stem[256],sum=0,pnum=0,nnum=0,i=0;

cout<<"从键盘输入一组非0整数,以输入0标志结束:"<

cin>>stem[i];

while(stem[i]!=0){

sum+=stem[i];//求和

if(stem[i]>0) pnum++;//正数数量

else nnum++;//负数数量

i++;

cin>>stem[i];

}

if(!i) cout<<"0个数"<

else {

cout<<"平均值="<<(double)sum/(pnum+nnum)<

cout<<"正数个数="<

cout<<"负数个数="<

}

return 0;

}

2.10 编程找出1500之中满足除以3余2,除以5余3,除以7余2的整数。

解:中国古代数学问题(韩信点兵),采用穷举法。注意三个条件同时成立用&&。

#include

using namespace std;

int main(){

int i;

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

if((i%3==2)&&(i%5==3)&&(i%7==2)) cout<

return 0;

}

2.11 编程求1000之内的所有完全数。所谓完全数指的是一个数恰好等于它的所有因子和。例如6=1+2+3,就是一个完全数。

解:采用穷举法。两重循环,外层是从1到999依次处理,内层是求该数的所有因子的和,并判断是否等于该数。

#include

using namespace std;

int main(){

int i,a,sum_yz; //sum_yz是a的因子和

for(a=1;a<1000;a++){

sum_yz=0;

for(i=1;i

if (a==sum_yz) cout<

}

return 0;

}

2.12 将100元换成用10元、5元和1元的组合,共有多少种组合方法。

解:采用穷举法。考虑10元最多10张,5元最多20张,余下是1元。

#include

using namespace std;

int main(){

int i,j,k,count=0;

for (i=0;i<=10;i++)//i 是10元张数,j 是5元张数,k 是1元张数 for (j=0;j<=20;j++){ k=100-10*i-5*j; if (k>=0){ cout<

2.13 利用反正切展开计算的近似值,要求误差10-5,公式如下:

Λ+-+-≈7

53)(7

53x x x x x arctg

令x=1,可计算出/4的近似值。

解:采用递推法。初看每一项的递推通式不易写出,但每一项全看作奇数项,而偶数项全为零,则很容易写出:第1项为x ,第3项为第1项乘以x 的平方除以项序号3乘以-1,其余类推。同时和的误差小于最后一项的绝对值。 #include #include using namespace std; const double e=1e-5; int main(){ double x,a,sum; int i=3; cout<<"请输入正切值:"<>x; a=x; sum=x; do { a*=x*x*(-1); sum+=a/i; i+=2; }while (fabs(a/i)>e); cout<<"arctg("<

2.14 用迭代法求方程x 2+10cosx=0的根,误差限为10-5。迭代公式如下:

n

n n n n n n x x x x x x x sin 102)cos sin (1021

-+-=

+

解:迭代法也是用循环语句实现,数学上

#include

#include

using namespace std;

const double e=1e-5;

int main(){

double x0,x1;

int n=0;

cout<<"输入初始近似值:"<

cin>>x1;

do{

x0=x1;

x1=(x0*x0-10*(x0*sin(x0)+cos(x0)))/(2*x0-10*sin(x0));

//x0是上次算出的结果,x1用作保存新算出的结果

n++;

} while ((fabs(x1-x0) >e)&&(n<=1e5));

if(n>1e5)

cout<<"超出迭代1e5次\n";

else cout<<"方程x*x+10*cos(x)=0的一个根为:"<

cout<<"方程误差为:"<

return 0;

}

2.15 两队选手每队5人进行一对一的比赛,甲队为A、B、C、D、E,乙队为J、K、L、M、N,经过抽签决定比赛配对名单。规定A不和J比赛,M不和D及E比赛。列出所有可能的比赛名单。

解:这是一个组合问题,使用穷举法。共有5个位置,设甲队5名队员位置不变,乙队改变队员位置,进行配对。注意第1个位置可在5个队员中任选一个,以后的位置必须扣除已选过的队员。并扣除不能配对的情况,即得所有可能的比赛名单。

#include

using namespace std;

int main(){

char st1[5]={'A','B','C','D','E'},st2[5]={'J','K','L','M','N'};

int i=0,j,k,l,m,n;

for(j=0;j<5;j++){//0号位

if(j==0) continue;//A不与J比赛,即st1[0]不与st2[0]比赛

for(k=0;k<5;k++){//1号位

if(k==j) continue;

for(l=0;l<5;l++){//2号位

if(l==j||l==k) continue;

for(m=0;m<5;m++){//3号位

if(m==j||m==k||m==l) continue;

if(m==3) continue;//M不与D比赛,即st1[3]不与st2[3]比赛

for(n=0;n<5;n++){//4号位

if(n==3) continue;//M不与E比赛,即st1[4]不与st2[3]比赛

if(n==j||n==k||n==l||n==m) continue;

cout<

cout<

cout<

i++;

}

}

}

}

}

cout<

return 0;

}

2.16 编程模拟选举过程。假定四位候选人:zhang、wang、li、zhao,代号分别为1、2、3、4。选举人直接键入候选人代号,14之外的整数视为弃权票,-1为终止标志。打印各位候选人的得票以及当选者(得票数超过选票总数一半)名单。

解:用5个元素的整型数组,分别放弃权票和各候选人的得票,然后用开关语句打印。

#include

#include

using namespace std;

int main(){

enum candidate{feipiao,zhang,wang,li,zhao}cand;

int vote[5]={0},i,k=0,n;

cin>>n;

while(n!=-1){

k++;

if(n>=1&&n<=4) vote[n]++;

else vote[0]++;

cin>>n;

}

for(i=0;i<5;i++){

cand=(candidate)i;

switch(cand){

case feipiao:

cout<

case zhang:cout<

if(vote[cand]>k/2) cout<<" 当选"<

else cout<

break;

case wang:cout<

if(vote[cand]>k/2) cout<<" 当选"<

else cout<

break;

case li:cout<

if(vote[cand]>k/2) cout<<" 当选"<

else cout<

break;

case zhao:cout<

if(vote[cand]>k/2) cout<<" 当选"<

else cout<

break;

}

}

return 0;

}

2.17 改造【例2.14】,将运行结果(Fibonacii数列的前20项)存入文件。解:采用3步法。所谓3步法,是将书上的第1和第2步合并,格式如下:首先建立或打开一个输出文件,并与磁盘文件联系:

ofstream ofile("myfile2_17.txt");

再按一定格式存入数据:ofile<

然后关闭文件:ofile.close();

如要读出数据,则用输入文件打开,并与同一磁盘文件联系:

ifstream ifile("myfile2_17.txt");

再按同一格式读入数据:ifile>>i>>j>>k>>l;等,并输出

最后关闭文件:file.close();

#include

#include

#include

using namespace std;

const int m=20;

int main(){

int fib0=0,fib1=1,fib2,i,j,k,l,n;

char ch;

ofstream ofile("myfile2_17.txt");

ofile<

for(n=3;n<=m;n++){

fib2=fib0+fib1;

ofile<

if(n%5==0) ofile<

fib0=fib1; fib1=fib2;

}

ofile.close();

cout<<"是否要将文件输出?Y或N"<

cin>>ch;

if(ch=='y'||ch=='Y'){

ifstream ifile("myfile2_17.txt");

while(1){

ifile>>i>>j>>k>>l>>n;//由文件读入

if(ifile.eof()!=0) break;

cout<

<

}

ifile.close();

}

return 0;

}

2.18 改造【例2.19】,将运行结果(100以内素数)存入文件。

解:采用4步法。首先定义一个输出文件:ofstream ofile;

再打开该文件并与并与磁盘文件联系:ofile.open("myfile2_18.txt"); 按一定格式把数据存入文件。最后关闭文件。效果与3步法相同。

读文件同样可用3步法或4步法。

#include

#include

#include

#include

using namespace std;

const int n=100;

int main(){

int a[n],i,j;

char ch,b[256];

ofstream ofile;

ifstream ifile;

for(i=0;i

a[0]=0; //1不是素数,置0

for(i=0;i

if(a[i]==0) continue; //该数已经置0,判断下一个数

for(j=i+1;j

}

ofile.open("myfile2_18.txt");

int count=0;

ofile<<"1-"<

for(i=0;i

if(a[i]!=0){

ofile<

count++;

if(count%10==0) ofile<

}

ofile.close();

cout<<"是否要将文件输出?Y或N"<

cin>>ch;

if(ch=='y'||ch=='Y'){

ifile.open("myfile2_18.txt");

i=0;

while(ifile.get(b[i])){//不可用>>,它不能读白字符,

if(b[i]=='\n') break;

i++;

}

b[i]='\0';

cout<

count=0;

while(1){

ifile>>i;//由文件读入

cout<

count++;

if(count%10==0) cout<

if(ifile.eof()!=0) break;//最后一个数据后面可能没有回车,直接为文件结束}

ifile.close();

cout<

}

return 0;

}

2.19改造【例2.13】,文本由文本文件输入。

解:文本文件读入要用成员函数: ifile.get(),而不可用插入运算符<<,否则会丢失空白字符。

#include

#include

using namespace std;

int main(){

char ch;

int nline=0,nword=0,nch=0;

int isword=0;

ifstream ifile("ep2_19.cpp");

cout<<"读入ep2_19.cpp"<

do{

ch=ifile.get();

if(ch=='\n') nline++; //遇换行符行数+1

if(ch!=' '&&ch!='\t'&&ch!='\n'&&ch!=EOF){ //读到非间隔符

if(!isword) nword++; //在单词的起始处给单词数+1

nch++; //字符数加+1

isword=1;

}

else isword=0; //读到间隔符}while(ch!=EOF); //读到文本结束符为止ifile.close();

cout<<"行数:"<

cout<<"单词数:"<

cout<<"字符数:"<

return 0;

}

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

顺序结构、选择结构和循环结构的程序设计典型例题分析与解答 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.熟练掌握关系表达式和逻辑表达式的使用。 2.熟练掌握嵌套的if语句和switch语句实现多分支结构程序设计。 3.掌握选择结构程序设计的方法。 4.继续熟悉跟踪调试程序的方法和过程。 二、实验内容及步骤 1.分析程序并上机运行验证结果。 #include void main() { int a,b,t; printf("请输入a,b的值:"); scanf("%d,%d",&a,&b); if(a>3,2 3,2>>3,2 } 思考: 从输入数据和运行结果分析程序的功能。 将“{t=a;a=b;b=t;}”改为“t=a,a=b,b=t;”,程序的功能改变了吗?为什么?一样的 将“if(a void main() { int a,b; printf("请输入a,b的值:"); scanf("%d,%d",&a,&b); if (b) printf("a/b=%d \n",a/b); //在确保b非零的情况下执行a/b运算 else printf("ERROR:Cannot divide by zero!\n"); } 提示: 程序的功能是实现两个整数相除。程序设计时应避免被零除的错误,所以“if(b)printf("a/b=%d \n",a/b);”就是在确保b非零的情况下执行a/b运算。 if(b)也可以写作if(b!=0)。 3.阅读、分析程序,记录结果,并上机运行验证结果。 #include void main() {

循环结构程序设计代码

实验五代码: 基础能力落实: 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有数列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;

实验二选择结构程序设计实验报告

实验三:C程序的选择结构 一、实验目的和要求 (1)了解 C 语言表示逻辑量的方法(以0 代表“假”,以非0 代表“真”)。 (2)学会正确使用逻辑运算符和逻辑表达式。 (3)熟练掌握if 语句的使用(包括if 语句的嵌套)。 (4)熟练掌握多分支选择语句—switch 语句。 (5)结合程序掌握一些简单的算法。 (6)进一步学习调试程序的方法。 二、、实验软硬件配置 1.硬件配置 电脑 2.软件配置 Windows xp Visual C++6.0 三、实验内容及过程描述 实验步骤: ①进入Visual C++ 6.0 集成环境。 ②输入自己编好的程序。 ③检查一遍已输入的程序是否有错(包括输入时输错的和编程中的错误),如发现有错,及时 改正。 ④进行编译和连接。如果在编译和连接过程中发现错误,频幕上会出现“报错信息”,根据提 示找到出错位置和原因,加以改正。再进行编译,如此反复直到不出错为止。 ⑤运行程序并分析运行结果是否合理。在运行是要注意当输入不同的数据时所得结果是否正 确,应运行多次,分别检查在不同情况下结果是否正确。 实验内容: 本实验要求事先编好解决下面问题的程序,然后上机输入程序并调试运行程序。 x x 1 (1)有一函数:y 2x 1 1 x 10 3x 11 x 10 写程序,输入x 的值,输出y 相应的值。用scanf 函数输入x 的值,求y 的值。程序如下:#include int main() {float x,y; int i; while(i<1000) { printf(" 请输入x 的值:"); scanf("%f",&x); if(x<1) y=x; else if(1<=x&&x<10)

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

第八讲:顺序结构程序设计举例 所谓的顺序结构就是从头到尾一步步按部就班的执行下去,不会中途出现放弃或者跳转的情况。利用这样的思想实现的程序我们称之为顺序结构程序。在前面学习了许多知识点之后我们就可以开始最基本的顺序结构程序的设计了。 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π

实验二选择结构程序设计 实验报告

C语言程序设计与问题求解实验报告 实验二选择结构程序设计 一、实验目的 1.正确使用关系表达式和逻辑表达式表示条件; 2.掌握选择语句if-else和switch语句的使用方法; 3.掌握分支结构程序设计。 二、实验内容 1. 选择结构编程示例 year是闰年,即year能被4整除但不能被100整除,或year能被400整除。从键盘读入一个年份,然后输出其是否为闰年。具体代码如下: #include int main() { int year; printf("请输入年份:"); scanf("%d",&year); if ((year%4==0 && year%100!=0)||(year%400==0)) { printf("闰年!"); } else { printf("不是闰年!"); } return 0; } 运行结果:

2.分析并修改下面程序错误,使之能够正常运行。 错误代码一:下面的这个程序是当a和b的值相等的情况下输出“a和b相等”,而a与b的值不相等的话无输出。 #include void main() { int a=5,b=6; /* 或int a=5, b=5 ;*/ if (a==b); { printf("a和b相等\n"); } } 错误点: if (a==b)后有了分号“;”表示这条语句已执行完毕,所以无论a、b是否相等都会输出"a和b相等"。 修改后: #include void main() { int a=5,b=6; /* 或int a=5, b=5 ;*/ if (a==b) printf("a和b相等\n"); } 错误的代码二:下面的这个程序是当a和b的值相等的情况下a与b的值同时增加1,而a与b的值不相等的话,二者的值保持不变。 #include void main() { int a=5; /* 或int a=6*/ int b=6; if (a==b) a++; b++;

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

循环结构程序设计典型例题 例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()

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 )。(文件

循环结构程序设计:三种循环语句

一、循环结构(Iteration Structure)的概述 1.目的 为了解决含有重复处理内容的问题,必须采用循环语句(Loop Statement)来编程实现。 2.类型 (1)当型循环结构 (2)直到型循环结构 二、循环语句 1.while语句 ①功能:实现当型循环结构。 ②形式 while(表达式){ 循环体 } ③特点:先判断后执行。 ④举例:(累加和问题)编程计算整数1~100的和。 int i ; //循环变量 int sum = 0 ; //累加和清0 i = 1 ; //循环变量i赋初值 while( i <= 100){ sum = sum + i ; //循环变量累加到sum中 i = i + 1; //改变循环变量i的值 } 2.do-while语句 ①功能:实现直到型循环结构。 ②形式 do{ 循环体

}while(表达式); //注意最后的分号 ③特点:先执行后判断。 ④举例:修改上例。 /*利用do-while语句编程实现整数1~100的和。*/ int i ; //循环变量 int sum = 0 ; //累加和清0 i = 1 ; //循环变量i赋初值 do{ sum = sum + i ; //循环变量累加到sum中 i = i + 1; //改变循环变量i的值 }while(i<=100);//注意最后的分号 3.for语句 ①功能:实现当型循环结构。 ②形式 for(表达式1;表达式2;表达式3){ 循环体 } ③特点:先判断后执行;使用频率最高。 ④举例:修改上例。 /*使用for语句编程计算整数1~100的和。*/ int i ; //循环变量 int sum = 0 ; //累加和清0 for( i = 1 ; i <=100 ; i++ ){//第一个表达式完成循环变量i赋初值;第三个表达式实现改变循环变量i的值 sum = sum + i ; //循环变量累加到sum中 } 4.几种循环语句的比较 ①由于while语句和for语句均实现当型循环结构,两者是完全等价的。 for(表达式1;表达式2;表达式3){

选择结构程序设计练习题

选择结构程序设计练习题 1.逻辑运算符两侧运算对象的数据类型( ) A.只能是0和1 B.只能是0或非0正数 C.只能是整型或字符型数据 D.可以是任何类型的数据 2.下列运算符中优先级最高的是( ) A.< B.+ C.&& D.!= 3.能正确表示“当x的取值在[1,10]和[200,210]范围内为真,否则为假"的表达式是( ) A.(x>=1)&&(x<=10)&&(x>=200)&&(x<=210) B.(x>=1)||(x<=10)||(x>=200)||(x<=210) C.(x>=1)&&(x<=10)||(x>=200)&&(x<=210) D.(x>=1)||(x<=10)&&(x>=200)||(x<=210)

4.表示图中坐标轴上阴影部分的正确表达式是( ) A.(x<=a)&&(x>=b)&&(x<=c) B.(x<=a)||(b<=x<=c) C.(x<=a)||(x>=b)&&(x<=c) D.(x<=a)&&(b<=x<=c 5.判断char型量ch是否为大写字母的正确表达式是() A.‘A’<=ch<=‘Z’ B.(ch>=‘A’)&(ch<=‘Z’) C.(ch>=‘A’)&&(ch<=‘Z’) D.(‘A’<=ch)AND(‘Z’>=ch) 6.设x,y,z都是int型变量,且x=3,y=4,z=5,则下面表达式中值为0的是 () A.‘x’&&‘y’ B.x<=y C.x||y+z&&!y D.!(x

7.已知x=43,ch=‘A’,y=0;则表达式(x>=y&&ch<‘B’&&!y)的值是() A.0 B.语法错误 C.1 D.“假” 8.若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”,则以下不能满足要求的表达式是() A.A%2==1 B.!(A%2==0) C.!(A%2) D.A%2 9.设有:int a=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c>d)后的值为() A.1 B.2 C.3 D.4 10.下列运算符中优先级最低的是( )优先级最高的是( ) A.? B.&& C.+ D.!=

相关文档
最新文档