C Primer Plus 第六版 程式設計練習第九章答案 最新出爐
提示
8—11題是遞迴部分,為趕進度暫時不做,後面有時間再補上,持續更新。
1、設計一個函式min(x, y),返回兩個double型別值的較小值。在一個簡單的驅動程式中測試該函式。
// 9.1
#include<stdio.h>
double min(double x, double y);
int main(void)
{
double num1, num2;
printf("Enter two numbers: ");
scanf("%lf %lf", &num1, &num2);
printf("The minist number is %g", min(num1, num2));
}
double min(double x, double y)
{
return x < y ? x : y;
}
2、 設計一個函式chline(ch, i, j),列印指定的字元j行i列。在一個簡單的驅動程式中測試該函式
// 9.2
#include<stdio.h>
void chline(ch, i, j);
int main(void)
{
char ch;
int row, column;
printf("Enter a character: ");
ch = getchar();
printf("Enter two integer: ");
scanf("%d %d", &row, &column);
chline(ch, row, column);
}
void chline(ch, i, j)
{
for(int row = 0; row < i; row++){
for(int column = 0; column < j; column++)
putchar(ch);
putchar('\n');
}
}
3、編寫一個函式,接受3個引數:一個字元和兩個整數。字元引數是待列印的字元,第1個整數指定一行中列印字元的次數,第2個整數指定列印指定字元的行數。編寫一個呼叫該函式的程式。
和第二題一樣,就不做了。
4、兩數的調和平均數這樣計算:先得到兩數的倒數,然後計算兩個倒數的平均值,最後取計算結果的倒數。編寫一個函式,接受兩個double型別的引數,返回這兩個引數的調和平均數。
和第一題差不多。
5、編寫並測試一個函式larger_of(),該函式把兩個double型別變數的值替換為較大的值。例如, larger_of(x, y)會把x和y中較大的值重新賦給兩個變數。
// 9.5
#include<stdio.h>
void larger_of(double * num1, double * num2);
int main(void)
{
double num1, num2;
printf("Enter two numbers: ");
scanf("%lf %lf", &num1, &num2);
printf("num1 = %g, num2 = %g\n", num1, num2);
larger_of(&num1, &num2);
printf("num1 = %g, num2 = %g", num1, num2);
}
// void larger_of(double * num1, double * num2)
// {
// if(*num1 >= *num2)
// *num2 = *num1;
// else
// *num1 = *num2;
// }
void larger_of(double * num1, double * num2)
{
*num1 > *num2 ? (*num2 = *num1) : (*num1 = *num2)
}
6、編寫並測試一個函式,該函式以3個double變數的地址作為引數,把最小值放入第1個變數,中間值放入第2個變數,最大值放入第3個變數。
// 9.6
#include<stdio.h>
void sort_of(double * num1, double * num2, double * num3);
int main(void)
{
double num1, num2, num3;
printf("Enter three numbers: ");
scanf("%lf %lf %lf", &num1, &num2, &num3);
printf("num1 = %g, num2 = %g, num3 = %g\n", num1, num2, num3);
sort_of(&num1, &num2, &num3);
printf("num1 = %g, num2 = %g, num3 = %g\n", num1, num2, num3);
}
void sort_of(double * num1, double * num2, double * num3)
{
double max, min, sum;
sum = *num1 + *num2 + *num3;
//找出最大值
*num1 > *num2 ? (max = *num1) : (max = *num2);
if(*num3 > max)
max = *num3;
//找出最小值
*num1 < *num2 ? (min = *num1) : (min = *num2);
if(*num3 < min)
min = *num3;
*num1 = min;
*num3 = max;
*num2 = sum - max - min;
}
7、編寫一個函式,從標準輸入中讀取字元,直到遇到檔案結尾。程式要報告每個字元是否是字母。如果是,還要報告該字母在字母表中的數值位置。例如,c和C在字母表中的位置都是3。合併一個函式,以一個字元作為引數,如果該字元是一個字母則返回一個數值位置,否則返回-1。
// 9.7
#include<stdio.h>
//#include<ctype.h>
int letter_location(char ch);
int main(void)
{
char ch;
int res;
printf("Enter a character: ");
while((ch = getchar()) != EOF){
// ch = getchar();
// res = letter_location(ch);
if(-1 == (res = letter_location(ch)))
printf("%c is not a letter.\n", ch);
else
printf("%c: %d\n", ch, res + 1);
printf("Enter a character: ");
while(getchar() != '\n')
continue;
}
}
int letter_location(char ch)
{
int ans;
if(ch >= 'a' && ch <= 'z' )
ans = ch - 'a';
else if(ch >= 'A' && ch <= 'Z')
ans = ch - 'A';
else
ans = -1;
return ans;
}
//或者直接用 ctype.h 函式
// int letter_location(char ch)
// {
// int ans;
// if(isalpha(ch))
// ans = tolower(ch) - 'a' + 1;
// else
// ans = -1;
// return ans;
// }
8、第6章的程式清單6.20中,power()函式返回一個double型別數的正整數次冪。改進該函式,使其能正確計算負冪。另外,函式要處理0的任何次冪都為0,任何數的0次冪都為1(函式應報告0的0次冪未定義,因此把該值處理為1)。要使用一個迴圈,並在程式中測試該函式。
9、使用遞迴函式重寫程式設計練習8。
10、為了讓程式清單9.8中的to_binary()函式更通用,編寫一個to_base_n()函式接受兩個在2~10範圍內的引數,然後以第2個引數中指定的進位制列印第1個引數的數值。例如,to_base_n(129, 8)顯示的結果為201,也就是129的八進位制數。在一個完整的程式中測試該函式。
11、編寫並測試一個函式FIbonacci(),在該函式中使用迴圈代替遞迴完成斐波納契數列的計算。
相關文章
- C primer plus 第六版 第九章 第一題 程式設計練習答案程式設計
- C primer plus 第六版 第九章 第二題 程式設計練習答案程式設計
- C primer plus 第六版 第九章 第三題 程式設計練習答案程式設計
- C primer plus 第六版 第九章 第四題 程式設計練習答案程式設計
- C primer plus 第六版 第九章 第五題 程式設計練習答案程式設計
- C primer plus 第六版 第九章 第六題 程式設計練習答案程式設計
- C primer plus 第六版 第九章 第七題 程式設計練習答案程式設計
- C primer plus 第六版 第九章 第八題 程式設計練習答案程式設計
- C primer plus 第六版 第九章 第九題 程式設計練習答案程式設計
- C primer plus 第六版 第九章 第十題 程式設計練習答案程式設計
- C primer plus 第六版 第九章 第十一題 程式設計練習答案程式設計
- C primer plus 第六版 第十一章 第一題 程式設計練習答案程式設計
- C primer plus 第六版 第十一章 第二題 程式設計練習答案程式設計
- C primer plus 第六版 第十一章 第三題 程式設計練習答案程式設計
- C primer plus 第六版 第十一章 第四題 程式設計練習答案程式設計
- C primer plus 第六版 第十一章 第五題 程式設計練習答案程式設計
- C primer plus 第六版 第十一章 第六題 程式設計練習答案程式設計
- C primer plus 第六版 第十一章 第七題 程式設計練習答案程式設計
- C primer plus 第六版 第十一章 第八題 程式設計練習答案程式設計
- C primer plus 第六版 第十一章 第九題 程式設計練習答案程式設計
- C primer plus 第六版 第十一章 第十題 程式設計練習答案程式設計
- C primer plus 第六版 第六章 第六題 程式設計練習答案程式設計
- C primer plus 第六版 第六章 第七題 程式設計練習答案程式設計
- C primer plus 第六版 第六章 第八題 程式設計練習答案程式設計
- C primer plus 第六版 第六章 第九題 程式設計練習答案程式設計
- C primer plus 第六版 第六章 第十題 程式設計練習答案程式設計
- C primer plus 第六版 第六章 第一題 程式設計練習答案程式設計
- C primer plus 第六版 第六章 第二題 程式設計練習答案程式設計
- C primer plus 第六版 第六章 第三題 程式設計練習答案程式設計
- C primer plus 第六版 第六章 第四題 程式設計練習答案程式設計
- C primer plus 第六版 第六章 第五題 程式設計練習答案程式設計
- C primer plus 第六版 第十一章 第十四題 程式設計練習答案程式設計
- C primer plus 第六版 第十一章 第十五題 程式設計練習答案程式設計
- C primer plus 第六版 第十一章 第十二題 程式設計練習答案程式設計
- C primer plus 第六版 第十一章 第十三題 程式設計練習答案程式設計
- C primer plus 第六版 第十章 第二題 程式設計練習答案程式設計
- C primer plus 第六版 第十章 第一題 程式設計練習答案程式設計
- C primer plus 第六版 第十章 第三題 程式設計練習答案程式設計