练习4-1
/*---改写判断整数型符号的程序,使其可以重复输入和输出---*/ #include <stdio.h>int main(void){int a, retry;do {printf("请输入一个数:");scanf("%d",&a);if(a == 0)puts("该整数为0");if(a > 0)puts("该整数为正数");if(a < 0)puts("该整数为负数");printf("请问是否继续---Y/1---N/0:");scanf("%d",&retry);} while(retry == 1);puts("谢谢使用!");return 0;}
练习4-2
/*---输入两个数,计算出它们之间所有的整数的和---*/#include <stdio.h>int main(void){int a, b, sum=0, min, max;puts("请输入两个整数。");printf("整数a:");scanf("%d",&a);printf("整数b:");scanf("%d",&b); (a>b)?(max = a)&&(min = b):(min = a)&&(max = b);do {sum+=min;} while(min++ != max);(a>b)?(max = a)&&(min = b):(min = a)&&(max = b);printf("大于等于%d小于等于%d的所有整数的和是%d",min,max,sum);return 0;}
练习4-3
/*---输入值为负数时不执行换行操作---*/#include <stdio.h>int main(void){int no;printf("请输入一个正整数:");scanf("%d",&no);while(no >= 0) {printf("%d ", no);no--;}while(no >= 0)printf("\n");return 0;}
练习4-4
/*---当输入数值递减到1时停止---*/#include <stdio.h>int main(void){int a;printf("请输入一个整数:");scanf("%d",&a);while(a > 0)printf("%d ",a--);printf("\n");return 0;}
练习4-5
/*---从1开始递增,输入的值小于0不换行---*/ #include <stdio.h>int main(void){int i, no;printf("请输入一个正整数:");scanf("%d", &no);i = 1;while(i <= no)printf("%d ", i++);if(no >= 0)putchar('\n');return 0;}
练习4-6
/*---升序显示出小于输入值的所有正偶数---*/#include <stdio.h>int main(void){int a, b=2;printf("请输入一个整数:");scanf("%d",&a);do{printf("%d ",b);b+=2;} while(b < a);return 0;}
练习4-7
/*---显示出小于输入的整数的所有2的乘方---*/#include <stdio.h>int main(void){int a, b=2;printf("请输入一个整数:");scanf("%d",&a);while(a > b){printf("%d ",b);b *= 2;} return 0;}
练习4-8
/*输入一个整数,连续显示出该整数个**/#include <stdio.h>int main(void){int no,n;printf("正整数");scanf("%d", &no);n = no;while (no-- > 0)putchar('*');if(n >= 0) putchar('\n');return 0;}
练习4-9
/*---教廷显示+和-,总个数等于所输入的整数值。---*/#include <stdio.h>int main(void){int a, b=1;printf("正整数:");scanf("%d",&a);while(a >= b){if(b%2)putchar('+');elseputchar('-');b++;}return 0;}
练习4-10
/*---连续显示*,总个数等于所输入的整数值。---*/#include <stdio.h>int main(void){int a, b = 0;printf("正整数:");scanf("%d",&a);while (a > b++){puts("*");}return 0;}
练习4-11
/*---逆向显示正整数---*/#include <stdio.h>int main(void){int no, temp;do {printf("请输入一个正整数:");scanf("%d", &no);if (no <= 0)puts("\a请不要输入非正整数。"); } while (no <= 0);temp = no;printf("%d逆向显示的结果是",temp);while (no > 0) {printf("%d", no % 10);no /= 10;} puts("。");return 0;}
练习4-12
/*---读取一个正整数,显示其位数---*/#include <stdio.h>int main(void){int a, b=0;printf("请输入一个正整数:");scanf("%d",&a);printf("%d的位数是",a);while (a){a /= 10;b++;}printf("%d",b); puts("。");return 0;}
练习4-13
/*---求1到n的和,n的值从键盘输入---*/#include <stdio.h>int main(void){int a, n, sum = 0;printf("n的值:");scanf("%d",&n);for(a = 1;a <= n;a++){sum+=a;}printf("1到%d的和为%d。",n,sum);return 0;}
练习4-14
/*---根据输入的整数,循环显示1234567890,显示的位数和输入的整数值相同。---*/#include <stdio.h>int main(void){int a, b;printf("请输入一个整数:");scanf("%d",&a);for(b = 1; b <= a; b++)printf("%d",b%10);return 0;}
练习4-15
/*---显示身高和标准体重的对照表,显示的身高范围和间隔由输入的整数值进行控制,标准体重精确到小数点后2位。---*/#include <stdio.h>int main(void){int st, en, j, i;double a;printf("开始数值(cm):");scanf("%d",&st);printf("结束数值(cm):");scanf("%d",&en);printf("间隔数值(cm):");scanf("%d",&j);for(i = st; i <= en; i+=j){a = (i - 80)*0.7;printf("%dcm %.2fkg\n",i,a);}return 0;}
练习4-16
/*---输入一个整数值,显示该整数值以下的所有奇数。---*/#include <stdio.h>int main(void){int a, b;printf("整数值:");scanf("%d",&a);for(b = 1; b < a; b++){if(b%2)printf("%d ",b);}return 0;}
练习4-17
/*---显示1到n的整数值的二次方---*/#include <stdio.h>int main(void){int n, b;printf("n的值:");scanf("%d",&n);for(b = 1; b <= n; b++){printf("%d的二次方是%d\n",b,b*b);}return 0;}
练习4-18
/*---输入一个整数值,显示该整数值个‘*’。每显示5个就进行换行。---*/#include <stdio.h>int main(void){int a, b;printf("显示多少个*");scanf("%d",&a);for(b = 1; b <= a/5; b++)puts("*****");for(b = 1; b <= a%5; b++)puts("*");return 0;}
练习4-19
/*---显示所输入的整数值的所有约束之后,显示约数的个数。---*/#include <stdio.h>int main(void){int a, b, c = 0;printf("整数值:");scanf("%d",&a);for(b = 1; b <= a; b++){if(a%b == 0){printf("%d\n",b);c++;}}printf("约数有%d个",c); return 0;}
练习4-20
/* 显示九九乘法表 ,加题头和侧栏 */ #include int main(void) { int i, j; for (i = 0; i <= 9; i++) { if (!i) printf(" |"); else printf("%3d", i); } putchar('\n'); for (i = 0; i <= 9; i++) printf("---"); putchar('\n'); for (i = 1; i <= 9; i++) { printf("%d |", i); for (j = 1; j <= 9; j++) printf("%3d", i * j); putchar('\n'); } return (0);}
练习4-21
/*---显示以所输入整数为边长的正方形---*/#include <stdio.h>int main(void){int a, b, c;puts("生成一个正方形");printf("正方形有几层:");scanf("%d",&a);for(b = 0; b < a; b++){for(c = 0; c < a; c++){printf("*");}printf("\n");} return 0;}
练习4-22
/*---读取两个边的边长,以较小的数作为行数以较大的数作为列数。---*/#include <stdio.h>int main(void){int a, b, tmp, i, j;puts("让我们来画一个长方形。");printf("一边:");scanf("%d",&a);printf("另一边:");scanf("%d",&b);if(a > b){tmp = a;a = b;b = tmp;} for(i = 0; i < a; i++){for(j = 0; j< b; j++)printf("*");printf("\n");}return 0;}
练习4-23
/*---显示出直角在左上方和右上方的等腰直角三角形---*/#include <stdio.h> int main(void){int i, j,a, b;printf("输入三角形高度:");scanf("%d",&i);for(a = 0;a < i;a++){for(b = 0;b < i-a;b++){printf("*");}printf("\n"); }printf("\n");for(a = 0;a < i;a++){for(j = 0;j < a;j++)printf(" ");for(b = 0;b < i-a;b++)printf("*");printf("\n");}return 0;}
练习4-24
/*---输入一个整数,显示出输入整数层的金字塔形状---*/#include <stdio.h>int main(void){int a, b, c;puts("让我们来画个金字塔。");printf("金字塔有几层:");scanf("%d",&a);for(b = 1; b <= a; b++){for (c = 0; c < a - b; c++)printf(" ");for (c = 0; c < (2*b - 1); c++)printf("*");printf("\n");}return 0;}
练习4-25
/*---显示输入整数层的向下的金字塔形状。---*/ #include <stdio.h>int main (void){int a, b, c, d;puts("让我们来画一个向下的金字塔。");printf("金字塔有几层:");scanf("%d",&a);d = a;for(b = 1; b <= a; b++){for (c = 0; c < b; c++){printf(" ");}for (c = 0; c < 2*d-1; c++ ){printf("%d",b);}d--;printf("\n");}}
do语句:
复合赋值运算符:
后置递增运算符和后置递减运算符:
注:
在循环语句的表达式中对变量使用后置运算符时,循环结束后后置运算符还会运行一次。
前置递增运算符和后置递减运算符:
putchar函数:
通过使用putchar函数,可以显示单一字符。
do语句和while语句:
do语句的循环体至少会执行一次,而while语句的循环体则有可能一次也不会执行。
do语句---先循环后判断:执行循环体之后进行判断。
while语句---先判断后循环:执行循环体之前进行判断。
for循环语句: