《明解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("是否继续,继续请输入0,否则输入其他退出:");
		scanf("%d", &retry);
	} while (retry == 0);
	
	return 0;
}

练习4-2

#include <stdio.h>
int main()
{
    int a,b;
    int sum = 0;
    int x;
    
    puts("请输入两个整数。");
    printf("整数a:"); scanf("%d", &a);
    printf("整数b:"); scanf("%d", &b);
    x=a;
    
    do{
       sum+=x;
       x--;
    } while (x!=b-1);
 
    printf("大于等于%d小于等于%d的所有整数的和是%d",b,a,sum);
    
    return 0;
}
//方法2
int main()
{
	int a = 0, b = 0, sum = 0;
	puts("请输入两个整数");
	printf("整数a:"); scanf("%d", &a);
	printf("整数b:"); scanf("%d", &b);
	if (a > b)     //始终是左大右小
	{
		int c = a;
		a = b;
		b = c;
	}
	do
	{
		sum += a;
		a++;
	} while (a <= b);
	printf("大于等于%d小于等于%d的所有整数的和是%d", a, b, sum);
	return 0;
}

 练习4-3

#include<stdio.h>
int main()
{
	int a = 0;
	printf("请输入一个正整数:");
	scanf("%d", &a);
	while (a>=0)
	{
		printf("%d", a);
		a--;
	}
	if(a>=0)
		printf("\n");
	
	return 0;
} 

 练习4-4

#include <stdio.h>
int main(void)
{
    int no;
 
    printf("请输入一个正整数:");
    scanf("%d", &no);
 
   while (no >= 1){
        printf("%d ", no--);    /* no的值在显示之后递减 */
	}
    if (no >= 1) {
        printf("\n");
    }                /* 换行 */
 
     return 0;
}

练习4-5

#include <stdio.h>
int main(void)
{
    int i=1, no;
 
    printf("请输入一个正整数:");
    scanf("%d", &no);
 
    while (i <= no){
        printf("%d ", i++);        /* i的值在显示之后递增 */
	}
    if (no >= 0) {
        printf("\n");
    }                /* 换行 */
 
    return 0;
}

练习4-6

#include <stdio.h>
int main(void)
{
    int no;
    int i=1;
 
    printf("请输入一个正整数:");
    scanf("%d", &no);
 
    while (i < no) {
        if ((i % 2)==0) {
            printf("%d ", i);
        }
        i++;
    }
    
    return 0;
}

练习4-7

#include <stdio.h>
int main(void)
{
    int n1, n2=2;

    printf("请输入一个整数:");
    scanf("%d", &n1);


    while (n2 < n1) {
        printf("%d ", n2);
        n2 *= 2;
    }
    putchar('\n');

    return 0;
}

 练习4-8

#include <stdio.h>
int main(void)
{
	int no;

	printf("正整数");
	scanf("%d", &no);

   while (no-- > 0) {
	   putchar('*');
   }
	if (no >= 0)
		putchar('\n');

   return 0;
}

练习4-9

#include<stdio.h>
int main()
{
	int a = 0, i = 0;
	printf("正整数:");
	scanf("%d", &a);
	while (i < a)
	{
		if (a % 2 != 0)
		{
			printf("+");
			a--;
     	 }
		else
		{
			printf("-");
			a--;
		}
	}
	return 0;
}

 练习4-10

#include <stdio.h>

int main(void)
{
  int no;
  printf("正整数:");
  scanf("%d", &no);
  while (no-- > 0) {
    putchar('*');
    putchar('\n');
    }
    return 0;

}

练习4-11

#include <stdio.h>

int main(void)
{
    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;                    /* 右移一位 */
    }
 
    return 0;
}

练习4-12

#include <stdio.h>
int main(void)
{
    int no;
	int x;
	int i=0;

    printf("请输入一个正整数:");
    scanf("%d", &no);
    x = no;
    while (no>0)
   {
	no/=10;
	i++;
   }
    printf("%d的位数是%d", x,i);
    return 0;
}

 练习4-13

#include <stdio.h>

int main(void)
{
    int n;
    int i;
    int sum = 0;
   
    printf("n的值:");
    scanf("%d", &n);
    for (i = 0; i <= n; i++) {
        sum += i;
    }
    printf("1到%d的和为%d", i-1, sum);
	
    return 0; 
 }

 练习4-14

#include <stdio.h>

/* int main(void)
{
    int no;
    int i;
    printf("请输入一个整数:");
    scanf("%d", &no);
    for (i = 1; i <=no; i++) {
        printf("%d",i%10);

    }
    return 0;     
} */
int main()
{
	int i=1,j;
	puts("请输入一个正整数");
	
	do
	{
		printf("j = ");
		scanf("%d",&j);
		if(j <= 0){
			puts("请输入一个正整数");
		}
	}while(j <= 0);
	
	for (i = 1; i <= j; i++) {
	printf("%d",i%10);

    }
	
	return 0;
}

 练习4-15

 
#include <stdio.h>

int main(void)
{
    int begin;
    int final;
    int interval;

    printf("开始数值(cm):");
    scanf("%d", &begin);
    printf("结束数值(cm):");
    scanf("%d", &final);
    printf("间隔数值(cm):");
    scanf("%d", &interval);
    
	int i;
	int x = begin;

    for (i = 0; i <=(final - x) / interval; i++) {
        printf("%dcm\t%.2fkg", begin, (begin - 100) * 0.9);
        putchar('\n');
        begin += interval;
    }
	return 0;
}

练习4-16

#include <stdio.h>
/* int main(void)
{
  int no;
  int i;
  printf("整数值:");
  scanf("%d", &no);
  putchar('\n');
  for (i = 1; i <=no; i += 2) {
       printf("%d ", i);
    }
	return 0;
} */

int main()
{
	int i;
	puts("请输入一个正整数");
	
	do{
		printf("i = ");
		scanf("%d",&i);
		if(i <= 0){
		puts("请输入一个正整数");
		}
	}while(i <= 0);
	
	for ( ;i >= 1;i--) {
		if(i%2 == 1)
		printf("%d ",i);
    }
	return 0;
}

练习4-17

#include <stdio.h>
 
int main(void)
{
   int n;
   printf("n的值是:");
   scanf("%d",&n);
   int i;
   for (i = 1; i <= n; i++) {
	   printf("%d的二次方是%d",i,i*i);
	   putchar('\n');
	}
	return 0;
}

练习4-18

#include <stdio.h>

int main(void)
{
    int n;
    printf("显示多少个*:");
    scanf("%d",&n);
    int i;
    for (i = 1; i <= n; i++) {
        putchar('*');
        if (i % 5 == 0) {
            putchar('\n');
           }
        }
	return 0;	 
}

 练习4-19

#include <stdio.h>
 
int main(void)
{
    int i, n;
    int m = 0;
    
    printf("整数值:");
    scanf("%d", &n);

    for (i = 1; i <= n; i++)
	{
		if (n % i == 0)
		{
			printf("%d ", i);
			putchar('\n');
			m++;
		}
    }
    printf("约数有%d个。", m);
    return 0;
}

 练习4-20 

#include <stdio.h>
int main(void)
{
    int i, j;
    printf("  |");
    for (i = 1; i <= 9; i++)
    {
        printf("%3d", i);
    }
    putchar('\n');
    puts("------------------------------");
    
    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 height;
    int i, j;
    printf("生成一个正方形\n");
    printf("正方形有几层:");
    scanf("%d", &height);
    for (i = 0; i < height; i++) {

        for (j = 0; j < height; j++) {
            putchar('*');

        }
        putchar('\n');
    }
}

练习4-22

#include <stdio.h>

int main(void)
{
    int a,b;
    int i, j;
    int height;
    int length;
    printf("让我们画一个长方形\n");
    printf("一边:");
    scanf("%d", &a);
    printf("另一边:");
    scanf("%d", &b);
    length = (a > b) ? a : b;
    height = (a < b) ? a : b;
    for (i = 0; i < height; i++) {

        for (j = 0; j < length; j++) {
            putchar('*');

        }
        putchar('\n');
    }
}

练习4-23

#include <stdio.h>

int main(void)
{
    int i, j, len;

    puts("生成直角在左上方的等腰直角三角形。");
    printf("短边:");
    scanf("%d", &len);

    for (i = len; i >= 0; i--) {        //i 行(i = 1, 2, --- , len)
        for (j = 1; j <= i; j++)        // 每行显示i 个'*'
            putchar('*');
        putchar('\n');                    //换行 
    }

    return 0;
}


//


#include <stdio.h>

int main(void)
{
    int i, j, len;

    puts("生成直角在右上方的等腰直角三角形。");
    printf("短边:");
    scanf("%d", &len);

    for (i = len; i >=0; i--) {        //i 行(i = 1, 2, --- , len) 
        for (j = 1; j <= len - i; j++)    // 每行显示len-i 个' ' 
            putchar(' ');
        for (j = 1; j <= i; j++)        // 每行显示i 个'*' 
            putchar('*');
        putchar('\n');                    // 换行 
    }

    return 0;
}

练习4-24

 #include <stdio.h>
int main()
 {
	int a,i,j;
	puts("请输入一个正整数");
	scanf("%d",&a);
	for(i=0;i<=a;i++)
	{
		for(j=0;j<a-i;j++)
		{
			printf(" ");
		}
		for(j=0;j<2*i-1;j++)
		{
			printf("*");
		}
		printf("\n");
	}
	
	return 0;
 }

练习4-25

#include <stdio.h>

int main()
{
    int i,j,len;
	
    printf("金字塔有几层:");
    scanf("%d", &len);
    for (i = 1; i <= len; i++) {
        for (j = 0; j < i - 1; j++)
        {
            printf(" ");
        }
        for (j = 0; j < (len - i) * 2 + 1; j++) {
            printf("%d", i%10);
        }    

        putchar('\n');

     }

}

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
明解C语言入门篇第四章主要介绍了金字塔的练习。其中练习4-24是输入一个整数,然后根据输入的整数层数,画出一个金字塔形状。代码使用了嵌套循环,外层循环控制金字塔的层数,内层循环控制每一层的输出。具体实现是通过在内层循环中打印空格,然后在另一个内层循环中打印星号来实现金字塔形状的输出。 练习4-25是画一个向下的金字塔,也是根据输入的整数层数来绘制金字塔形状。不同于练习4-24,这个金字塔是倒置的,即顶部是最宽的一层,底部是最窄的一层。代码使用了嵌套循环,外层循环控制金字塔的层数,内层循环控制每一层的输出。具体实现是通过在内层循环中打印空格,然后在另一个内层循环中打印数字来实现金字塔形状的输出。 练习4-6是输入一个整数,然后输出从2到输入整数之间的所有偶数。代码使用了while循环,通过判断每个数是否能被2整除来确定是否为偶数,并将偶数打印出来。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [明解C语言入门篇第四章](https://blog.csdn.net/a237664181a/article/details/88848022)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

漏洞嵌入式

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值