#define _CRT_SECURE_NO_WARNINGS 1
练习4-1
#include<stdio.h>
int main()
{
int no = 0;
int x = 0;
do
{
printf("请输入一个整数:");
scanf("%d", &no);
if (no == 0)
puts("该整数为0。");
else if(no>0)
puts("该整数为正数。");
else
puts("该整数负数。");
printf("是否继续?<yes···0/No···9>:");
scanf("%d", &x);
} while (!x);
return 0;
}
练习4-2
#include<stdio.h>
int main()
{
int a, b = 0;
puts("请输入两个整数。");
printf("整数a:"); scanf("%d", &a);
printf("整数b:"); scanf("%d", &b);
//确定上下限
int min = a;
int max = b;
if (min > b)
{
min = b;
max = a;
}
int sum = 0;
int r = min; //防止min变化
do
{
sum += r;
r++;
} while (r <= a || r <= b);
printf("大于等于%d小于等于%d的所有整数的和是%d。\n", min, max, sum);
return 0;
}
练习4-3
#include <stdio.h>
int main()
{
int no;
printf("请输入一个正整数:");
scanf("%d", &no);
while (no >= 0)
{
printf("%d ", no);
no--;
}
if (no == -1) //重要
{
printf("\n");
}
return 0;
}
练习4-4
#include <stdio.h>
int main()
{
int no;
printf("请输入一个正整数:");
scanf("%d", &no);
while (no > 0) //递减到1
{
printf("%d ", no--);
}
if (no == 0) //重要
{
printf("\n");
}
return 0;
}
练习4-5
#include <stdio.h>
int main()
{
int no;
printf("请输入一个正整数:");
scanf("%d", &no);
int i = 1;
while (i <= no)
printf("%d ", i++);
if (no >= 0)
//if (i > no)
{
printf("\n");
}
return 0;
}
练习4-6
#include <stdio.h>
int main()
{
int no;
printf("请输入一个整数:");
scanf("%d", &no);
int i = 1;
while (i < no)
{
if (i % 2 == 0)
{
printf("%d ", i);
}
i++;
}
//或用i+=2
return 0;
}
练习4-7
#include <stdio.h>
int main()
{
int no;
printf("请输入一个整数:");
scanf("%d", &no);
int i = 2;
while (i < no)
{
printf("%d ", i);
i *= 2;
}
return 0;
}
练习4-8
#include <stdio.h>
int main()
{
int no;
printf("正整数:");
scanf("%d", &no);
int r = no;
while (no-- > 0) //多走一次no=-1
{
putchar('*');
}
if (no == -1 && r >= 1) //注意
putchar('\n');
return 0;
}
练习4-9
#include <stdio.h>
int main()
{
int no;
printf("正整数:");
scanf("%d", &no);
int i = 1;
while (i <= no)
{
if (i % 2)
{
printf("+");
}
else
{
printf("-");
}
i++;
}
return 0;
}
练习4-10
#include<stdio.h>
int main()
{
int x = 0;
printf("正整数:");
scanf("%d", &x);
while (x--)
{
putchar('*');
putchar('\n');
}
return 0;
}
练习4-11
#include <stdio.h>
int main()
{
int no;
do{
printf("请输入一个正整数:");
scanf("%d", &no);
if (no <= 0)
puts("\a请不要输入非正整数。");
} while (no <= 0);
int x = no;
printf("%d逆向显示的结果是", x);
while (no > 0)
{
printf("%d", no % 10);
no /= 10;
}
puts("。");
return 0;
}
练习4-12
#include <stdio.h>
int main()
{
int no;
do {
printf("请输入一个正整数:");
scanf("%d", &no);
if (no <= 0)
puts("\a请不要输入非正整数。");
} while (no <= 0);
int k = no;
int count = 0;
while (no) //while语句的循环次数和no的位数一致
{
no /= 10;
count++;
}
printf("%d的位数是%d。\n", k, count);
return 0;
}
练习4-13
#include <stdio.h>
int main()
{
int n = 0;
printf("n的值:");
scanf("%d", &n);
int i = 0;
int sum = 0;
for (i = 0; i <= n; i++)
{
sum += i;
}
printf("1到%d的和为%d。\n", n, sum);
return 0;
}
练习4-14
#include <stdio.h>
int main()
{
int n = 0;
printf("请输入一个整数:");
scanf("%d", &n);
int i = 0;
for (i = 1; i <= n; i++)
{
printf("%d", i % 10);
}
return 0;
}
练习4-15
#include <stdio.h>
int main()
{
int begin = 0;
int final = 0;
int interval = 0;
printf("开始数值(cm):"); scanf("%d", &begin);
printf("结束数值(cm):"); scanf("%d", &final);
printf("间隔数值(cm):"); scanf("%d", &interval);
int x = begin;
int i = 0;
for (i = 0; i <= (final - x) / interval; i++)
{
printf("%dcm\t%.2fkg\n", begin, (begin - 100) * 0.9);
begin += interval;
}
return 0;
}
练习4-16
#include <stdio.h>
int main()
{
int no = 0;
printf("整数值:");
scanf("%d", &no);
int i = 0;
for (i = 1; i <= no; i += 2) //简单
{
printf("%d ", i);
}
return 0;
}
练习4-17
#include <stdio.h>
int main()
{
int n = 0;
printf("n的值:");
scanf("%d", &n);
int i = 0;
for (i = 1; i <= n; i++)
{
printf("%d的二次方是%d\n", i, i * i);
}
return 0;
}
练习4-18
#include <stdio.h>
int main()
{
int n;
printf("显示多少个*:");
scanf("%d", &n);
int i;
for (i = 1; i <= n; i++)
{
printf("*");
if(i % 5 == 0) //重要
{
putchar('\n');
}
}
return 0;
}
练习4-19
#include <stdio.h>
int main()
{
int n = 0;
printf("整数值:");
scanf("%d", &n);
int i = 0;
int count = 0;
for (i = 1; i <= n; i++)
{
if (n % i == 0)
{
printf("%d\n", i);
count++;
}
}
printf("约数有%d个。", count);
return 0;
}
练习4-20
#include<stdio.h>
int main()
{
int i = 0;
int j = 0;
printf(" |");
for (i = 1; i <= 9; i++)
{
printf("%3d", i);
}
putchar('\n');
for (i = 1; i <= 30; 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()
{
int height = 0;
printf("生成一个正方形\n");
printf("正方形有几层:");
scanf("%d", &height);
int i, j = 0;
for (i = 0; i < height; i++)
{
for (j = 0; j < height; j++)
{
putchar('*');
}
putchar('\n');
}
return 0;
}
练习4-22
#include <stdio.h>
int main()
{
int a, b = 0;
printf("让我们画一个长方形\n");
printf("一边:");
scanf("%d", &a);
printf("另一边:");
scanf("%d", &b);
int height = (a < b) ? a : b; //注意
int length = (a > b) ? a : b;
int i, j = 0;
for (i = 0; i < height; i++)
{
for (j = 0; j < length; j++)
{
putchar('*');
}
putchar('\n');
}
return 0;
}
练习4-23
//生成直角在左上方的等腰直角三角形
#include <stdio.h>
int main()
{
int len = 0;
puts("生成直角在左上方的等腰直角三角形。");
printf("短边:");
scanf("%d", &len);
int i, j = 0;
for (i = len; i > 0; i--)
{
for (j = 1; j <= i; j++)
putchar('*');
putchar('\n');
}
return 0;
}
//生成直角在右上方的等腰直角三角形
#include <stdio.h>
int main()
{
int len = 0;
puts("生成直角在右上方的等腰直角三角形。");
printf("短边:");
scanf("%d", &len);
int i, j = 0;
for (i = len; i > 0; i--)
{
for (j = 1; j <= len - i; j++)
putchar(' ');
for (j = 1; j <= i; j++)
putchar('*');
putchar('\n');
}
return 0;
}
练习4-24
#include <stdio.h>
int main()
{
int len = 0;
puts("让我们来画一个金字塔。");
printf("金字塔有几层:");
scanf("%d", &len);
int i, j = 0;
for (i = 1; i <= len; i++)
{
for (j = 0; j < len - i; j++)
{
putchar(' ');
}
for (j = 0; j < ((i - 1) * 2 + 1); j++)
{
putchar('*');
}
putchar('\n');
}
return 0;
}
练习4-25
#include <stdio.h>
int main()
{
int len = 0;
puts("让我们来画一个向下的金字塔");
printf("金字塔有几层:");
scanf("%d", &len);
int i, j = 0;
for (i = 1; i <= len; i++)
{
for (j = 0; j < i - 1; j++)
{
putchar(' ');
}
for (j = 0; j < (len - i) * 2 + 1; j++)
{
printf("%d", i % 10);
}
putchar('\n');
}
return 0;
}