主题:学生求解初级问题
#include <stdio.h>
int main(void){
char SM[9]={'A','D','B','H','G','K','M','N','O'};
int NR[9]={25,35,86,21,20,18,28,35,22};
printf("姓名 年龄\n");
int i,j,k,y,g;
int result=-1;
char x;
for(i=0;i<9;i++){
k=i;
for(j=i+1;j<5;j++){
if(SM[j]<SM[k]) k=j;
}
y=SM[i];
g=NR[i];
SM[i]=SM[k];
NR[i]=NR[k];
SM[k]=y;
NR[k]=g;
}
for(i=0;i<9;i++){
printf("%c",SM[i]);
printf(" ");
printf(" %3d",NR[i]);
printf("\n");
}
i=0;j=8;
printf("二分法 姓名输入: ");
scanf("%c",&x);
while(result==-1){
k=(i+j)/2;
if(SM[k]==x)result=k;
else if(SM[k]>x)
j=k-1;
else
i=k+1;
}
printf("%c人是%d岁。\n",x,NR[k]);
getchar();getchar();
return(0);
}
上面的是输入姓名显示年龄的
可以帮我改成输入年龄查姓名的吗?
我知道把 SM 和 NR 的位置换一下
但是还是显示不出来, 请求帮助。
问题2
配列 double a[7]={1.0,1.5,2.0,2.5,3.0,3.5,4.0}
用Pointer 变数 表示
int main(void){
char SM[9]={'A','D','B','H','G','K','M','N','O'};
int NR[9]={25,35,86,21,20,18,28,35,22};
printf("姓名 年龄\n");
int i,j,k,y,g;
int result=-1;
char x;
for(i=0;i<9;i++){
k=i;
for(j=i+1;j<5;j++){
if(SM[j]<SM[k]) k=j;
}
y=SM[i];
g=NR[i];
SM[i]=SM[k];
NR[i]=NR[k];
SM[k]=y;
NR[k]=g;
}
for(i=0;i<9;i++){
printf("%c",SM[i]);
printf(" ");
printf(" %3d",NR[i]);
printf("\n");
}
i=0;j=8;
printf("二分法 姓名输入: ");
scanf("%c",&x);
while(result==-1){
k=(i+j)/2;
if(SM[k]==x)result=k;
else if(SM[k]>x)
j=k-1;
else
i=k+1;
}
printf("%c人是%d岁。\n",x,NR[k]);
getchar();getchar();
return(0);
}
上面的是输入姓名显示年龄的
可以帮我改成输入年龄查姓名的吗?
我知道把 SM 和 NR 的位置换一下
但是还是显示不出来, 请求帮助。
问题2
配列 double a[7]={1.0,1.5,2.0,2.5,3.0,3.5,4.0}
用Pointer 变数 表示