1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > C语言程序设计现代方法(第二版)十二章编程题答案

C语言程序设计现代方法(第二版)十二章编程题答案

时间:2023-01-24 15:43:58

相关推荐

C语言程序设计现代方法(第二版)十二章编程题答案

作为一名C语言初学者,以下答案为随手练习笔记,均已通过编译器实现书上功能,如有错误之处欢迎指出。

1、

(a)

# include <cstdio># include <iostream># define N 30void reverse(char [], int);int main(void){int sign = N;char a[N];//数组初始化printf("Enter a message: ");for (int i = 0; i < N; ++i)//将输入的字符存进数组{a[i] = getchar();if (a[i] == '\n'){sign = i;//标记存入字符的末尾break;}}reverse(a, sign);//反转存入的字符printf("Reversal is: ");for (int i = 0; i < sign; ++i)//打印字符{printf("%c", a[i]);}system("pause");return 0;}void reverse(char a[], int sign)//反转字符函数定义{int temp, i(0),j(sign-1);for (; i <j; ){temp = a[i];a[i] = a[j];a[j] = temp;++i;--j;}}

(b)

# include <cstdio># include <iostream># define N 30char *p, *q;void reverse(char []);int main(void){char a[N];//数组初始化printf("Enter a message: ");p = a;q = a;for (; p < p+N; ++p )//将输入的字符存进数组{*p = getchar();if (*p == '\n')break;}reverse(a);//反转存入的字符printf("Reversal is: ");for (p = a; p < q+1;++p)//打印字符{printf("%c", *p);}system("pause");return 0;}void reverse(char a[])//反转字符函数定义{int temp, i;i = p - q;for (; q < p; ){temp = *q;*q = *p;*p = temp;--p;++q;}p = q = a;q += i;}

2、

# include <stdio.h># include <iostream># include <ctype.h># define N 30void reverse(char[], char[], int);bool check(char[], char[], int);int main(void){int sign = N;char a[N] = { 0 };//数组初始化char b[N] = { 0 };printf("Enter a message: ");for (int i = 0; i < N; ++i)//将输入的字符存进数组{a[i] = getchar();if (a[i] == '\n'){sign = i;//标记存入字符的末尾break;}if (toupper(a[i]) < 'A' || toupper(a[i]) > 'Z')//检查字符是否为字母--i;}reverse(a, b, sign);//将a反转并存入bbool CHE = check(a, b, sign);if (CHE)printf("Palindrome\n");elseprintf("Not a palindrome\n");system("pause");return 0;}void reverse(char a[], char b[], int sign)//反转字符函数定义{int i(0), j(sign - 1);for (; i < sign; ++i){b[j] = a[i];--j;}}bool check(char a[], char b[], int sign){int sum(0);for (int i = 0; i < sign; ++i){if (a[i] == b[i])++sum;}return ((sum == sign&& sign>0) ? true : false);}

3、

# include <cstdio># include <iostream># define N 30int main(void){char a[N];//数组初始化int i;printf("Enter a message: ");for ( i = 0 ; i < N; ++i)//将输入的字符存进数组{*(a + i) = getchar();if (*(a + i) == '\n')break;}printf("Reversal is: ");for (; i >= 0; --i)//打印字符printf("%c", *(a + i));system("pause");return 0;}

4

# include <cstdio># include <iostream># include <ctype.h># define N 30int main(void){char a[N], b[N];//数组初始化int i, sign, same(0);printf("Enter a message: ");for ( i = 0 ; i < N; ++i)//将输入的字符存进数组a{*(a + i) = getchar();if (*(a + i) == '\n')break;if (toupper(*(a+i)) < 'A' || toupper(*(a+i)) > 'Z')//检查字符是否为字母--i;}sign = i;//标记存入的字符个数for (int j = 0; j < sign; ++j)//倒转字符并存入b{*(b + j) = *(a + i-1);--i;}for (i = 0; i < sign; ++i){if (*(a + i) == *(b + i))++same;}if (same == sign && sign != 0)printf("Palindrome\n");elseprintf("Not a palindrome\n");system("pause");return 0;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。