1. 程式人生 > >C primer plus(第五版)程式設計練習第六章

C primer plus(第五版)程式設計練習第六章

第一題:編寫一個程式。建立一個具有26個元素的陣列;並在其中儲存26個小寫字母。並讓程式現實該陣列的內容。 解: 程式碼如下: #include <stdio.h> int main(void) {     char i,letters[26];     int j;     for(i = 'a',j = 0;i <= 'z';i++,j++)         letters[j] = i;     for(j = 0;j<26;j++)         printf("%c",letters[j]);     printf("\n");     return 0; } ———————————————分割線—————————————————
第二題:使用巢狀迴圈,產生下圖案: $ $$ $$$ $$$$ $$$$$ 解: 程式碼如下: #include <stdio.h> int main(void) {     int i,j;     for(i = 1;i <=5;i++)     {         for(j = 1;j<=i;j++)             printf("$");         printf("\n");     }     return 0; } ———————————————分割線—————————————————
第三題:使用巢狀迴圈產生下列圖案: F FE FED FEDC FEDCB FEDCBA 請注意:如果您的系統不使用ASCII或其他以數字順序編碼的碼,您可以把一個字元數字初始化為字母表中的字母: char lets[26] = "ACBDEFGHIJKLMNOPQRSTUVWXYZ"; 然後就可以使用陣列索引來選用單個的字母,例如lets[0]的值時'A'。 解: 程式碼如下: #include <stdio.h> int main(void) {     int i,j;     char ch;     for(i = 1;i <=6;i++)     {         for(j = 1,ch = 'F';j<=i;j++,ch -= 1)             printf("%c",ch);         printf("\n");     }     return 0; } ———————————————分割線—————————————————
第四題:編寫一個程式,執行程式時,使用者輸入一個大寫字母例如'E',產生如下的金字塔:          A        ABA      ABCBA    ABCDCBA ABCDEDBCA 這種圖案需要擴充套件到使用者輸入的字元。提示:使用巢狀迴圈處理,並且擁有3個內部迴圈,一個處理空白,一個處理升序,一個處理降序。 解: 程式碼如下: #include <stdio.h> int main(void) {     int row,space,up,down;     char ch,up_c,down_c;     printf("Input a capital:");     scanf("%c",&ch);     for(row = 0;row <= ch - 'A';row++)     {         for(space = ch -'A';space >= row;space-- )             printf(" ");         for(up = 0,up_c = 'A';up <= row;up++,up_c++)             printf("%c",up_c);         for(down = 0,down_c = 'A' + row -1;down < row;down++,down_c--)             printf("%c",down_c);         printf("\n");     }     return 0; } ———————————————分割線—————————————————
第五題:編寫一個程式,列印一個表,表的每一行都給出一個整數,它的平方和它的立方。要求使用者輸入表的上限與下限,使用一個for迴圈。 解: 程式碼如下: #include <stdio.h> int main(void) {     int i,low,up;     printf("please Input the lower and upper:");     scanf("%d %d",&low,&up);     for(i = 0;i <= up - low;i++)         printf("%d\t%d\t%d\n",low + i,(low + i) * (low + i),(low + i) * (low + i)* (low + i));     return 0; } ———————————————分割線—————————————————
第六題:編寫一個程式,把一個單詞讀入一個字元陣列,然後反向列印這個詞。提示,用strlen()計算陣列中最後一個字元的索引。 解: 程式碼如下: #include <stdio.h> #include <string.h> int main(void) {     char word[40];     int i;     printf("Input a word:");     scanf("%s",word);     for(i = strlen(word) - 1;i >= 0;i--)         printf("%c",word[i]);     printf("\n");     return 0; } ———————————————分割線—————————————————
第七題:編寫一個程式,要求輸入兩個浮點數,然後打印出用二者的差值除以二者的乘積所得的結果。在使用者鍵入非數字的輸入之前程式迴圈處理每對輸入值。
解: 程式碼如下: #include <stdio.h> int main(void) {     float a,b;     printf("Input two float number:");     while(scanf("%f %f",&a,&b) == 2)         printf("result is %f\nInput two float number:",(a - b) / (a * b));     return 0; } ———————————————分割線—————————————————
第八題:對第七題進行更改,讓它使用一個函式來返回計算值。 解: 程式碼如下: #include <stdio.h> float test(float a,float b); int main(void) {     float a,b;     printf("Input two float number:");     while(scanf("%f %f",&a,&b) == 2)         printf("result is %f\nInput two float number:",test(a,b));     return 0; } float test(float a,float b)
{     return (a - b) / (a * b); } ———————————————分割線—————————————————
第九題:編寫一個程式,要求使用者輸入下限整數和上限整數,然後,依次計算從下限到上限的每一個整數的平方的加和,最後顯示結果,並可以迴圈輸入和顯示,直到下限等於或小於上限時終止程式。 解:計算較為繁瑣,建議將其作為自定義函式。 程式碼如下: #include <stdio.h> int test(int a,int b); int main(void) {     int a,b;     printf("Input lower and upper number:");     scanf("%d %d",&a,&b);     while(b - a > 0)     {         printf("the sum of the squares from %d to %d is %d\nInput lower and upper number:",a,b,test(a,b));         scanf("%d %d",&a,&b);     }     printf("Done\n");     return 0; } int test(int a,int b)
{     int sum = 0;     int i;     for(i = 0;i <= b -a;i++)         sum += (a + i)*(a + i);     return sum; } ———————————————分割線—————————————————
第十題:編寫一個程式把8個整數讀入一個數組中,然後以相反的順序列印它們。 解: 程式碼如下: #include <stdio.h> int main(void) {     int number[8];     int i;     printf("Input 8 numbers:");     for(i =0;i < 8;i++)         scanf("%d",&number[i]);     for(i = 7;i >= 0;i--)         printf(" %d",number[i]);     printf("\n");     return 0; } ———————————————分割線—————————————————
第十一題:考慮這兩個無限序列: 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。 解:這裡使用兩個自定義函式,分別計算各序列N個數字的和之後,再讓兩個序列的和相加,得到總和。 程式碼如下: #include <stdio.h> double list1(int n); double list2(int n);
double pow_i(int n); int main(void) {     int n;     printf("how many times do you want to compute:");     scanf("%d",&n);     printf("the sum of two lists by %d times is %f\n",n,list1(n) + list2(n));     return 0; } double list1(int n)
{     double sum1 = 0.0;     int i;     for(i = 1;i <= n;i++ )         sum1 += 1.0 / (double)i;         printf("sum1:%f\n",sum1);     return sum1; } double list2(int n)
{     double sum2 = 0.0;     int i;     for(i = 1;i <= n;i++ )         sum2 += 1.0 / (double)i * pow_i(i);         printf("sum2:%f\n",sum2);
    return sum2; } double pow_i(int n) {     int i;     double result = -1;     for(i = 1;i <= n;i++)         result *= -1.0;     return result; } ———————————————分割線—————————————————
第十二題:編寫一個程式,建立一個8個元素的int陣列,並且把元素分別設定為2的前8次冥,然後打印出他們的值,要求for迴圈設定值,do while迴圈顯示值。 解: 程式碼如下: #include <stdio.h> int main(void) {     int num[8];     int i;     int j = 0;     int n =1;     for(i = 0;i < 8;i++)     {         n *= 2;
        num[i] = n;     }     do     {         printf("%d\t%d\n",j + 1,num[j]);         j++;     }while(j<8);     return 0; } ———————————————分割線—————————————————
第十三題:編寫一個程式,建立兩個8元素的double陣列,使用一個迴圈來讓使用者鍵入第一個陣列的8個元素的值。程式把第二個陣列的元素設定為第一個陣列元素的累積和。例如,第二個陣列的第4個元素應該等於第一個陣列的前4個元素的和,第二個陣列的第5個元素應該等於第一個陣列的前5個元素之和(可選使用巢狀迴圈可以實現這一點)。最後,使用一個迴圈來顯示兩個陣列中的內容。第一個數字在一行中顯示,第二個陣列中的每個元素在第一個陣列的對應元素之下進行顯示。 解: 程式碼如下: #include <stdio.h> int main(void) {     double n1[8],n2[8],n;     int i,sum;     printf("Input 8 numbers:");     for(i = 0,sum = 0;i < 8;i++)     {         scanf("%lf",&n);         n1[i] = n;         sum += n;         n2[i] = sum;     }     for(i = 0;i < 8;i++)     {         printf("\t%lf",n1[i]);     }     printf("\n");     for(i = 0;i < 8;i++)     {         printf("\t%lf",n2[i]);     }     printf("\n");     return 0; } ———————————————分割線—————————————————
第十四題:編寫一個程式讀入一行輸入,然後反向列印該行。您可以把輸入儲存在一個char陣列中;假定該行不超過255個字元。回憶一下,您可以使用具有%c說明符的scanf()在輸入中一次讀入一個字元,而且當你按下回車鍵時會產生換行符(\n)。 解: 程式碼如下: #include <stdio.h> int main(void) {     char words[255];     int i;     printf("Input words:\n");     for(i = 0;i < 255;i++)         scanf("%c",&words[i]);     printf("output:\n");
    for(i = 254;i >= 0;i--)         printf("%c",words[i]);     printf("\n");     return 0; } ———————————————分割線—————————————————
第十五題:Daphne 以10%的單利息投資了100美元(也就是說,每年投資贏得的利息等於原始投資的10%)。Deirdre則以每年5%的複合利息投資了100美元(也就是說,利息是當前結餘的5%,其中包括以前的利息)。編寫一個程式,計算需要多少年Deirdre的投資額才會超過Daphne,並且顯示出到那時兩個人的投資額。 解: 程式碼如下: #include <stdio.h> #define CAPITAL 100.0 #define RATE1 10.0/100.0 #define RATE2 5.0/100.0 int main(void) {     float t1,t2;     int n = 0;     t1 = t2 = CAPITAL;     while(t2 <= t1)     {         t1 += CAPITAL * RATE1;         t2 += t2 * RATE2;         n++;     }     printf("%d years later,Daphne: %f Deirdre: %f\n",n,t1,t2 );     return 0; } ———————————————分割線—————————————————
第十六題:Chuckie Lucky贏了100萬美元,他把錢存入一個每年贏得%8的賬戶。在每年的最後一天,Chuckie取出10萬美元。編寫一個程式,計算需要多少年Chuckie就會清空他的賬戶。 解: 程式碼如下: #include <stdio.h> #define MONEY 1000000.0 #define TAKE 100000.0 #define RATE 8.0/100.0 int main(void) {     float total;     total = MONEY;     int n = 0;     while(total > 0.0)     {         total += total * RATE;         total -= TAKE;         n++;     }     printf("%d years later Chuckie will clear his account.\n",n);     return 0; }

相關推薦

C primer plus()程式設計練習

第一題:編寫一個程式。建立一個具有26個元素的陣列;並在其中儲存26個小寫字母。並讓程式現實該陣列的內容。 解: 程式碼如下: #include <stdio.h> int main(void) {     char i,letters[26];     int

C primer plus()程式設計練習十二

第一題:不使用全域性變數,重寫程式清單12.4中的程式。 解: 程式碼如下: #include <stdio.h> int critic(void); int main(void) {     int units = 0;     printf("How ma

C primer plus 程式設計練習答案

Github地址:φ(>ω<*)這裡這裡。 /* 本程式應 習題-5 建立。 題目要求: 編寫一個函式,返回儲存在 double 型別陣列中最大值和最小值的差值,並在一個簡單的程式中測試該函式。 */ #include<stdio.h> #define o

C primer plus 十一 程式設計練習答案

Github地址:φ(>ω<*)這裡這裡。 /*     本次任務需設計並測試一個函式,      該函式接受兩個引數,通過第二個引數接受一個指定字串,並在第一個引數中尋找其首次出現的位置。    &

c++ primer plus 程式設計練習答案第二

2.1 #include "stdafx.h" #include <iostream> using namespace std; int main() { char name[5],address[15]; cout << "enter your name\n"

c++ primerPlus程式設計練習

7.1 #include<stdafx.h> #include<iostream> using namespace std; long double horm_aver(double x, double y); /*當輸入為字元時將不能繼續輸入,可以使用cin.clear

C++Primer 習題答案 十二 動態記憶體(Dynamic Memory)

12.1 b1包含4個元素; b2被銷燬。 12.2 strblob.h #ifndef STRBLOB_H_ #define STRBLOB_H_ #include <string> #include <initializer_list&g

c++ primer 學習筆記-

本文為轉載,出處:https://blog.csdn.net/libin1105/article/details/48664019                                https://blog.csdn.net/sunhero2010/article

c++ primer 學習筆記- 字串、向量和陣列

本文為轉載,出處:https://blog.csdn.net/libin1105/article/details/48210261                               https://blog.csdn.net/fnoi2014xtx/article/

[計算機網路]計算機網路.pdf

【下載地址】 《計算機網路(第5版)》自1989年首次出版以來,於1994年、1999年和2003年分別出了修訂版。2006年8月本教材通過了教育部的評審,被納入普通高等教育“十一五”國家級規劃教材。《計算機網路》的第5版,在內容和結構方面都有了很大的修改。 全書分為10章,比較全面系

C++ Primer Plus--分支語句和邏輯運算子(

C++提供了if和switch語句來進行決策,還有邏輯運算子和條件運算子。 6.1 if語句 使用if語句來統計語句中的空格總數,實現如下: if.cpp #include <iostream> using namespace std; int ma

C Primer Plus6程式設計練習答案

     第五章程式設計練習的答案,堅持萌新風格不動搖。 #include<stdio.h> int main(void) { int Minute, Hour; const int SYSTEM = 60; //定義一個為60的進位制用於單位轉換

c++ primer plus 程式設計練習答案

該章節第二題程式沒問題,但不懂為什麼 5.1 #include<stdafx.h> #include <iostream> using namespace std; int main() { int max, min; long long sum=0; co

C Primer Plus(6)程式設計練習答案

5.11程式設計練習 //Programming Exercise 1 /*把用分鐘表示的時間轉換成用小時和分鐘表示的時間, 使用#define建立一個表示60的常量或const常量。 通過while loop讓使用者重複輸入值,直到使用者輸入小於或等於0的值

C++ Primer Plus7程式設計練習

#include<iostream> int in(double scores[]); void out(const double scores[], int n); double average(const double scores[], int n);

C primer plus 程式設計練習答案

Github地址:φ(>ω<*) 這裡這裡。 #include<stdio.h> #include<string.h> #define limit 255 int main(void) { int i = 0; // Create for loop.

C++ primer Plus)中文版 迴圈和關係表示式 程式設計練習答案

第五章 程式設計練習 1. 編寫一個要求使用者輸入兩個整數的程式。該程式將計算並輸出兩個整數之間(包括這兩個整數)所有整數的和。    這裡假設先輸入較小的整數。例如:如果使用者輸入的是2和9,則程式將指出2~9 之間所有的整數的和為44. 1.1 for 迴圈版 #incl

C Primer Plus 程式設計練習答案

部分習題程式碼丟失,需要請聯絡博主。 編譯環境:Visual Studio 2017 #include<stdio.h> #include<stdlib.h> #inc

C Primer Plus () 程式設計練習 答案

1. 編寫一個程式。將用分鐘表示的時間轉換成以小時和分鐘表示的時間。使用#define或者const來建立一個代表60的符號常量。使用while迴圈來允許使用者重複鍵入值,並且當鍵入一個小於等於0的時間時終止迴圈。#include <stdio.h> #defi

C++ Primer Plus 程式設計練習答案

/******************************************************************************************************************* Author : Yuuji Blo