C语言明解(四)程序的循环控制
/*
练习4-1
对代码清单4-2中的程序进行修改,像右面这样在显示结果的同时显示出输入的整数值
请输入一个非负整数:1963
1963逆向显示的结果是3691.
*/
1 #include <stdio.h> 2 3 int main(int argc, const char * argv[]) 4 { 5 6 int num; 7 8 do { 9 printf("请输入一个非负整数:"); 10 scanf("%d",&num); 11 if (num<0) { 12 puts("请不要输入负整数"); 13 } 14 15 } while (num < 0); 16 17 printf("%d的逆向显示结果是:",num); 18 do { 19 printf("%d",num % 10); //显示最后一位数 20 num = num / 10; //右移一位 21 } while (num>0); 22 puts("。"); 23 24 }
/*
练习4-2
对代码清单4-3中的程序进行修改,像右面这样在显示结果的同时显示出输入的整数值
请输入一个非负整数:1963
1963的位数是4.
*/
1 #include <stdio.h> 2 3 int main(int argc, const char * argv[]) 4 { 5 int dig; 6 int num; 7 8 do { 9 printf("请输入一个非负整数:"); 10 scanf("%d",&num); 11 if (num<0) { 12 puts("请不要输入负整数"); 13 } 14 15 } while (num < 0); 16 17 dig = 0; 18 printf("%d",num); 19 do { 20 num = num / 10; 21 dig = dig + 1; 22 } while (num>0); 23 printf("的位数是%d.\n",dig); 24 25 return 0; 26 }
/*
练习4-3
编写一段程序,想右面这样读取俩个整数的值,然后计算出他们之间所有整数的和。
请输入俩个整数。
整数1:37
整数2:28
大于等于28小于等于37的所有整数的和是325.
*/
1 #include <stdio.h> 2 int main(void) 3 { 4 int a,b,sum; 5 sum=0; 6 printf("整数1:"); 7 scanf("%d",&a); 8 printf("整数2:"); 9 scanf("%d",&b); 10 if(a>b) 11 { 12 printf("大于等于%d小于等于%d的所有整数和是",b,a); 13 while(a>=b) 14 { 15 sum+=b; 16 b++; 17 } 18 printf("%d\n",sum); 19 } 20 else 21 { 22 printf("大于等于%d小于等于%d的所有整数和是",a,b); 23 while(b>=a) 24 { 25 sum+=a; 26 a++; 27 } 28 printf("%d\n",sum); 29 } 30 return 0; 31 }
/*
练习4-4
使用复合赋值运算符 /=,对代码清单4-2中的程序进行修改。
*/
1 #include <stdio.h> 2 3 int main(int argc, const char * argv[]) 4 { 5 6 int num; 7 8 do { 9 printf("请输入一个非负整数:"); 10 scanf("%d",&num); 11 if (num<0) { 12 puts("请不要输入负整数"); 13 } 14 15 } while (num < 0); 16 17 printf("%d的逆向显示结果是:",num); 18 do { 19 printf("%d",num % 10); //显示最后一位数 20 num /= 10; //右移一位 21 } while (num>0); 22 puts("。"); 23 24 }
/*
练习4-5
使用复合赋值运算符 /=和后置递增运算符++,对代码清单4-3中的程序进行修改。
*/
1 #include <stdio.h> 2 3 int main(int argc, const char * argv[]) 4 { 5 int dig; 6 int num; 7 8 do { 9 printf("请输入一个非负整数:"); 10 scanf("%d",&num); 11 12 if (num<0) { 13 puts("请不要输入负整数"); 14 } 15 16 } while (num < 0); 17 18 dig = 0; 19 printf("%d",num); 20 21 do { 22 num /= 10; 23 dig++; 24 25 } while (num>0); 26 27 printf("的位数是%d.\n",dig); 28 29 return 0; 30 }
/*
练习4-6
对代码清单4-7中的程序进行修改,当输入值为负数的时候不执行换行操作。
*/
1 #include <stdio.h> 2 3 int main(int argc, const char * argv[]) 4 { 5 6 int num; 7 8 printf("请输入一个整数:"); 9 scanf("%d",&num); 10 11 while (num >= 0) { 12 printf("%d",num); 13 num--; 14 putchar(‘\n‘); 15 } 16 return 0; 17 }
/*
练习4-7
对代码清单4-7中的程序进行修改,使其不是递减到0而是递减到1为止。
*/
1 #include <stdio.h> 2 3 int main(int argc, const char * argv[]) 4 { 5 6 int num; 7 8 printf("请输入一个整数:"); 9 scanf("%d",&num); 10 11 while (num >= 1) 12 printf("%d",num--); 13 putchar(‘\n‘); 14 15 return 0; 16 }
/*练习4-8
对代码清单4-9的程序进行如下修改。.从1开始递增。
.输入值小于0的时候不换行。
*/
1 #include <stdio.h> 2 3 int main(int argc, const char * argv[]) 4 { 5 6 int i,num; 7 8 printf("请输入一个整数:"); 9 scanf("%d",&num); 10 11 i = 1; 12 while (i<num) { 13 printf("%d",i++); 14 putchar(‘\n‘); 15 16 } 17 18 return 0; 19 }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。