《明解C语言》笔记及课后习题答案 【第四章】

C语言 专栏收录该内容
12 篇文章 0 订阅

练习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('+');
		else
			putchar('-');
		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循环语句:

        








  • 16
    点赞
  • 5
    评论
  • 30
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值