1-8章习题参考答案全 下载本文

int maxValue=a[0], minValue=a[0], maxPos=0, minPos=0; int i, temp;

for (i=1; i

if (a[i] > maxValue) {

maxValue = a[i];

maxPos = i;

}

else if (a[i] < minValue)

{

minValue = a[i];

minPos = i; }

}

temp = a[maxPos]; a[maxPos] = a[minPos]; a[minPos] = temp; } main() {

int a[ARRSIZE],i;

printf(\ for (i=0; i

MaxMinExchang(a, ARRSIZE); printf(\for (i=0;i

5. 写一函数,能对给定的一个二维数组(3×3)进行转置(即行列互换)。 #include #define N 3 int array[N][N]; void main()

{ void convert(int array[][3]); int i,j;

printf(\ for (i=0;i

scanf(\ printf(\

for (i=0;i

printf(\ printf(\ }

convert(array);

printf(\ for (i=0;i

printf(\ printf(\ } }

void convert(int array[][3]) {int i,j,t;

for (i=0;i

array[i][j]=array[j][i]; array[j][i]=t; } }

6. 写一函数,能用“起泡法”对输入的10个字符按由小到大顺序排序。 #include #include #define N 10 char str[N]; void main()

{void sort(char str[]); int i,flag;

for (flag=1;flag==1;)

{printf(\ scanf(\ if (strlen(str)>N)

printf(\ else

flag=0; }

sort(str);

printf(\ for (i=0;i

printf(\}

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

for(j=0;j

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

str[i]=str[i+1];

str[i+1]=t; } }

7. 编写一个函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其他字符的个数。

#include

int letter,digit,space,others; void main()

{void count(char str[]); char text[80];

printf(\ gets(text);

printf(\ puts(text); letter=0; digit=0; space=0; others=0; count(text);

printf(\}

void count(char str[]) {int i;

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

if ((str[i]>='a'&& str[i]<='z')||(str[i]>='A' && str[i]<='Z')) letter++;

else if (str[i]>='0' && str [i]<='9') digit++;

else if (str[i]==32)

space++; else

others++; }

8. 编写程序输出3~10000内的可逆素数。可逆素数是指:一个素数将其各位数字的顺序倒过来构成的反序数也是素数。如157和751均为素数,它们是可逆素数。要求调用两个子函数实现。

#include #include #include int invert(int a) {

int s=0; while(a>0) {

s=10*s+a; a/=10; }

return s; }

int prime(int a) { int i;

for(i=2;i<=(int)sqrt(a);i++) if(a%i==0) return 0; return 1; }

main() { int i;

for(i=3;i<10000;i++) if(prime(i))

if(prime(invert(i))) printf(\printf(\}

9. 编写一个函数,实现将一个十进制数转换成八进制数。 #include #include void main()