C语言分支与循环单选题答案,C语言之流程控制:分支结构和循环结构(附练习题及答案)...

C语言的程序结构有:

1、顺序结构 即从上到下,按代码顺序逐行执行。

2、分支结构 即根据条件的不同,执行不同的程序语句。

3、循环结构 即在特定的条件下,重复执行代码块若干次。

--------------------------------------快乐的分割线------------------------------------------

分支结构:

1、分支结构语句------if

if(表达式)
{ 语句块1;}

else { 语句块2;}

if(表达式)
{ 语句块1;}

else if (表达式) { 语句块2;}

else
{ 语句块3; }

--------------------------------------快乐的分割线------------------------------------------

2、分支结构语句------switch

switch(表达式) {

case :

;

break; //执行到break即退出switch语句

case

:;

break;

default: break;

}

//如果表达式结果没有匹配对应的case常量值,则执行default后面的语句

if和switch的区别是什么?

1.类型受限、switch表达式的类型为整型;if的则为bool型。

C语言中,字符常量的字面值是整型,表达式运算时,字符型也会自动提升为整型。

这也就是说,在switch或case中写的表达式,其值是整型:

switch('a'){

case 97:....或者case 'a':....都是一样的

2.if是范围上的判断,switch表示点上的判断:比如学生成绩统计,100-90分为A;90-80分为B;那么用的是if

else而不是switch。

--------------------------------------快乐的分割线------------------------------------------

循环结构:确定初始值、终止条件、以及变化值

C语言中循环语句有三种:while、do while、for

(1)while循环

while(表达式)

{ 语句块; }

特点:

先判断while后面括号里表达式的值,如果为真则执行语句块的代码,否则不执行。

int sum=0,i=1;

while(i<=10) {

sum+=i ;

i ++; }

--------------------------------------快乐的分割线------------------------------------------

(2)循环语句---do while do {

语句块;

} while(表达式);//注意加分号

特点:

先循环一次再判断,当条件为真时继续循环,即循环体至少执行一 次。

int sum = 0, i = 1; do{

sum += i;

i++;

}while(i<=10);

while和do while举例说明:

#include

int

main(int argc, const char * argv[])

{

char c ='n';

//  printf("八戒啊,你说还是不说??");

//  scanf("%c",&c);

do {

printf("\n拷打中。。。");

printf("\n惨叫中。。。");

printf("\n八戒啊,你说还是不说??");

scanf("%c",&c);

} while (c=='n'||c=='N');

//  while (c=='n'||

c=='N') {

//  printf("\n拷打中。。。");

//  printf("\n惨叫中。。。");

//  printf("\n八戒啊,你说还是不说??");

//  scanf("%c",&c);

//  scanf("%c",&c);

//  }

return 0;

}

--------------------------------------快乐的分割线------------------------------------------

3、循环语句---for

for(表达式1;表达式2;表达式3)

{ 语句块4;}

表达式1一般为变量的初值,如:i= 1;

表达式2为循环条件,

表达式3为变化值。

执行顺序是先执行表达式1,判断表达式2的真假,如果为真则执行语

句块4的内容,再执行表达式3,回到表达式2判断其真假循环执行。

int sum=0,i; for(i = 0;i<=10;i++) {sum +=i;

}

--------------------------------------快乐的分割线------------------------------------------

while用于知道结束条件的情况

do-while用于最少执行一次循环的情况 for(;;)用户知道循环次数的情况

可以互相替换

break和continue:

break表示终止循环。 continue表示终止本次循环进入下次循环。

--------------------------------------快乐的分割线------------------------------------------

试题及答案:

#include

int main(int argc, const char * argv[])

{

//  //第一题:用分支结构实现输出三个数中的最大值。

//  int a,b,c,max;

//声明三个四个变量

//  printf("请输入第一个整数:\n");

//  scanf("%d",&a);

//  printf("请输入第二个整数:\n");

//  scanf("%d",&b);

//  printf("请输入第三个整数:\n");

//  scanf("%d",&c);

//  if(a>=b){

//  max=a;

//  }

//  else{

//  max=b;

//  }

//  if(max>=c){

//  printf("您输入的三个整数中的最大值为:%d\n",max);

//  }

//  else{

//  printf("您输入的三个整数中的最大值为:%d\n",c);

//  }

//  //第二题:计算1-100间所有奇数的和

//  int sum=0;

//  for(int i=1;i<=100;i++){

//  if(i%2==1){

//  sum+=i;

//  }

//  }

//  printf("1-100间所有奇数的和为:%d",sum);

//第三题:编程求1到100之间能被3整除的数。

//  printf("1到100之间能被3整除的数有:");

//  for(int

i=1;i<=100;i++){

//  if (i%3==0) {

//  printf("%d

",i);

//  }

//  }

//第四题:从键盘输入一指定金额(以元为单位,如

345.78),然后显示支付该金额的各种面额人民币 数量,要求显示100元、50元、10元、5元、2

元、1元、5角、1角、5分、1分各多少张。(输出 面额最大值:比如

345.78=100*3+10*4+5*1+0.5*1+0.1*2+0.0 1*8)

//  int

a,b,c,d,e,f,g,h,i,j;

//  float dollar;

//  printf("请输入任意一个金额:");//  scanf("%f",&dollar)

//  printf("\n%f",dollar);

//dollar改变,比如354.27。那么1分的结果会出现错误

//  a=dollar/100;

//  b=(dollar-a*100)/50;

//  c=(dollar-a*100-b*50)/10;

//  d=(dollar-a*100-b*50-c*10)/5;

//  e=(dollar-a*100-b*50-c*10-d*5)/2;

//  f=(dollar-a*100-b*50-c*10-d*5-e*2)/1;

//  g=(dollar-a*100-b*50-c*10-d*5-e*2-f*1)/0.5;

//

h=(dollar-a*100-b*50-c*10-d*5-e*2-f*1-g*0.5)/0.1;

//  i=(dollar-a*100-b*50-c*10-d*5-e*2-f*1-g*0.5-h*0.1)/0.05;

//  j=(dollar-a*100-b*50-c*10-d*5-e*2-f*1-g*0.5-h*0.1-i*0.05)/0.01;

//  printf("\n您输入的金额中有:%d张100元,有%d张50元,有%d张10元,有%d张5元,有%d张2元,有%d张1元,有%d张5角,有%d张1角,有%d张5分,有%d张1分\n",a,b,c,d,e,f,g,h,i,j);

//  //第五题:已知abc+cba=1333,其中a,b,c均为一位数,编程求出满足条件的a,b,c所有组合。

//  printf("满足条件的所有组合有:");

//  for (int i=0;

i<10; i++) {

//  for (int j=0; j<10; j++) {

//  for (int

k=0; k<10; k++) {

 printf("%d%d%d",i,j,k);//for嵌套循环,有累称个结果,这边有ixjxk=1000个组合

//  //开始判断满足条件的组合

//  if((i*100+j*10+k)+(k*100+j*10+i)==1333) {

//  printf("%d%d%d  ",i,j,k);

//  }

//  }

 printf("\n");

//  }

 printf("\n");

//  }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值