C的三种循环while、for和do while
先说一下scanf()函数的返回值问题
当scanf("%d,%d",&a,&b);如果用户正确输入了俩个整形变量,那么scanf的返回值为2
当scanf("%d,%d,%d",&a,&b,&c);如果用户正确的输入三个整形变量,那么scanf的返回值为3.
/*对用户输出的整数求和*/ #include <stdio.h> int main(void) { long num; long sum=0;//把sum初始化为零 int status; printf("Please enter an integer to be summed,q to quit!\n"); status=scanf("%1d",&num); while(status==1) //==的意思是等于 { sum+=num; printf("next!q to quit!\n"); status=scanf("%1d",&num); } printf("All is to %1d",sum); getchar(); getchar(); getchar(); }
for循环
经典for循环之九九乘法表:
/*经典for循环九九乘法表*/ #include<stdio.h> int main(void) { int i,j; for(i=1;i<=9;i++) { for(j=1;j<=i;j++) { printf("%d*%d=%d ",i,j,i*j); } printf("\n"); } getchar(); }
经典for循环之冒泡排序法
/* 经典for循环之冒泡排序法*/ #include<stdio.h> int main(void) { int arr[4]={4,5,1,2}; //定义数组 int 数组length为4 int i,j,temp; for(i=0;i<=3;i++) { for(j=0;j<3;j++) { if(arr[j]>arr[i]) { temp=arr[i]; //数据交换 arr[i]=arr[j]; arr[j]=temp; } } } for(i=0;i<4;i++) //数组下标从0开始如果不是如果i=1--i=4那么将没有arr【4】将会输出12506.... { printf("%d ",arr[i]); } getchar(); }
for循环的灵活性。例如,i--,i+12,i*i,i*11,等等。
do while:退出条件循环
while循环和for循环都是入口条件循环,在每次执行loop前进行判断,如果条件不满足就不会执行循环体内的代码块。
为了确保能够在执行循环之后判断条件,do while 可以做到这一点。
--数组
/* 接收用户输入的数据存放到数组中并打印*/ #include<stdio.h> int main(void) { char strr[5]={0}; int i=0; for(;i<5;i++) { scanf("%c",&strr[i]); //我不用&的时候会报错,VC6.0.有待以后解决。 getchar(); } for(i=0;i<5;i++) { printf("%c",strr[i]); } getchar(); }
返回值函数,略。