第一节:do语句
练习4-1:代码清单3-9是判断所输入的整数符号的程序,请将其改写为可将输入显示这一过程循环任意次
#include <stdio.h>
int main()
{
int a;
int b;
do {
printf("请输入一个整数:");
scanf("%d", &a);
if (a == 0)
puts("该整数为0。");
else if (a > 0)
puts("该整数为正数。");
else
puts("该整数为负数。");
printf("要重复一次吗?【yes 0/No 1】:");
scanf("%d", &b);
} while (b == 0);
return 0;
}
练习4-2:编写一段程序,像下面这样读取两个整数的值,然后计算出它们之间所有整数的和
请输入两个整数。
整数A:37
整数B:28
大于等于28小于等于37的所有整数的和是:325
#include<stdio.h>
int main()
{
int a, b, c;
int sum = 0;
puts("请输入两个整数。");
printf("整数A:"); scanf("%d", &a);
printf("整数B:"); scanf("%d", &b);
c = a;
do
{
sum += c;
c--;
} while (c != b - 1);
printf("大于等于%d小于等于%d的所有整数的和是:%d", b, a, sum);
return 0;
}
第二节:while语句
练习4-3:对代码清单4-5中的程序进行修改,当输入的值为负数时不执行换行操作
#include<stdio.h>
int main()
{
int no;
printf("请输入一个正数.");
scanf("%d", &no);
while (no >= 0)
{
printf("%d ", no);
no--;
}
if (no < 0)
putchar('\n');
return 0;
}
练习4-4:对代码清单4-6进行修改,使其:
递减到1而非递减到0;
当输入的值小于0时,不进行换行;
#include<stdio.h>
int main()
{
int no;
printf("请输入一个正整数:");
scanf("%d", &no);
while (no >= 1)
{
printf("%d ", no--);
}
if (no < 0)
putchar('\n');
return 0;
}
练习4-5:对代码清单4-7的程序进行修改。
从1开始递增;
输入的值小于0时不换行;
#include<stdio.h>
int main()
{
int i, no;
printf("请输入一个正整数:");
scanf("%d", &no);
i = 1;
while (i <= no)
{
printf("%d ", i++);
}
if (no >= 0)
putchar('\n');
return 0;
}
练习4-6:编写一段程序,像下面按照升序显示出小于输入值的所有正偶数。
请输入一个整数:19
2 4 6 8 10 12 14 16 18
#include<stdio.h>
int main()
{
int a = 0;
int i = 1;
printf("请输入一个整数:");
scanf("%d", &a);
while (i < a )
{
if (i % 2 ==0)
{
printf("%d ", i);
}
i++;
}
return 0;
}
练习4-7:编写一段程序,像下面这样显示出小于输入的整数的所有2的乘方
请输入一个整数:19
2 4 8 16
#include<stdio.h>
int main()
{
int a = 0, i = 1;
printf("请输入一个正整数:");
scanf("%d", &a);
while (i < a)
{
if (i < 19 && i % 2 == 0)
{
printf("%d ", i);
}
i*=2;
}
return 0;
}
练习4-9:编写一段程序,交替显示+和-,总个数等于所输入的整数值。另外输入0以下的整数时,什么也不显示。
#include<stdio.h>
int main()
{
int i = 0, no = 0;
printf("请输入一个正整数:");
scanf("%d", &no);
while (i < no)
{
if (i % 2 == 0)
printf("+");
else
printf("-");
i++;
}
return 0;
}
练习4-10:编写一段程序,像下面一样练习显示 * 总个数等于输入数值的个数,当输入0以下的数值时什么也不显示
#include<stdio.h>
int main()
{
int i = 0, no = 0;
printf("请输入一个正整数:");
scanf("%d", &no);
while (i < no)
{
printf("*\n");
i++;
}
return 0;
}
练习4-11:编写代码,显示下方效果;
请输入一个正整数:1963
1963的逆向结果是3691
#include<stdio.h>
int main()
{
int i, j;
do
{
printf("请输入一个正整数:");
scanf("%d", &i);
if (i <= 0)
puts("请不要输入负数和0。");
} while (i <= 0);
j = i;
printf("%d逆向显示的结果是:", j);
while (j > 0)
{
printf("%d", j % 10);
j /= 10;
}
puts("。");
return 0;
}
练习4-12:读取一个整数,显示其位数。
请输入一个正整数:1963
1963的位数是:4
#include<stdio.h>
int main()
{
int a = 0, b = 0, c = 0;
printf("请输入一个正整数:");
scanf("%d", &a);
b = a;
while (b > 0)
{
b /= 10;
c++;
}
printf("%d的位数是%d", a, c);
return 0;
}
练习4-13:编写一段程序,求1到n的和。
#include<stdio.h>
int main()
{
int n=0,i=0,sum=0;
printf("请输入一个正整数:");
scanf("%d", &n);
for (i = 0; i <= n; i++)
{
sum += i;
}
printf("1到%d的和为:%d", n, sum);
return 0;
}
练习4-14:编写一段程序,像下面这样根据输入的整数,循环显示1234567890,显示的位数和输入的数值相同
请输入一个正整数:25
1234567890123456789012345
#include<stdio.h>
int main()
{
int i = 0, j = 0;
printf("请输入一个正整数:");
scanf("%d", &i);
for (j = 1; j <= i; j++)
{
printf("%d", j%10);
}
return 0;
}
练习4-15:像下面一样显示身高和标准体重的对照表。显示的身高范围和间隔由输入的整数值进行控制,标准体重精准到小数点后两位。
开始数值(cm):155
结束数值(cm):190
间隔数值(cm):4
150cm 49.50kg
160cm 54.00kg
........(以下省略).........
#include<stdio.h>
int main()
{
int begin = 0;
int end = 0;
int interval = 0;
int i = 0 , j=0;
printf("开始数值(cm):"); scanf("%d", &begin);
printf("结束数值(cm):"); scanf("%d", &end);
printf("间隔数值(cm):"); scanf("%d", &interval);
j = begin;
for (i = 0; i <= (end - j) / interval; i++)
{
printf("%dcm %.2fkg\n", begin, (begin - 100) * 0.9);
begin += interval;
}
return 0;
}
练习4-16:编写一段程序,输入一个整数值,显示该整数值以下所有奇数
整数值:15
1 3 5 7 9 11 13 15*
#include<stdio.h>
int main()
{
int a = 0, i = 1;
printf("请输入一个整数值:");
scanf("%d", &a);
while (i <= a)
{
printf("%d ", i);
i+=2;
}
return 0;
}
练习4-17:编写一段程序,像下面这样显示1~n的整数值的二次方。
n的值:3
1的二次方是:1
2的二次方是:4
#include<stdio.h>
int main()
{
int n = 0, i = 0;
printf("n的值为:"); scanf("%d", &n);
for (i = 1; i < n; i++)
{
printf("%d的二次方是:%d\n", i, i * i);
}
i++;
return 0;
}
练习4-18:编写一段程序,显示 * 每五个就进行一次换行,数字为几显示多少个。
#include<stdio.h>
int main()
{
int i = 0, j = 0;
printf("整数值:");
scanf("%d", &j);
for (i = 1; i <= j; i++)
{
printf("*");
if (i % 5 == 0)
putchar('\n');
}
return 0;
}
练习4-19:对代码清单4-15进行修改,在显示所有约数后显示约数个数
整数值:4
1
2
4
约数有:3个
#include<stdio.h>
int main(void)
{
int i = 0, n = 0, m = 0;
printf("整数值:");
scanf("%d", &n);
for (i = 1; i <= n; i++)
if (n % i == 0)
{
printf("%d ", i);
printf("\n");
m++;
}
printf("约数有%d个。", m);
return 0;
}