C语言程序设计 - 第三版 - 谭浩强主编第6—8章课后习题答案(5)

2019-01-05 12:51

a[i]=i;

for(i=2;i<=100;i++) if (prime(a[i]))

{ if(j++%5==0) printf(\ /*控制每行输出的个数,每行按5个输出*/ printf(\ }}

8.4写一函数,使给定的一个二维数组(3×3)转置,即行列互换。 # define N 3 #define M 3

#include

void fun (int a[N][M],int b[M][N]) { int i,j,t;

for (i=0;i

void main ( )

{ int i,j,a[N][M],b[M][N];

printf(\ for (i=0;i

scanf(\ printf(\ for (i=0;i

printf(\ printf(\ } fun(a,b);

printf(\ for (i=0;i

【解析】字符串处理方法,一是字符数组,二是指针,编写函数时,采用地址传递。 #include #include

void inverse (char str[ ]) {char t; int i,j;

for (i=0,j=strlen(str)-1;i

str[j]=t; }}

void main ( ) {

char str[80];

void inverse (char str[ ]); printf(“Input string:”); gets(str); inverse(str); puts(str); }

8.6写一函数,将两个字符串连接。 【解析】:将串2连接在串1 的后面,形成一新串。新串末尾须加字符串结束标志。 #include #include

char connect(char str1[ ],char str2[ ]) {int i,j;

for (j=strlen(str1),i=0;str2[i]!='\\0';i++) str1[i+j]=str2[i];

str1[i+j]='\\0'; /*新串末尾须加字符串结束标志\\0*/ }

void main ( )

{ char s1[80],s2[80];

printf(\ gets(s1);

printf(\ gets(s2);

connect(s1,s2); puts(s1);

} ng is %s\\n”,s); }

8.7 写一个函数,将一个字符串中的元音字母复制到另一个字符串,然后输出。 #include #include

void string_copy(char str[]) { int i,j=0;

for(i=0;str[i]!='\\0';i++)

if(str[i]=='a'||str[i]=='e'||str[i]=='i'||str[i]=='o'||str[i]=='u') str[j++]=str[i]; str[j]='\\0'; puts(str); }

void main ( ) { char str[80];

int n; gets(str);

string_copy(str); }

8.8写一函数,输入一个4位数字,要求输出这4个数字字符,但每两个数字之间有一个空格。如输入1990,应输出”1 9 9 0”。 #include #include

void change(int n,char str[]) /* 该函数的功能将数值转换为数字字符*/ { int i;

for(i=3;i>=0;i--)

{ str[i]=n+'0'; n/=10; }

str[4]='\\0'; }

void insert(char str[]) /* 该函数的功能插入空格并输出该数字字符*/ { int i;

for (i=strlen(str);i>0;i--) { str[2*i]=str[i]; str[2*i-1]=' '; }

puts(str); }

void main ( ) { char str[80]; int n;

printf(\ number :\

do /* 该循环控制输入的数为四位整数*/ scanf(\ while(n<999||n>10000); change(n,str); insert(str); }

8.9编写一函数,有实参传来一个字符串,统计此字符串中字母,数字,空格和其它字符的个数,在主函数中输入字符串以及输出上述的结果。 #include #include #include

int letter,digit,space,others; /* 说明定义为全局变量,全局变量不赋值时自动赋0值 */ int count(char str[ ]) {int i;

for (i=0;str[i]!='\\0';i++) if (isalpha(str[i]))

letter++;

else if (isdigit(str[i])) digit++; else if (str[i]==' ') space++; else

others++; }

void main ( ) {

char str[80];

printf(\ gets(str);

printf(\ puts(str); count(str);

printf(\}

8.10写一函数,输入一行字符,将此字符串中最长的单词输出。

【解析】先确定单词是如何组成的。假若以空格、数字或其它字符作为单词的分隔。 #include #include #include

char string_long(char str[]) {

int i,j,k=1,flag=1,max=0,si=0,sj; for(i=0;str[i]!='\\0';i++) { if(isalpha(str[i])) if(flag) { j=i; flag=0;} else k++; else {

if(max

}

str[sj]='\\0'; puts(&str[si]); }

void main ( ) { int i;

char string[80];

printf(\ character:\\n\ gets (string);

printf(\ string_long(string); }

8.11写一函数,用“起泡法”对输入的10个字符按由小到大的顺序排列。 #define N 10

#include #include void sort(char str[]) { int i,j; char t;

for (j=0;jstr[i+1]) {t=str[i];

str[i]=str[i+1]; str[i+1]=t; }} void main ( ) {char ch[N]; int i,flag;

for(i=0;i<10;i++)

scanf(\ sort(ch);

printf(\ for (i=0;i

printf(\}

8.12用牛顿迭代法求根。方程为 ,系数 的值依次为1,2,3,4。求x在1附近的一个实根。求出根后由主函数输出。 【解析】牛顿迭代公式: #include #include

double f(float a,float b,float c,float d,double x) {

return a*x*x*x+b*x*x+c*x+d;


C语言程序设计 - 第三版 - 谭浩强主编第6—8章课后习题答案(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:CAXA教案(改编) - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: