C语言问题,求大牛指标12
写几个函数:①输个职工的姓名和职工号;②按职工号由小到大顺序排序,姓名顺序也随之调整;③要求输入一个职工号,用折半法找出该职工的姓名,从主函数输入要查找的职工号,输出该职工姓名。
谭浩强的C语言程序设计中的题
////为什么名字要用二维数组name[N][8]呢
////是因为char[10]只能存放10个字符,用一维数组的话,名字只能写一个字符吗??
想问哈 input函数中的getchar()与gets_s(name[i])
getchar(); ////getchar();
gets_s(name[i]);都是输入,不是重了么,试着注释其中一个就读入不进去名字
不懂 求大神指点~
#include <stdio.h>
#include <string.h>
#define N 10
int main()
{
void input(int[], char name[][8]);
void sort(int[], char name[][8]);
void search(int, int[], char name[][8]);
int num[N], number, flag = 1, c;
char name[N][8];
input(num, name);
sort(num, name);
while (flag == 1)
{
printf("\ninput number to look for:");
scanf_s("%d", &number);
search(number, num, name);
printf("continue ot not(Y/N)?");
getchar();
c = getchar();
if (c == 'N' || c == 'n')
flag = 0;
}
return 0;
}
void input(int num[], char name[N][8])
{
int i;
for (i = 0; i<N; i++)
{
printf("input NO.: ");
scanf_s("%d", &num[i]);
printf("input name: ");
getchar(); ////getchar(); gets_s(name[i]);都是输入,不是重了么,试着注释其中一个就读入不进去名字
////为什么名字要用二维数组name[N][8]呢
////是因为char[10]只能存放10个字符,用一维数组的话,名字只能写一个字符吗??
gets_s(name[i]);
}
}
void sort(int num[], char name[N][8])
{
int i, j, min, templ;
char temp2[8];
for (i = 0; i<N - 1; i++)
{
min = i;
for (j = i; j<N; j++)
if (num[min]>num[j]) min = j;
templ = num[i];
strcpy_s(temp2, name[i]);
num[i] = num[min];
strcpy_s(name[i], name[min]);
num[min] = templ;
strcpy_s(name[min], temp2);
}
printf("\n result:\n");
for (i = 0; i<N; i++)
printf("\n %5d%10s", num[i], name[i]);
}
void search(int n, int num[], char name[N][8])
{
int top, bott, mid, loca, sign;
top = 0;
bott = N - 1;
loca = 0;
sign = 1;
if ((n<num[0]) || (n>num[N - 1]))
loca = -1;
while ((sign == 1) && (top <= bott))
{
mid = (bott + top) / 2;
if (n == num[mid])
{
loca = mid;
printf("NO. %d , his name is %s.\n", n, name[loca]);
sign = -1;
}
else if (n<num[mid])
bott = mid - 1;
else
top = mid + 1;
}
if (sign == 1 || loca == -1)
printf("%d not been found.\n", n);
}
input函数中的getchar()与
gets_s(name[i])
getchar(); ////getchar();
gets_s(name[i]);都是输入,不是重了么,试着注释其中一个就读入不进去名字
////为什么名字要用二维数组name[N][8]呢
////是因为char[10]只能存放10个字符,用一维数组的话,名字只能写一个字符吗??
gets_s(name[i]);
九号公司成长空间 1人发布

