明解C语言 入门篇 第四章练习题
4-1
#include <stdio.h>
int main()
{
int retry;
do {
int no;
printf("请输入一个整数:");
scanf("%d",&no);
if (no == 0)
puts("该整数为0。");
else if (no > 0)
puts("该整数为正数。");
else
puts("该整数为负数。");
printf("是否继续?【YES···1/NO···0】");
scanf("%d",&retry);
}while (retry == 1);
return 0;
}
PS:注意C语言中int类型的长度,此处在测试时因输入了大于int类型范围的数,导致输出出错。
4-2
#include <stdio.h>
int main()
{
int h1, h2;
puts("请输入两个整数。");
printf("整数a:"); scanf("%d",&h1);
printf("整数b:"); scanf("%d",&h2);
int big, small;
if (h1 > h2)
{
big = h1;
small = h2;
} else{
big = h2;
small = h1;
}
printf("大于等于%d小于等于%d的所有整数的和是",small,big);
int sum;
do {
sum += small;
small++;
}while (small <= big);
printf("%d。",sum);
return 0;
}
4-3
#include <stdio.h>
int main()
{
int no, num;
num = 0;
printf("请输入一个正整数:");
scanf("%d",&no);
while (no >= 0)
{
printf("%d ",no);
no--;
num++;
}
if (num != 0)
{
printf("\n");
}
return 0;
}
4-4
#include <stdio.h>
int main()
{
int no;
printf("请输入一个正整数:");
scanf("%d",&no);
while (no > 0){
printf("%d ",no--);
}
if (no == 0)
{
printf("\n");
}
return 0;
}
4-5
#include <stdio.h>
int main()
{
int i, no;
printf("请输入一个正整数:");
scanf("%d",&no);
i = 1;
while (i <= no){
printf("%d ",i++);
}
if (no >= 0)
{
printf("\n");
}
return 0;
}
4-6
#include <stdio.h>
int main()
{
int i, no;
printf("请输入一个正整数:");
scanf("%d",&no);
i = 0;
while (i+2 < no){
i += 2;
printf("%d ",i);
}
printf("\n");
return 0;
}
4-7
#include <stdio.h>
int main()
{
int no, i;
printf("请输入一个整数:");
scanf("%d",&no);
i = 2;
while (i < no){
printf("%d ",i);
i *=2;
}
return 0;
}
4-8
#include <stdio.h>
int main()
{
int no, num;
num = 0;
printf("正整数:");
scanf("%d",&no);
while (no-- > 0){
putchar('*');
num++;
}
if (num != 0)
{
putchar('\n');
}
return 0;
}
4-9
#include <stdio.h>
int main()
{
int no, i;
i = 0;
printf("正整数:");
scanf("%d",&no);
while (i++ < no){
if (i % 2)
{
putchar('+');
} else{
putchar('-');
}
}
return 0;
}
4-10
#include <stdio.h>
int main()
{
int no;
int i = 0;
printf("正整数:");
scanf("%d",&no);
while (i++ < no){
printf("*\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);
printf("%d逆向显示的结果是",no);
while (no > 0){
printf("%d",no % 10);
no /= 10;
}
puts("。");
return 0;
}
4-12
#include <stdio.h>
int main()
{
int no, num;
num = 0;
do {
printf("请输入一个正整数:");
scanf("%d",&no);
if (no <= 0)
{
puts("\a请不要输入非正整数!");
}
}while (no <= 0);
printf("%d的位数是",no);
while (no > 0){
num++;
no /= 10;
}
printf("%d。",num);
return 0;
}
4-13
#include <stdio.h>
int main()
{
int n, i, sum;
sum = 0;
printf("n的值:");
scanf("%d",&n);
for (i = 1;i <= n;i++)
{
sum += i;
}
printf("1到%d的和为%d。",n,sum);
return 0;
}
4-14
#include <stdio.h>
int main()
{
int no,i;
printf("请输入一个整数:");
scanf("%d",&no);
for (i = 1;i <= no;i++)
{
printf("%d",i % 10);
}
return 0;
}
4-15
#include <stdio.h>
int main()
{
int h1, h2, i;
double weight;
printf("开始数值(cm):"); scanf("%d",&h1);
printf("结束数值(cm):"); scanf("%d",&h2);
printf("间隔数值(cm):"); scanf("%d",&i);
for (;h1 <= h2;h1 += i)
{
weight = (h1 - 80) * 0.7;
printf("%dcm %.2fkg\n",h1,weight);
}
return 0;
}
4-16
#include <stdio.h>
int main()
{
int no;
printf("整数值:");
scanf("%d",&no);
for (int i = 1;i <= no;i++) {
if (i % 2) {
printf("%d ", i);
}
}
return 0;
}
4-17
#include <stdio.h>
int main()
{
int n, i;
printf("n的值:");
scanf("%d",&n);
for (i = 1;i <= n;i++)
{
printf("%d的二次方是%d。\n",i,i*i);
}
return 0;
}
4-18
#include <stdio.h>
int main()
{
int num, i;
printf("显示多少个*:");
scanf("%d",&num);
for (i = 1;i <= num;i++)
{
putchar('*');
if (i % 5 ==0)
{
putchar('\n');
}
}
return 0;
}
4-19
#include <stdio.h>
int main()
{
int n, i;
int num = 0;
printf("整数值:");
scanf("%d",&n);
for (i = 1;i <= n;i++)
{
if (n % i == 0)
{
printf("%d\n", i);
num++;
}
}
printf("约数有%d个。",num);
putchar('\n');
return 0;
}
4-20
#include <stdio.h>
int main()
{
int i, j;
printf(" |");
for (int a = 1;a <= 9;a++)
{
printf("%3d",a);
}
putchar('\n');
printf("-------------------------------\n");
for (i = 1;i <= 9;i++)
{
printf("%2d |",i);
for (j = 1;j <= 9;j++)
{
printf("%3d",i*j);
}
putchar('\n');
}
return 0;
}
4-21
#include <stdio.h>
int main()
{
int i, j, len;
puts("生成一个正方形。");
printf("正方形有几层:");
scanf("%d",&len);
for (i = 1 ;i <= len ;i ++)
{
for (j = 1 ;j <= len;j ++)
{
putchar('*');
}
putchar('\n');
}
return 0;
}
4-22
#include <stdio.h>
int main()
{
int i, j;
int width, height, a;
puts("让我们来画一个长方形。");
printf("一边:"); scanf("%d",&height);
printf("另一边:"); scanf("%d",&width);
if (height > width)
{
a = width;
width = height;
height = a;
}
for (i =1;i <= height;i++)
{
for (j = 1;j <= width;j++)
{
putchar('*');
}
putchar('\n');
}
return 0;
}
4-23
/*直角在左上角 */
#include <stdio.h>
int main()
{
int i, j, len;
puts("生成直角在左上方的等腰直角三角形。");
printf("短边:"); scanf("%d",&len);
for (i =1;i <= len;i++)
{
for (j = 1;j <= len - i + 1;j++)
{
putchar('*');
}
putchar('\n');
}
return 0;
}
/*直角在右上角 */
#include <stdio.h>
int main()
{
int i, j, len;
puts("生成直角在右上方的等腰直角三角形。");
printf("短边:"); scanf("%d",&len);
for (i =1;i <= len;i++)
{
for (j = 1;j <= i - 1;j++)
{
putchar(' ');
}
for (j = 1;j <= len - i + 1;j++)
{
putchar('*');
}
putchar('\n');
}
return 0;
}
4-24
#include <stdio.h>
int main()
{
int blank, star, i;
int j;
puts("让我们来画一个金字塔。");
printf("金字塔有几层:");
scanf("%d",&i);
for (j = 1;j <= i;j ++)
{
for (blank = 1;blank <= i - j;blank ++)
{
putchar(' ');
}
for (star = 1;star <= (j - 1) * 2 + 1;star ++)
{
putchar('*');
}
putchar('\n');
}
return 0;
}
4-25
#include <stdio.h>
int main()
{
int blank, star, i;
int j;
puts("让我们来画一个金字塔。");
printf("金字塔有几层:");
scanf("%d",&i);
for (j = 1;j <= i;j ++)
{
for (blank = 1;blank <= j - 1;blank ++)
{
putchar(' ');
}
for (star = 1;star <= (i - j) * 2 + 1;star ++)
{
printf("%d",j % 10);
}
putchar('\n');
}
return 0;
}
版权声明:本文为qq_44841196原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。