c语言15个数存放在一维数组中,输入一个数,要求找出该数是数组中第几个元素的值。如果该数不在数组中,则输出“No existence”。
时间: 2024-02-13 18:04:48 浏览: 76
可以通过遍历数组的方式查找该数是否在数组中出现,若出现则返回该数的下标,否则返回“No existence”。下面是相应的 C 代码实现:
```c
#include <stdio.h>
int main() {
int arr[15] = {2, 5, 6, 7, 8, 9, 12, 15, 18, 20, 25, 30, 35, 40, 45};
int num, i;
printf("请输入一个数:");
scanf("%d", &num);
for (i = 0; i < 15; i++) {
if (arr[i] == num) {
printf("%d 是数组中第 %d 个元素\n", num, i+1);
return 0;
}
}
printf("No existence\n");
return 0;
}
```
在这个程序中,我们假设数组已经有序,如果数组无序,则需要先进行排序再进行查找,时间复杂度为 O(nlogn)。
相关问题
用动态数组编程输入任意m个班学生(每班n个学生)的某门课的成绩,计算最高分,并指出具有该最高分成绩的学生是第几个班的第几个学生。其中,m和n的值由用户从键盘任意输入(不限定m和n的上限值)。c实现
### 回答1:
以下是用动态数组实现的C代码:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
int m, n;
printf("请输入班级个数m和每个班的学生数n:\n");
scanf("%d%d", &m, &n);
int **score = (int **)malloc(m * sizeof(int *)); // 动态分配二维数组
for (int i = 0; i < m; i++) {
score[i] = (int *)malloc(n * sizeof(int));
printf("请输入第%d个班的%d个学生的成绩:\n", i + 1, n);
for (int j = 0; j < n; j++) {
scanf("%d", &score[i][j]);
}
}
int max_score = score[0][0], max_i = 1, max_j = 1; // 初始化最高分和对应学生
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if (score[i][j] > max_score) {
max_score = score[i][j];
max_i = i + 1;
max_j = j + 1;
}
}
}
printf("最高分为%d,对应的学生是第%d个班的第%d个学生。\n", max_score, max_i, max_j);
for (int i = 0; i < m; i++) {
free(score[i]); // 释放动态分配的内存
}
free(score);
return 0;
}
```
程序先从键盘输入班级个数m和每个班的学生数n,然后动态分配一个二维数组score来存放每个班的学生成绩。接着循环输入每个班的学生成绩,并在输入时进行动态分配内存。随后,程序在score数组中遍历查找最高分数及其所在的班级和学生,最后输出结果。最后,程序释放动态分配的内存。
### 回答2:
以下是用C语言实现题目要求的程序代码:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
int m, n;
printf("请输入班级数m和每个班级的学生数n:");
scanf("%d %d", &m, &n);
int** scores = (int**)malloc(sizeof(int*) * m); // 动态分配二维数组
for (int i = 0; i < m; i++) {
scores[i] = (int*)malloc(sizeof(int) * n);
}
printf("请按顺序输入每个班级的学生成绩:\n");
int maxScore = -1; // 初始最高分成绩为-1
int maxRow = -1; // 记录最高分的学生所在班级
int maxCol = -1; // 记录最高分的学生在班级中的序号
for (int i = 0; i < m; i++) {
printf("第%d个班级:\n", i + 1);
for (int j = 0; j < n; j++) {
scanf("%d", &scores[i][j]);
if (scores[i][j] > maxScore) {
maxScore = scores[i][j];
maxRow = i + 1;
maxCol = j + 1;
}
}
}
printf("最高分:%d\n", maxScore);
printf("最高分学生所在班级:第%d个班级\n", maxRow);
printf("最高分学生在班级中的序号:第%d个学生\n", maxCol);
for (int i = 0; i < m; i++) {
free(scores[i]); // 释放内存
}
free(scores);
return 0;
}
```
在程序中,我们首先通过`scanf`函数从键盘中输入班级数`m`和每个班级的学生数`n`。然后,我们使用动态二维数组`scores`来存储每个学生的成绩。接下来,我们依次输入每个班级的学生成绩,并将最高分的学生信息保存在`maxScore`、`maxRow`和`maxCol`变量中。最后,输出最高分和对应的班级和学生序号信息。
需要注意的是,通过动态分配二维数组`scores`来存储成绩,可以实现对不限定`m`和`n`的输入要求。在程序结束之后,应当释放动态分配的内存,避免内存泄漏。
### 回答3:
以下是用C语言编写的程序:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
int m, n;
printf("请输入班级数m:");
scanf("%d", &m);
printf("请输入每个班级的学生数n:");
scanf("%d", &n);
int **scores = (int**)malloc(m * sizeof(int*));
for(int i = 0; i < m; i++) {
scores[i] = (int*)malloc(n * sizeof(int));
}
// 输入成绩
for(int i = 0; i < m; i++) {
for(int j = 0; j < n; j++) {
printf("请输入第%d个班级第%d个学生的成绩:", i + 1, j + 1);
scanf("%d", &scores[i][j]);
}
}
int maxScore = scores[0][0];
int maxClass = 1;
int maxStudent = 1;
// 计算最高分
for(int i = 0; i < m; i++) {
for(int j = 0; j < n; j++) {
if(scores[i][j] > maxScore) {
maxScore = scores[i][j];
maxClass = i + 1;
maxStudent = j + 1;
}
}
}
printf("最高分为%d,该成绩来自第%d个班级的第%d个学生。\n", maxScore, maxClass, maxStudent);
// 释放动态分配的内存
for(int i = 0; i < m; i++) {
free(scores[i]);
}
free(scores);
return 0;
}
```
用户首先需要从键盘输入班级数m和每个班级的学生数n。然后程序会动态分配一个大小为m x n的数组来存储成绩。接下来,程序会要求用户逐个输入每个班级学生的成绩。完成输入后,程序会遍历数组找出最高分,并记录最高分成绩的学生是第几个班的第几个学生。最后,程序会输出最高分成绩以及该成绩来自的班级和学生信息。最后,程序会释放动态分配的内存,并结束运行。
阅读全文