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");
// }