|
一维字符数组:
char s[10]={"a"};
字符串a的首地址是s。
puts(s)输出a
二维字符数组:
char s2[][10]={"ab","cd"};
它是这样表示的:
字符串ab的首地址是s2[0],字符串cd的首地址是s2[1],这里方括号表示第二维。
puts(s2[0])输出ab
putchar(s2[0][1])输出b
三维字符数组:
char s3[][2][10]={{"abc","def"},{"123","456"},{"ABC","DEF"}};
它是这样表示的:
字符串abc的首地址是s3[0][0],字符串DEF的首地址是s3[2][1],这里从右数第一个方括号表示第二维,第二个方括号表示第三维。
puts(s3[0][0])输出abc,puts(s3[2][1])输出DEF
putchar(s3[2][1][0])输出D
举例:谭四版ch7-15
写几个函数,①输入10个职工的姓名和职工号;②按职工号由小到大顺序排序,姓名顺序也随之调整;③要求输入一个职工号,用折半查找法找出该职工的姓名,从主函数输入要查找的职工号,输出该职工姓名。
file1:
#include "stdio.h"
#include "string.h"
#include "math.h"
#define N 4
int main()
{
void f1(char s[N][2][10]);
void f2(char s[N][2][10]);
void f3(char s[N][2][10],char n[10]);
char s[N][2][10]={},n[10]={};
printf("Input number and name:\n");
f1(s);
printf("sort:\n");
f2(s);
printf("Input a number: ");
scanf("%s",n);
f3(s,n);
return 0;
}
file2:
#include "stdio.h"
#include "string.h"
#include "math.h"
#define N 4
void f1(char s[N][2][10])
{
int i,j,k;
for(i=0;i<N;i++)
{
printf("%d\n",i);
for(j=0;j<2;j++)
if(j==0)
{
printf("number: ");
scanf("%s",s[i][j]);
while(1)
{
w1:for(k=0;k<=i-1;k++)
if(strcmp(s[k][j],s[i][j])==0)
{
printf("same with %d, input the number again: ",k);
scanf("%s",s[i][j]);
goto w1;
}
for(k=0;k<=i-1;k++)
if(s[i][j]!=s[k][j])
continue;
break;
}
}
else
{
printf("name: ");
scanf("%s",s[i][j]);
}
}
}
void f2(char s[N][2][10])
{
int i,j;
char t[1][2][10]={};
for(i=0;i<N-1;i++)
for(j=i;j<N;j++)
if(strcmp(s[i][0],s[j][0])==1)
{
strcpy(t[0][0],s[i][0]);
strcpy(t[0][1],s[i][1]);
strcpy(s[i][0],s[j][0]);
strcpy(s[i][1],s[j][1]);
strcpy(s[j][0],t[0][0]);
strcpy(s[j][1],t[0][1]);
}
for(i=0;i<N;i++)
printf("%s\t%s\n",s[i][0],s[i][1]);
}
void f3(char s[N][2][10],char n[10])
{
int left,right,mid;
left=0;
right=N-1;
while(left!=right)
{
mid=(left+right)/2;
if(fabs(fabs(left-right)-1)<1e-6 && strcmp(n,s[mid][0])!=0)
{
printf("not exit!\n");
break;
}
if(strcmp(n,s[mid][0])==0)
{
puts(s[mid][1]);
break;
}
else if(strcmp(n,s[right][0])==0)
{
puts(s[right][1]);
break;
}
else if(strcmp(n,s[mid][0])==-1)
right=mid;
else if(strcmp(n,s[mid][0])==1)
left=mid;
}
}
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-9-1 12:16
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社