文档章节

C Primer Plus 第6章 C控制语句 6.16 编程练习及答案

idreamo
 idreamo
发布于 2016/06/12 06:18
字数 2189
阅读 271
收藏 0

1、编写一个程序,创建一个具有26个元素的数组,并在其中存储26个小写字母。并让该程序显示该数组的内容。

#include 
int main (void)
{
    int i;
    int max=26;
    char CH[max];

    for(i=0;i

2、使用嵌套循环产生下列图案:

$

$$

$$$

$$$$

$$$$$


#include 
int main (void)
{
    int i,j;

    for(i=0;i<5;i++)
    {
        for (j=0;j<=i;j++)
            printf("$");
        printf("\n");
    }
    return 0;
}

3、使用嵌套循环产生下列图案:

F

FE

FED

FEDC

FEDCB

FEDCBA


#include 
int main (void)
{
    int i,j;
    char ch='F';

    for(i=0;i<6;i++)
    {
        for (j=0;j<=i;j++)
            printf("%C",ch-j);
        printf("\n");
    }
    return 0;
}

4、让程序要求用户输入一个大写字母,使用嵌套循环产生像下面这们的金字塔图案:

    A

   ABA

  ABCBA

 ABCDCDA

ABCDEDCBA

这种图案要扩展到用户输入的字符。例如前面的图案是在输入E时需要产生的。提示:使用一个外部循环来处理行,在每一行中使用三个内部循环,一个处理空格,一个以升序打印字母,一个以降序打印字母。

#include 
int main (void)
{
    int i,j,k;
    char letter;
 
    printf("Please input a capital:");
    scanf("%c",&letter);
    k=letter-'A'+1;                    //计算字符的个数;
    for(i=0;i=0;j--)            //第三个循环,降序打印字母(比升序时少1个字母)
        printf("%c",'A'+j);
        printf("\n");
    }    
return 0;
}
   

 5、编写一个程序打印一个表,表的每一行都给出一个整数、它的平方以及它的立方。要求用户输入表的上限和下限。使用一个for循环。

#include
int main (void)
{
    int i,min,max;
    printf("Please input the min and the max :");
    scanf("%d %d",&min,&max);
    printf("%10s%10s%10s\n","num","square","cube");
    for(i=min;i<=max;i++)
    {
        printf("%10d%10d%10d\n",i,i*i,i*i*i);
    }
    return 0;
}

6、编写一个程序把一个单词读入一个字符数组,然后反向打印这个词。提示:使用strlen()计算数组中最后一个字符的索引。

#include 
#include   //使用strlen()
int main (void)
{
    char word[20];
    int i;
    printf("Please input a word:");
    scanf("%s",&word);
    for(i=strlen(word)-1;i>=0;i--)  //最后一个字符的下标strlen(word)-1,word是数组名称
        printf("%c",word[i]);
    printf("\n");
    return 0;
}

7、编写一个程序要求输入两个浮点数,然后打印用两者的差值除以两者的乘积所得的结果。在用户键入非数字的输入之前程序循环处理每对输入值。

#include 
int main (void)
{
    float f1,f2;
    printf("Please input tow floats:");
    while(scanf("%f%f",&f1,&f2)==2)
    {
        printf("The result is %.2f\n",(f1-f2)/(f1*f2));
        printf("Please input tow floats:");
    }
    printf("end\n");
    return 0;
}

8、对练习7进行修改,让它使用一个函数来返回计算值。

#include 
float fac(float a,float b);
int main (void)
{
    float f1,f2;
    printf("Please input tow floats:");
    while(scanf("%f%f",&f1,&f2)==2)
    {
        printf("The result is %.2f\n",fac(f1,f2));
        printf("Please input tow floats:");
    }
    printf("end\n");
    return 0;
}
float fac(float a,float b)
{
    float c;
    c=(a-b)/(a*b);
    return c ;
}

9、编写一个程序,要求用户输入下限整数和一个上限整数,然后,依次计算从下限到上限的每一个整数的平方的加和,最后显示结果。程序将不断提示用户输入下限整数和上限整数并显示出方法,直到用户输入的上限整数等于或小于下限整数为止。程序运行结果示例应该如下所示

Enter lower and upper integer limits:5 9

The sums of the squares from 25 to 81 is 255

Enter next set of limits :3 25

The sums of the squares from 9 to 625 is 5520

Enter next set of limits :5 5 

Done

#include 
int fac(int a,int b);
int main (void)
{
    int n1,n2;
    printf("Enter lower and upper integer limits:");
    scanf("%d %d",&n1,&n2);
    while(n1

10、编写一个程序,把8个整数读入一个数组中,然后以相反的顺序打印它们;


#include 
int main (void)
{
    int abc[8];
    int i;
    printf("Please input 8 numbers:");
    for(i=0;i<8;i++)          //循环读取输入
    {
        scanf("%d",&abc[i]);
    }
    for(i=7;i>=0;i--)
    {
        printf("The %d is %d\n",i+1,abc[i]);
    }
    return 0;
}

11、考虑这两个无限序列:

1.0+1.0/2.0+1.0/3.0+1.0/4.0+......

1.0-1.0/2.0+1.0/3.0-1.0/4.0+......

编写一个程序来计算这两个序列不断变化的总和,直到达到 某个次数。让用户交互的输入这个次数。看看在20次、100次和500次之后 的总和。是否每个序列都看上去要收敛于某个值?提示:奇数个-1的乘积为-1,而偶数个-1的乘积为1。

#include

int main(void)
{
 double i,sum1,sum2;
 int sign,count;
 printf("Enter the count:");
 scanf("%d",&count);
 for(i=1.0,sign=1,sum1=0,sum2=0;i<=count;i++,sign *= -1)
 {
  sum1 += 1.0 / i;
  sum2 += sign * 1.0 / i;      //利用sign的变化规律,使运算符在正负间交替变化
 }
 printf("1.0 + 1.0/2.0 + 1.0/3.0 + 1.0/4.0 ...(%d terms) = %lf\n",count,sum1);
 printf("1.0 - 1.0/2.0 + 1.0/3.0 - 1.0/4.0 ...(%d terms) = %lf\n",count,sum2);
 printf("%d\n",sign);
 return(0);
}

 12、编写一个程序,创建一个8个元素的int数组,并且把元素分别设置为2的前8次幂,然后打印出它们的值。使用for循环来设置值;为了变化,使用do while来显示这些值。

#include
#include
int main(void)
{
    int num[8];
    int i;
    for (i=0;i<8;i++)
    {
        num[i]=pow(2,i);  //POW乘幂函数,利用math.h头文件
    }
    i=0;     //使用do while时需将i初始为0;
    do
        printf("%d\t",num[i]);
    while(++i<8);  //退出条件为++i<8
    return 0;
}
/*do while 至少为执行一次,检测退出条件是否满足,满足时返回再次执行,直到while的值为flase*/

13、编写一个程序,创建两个8元素的double数组,使用一个循环来让用户键入第一个数组的8个元素的值。程序把第二个数组的元素设置为第一个数组的元素的累积和。例如,第二个数组的第4个元素应该等于第一个数组 的前4个元素的和,第二个数组的第5个元素应该等于第一个数组的前5个元素的和(使用嵌套循环可以做到这一点。不过利用第二个数组的第5个元素等于第二个数组的第4个元素加上第一个数组的第5个元素这个事实,可以避免嵌套,而使用单个循环来完成这个任务)。最后,使用一个循环来显示这两个数组的内容,第一个数组在一行中显示 ,而第二个数组的每个元素在第一个数组的对应元素之下进行显示。

#include
int main(void)
{
    double num[8],sum[8];
    int i,j;
    printf("Please enter 8 numbers:");
    for(i=0;i<8;i++)    //在一个循环中为两个数组赋值
    {
         scanf("%lf",&num[i]);
         for(j=0,sum[i]=0;j<=i;j++)  //从数组元素等于主数组元素的累加和;
            sum[i] += num[j];  /*注意此处的公式,sum数组的第n个元素等于第n-1个元素加num数组的第n元素的值*/
    }
    for(i=0;i<8;i++)
        printf("%8.3lf",num[i]);
    printf("\n");
    for(i=0;i<8;i++)
        printf("%8.3lf",sum[i]);
    printf("\n");
    return 0;
}

14、编写一个程序读入一行输入,然后反向打印该行。您可以把输入存储在一个char数组中;假定该行不超过255个字符。回忆一下,您可以使用具有%c说明符的scanf()从输入中一次读入一个字符 ,而且当您按下回车键时会产生换行符(\n).

#include<stdio.h>
#define LENGTH 20
int main(void)
{
    char a[255];
    int i;
    for(i=0;i<LENGTH;i++)
        scanf("%c",&a[i]);
    for(i=LENGTH-1;i>=0;i--)  //注意:i=LENGTH-1,而不等于LENGTH
        printf("%c",a[i]);
    printf("\n");
    return 0;
}

15、Daphne以10%的单利息投资了100美元(也就是说,每年投资赢得的利息等于原始投资的10%)。Deirde则以每年5%的复合利息投资了100美元(也就是说,利息是当前结余的5%,其中包括以前的利息)。编写一个程序,计算需要多少年Deirdre 的投资才会超过Daphne,并且显示出到那里两个人的投资额。

#include<stdio.h>
int main(void)
{
    double Daphne=100,Deirdre=100;
    int i=0;                         //不要忘记变量的初始化
    while(Daphne>=Deirdre)
        {
            Daphne+=100*0.1;
            Deirdre+=Deirdre*0.5;
            i++;
        }
    printf("After %d years,Deirdre's investment is %f ,Daphne's investment is %f \n",
           i,Deirdre,Daphne);
    return 0;

}

16、Chuckie Luchy赢了100万美元,他把它存入每年赢得8%的帐户。在每年的最后一天,Chuckie取出10万美元。编写一个程序,计算需要多少年Chuckie就会清空他的帐户。

#include<stdio.h>

int main(void)
{
 double investment = 100;
 int i=0;
 while(investment > 0)
 {
  investment += investment * 0.08;
  investment -= 10;
  i++;
 }
 printf("After %d years,Chuckie Lucky's investment is out\n",i);
 return(0);
}

 

© 著作权归作者所有

idreamo
粉丝 18
博文 139
码字总数 224743
作品 0
青岛
产品经理
私信 提问
关东升的《从零开始学Swift》3月9日已经上架

大家一直期盼的《从零开始学Swift》于3月9日已经上架,它是关东升老师历时8个月的呕心沥血所编著,全书600多页,此本书基于Swift 2.x,通过大量案例全面介绍苹果平台的应用开发。全书共分5 部...

tony关东升
2018/06/26
0
0
关东升的《《从零开始学Swift》即将出版

大家好: 苹果2015WWDC大会发布了Swift2.0,它较之前的版本Swift1.x有很大的变化,所以我即将出版《从零开始学Swift》《从零开始学Swift》将在《Swift开发指南》第1版的基础上添加Swift2.0的...

智捷课堂
2015/08/17
109
0
C Primer Plus 第9章 函数 9.11 编程练习答案

1、设计函数min(x,y)返回两个double数值中较小的数值,同时用一个驱动程序测试该函数。 2、 设计函数chline(ch,i,j),实现指定字符在i列到j列的输出,同时用一个驱动程序测试该函数。 3、编写...

idreamo
2016/07/19
348
0
关东升的《从零开始学Swift》第2版已经出版

关东升的《从零开始学Swift》第2版已经出版 大家好: 苹果2015WWDC大会发布了Swift2.0,它较之前的版本Swift1.x有很大的变化,所以我即将出版《从零开始学Swift》 《从零开始学Swift》将在《...

tony关东升
2016/02/24
0
0
关东升的《从零开始学Swift》3月9日已经上架

大家一直期盼的《从零开始学Swift》于3月9日已经上架,它是关东升老师历时8个月的呕心沥血所编著,全书600多页,此本书基于Swift 2.x,通过大量案例全面介绍苹果平台的应用开发。全书共分5 部...

智捷课堂
2016/03/11
43
0

没有更多内容

加载失败,请刷新页面

加载更多

Redis集群搭建

服务器资源 ip 账号 配置 操作系统 xxx.70 root/xxx 磁盘50G(/)+150G(/home)、内存16G、CPU 16core CentOS Linux release 7.2.1511 (Core) xxx.74 root/xxx 磁盘50G(/)+150G(/home)、......

jxlgzwh
6分钟前
1
0
avro

一、 ```我们已经接触过很多序列化框架(或者集成系统),比如protobuf、hessian、thrift等,它们各有优缺点以及各自的实用场景,Avro也是一个序列化框架,它的设计思想、编程模式都和thi...

hexiaoming123
8分钟前
1
0
QML TextInput的字体超出控件范围

本文链接:https://blog.csdn.net/chyuanrufeng/article/details/54691998 问题描述 :QML TextInput输入内容超过TextInput的大小 当输入过多的字符串时,会出现内容超过TextInput的大小,字...

shzwork
9分钟前
1
0
《Java 8 in Action》Chapter 10:用Optional取代null

1965年,英国一位名为Tony Hoare的计算机科学家在设计ALGOL W语言时提出了null引用的想法。ALGOL W是第一批在堆上分配记录的类型语言之一。Hoare选择null引用这种方式,“只是因为这种方法实...

HelloDeveloper
10分钟前
1
0
进击的 Java ,云原生时代的蜕变

作者| 易立 阿里云资深技术专家<br /> <br />导读:云原生时代的来临,与Java 开发者到底有什么联系?有人说,云原生压根不是为了 Java 存在的。然而,本文的作者却认为云原生时代,Java 依然...

阿里巴巴云原生
12分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部