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]);