热门搜索 :
考研考公
您的当前位置:首页正文

C语言检索程序

来源:伴沃教育


C语言实验测试

1. 已知学生的成绩信息如文件student.txt所示, 编写一个程序,读入学生信息,用户输入查询方式(1 按学号查; 2 按成绩查; 3 按姓名查),给出查询结果。可多次查询,按0键退出。

注: 1、student.txt中每行依次为 学号、姓名、性别、成绩。

2、已知学生人数少于100,但不知确切人数。

3、注意:可能有多人有相同的成绩,请输出所有的符合条件的学生。

参考界面如下所示:

附加题:

a. 编写一个函数,实现与strcat一样的功能。

char *strcat(s,ct),参见附录B.3

b. 编写一个函数,实现与strcpy一样的功能。

char *strcpy(s,ct) ,参见附录B.3

评分标准:

1、 完成基本题得5分;

2、 前20%完成基本题(每班10人)+1分;

3、 代码可读性非常强+1分;

(包括: a、缩进、排版格式符合规范;

b、变量、函数命名合理易读;

c、函数封装合理,程序条理清晰、结构化强;

d、有适当的注释说明。)

4、 完成基本题后完成附加题+1分;

5、 完成基本题后实现按学号查找的快速查找+1分,再实现按成绩查找的快速查找+1分。

(提示:先排序再二分查找。

学号是一一对应的,成绩则可能有多人相同。)

附件为:student.txt

内容如下

90 王晶 男 91.5

105 武迪 男 97

71 缪晓晴 女 92

7 曹元 男 92

74 蒲殷 女 90

94 王彤晖 女 91

99 王志孟 女 82

44 李辑 男 80

113 徐姝姝 女 85

104 朱青 女 80

14 姜振国 男 93

117 杨金超 男 84

68 马晓宇 男 71

41 瞿文心 女 89.5

140 周春城 女 93

126 张明洁 女 95.5

127 张奇 124 张欢 17 谌尧 100 魏耀 64 陆海岚 143 周强 139 郑吉君 125 张金龙 142 周凯 45 李加磊 男 94

女 80

女 92

男 81

女 87

男 90

男 87

男 82

男 82

男 79

135 赵清源 女 87.5

2 鲍绪良 男 80

80 沙睿 男 0

86 王常露 女 66

5 曹洁 女 70

147 周晔 男 70

69 马炎 女 76.5

149 朱青 女 73

95 王小军 男 90

57 刘虎 男 84

122 俞佳嘉 女 86

65 陆慧 女 91.5

21 凡金龙 男 75

47 李茜 女 67

33 华阳 女 87

87 王大千 男 85

28 陶纪元 56 刘大力 21 石飞 55 刘爱洲 114 徐鑫 144 周舒篁 15 陈烨 59 刘凌 24 高尚 13 丁辉 男 80

男 81

男 91

男 77

女 90

女 72

女 60

女 0

女 81

男 65

43 李冬华 男 76

111 徐登山 男 87

63 陆保国 男 63

121 殷陆斌 85 汤溢 154 张三 75 李四 98 赵五 107 钱六 24 孙七 73 李八 NJU Student

男 82

女 65

男 62

女 67.5

男 75

女 70

男 78

女 60

解答

#include \"stdafx.h\"

#include

#include

#include \"stdlib.h\"

struct stu_info{

int index;

float score;

char *name;

char *gender;

};

const int maxn = 1000;

const int max_len = 100;

int main() {

int n, i, index, tot, flag, mark;

float score;

char str[max_len], str1[maxn][max_len], str2[maxn][max_len];

struct stu_info stu[maxn];

FILE *fp;

if ((fp = fopen(\"D:\\\\2011-c语言\\\\student.txt\

printf(\"No Student Infomation Existed\\n\");

system(\"pause\");

return 0;

}

tot = 0;

while (! feof(fp)) {

fscanf(fp, \"%d %s %s %f\\n\

stu[tot].index = index;

stu[tot].score = score;

stu[tot].name = str1[tot];

stu[tot].gender = str2[tot];

tot ++;

};

fclose(fp);

printf(\"Welcome to Student Infomation Inquiry System\\n\");

flag = -1;

while (flag != 0) {

switch (flag) {

case -1 : for (i = 0; i < 30; i ++)

printf(\"*\");

printf(\"\\n\");

printf(\"请选择查询方式: 1 按学号查询; 2 按成绩查询; 3 按姓名查询;0 退出\\n\");

scanf(\"%d\

break;

case 1 : printf(\"请输入学号:\\n\");

scanf(\"%d\

mark = 0;

for (i = 0; i < tot; i ++)

if (index == stu[i].index) {

printf(\"%4d %4s %4s stu[i].name, stu[i].gender, stu[i].score);

mark = 1;

}

%8.1f\\n\stu[i].index,

if (mark == 0) printf(\"No Match!\\n\");

flag = -1;

break;

case 2 : printf(\"请输入成绩:\\n\");

scanf(\"%f\

mark = 0;

for (i = 0; i < tot; i ++)

if (score == stu[i].score) {

printf(\"%4d %4s %4s %8.1f\\n\stu[i].name, stu[i].gender, stu[i].score);

mark = 1;

}

if (mark == 0) printf(\"No Match!\\n\");

flag = -1;

stu[i].index,

break;

case 3 : printf(\"请输入姓名:\\n\");

scanf(\"%s\

mark = 0;

for (i = 0; i < tot; i ++)

if (strcmp(str, stu[i].name) == 0) {

printf(\"%4d %4s %4s %8.1f\\n\stu[i].name, stu[i].gender, stu[i].score);

mark = 1;

}

if (mark == 0) printf(\"No Match!\\n\");

flag = -1;

break;

default : break;

stu[i].index,

}

}

return 0;

}

#include \"stdafx.h\"

#include

#include

#include \"stdlib.h\"

struct Student_type{

int num;

float results;

char name[8];

char sex[2];

}stud[100];

int main() {

FILE *fp;

if ((fp = fopen(\"D:\\\\2011-c语言\\\\student.txt\

printf(\"No Student Infomation Existed\\n\");

exit(0);

}

int i = 0;

while (! feof(fp)) {

fscanf(fp, \"%d %s %s %f\\n\&stud[i].num, stud[i].name, &stud[i].results);

i ++;

};

stud[i].sex,

fclose(fp);

A:

printf(\"*************************\\n\");

printf(\"请输入查询方式:1 按学号查;2 按成绩查;3 按姓名查;4 请输入性别;0 退出\\n\");

int CHAXUN,num,j,k;

int mark=0;

float results;

float a[100];

char str1[8],str2[2];

printf(\"查询方式:\");

scanf(\"%d\

if (CHAXUN==0)

goto B;

switch (CHAXUN)

{ case 1:

printf(\"请输入学号:\\n\");

scanf(\"%d\

for(j=0;j<3;j++)

{if(stud[j].num==num)

printf(\"%10d %10s %10s %12.1f\\n\stud[j].results),

mark=1;

}

if(mark==0)

printf(\"No match!\\n\");

break;

case 2:

stud[j].num, stud[j].name, stud[j].sex,

printf(\"请输入成绩:\\n\");

scanf(\"%f\

for(j=0;j<100;j++)

{if(stud[j].results==results)

printf(\"%10d %10s %10s %12.1f\\n\stud[j].results),

mark=1;

}

if(mark==0)

printf(\"No match!\\n\");

break;

case 3:

printf(\"请输入姓名:\\n\");

scanf(\"%s\

stud[j].num, stud[j].name, stud[j].sex,

for(j=0;j<100;j++)

{if (strcmp(str1,stud[j].name) ==0)

printf(\"%10d %10s %10s %12.1f\\n\stud[j].num, stud[j].name, stud[j].sex, stud[j].results),

mark=1;

}

if(mark==0)

printf(\"No match!\\n\");

break;

case 4:

printf(\"请输入性别:\\n\");

scanf(\"%s\

for(j=0;j<100;j++)

{if (strcmp(str2,stud[j].sex) ==0)

printf(\"%10d %10s %10s %12.1f\\n\stud[j].num, stud[j].name, stud[j].sex, stud[j].results),

mark=1;

}

if(mark==0)

printf(\"No match!\\n\");

break;

default: break;

}

goto A;

B:

fclose(fp);

return 0;

}

程序解答(学生写的)

因篇幅问题不能全部显示,请点此查看更多更全内容

Top