在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
首先看代码1:
1 #include <stdio.h>
2 #include <stdlib.h> 3 4 int main(int argc, char *argv[]) 5 { 6 int score[10]={76,85,90,67,59,79,82,95,91,65}; 7 int num; 8 int grade; 9 int i; 10 11 num=-1; 12 printf("用学生成绩查询学号"); 13 printf("请输入学生成绩(0到100)。==> "); 14 scanf("%d",&grade); 15 for(i=0;i<10;i++) 16 { 17 if(score[i]==grade) 18 { 19 num=i; 20 break; 21 } 22 } 23 if(num !=- 1) 24 { 25 printf("学生学号是:%d\n",num); 26 } 27 else 28 { 29 printf("没有此成绩的学生\n"); 30 } 31 32 system("PAUSE"); 33 return 0; 34 } 35
很明显,最坏的情况,什么也查不到,但整个数组遍历了。
看代码2:
1 #include <stdio.h>
2 #include <stdlib.h> 3 4 int main(int argc, char *argv[]) 5 { 6 int score[10]={76,85,90,67,59,79,82,95,91,65}; 7 int pointer[101]; 8 int index; 9 int grade; 10 int i; 11 12 /*第一部分:创建指针数组*/ 13 for(i=0; i<=101; i++) 14 { 15 pointer[i] = -1; 16 } 17 for(i=0; i<10; i++) 18 { 19 index=score[i]; 20 pointer[index]=i; 21 } 22 /*第二部分:查询学生学号*/ 23 while(1) 24 { 25 printf("请输入学生成绩(0到100).==>"); 26 scanf("%d",&grade); 27 if(grade != -1) 28 { 29 index = pointer[grade]; 30 if(index != -1) 31 {printf("学生学号是:%d\n",index);} 32 else 33 {printf("没有此成绩的学生\n");} 34 } 35 else 36 {exit(1);} 37 } 38 39 40 system("PAUSE"); 41 return 0; 42 } 43
除了第一次查询要创建pointer数组外,以后每次查询都可以固定时间内找到。当然,此程序的前提是,每个成绩只出现一次。那么出现多次呢?我也没想好。 |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论