欢迎光临散文网 会员登陆 & 注册

C Primer Plus Test 6(2)

2020-11-25 16:21 作者:啷个里格朗郎郎  | 我要投稿

试题来源:C Primer Plus (第6版)中文版 

本章主要学习循环语句的使用。

6.10编写一个程序,要求用户输入一个上限整数和一个下限整数,计算从上限到下限范围内所有整数的平方和,并显示计算结果。然后程序继续提示用户输入上限和下限整数,并显示结果,直到用户输入的上限整数等于或小于显现整数为止。程序运行示例如下:

Enter lower and upper integer limits: 5 9

The sum of the squares from 25 to 81 is 255

Enter next set of limits: 3 25

The sum of the squares from 9 to 625 is 5520

Enter next set of limits: 5 5

Done

#include<stdio.h>

#include<stdlib.h>

int main(){

    int lower, upper, i, sum;

    sum = 0;

    printf("Enter lower and upper integer limits:");

    scanf('%d %d", &lower, &upper);

    while(lower < upper){

        for( i = lower; i <= upper; i++){

            sum += i * i;

        }

        printf("The sum of the squares from %d to %d is %d\n",  lower*lower, upper*upper, sum);

        printf("Enter next set of limits:");

        scanf("%d %d", &lower, &upper);

    }

    printf("Done\n");

    system("pause");

    return 0;

}

6.10运行结果

6.11编写一个程序,在数组中读入8个整数,然后按倒序打印着8个整数

#include<stdio.h>

#include<stdlib.h>

int main(){

    int num[8], i;

    printf("Enter eight number:");

    for(i = 0; i < 8; i ++){
        scanf("%d", &num[i]);

    }

    for( i = 7; i >= 0; i --){

        printf("%d ", num[i]);

    }

    printf("\n");

    system("pause");

    return 0;

}

6.1运行结果

6.12考虑下面两个无线序列:

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

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

编写一个程序计算这两个无限序列的总和,值达到某次数。提示:奇数个-1相乘得-1,偶数个-1相乘得1,让用户交互地输入指定的次数,当用户输入0或者负值时结束输入。查看运行100,1000,10000后的综合,是否发现每个序列都收敛于某值?

#include<stdio.h>

#include<stdlib.h>

int main(){

    double num1, num2, sum;

    int times, i, status;

    printf("Enter the epochs:");

    status = scanf("%d", &times);

    if( status == 1){

        while(times > 0){

            num1 = 0;

            num2 = 0;

            for(i = 1; i < times; i++){

                num1 += 1.0 / i;

                 num += 1.0 /i * pow(-1, i + 1);

            }

            sum = num1 + num2;

            printf("The sum is %lf\n", sum);

            printf("Enter the epochs( <=0 to quit):");

            scanf("%d", &times);

    }

    printf("Bye\n");

    }else{

        printf("Error\n");

    }

    system("pause");

    return 0;

}

6.12运行结果

6.13编写一个程序,创建一个包含8个元素的int型数组,分别把数组元素设置为2的前8次幂。使用for循环设置数组元素的值,使用do while循环显示数组元素的值。

#include<stdio.h>

#include<stdlib.h>

int main(){

    int num[8];

    int i;

    for(i = 0; i < 8; i ++){

        num[i] = pow(2,i);

     }

     i = 0;

    do{

        printf("%d\t", num[i]);

         i ++;

    }while( i < 8);

    printf("\n");

    system("pause");

    return 0;

}

6.13运行结果

6.14编写一个程序,创建两个包含8个元素的double类型数组,使用循环提

示用户为第一个数组输入8个值。第二个数组的值设置为第一个数组对

应元素的累积之和。例如,第二个数组的第4个元素的值,是第一个数

组前4个元素之和,第二个数组的第5个元素的值是第一个数组的前5个

元素之和(用嵌套循环可以完成,但是利用第二个数组的第5个元素是

第二个数组的第4个元素与第一个数组的第5个元素之和,只用一个循

环就能完成任务,不需要使用嵌套循环)。最后,使用循环显示两个

数组的内容,第一个数组显示成一行,第二个数组显示在第一个数组

的下一行,而且每个元素都与第一个数组各元素相对应,

#include<stdio.h>

#include<stdlib.h>

int main(){

double num[8], num2[8], sum;

int i;

sum = 0.0;

printf("Enter 8 double numbers:");

for(i=0;i<8;i++){

scanf("%lf",&num[i]);

sum += num[i];

num2[i] = sum;

}

for(i=0;i<8;i++){

printf("%.3lf\t",num[i]);

}

printf("\n");

for(i=0;i<8;i++){

printf("%.3lf\t",num2[i]);

}

printf("\n");

system("pause");

return 0;

6.14运行结果

6.15编写一个程序,读取一行输入,然后把输入的内容倒序打印出来。可

以把输入存储在char类型的数组中,假设每行字符不超过255.回忆一

下,根据%c转换说明,scanf函数一次只能从输入中读取一个字符,而

且在用户按下Enter键时,scanf函数会生成一个换行字符(\n) 

#include<stdio.h>

#include<stdlib.h>

#define MAX 255

int main(){

char string[MAX];

int i;

printf("Enter a string:");

scanf("%c",&string[0]);

i = 0;

while(string[i] != '\n'){

i++;

scanf("%c",&string[i]);

}

while(i>=0){

printf("%c",string[i]);

i--;

}

printf("\n");

system("pause");

return 0;

}

6.15运行结果

6.16 Daphne以10%的单利息投资了100美元(也就是说,每年投资获利相当

于原始投资的10%)。Deirdre以5%的复合利息投资了100美元(也就

是说,利息是当前余额的5%,包含之前的利息)。

编写一个程序,计算需要多少年Deirdre的投资额才会超过Daphne,

并显示那时两人的投资额。 

#include<stdio.h>

#include<stdlib.h>

int main(){

double in1, in2, m1, m2;

int i;

m1 = 100.0;

m2 = 100.0;

in1 = 0.1;

in2 = 0.05;

i = 0;

while(m1>=m2){

m1 += 100 * in1;

m2 += m2 * in2;

i ++;

}

printf("%d years, Daphne:%.2lf, Deirdre:%.2f\n",i,m1,m2);

system("pause");

return 0;

}

6.16运行结果

6.17 Chuckie Lucky赢得了100万美元(税后),他把奖金存入年利率8%的

账户。在每年的最后一天,Chuckie取出10万美元。编写一个程序,

计算多少年后Chuckie会取完账户的钱? 

#include<stdio.h>

#include<stdlib.h>

int main(){

float m1, m2, in1;

int i;

in1 = 0.08;

m1 = 1000000;

m2 = 100000;

i=0;

while(m1>0){

m1 += m1 * in1;

m1 -= m2;

i++;

}

printf("%d years ago, he would be use it\n", i);

system("pause");

return 0;

}

6.17运行结果

6.18 Rabnud博士加入了一个社交圈。起初他有5个朋友。他注意到他的朋友

数量以下面的方式增长。第一周少了一个朋友,剩下的朋友数量翻倍;

第二周少了2个朋友,剩下的朋友数量翻倍。一般而言,第N周少N个朋

友,剩下的朋友数量翻倍。编写一个程序,计算并显示Rabnud博士每

周朋友的数量。该程序一直运行,直到超过邓巴数。邓巴数是粗略估

算一个人在社交圈中有稳定关系成员的最大值,该值大约是150。 

#include<stdio.h>

#include<stdlib.h>

int main(){

int begin, i;

begin = 5;

i = 1;

while(begin < 150){

begin = (begin - i) * 2;

printf("%d week, %d friends\n",i,begin);

i++;

}

system("pause");

return 0;

}

6.18运行结果


C Primer Plus Test 6(2)的评论 (共 条)

分享到微博请遵守国家法律