/*
练习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 }
/*
练习4-9
编写一段程序,像右面这样按照升序显示出小于输入值的所有正偶数。
请输入一个整数:19
2 4 6 8 10 13 14 16 18
*/
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 = 2; 12 13 while (i<=num) { 14 15 printf("%d",i); 16 i+=2; 17 } 18 19 putchar('\n'); 20 21 return 0; 22 }
/*
练习4-10
编写一段程序,像右面这样显示出小于输入整数的所有2的乘方。
请输入一个整数:19
2 4 6 8 16
*/
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 = 2; 12 13 while (i<num) { 14 printf("%d ",i); 15 i *= 2; 16 } 17 putchar('\n'); 18 19 return 0; 20 }
/*
练习4-11
编写一段程序,像右面这样读取一个整数,并纵向显示出读取到的整数个*。如果输入的是0以下的整数,则不显示任何内容
请输入一个整数:3
*
*
*
*/
1 #include <stdio.h> 2 3 int main() 4 { 5 6 int num; 7 8 printf("请输入一个整数:"); 9 scanf("%d",&num); 10 11 while (num-- > 0) { 12 putchar('*'); 13 putchar('\n'); 14 15 } 16 17 return 0; 18 }
/*
练习4-12
使用for语句对代码清单4-6中的程序进行修改,计算1到5的和。
*/
1 #include <stdio.h> 2 3 int main() 4 { 5 int sum = 0; 6 7 for (int i = 1; i<=5; i++) { 8 sum += i; 9 } 10 printf("1到5的合计值是%d:\n",sum); 11 12 return 0; 13 }
/*
练习4-13
编写一段程序,像右面这样 输出整数后,循环显示1234567890,显示的位数和输入的整数值相同。
请输入一个整数:25
1234567890123456789012345
*/
1 #include <stdio.h> 2 3 int main() 4 { 5 int num, i, j; 6 puts("请输入一个整数:"); 7 scanf("%d", &num); 8 i = num / 10; 9 j = num - 10 * i; 10 while (i--) 11 printf("1234567890"); 12 for (i = 1; i <= j; i++) 13 { 14 printf("%d", i); 15 } 16 putchar('\n'); 17 }
/*
练习4-14
编写一段程序,像右面这样显示出身高和标准体重的对照表。显示的身高范围和间隔由输入的数值进行控制,标准体重精确到小数点后2位。
开始数值(cm);150
结束数值(cm);190
间隔数值(cm);5
150cm 45.00kg
155cm 49.50kg
............
*/
1 #include <stdio.h> 2 int main() 3 { 4 5 int start,end,gap; 6 printf("开始数值:"); scanf("%d", &start); 7 printf("结束数值:"); scanf("%d", &end); 8 printf("间隔数值:"); scanf("%d", &gap); 9 10 for(int i=0;i<=(end-start)/gap;i++){ 11 12 printf("%d %0.2f\n",start+i*gap,45.00+i*0.5); 13 } 14 15 return 0; 16 }
/*
练习4-15
编写一段程序,想右面这样为九九乘法表增加横纵标题
*/
1 #include "stdio.h" 2 3 int main(int argc, char const *argv[]) 4 { 5 6 printf(" | "); 7 8 for (int i = 1; i < 10; ++i) 9 { 10 printf("%3d", i); 11 } 12 putchar('\n'); 13 14 printf("-----------------------------------\n"); 15 16 for (int i = 1; i < 10 ; ++i) 17 { 18 printf(" %d | ", i); 19 for (int j = 1; j < 10; ++j) 20 { 21 printf("%3d", i*j); 22 } 23 putchar('\n'); 24 } 25 return 0; 26 }
/*
练习4-16
对代码清单4-17中的程序进行修改,显示出一个横向较长的长方形。
让我们来画一个长方形。
一边:3
另一边:7
*******
*******
*******
*/
1 #include <stdio.h> 2 int main() 3 { 4 int a,b; 5 6 puts("让我们来画一个长方形。"); 7 printf("一边:"); scanf("%d",&a); 8 printf("另一边:"); scanf("%d",&b); 9 10 11 for (int i = 1; i<=a; i++) { 12 for (int j = 1; j <= b; j++) { 13 putchar('*'); 14 } 15 putchar('\n'); 16 17 } 18 return 0; 19 20 }
/*
练习4-17
对代码清单4-18和代码清单4-19中的程序进行修改,分别显示出直角在左上方和右上方的直角三角形
*/
直角左上方:
1 #include <stdio.h> 2 int main() 3 { 4 int ln; 5 6 printf("三角形有几层:"); 7 scanf("%d",&ln); 8 9 for (int i = 1; i<=ln; i++) { 10 for (int j = 1; j <=ln-i+1; j++) { 11 putchar('*'); 12 } 13 putchar('\n'); 14 15 } 16 return 0; 17 18 }
直角右上方:
1 int main() 2 { 3 int ln; 4 5 printf("三角形有几层:"); 6 scanf("%d",&ln); 7 8 for (int i = 1; i<=ln; i++) { 9 10 for (int j = 1; j <=i; j++) { 11 putchar(' '); 12 } 13 14 for (int j=1; j<=ln-i+1; j++) { 15 putchar('*'); 16 } 17 18 putchar('\n'); 19 } 20 return 0; 21 22 }
/*
练习4-18
编写一段程序,输入一个整数,像右面这样显示出输入整数层的金字塔形状。
让我们来描绘一个金字塔。
金字塔有几层:3
*
***
*****
*/
1 #include "stdio.h" 2 3 int main(int argc, char const *argv[]) 4 { 5 int n; 6 puts("让我们来描绘一个金字塔。"); 7 printf("金字塔有几层:"); scanf("%d",&n); 8 9 for (int i = 1;i<=n; i++) { 10 for (int j = 1; j<=n-i; j++) { 11 putchar(' '); 12 } 13 for (int j=1;j<=i ; j++) { 14 putchar('*'); 15 } 16 for (int j=1; j<i; j++) { 17 putchar('*'); 18 } 19 putchar('\n'); 20 21 } 22 return 0; 23 }