C语言程序设计(第4版)第2章 用C语言编写程序

练习
2-1 输出语句(Programming in C is fun!):在屏幕上显示一个语句"Programming in C is fun!"。编写程序。

代码如下:

/*"显示Programming in C is fun!"*/
#include <stdio.h>
int main(void)
{
   printf("Programming in C is fun!\n");
   return 0;
}

运行结果:

2-2 下列语句的运行结果是什么?与例2-2的运行结果有何不同?为啥?

printf("Programming is fun.And programming in C is even more fun!\n");

答:运行结果:Programming is fun.And Programming in C is even more fun!

不同:例2-2在屏幕上显示两个短句”Programming is fun.”和“And programming in C is even more fun!”,每行显示一句,程序中用了两条语句。练习2-2在屏幕上显示两个短句”Programming is fun.”和“And programming in C is even more fun!”,每行显示两句,程序中用了一条语句。

原因:练习2-2的程序中两个短句之间不会换行。

P19 换行符 \n 

2-3 输出倒三角图案,编写程序。

代码如下:

/*显示倒三角图形*/
#include <stdio.h>
int main(void)
{
   printf("* * * *\n");
   printf(" * * *\n");
   printf("  * *\n");
   printf("   *\n");
   return 0;
}

或者

/*显示倒三角图形*/
#include <stdio.h>
int main(void)
{
   printf("* * * *\n * * * \n   * *  \n    *   ");
   return 0;
}

2-4 温度转换:求华氏温度150℉对应的摄氏温度。编写程序。

代码如下:

/*将华氏温度转换为摄氏温度*/
#include <stdio.h>
int main(void)
{
   int celsius,fahr;
   fahr=150;
   celsius=5*(fahr-32)/9;
   printf("fahr=%d,celsius=%d\n",fahr,celsius);
   return 0;
}

运行结果:

2-5 算术表达式5*(fahr-32)/9能改写成5(fahr-32)/9吗?为啥?如果将其改写为5/9*(fahr-32),会影响运算结果吗?

答:不能,因为5(fahr-32)/9不是合法的C语言表达式,不能省略运算符*,5/9*(fahr-32)的运算结果为0。

2-6 计算物体自由下落的距离:一个物体从100米的高空自由落下,求它在前3秒内下落的垂直距离。设重力加速度为10㎨。编写程序。

代码如下:

/*计算物体自由下落的距离*/
#include <stdio.h>
int main(void)
{
   int g,t,h;
   g=10;
   t=3;
   h=0.5*g*t*t;
   printf("h=%d\n",h);
   return 0;
}

运行结果: 

2-7 输入提示和输入语句的顺序应该如何安排?例2-5中,scanf(“%lf%lf%d”,&initial,&factor,&day)能改写为scanf(“%lf%d%lf”,&initial,&factor,&day)吗?为啥?能改写为scanf(“%lf%d%lf”,&initial,&day,&factor)吗?如果可以,其对应的输入数据是什么?

答:输入提示在前,输入语句在后。

不能,输入参数的类型要与格式控制说明中一一对应。%lf与int型变量day不匹配,%d与double型变量factor不匹配。

可以,对应的输入数据是:1.0 365 0.01。

2-8 计算摄氏温度:输入华氏温度,输出对应的摄氏温度,计算公式同例2-3。编写程序。

代码如下:

/*将华氏温度转换为摄氏温度*/
#include <stdio.h>
int main(void)
{
   /*定义两个整型变量,celsius表示摄氏度,fahr表示华氏度*/
   int celsius,fahr;
   fahr=71;
   celsius=5*(fahr-32)/9;
   printf("fahr=%d,celsius=%d\n",fahr,celsius);
   return 0;
}

运行结果:

2-9 整数四则运算:输入2个正整数,计算并输出它们的和、差、积、商。编写程序。

代码如下:

/*整数四则运算*/
#include<stdio.h>
int main(void)
{
   int a,b;
   printf("Enter a&b:");
   scanf("%d%d",&a,&b);
   printf("%d+%d=%d\n",a,b,a+b);
   printf("%d-%d=%d\n",a,b,a-b);
   printf("%d*%d=%d\n",a,b,a*b);
   printf("%d/%d=%d\n",a,b,a/b);
   return 0;
}

运行结果:

2-10 计算分段函数(判断x是否不为0):输入x,计算并输出下列分段函数f(x)的值(保留1位小数)。编写程序。

y= f(x)= \left\{\begin{matrix} \frac{1}{x} &x\neq 0 \\ 0& x= 0 \end{matrix}\right.

代码如下:

#include <stdio.h>
int main (void)
{
    double x,y;
    printf("Enter x:");
    scanf("%lf",&x);
    if(x!=0)
        y=1/x;
    else
        y=0;
    printf("%.1f",y);
    return 0;
}

或者

#include <stdio.h>
int main (void)
{
    float x,y;
    printf("Enter x:");
    scanf("%f",&x);
    if(x!=0)
        y=1/x;
    else
        y=0;
    printf("%.1f",y);
    return 0;
}

运行结果:

2-11 计算分段函数(判断x是否小于0):输入x,计算并输出下列分段函数f(x)的值(保留2位小数)。可包含头文件math.h,并调用sqrt()函数求平方根,调用pow()函数求幂。编写程序。

y=f(x)=\left\{\begin{matrix} (x+1)^{2}+2x+\frac{1}{x} &x< 0 \\ \sqrt{x}& x\geq 0 \end{matrix}\right.

代码如下:

#include <stdio.h>
#include <math.h>
int main (void)
{
    double x,y;
    printf("Enter x:");
    scanf("%lf",&x);
    if(x<0)
        y=pow(x+1,2)+2*x+1/x;
    else
        y=sqrt(x);
    printf("%.2f",y);
    return 0;
}

或者

#include <stdio.h>
#include <math.h>
int main (void)
{
    float x,y;
    printf("Enter x:");
    scanf("%f",&x);
    if(x<0)
        y=pow(x+1,2)+2*x+1/x;
    else
        y=sqrt(x);
    printf("%.2f",y);
    return 0;
}

运行结果:

P28 常用数学函数

2-12 输入华氏-摄氏温度转换表:输入两个整数lower和upper,输出一张华氏-摄氏温度转换表,华氏温度的取值范围是[lower,upper],每次增加2℉,计算公式同例2-6。编写程序。

代码如下:

#include <stdio.h>
int main (void)
{   int fahr, lower, upper;
    double celsius;
    printf("Enter lower:");
    scanf("%d", &lower);
    printf("Enter upper:");
    scanf("%d", &upper);
    if(lower<=upper){
         printf("fahr celsius\n");
         for(fahr=lower;fahr<=upper;fahr=fahr+2){
             celsius=(5.0/9.0)*(fahr-32);
             printf("%4d%6.1f\n",fahr,celsius);
         }
    }else{
         printf("Invalid Value!\n");
    }
    return 0;
}

运行结果:

2-13 求给定序列前n项和(1+1/2+1/3+…):输入一个正整数n,计算序列1+1/2+1/3+…的前n项之和。编写程序。

代码如下:

#include <stdio.h>
int main (void)
{
    int i,n;
    double sum;
    printf("Enter n:");
    scanf("%d",&n);
    sum=0;
    for(i=1;i<=n;i++){
        sum=sum+1.0/i;
    }
    printf("sum=%f\n",sum);
    return 0;
}

运行结果:

2-14 求给定序列前n项和(1+1/3+1/5+…):输入一个正整数n,计算序列1+1/3+1/5+…的前n项之和。编写程序。

代码如下:

#include <stdio.h>
int main (void)
{
    int i,n;
    double sum;
    printf("Enter n:");
    scanf("%d",&n);
    sum=0;
    for(i=1;i<=n;i++){
        sum=sum+1.0/(2*i-1);
    }
    printf("sum=%f\n",sum);
    return 0;
}

或者

#include <stdio.h>
int main(void)
{
   int denominator,i,n;
   double item,sum;
   printf("Enter n:");
   scanf("%d",&n);
   denominator=1;
   item=1;
   sum=0;
   for(i=1;i<=n;i++)
   {
       sum=sum+item;
       denominator=denominator+2;
       item=1.0/denominator;
   }
   printf("sum=%f\n",sum);
   return 0;
}

运行结果:

2-15 求给定序列前n项和(1-1/4+1/7-1/10…):输入一个正整数n,计算序列1-1/4+1/7-1/10+1/13-1/16…的前n项之和。编写程序。

代码如下:

#include <stdio.h>
int main(void)
{
    int denominator,flag,i,n;
    double item,sum;
    printf("Enter n: ");
    scanf("%d",&n);
	flag=1;                        /*flag表示第i项的符号,初始为正*/
    denominator=1;                 /*denominator表示第i项的分母,初值为1*/
    item=1;
	sum=0;
    for(i=1;i<=n;i++){
        sum=sum+item ;
        flag=-flag;
        denominator=denominator+3;
	    item=flag*1.0/denominator;
    }
	printf("sum=%f\n",sum);
    return 0;
}

运行结果:

2-16 执行下列程序段后,sum的值是多少
for(i=1;i<=10;i++){
        sum=0;
        sum=sum+i;
    }

代码如下:

#include <stdio.h>
int main (void)
{
    int i,sum;
    for(i=1;i<=10;i++){
        sum=0;
        sum=sum+i;
    }
    printf("sum=%d\n",sum);
    return 0;
}

运行结果:

2-17 生成3的乘方表:输入一个正整数n,生成一张3的乘方表,输出3^0到3^n的值。可包含头文件math.h,并调用幂函数计算3的乘方。编写程序。

代码如下:

# include <stdio.h>
# include <math.h>
int main (void)
{
    int i,n;
    double power;
    printf("Enter n:");
    scanf("%d",&n);
    for (i=0;i<=n;i++){
        power=pow(2,i);  /* 调用幂函数pow(3,i)计算3的i次方 */
        printf("pow(3,%d)=%.0f\n",i,power);
    }
   return 0;
}

运行结果:

2-18 求组合数:根据下列公式可以算出从n个不同元素中取出m个元素(m<=n)的组合数。输入两个正整数m和n(m<=n),计算并输出组合数。要求定义和调用函数fact(n)计算n!,函数类型是double。编写程序。

c_{n}^{m}= \frac{n!}{m!(n-m)!}

代码如下:

# include <stdio.h>
double fact(int n);  /* 自定义函数的声明 */
int main (void)
{
    int m,n;
    double result;
    printf("Enter m&n:");
    scanf("%d%d",&m,&n);
    result=fact(n)/(fact(m)*fact(n-m));
    printf("result=%.0f\n",result);
    return 0;
}
double fact(int n)        /* 函数首部,无需分号 */
{
    int i;
    double product;
    product=1;
    for(i=1;i<=n;i++){
        product=product*i;
   }
    return product;  /* 将结果回送主函数 */
}

运行结果:

  • 13
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
完整:https://download.csdn.net/download/qq_27595745/89522468 【课程大纲】 1-1 什么是java 1-2 认识java语言 1-3 java平台的体系结构 1-4 java SE环境安装和配置 2-1 java程序简介 2-2 计算机中的程序 2-3 java程序 2-4 java类库组织结构和文档 2-5 java虚拟机简介 2-6 java的垃圾回收器 2-7 java上机练习 3-1 java语言基础入门 3-2 数据的分类 3-3 标识符、关键字和常量 3-4 运算符 3-5 表达式 3-6 顺序结构和选择结构 3-7 循环语句 3-8 跳转语句 3-9 MyEclipse工具介绍 3-10 java基础知识节练习 4-1 一维数组 4-2 数组应用 4-3 多维数组 4-4 排序算法 4-5 增强for循环 4-6 数组和排序算法节练习 5-0 抽象和封装 5-1 面向过程的设计思想 5-2 面向对象的设计思想 5-3 抽象 5-4 封装 5-5 属性 5-6 方法的定义 5-7 this关键字 5-8 javaBean 5-9 包 package 5-10 抽象和封装节练习 6-0 继承和多态 6-1 继承 6-2 object类 6-3 多态 6-4 访问修饰符 6-5 static修饰符 6-6 final修饰符 6-7 abstract修饰符 6-8 接口 6-9 继承和多态 节练习 7-1 面向对象的分析与设计简介 7-2 对象模型建立 7-3 类之间的关系 7-4 软件的可维护与复用设计原则 7-5 面向对象的设计与分析 节练习 8-1 内部类与包装器 8-2 对象包装器 8-3 装箱和拆箱 8-4 练习题 9-1 常用类介绍 9-2 StringBuffer和String Builder类 9-3 Rintime类的使用 9-4 日期类简介 9-5 java程序国际化的实现 9-6 Random类和Math类 9-7 枚举 9-8 练习题 10-1 java异常处理 10-2 认识异常 10-3 使用try和catch捕获异常 10-4 使用throw和throws引发异常 10-5 finally关键字 10-6 getMessage和printStackTrace方法 10-7 异常分类 10-8 自定义异常类 10-9 练习题 11-1 Java集合框架和泛型机制 11-2 Collection接口 11-3 Set接口实现类 11-4 List接口实现类 11-5 Map接口 11-6 Collections类 11-7 泛型概述 11-8 练习题 12-1 多线程 12-2 线程的生命周期 12-3 线程的调度和优先级 12-4 线程的同步 12-5 集合类的同步问题 12-6 用Timer类调度任务 12-7 练习题 13-1 Java IO 13-2 Java IO原理 13-3 流类的结构 13-4 文件流 13-5 缓冲流 13-6 转换流 13-7 数据流 13-8 打印流 13-9 对象流 13-10 随机存取文件流 13-11 zip文件流 13-12 练习题 14-1 图形用户界面设计 14-2 事件处理机制 14-3 AWT常用组件 14-4 swing简介 14-5 可视化开发swing组件 14-6 声音的播放和处理 14-7 2D图形的绘制 14-8 练习题 15-1 反射 15-2 使用Java反射机制 15-3 反射与动态代理 15-4 练习题 16-1 Java标注 16-2 JDK内置的基本标注类型 16-3 自定义标注类型 16-4 对标注进行标注 16-5 利用反射获取标注信息 16-6 练习题 17-1 顶目实战1-单机五子棋游戏 17-2 总体设计 17-3 代码实现 17-4 程序的运行与发布 17-5 手动生成可执行JAR文件 17-6 练习题 18-1 Java数据库编程 18-2 JDBC类和接口 18-3 JDBC操作SQL 18-4 JDBC基本示例 18-5 JDBC应用示例 18-6 练习题 19-1 。。。
完整:https://download.csdn.net/download/qq_27595745/89522468 【课程大纲】 1-1 什么是java 1-2 认识java语言 1-3 java平台的体系结构 1-4 java SE环境安装和配置 2-1 java程序简介 2-2 计算机中的程序 2-3 java程序 2-4 java类库组织结构和文档 2-5 java虚拟机简介 2-6 java的垃圾回收器 2-7 java上机练习 3-1 java语言基础入门 3-2 数据的分类 3-3 标识符、关键字和常量 3-4 运算符 3-5 表达式 3-6 顺序结构和选择结构 3-7 循环语句 3-8 跳转语句 3-9 MyEclipse工具介绍 3-10 java基础知识节练习 4-1 一维数组 4-2 数组应用 4-3 多维数组 4-4 排序算法 4-5 增强for循环 4-6 数组和排序算法节练习 5-0 抽象和封装 5-1 面向过程的设计思想 5-2 面向对象的设计思想 5-3 抽象 5-4 封装 5-5 属性 5-6 方法的定义 5-7 this关键字 5-8 javaBean 5-9 包 package 5-10 抽象和封装节练习 6-0 继承和多态 6-1 继承 6-2 object类 6-3 多态 6-4 访问修饰符 6-5 static修饰符 6-6 final修饰符 6-7 abstract修饰符 6-8 接口 6-9 继承和多态 节练习 7-1 面向对象的分析与设计简介 7-2 对象模型建立 7-3 类之间的关系 7-4 软件的可维护与复用设计原则 7-5 面向对象的设计与分析 节练习 8-1 内部类与包装器 8-2 对象包装器 8-3 装箱和拆箱 8-4 练习题 9-1 常用类介绍 9-2 StringBuffer和String Builder类 9-3 Rintime类的使用 9-4 日期类简介 9-5 java程序国际化的实现 9-6 Random类和Math类 9-7 枚举 9-8 练习题 10-1 java异常处理 10-2 认识异常 10-3 使用try和catch捕获异常 10-4 使用throw和throws引发异常 10-5 finally关键字 10-6 getMessage和printStackTrace方法 10-7 异常分类 10-8 自定义异常类 10-9 练习题 11-1 Java集合框架和泛型机制 11-2 Collection接口 11-3 Set接口实现类 11-4 List接口实现类 11-5 Map接口 11-6 Collections类 11-7 泛型概述 11-8 练习题 12-1 多线程 12-2 线程的生命周期 12-3 线程的调度和优先级 12-4 线程的同步 12-5 集合类的同步问题 12-6 用Timer类调度任务 12-7 练习题 13-1 Java IO 13-2 Java IO原理 13-3 流类的结构 13-4 文件流 13-5 缓冲流 13-6 转换流 13-7 数据流 13-8 打印流 13-9 对象流 13-10 随机存取文件流 13-11 zip文件流 13-12 练习题 14-1 图形用户界面设计 14-2 事件处理机制 14-3 AWT常用组件 14-4 swing简介 14-5 可视化开发swing组件 14-6 声音的播放和处理 14-7 2D图形的绘制 14-8 练习题 15-1 反射 15-2 使用Java反射机制 15-3 反射与动态代理 15-4 练习题 16-1 Java标注 16-2 JDK内置的基本标注类型 16-3 自定义标注类型 16-4 对标注进行标注 16-5 利用反射获取标注信息 16-6 练习题 17-1 顶目实战1-单机五子棋游戏 17-2 总体设计 17-3 代码实现 17-4 程序的运行与发布 17-5 手动生成可执行JAR文件 17-6 练习题 18-1 Java数据库编程 18-2 JDBC类和接口 18-3 JDBC操作SQL 18-4 JDBC基本示例 18-5 JDBC应用示例 18-6 练习题 19-1 。。。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值