c语言练习:已知一维数组中存放了20个正整数,分别是:56,37,38,23,52,41,96,67,38, 15,23,25,21,67,65,54,53,52,68,90,从键盘输入一个正整数,按顺序在数组中查找与该数相等的数,输出其所在的位置。
时间: 2023-09-06 17:12:21 浏览: 95
好的,以下是对应的C语言代码实现:
```c
#include <stdio.h>
int main() {
// 定义数组
int arr[20] = {56, 37, 38, 23, 52, 41, 96, 67, 38, 15, 23, 25, 21, 67, 65, 54, 53, 52, 68, 90};
// 从键盘输入一个正整数
int num;
printf("请输入一个正整数:");
scanf("%d", &num);
// 遍历数组,查找相等的数
int i;
for (i = 0; i < 20; i++) {
if (arr[i] == num) {
printf("位置为:%d\n", i);
break;
}
}
if (i == 20) {
printf("没有找到该数!\n");
}
return 0;
}
```
希望能够解决你的问题。
相关问题
c语言求一维数组中最小元素值 输入数组的大小size,另一行给出正整数类型的值
在C语言中,你可以通过遍历数组的方式来找出一维数组中最小的元素值。这里是一个简单的示例程序:
```c
#include <stdio.h>
// 函数声明,用于寻找数组中的最小值
int findMin(int arr[], int size);
int main() {
int size;
printf("请输入数组的大小:");
scanf("%d", &size); // 获取输入的数组大小
// 假设我们有一个名为numbers的一维整数数组
int numbers[size];
printf("请输入数组的元素(以空格分隔):");
for (int i = 0; i < size; i++) {
scanf("%d", &numbers[i]);
}
// 调用函数找到并打印最小值
int min = findMin(numbers, size);
printf("数组中的最小元素是:%d\n", min);
return 0;
}
// 定义findMin函数,接收数组和其大小作为参数
int findMin(int arr[], int size) {
int min = arr[0]; // 假设第一个元素是最小的
for (int i = 1; i < size; i++) { // 从第二个元素开始比较
if (arr[i] < min) {
min = arr[i]; // 更新最小值
}
}
return min;
}
```
在这个程序中,用户首先输入数组的大小,然后依次输入每个元素。`findMin`函数遍历整个数组,每次都检查当前元素是否小于当前已知的最小值,如果是则更新这个最小值。最后,在`main`函数中调用`findMin`并打印出结果。
C语言编码。小哥从快递站接了一批包裹,他要把每个包裹送到客户手中,并回到快递站交差。显然他希望尽量少跑些路,本题并不要求找出最短的线路,尽量短一点就好。假设快递站和包裹要送到的地方都用编号表示,快递站在 1号,某些地点之间有道路相连,道路的长度已知。请为小哥设计一个送包裹的线路。比如:小哥接单的包裹要送往 6 个地点,各个地点之间是否有道路相通、以及路程长度如下图所示。 10 20 输入格式 输入的第 1 行是两个整数,前一个数表示 n 的值,是包括出快递站在内的地点的数量后一个表示 m,即共有多少条道路。从第 2 行开始,每一行是3个正整数,用逗号分隔,形如“x,yz”,表示两个地点之间道路长度,x 和y是地点编号,z 是长度。所有道路信息按首个地点x升序排列,x 相同者再按排序。写注释
```
#include <stdio.h>
#include <string.h>
#define MAX 1010 //定义数组最大长度
int main()
{
int n, m;
int i, j, k;
int map[MAX][MAX]; //二维数组表示地图
int dis[MAX]; //记录每个地点到快递站的距离
int book[MAX]; //标记每个地点是否已经访问过
int sum = 0; //记录总路程
scanf("%d%d", &n, &m);
memset(map, 999999, sizeof(map)); //初始化地图,即初始距离为极大值
for (i = 1; i <= n; i++)
map[i][i] = 0; //自己到自己的距离为0
//输入各个地点之间道路的长度
for (i = 1; i <= m; i++)
{
int a, b, c;
scanf("%d%d%d", &a, &b, &c);
map[a][b] = c;
}
//初始化dis数组,表示每个地点到快递站的距离,初始值为快递站到自己的距离
for (i = 1; i <= n; i++)
dis[i] = map[1][i];
//初始化book数组,表示每个地点是否已经访问过,初始值都为0
memset(book, 0, sizeof(book));
book[1] = 1; //快递站已经访问过
//进行n-1次循环,每次找出一个距离快递站最近的地点,并将它标记为已访问
for (i = 1; i <= n - 1; i++)
{
int min = 999999, u;
for (j = 1; j <= n; j++)
{
if (book[j] == 0 && dis[j] < min)
{
min = dis[j];
u = j;
}
}
book[u] = 1; //标记为已访问
//更新dis数组,即更新每个地点到快递站的距离
for (k = 1; k <= n; k++)
{
if (book[k] == 0 && dis[k] > dis[u] + map[u][k])
{
dis[k] = dis[u] + map[u][k];
}
}
}
//计算总路程
for (i = 2; i <= n; i++)
sum += dis[i];
printf("%d\n", sum);
return 0;
}
```
阅读全文