}
—————————————————————————————————————— 8.18 请编写函数,对传送过来的三个数选出最大和最小数,并通过形参传回调用函数。 ※程序如下※ #include
max_min(double a,double b,double c,double *max,double *min) {
*max = a ; /* 假定a的值为最大,把a值赋给指针变量*max */
if(*maxBR\假定a的值为最小,把a值赋给指针变量*min */ if(*min>b) *min = b; if(*min>c) *min = c; } main() {
double a,b,c,max,min;
printf(\scanf(\max_min(a,b,c,&max,&min); printf(\}
***************End of Chapter 8******************* 第九章 数 组
************************************************** 一、选择题
(1) D (2) A (3) A (4) A (5) C (6) A (7) B (8) D (9) C (10) C (11)C (12)D (13)D (14)A (15) A (16)A (17)C (18)C 二、填空题 (19) 9 , 0 (20) 6 (21) 12 (22) 3 (23) 2721 (24) -850 , 2 , 0 (25) k = p , k
(26) (c = getchar ( ) ) , ?c? - 65 三、编程题
——————————————————————————————————————
9.27 输入一行数字字符,请用数组元素作为计数器来统计每个数字字符的个数.用下标为0元素统计字符\的个数,下标为1的元素统计字符\的个数,... ※程序如下※ #include
void count(int a[]) { int i; char ch;
while((ch=getchar())!='\\n') for(i=0;i<10;i++) if(i==ch-'0') if(i==0) a[9]++; else a[i-1]++; } main( ) {
int i,a[10]={0}; count(a); for(i=0;i<10;i++) printf(\}
——————————————————————————————————————
9.28 编写函数,对具有10个整数的数组进行如下操作:从第n个元素开始直到最后一个元素,依次向前移动一个位置.输出移动后的结果.
※程序如下※ fun (int a[],int n) { int i;
for(i=n;i<9;i++) a=a[i+1]; } main() {
int a[10]={0,1,2,3,4,5,6,7,8,9},n,i; scanf(\fun(a,n); for(i=0;i<9;i++) printf(\}
—————————————————————————————————————— 9.29 编写函数把数组中所有奇数放在另一个数组中返回. ※程序如下※ #include #include
int fun(int a[],int b[])
{ int i,j=0; for(i=0;i<10;i++) if(a%2==1) b[j++]=a; return(j); } main() {
int i,j,a[10],b[10]; clrscr();
printf(\for(i=0;i<10;i++) scanf(\j=fun(a,b);
printf(\for(i=0;iBR> printf(\getch(); }
—————————————————————————————————————— 9.30 编写函数对字符数组中的输入字母,按由大到小的字母顺序进行排序。 ※程序如下※ #include
void alpha_sort(char a[],int n); void alpha_rout(char a[],int n); main() { char a[20]; int n; clrscr();
printf(\gets(a); n=strlen(a); alpha_sort(a,n); alpha_rout(a,n); }
void alpha_sort(char a[],int n) { int i,j,p,t; for(j=0;jBR> { p=j;
for(i=j+1;iBR> if(a[p]BR\{
t=a[j]; a[j]=a[p]; a[p]=t; } } }
void alpha_rout(char a[],int n) { int i;
printf(\for(i=0;iBR> printf(\}
——————————————————————————————————————
9.31 输入若干有序数放在数组中。然后输入一个数,插入到此有序数列中,插入后, 数组中的数仍然有序。请对以下三种情况运行你的程序,以便验证你的程序是否正确。 (1)插在最前 (2)插在最后 (3)插在中间 ※程序如下※ #include #define M 10
void sort(int a[M],int b[M+1],int n) { int i;
for(i=0;iBR> { if(a[0]>a[M-1]) {
if(nBR> b=a; else { b=n; break; } } else { if(n>a) b=a; else { b=n; break; } }
}
if(iBR> for(;iBR> b[i+1]=a; else b=n; } main() {
int i,n,a[M],b[M+1]; clrscr();
printf(\for(i=0;iBR> scanf(\printf(\scanf(\sort(a,b,n);
printf(\for(i=0;i<=M;i++) printf(\}
——————————————————————————————————————
9.32 编写函数把任意十进制整数转换成二进制数.提示:把十进制数不断除2除,余数放在一个一维数组中,直到商数为零.在主函数中进行输出,要求不得按逆序输出. ※程序如下※ #include
int dec_bin(int a[],int decimal) /*变量decimal表示十进制数*/ {
int i=0,remainder; while(decimal>0) {
remainder=decimal%2; decimal=decimal/2; a[i++]=remainder; if(decimal<2) { a=decimal; break; } } return(i); } main() {
int i,j,decimal,a[64];