#include<stdio.h> int amount[]={1,5,10,25,50}; int *name[]={"penny","nickel","dime","quarter","half-dollar"}; int search(int key,int a[],int len) { int ret=-1; int i=0; for(i=0;i<len;i++){ if(key==a[i]){ ret=i; break; } } return ret; } int main() { int k=10; int r=search(k,amount,sizeof(amount)/sizeof(amount[0])); if(r>-1){ printf("%s\n",name[r]); } return 0; }
时间: 2024-04-17 21:25:18 浏览: 97
这是一个简单的程序,它定义了一个名为 `amount` 的整数数组和一个名为 `name` 的指针数组。然后它使用 `search` 函数来查找数组 `amount` 中的一个特定元素,并返回对应的 `name` 数组中的字符串。
在这个程序中,警告信息可能是由于以下原因引起的:
1. 当你声明 `name` 数组时,你没有指定元素的类型。指针数组需要指定每个元素的类型,比如 `char*`。因此,你应该将 `int *name[]` 更改为 `char* name[]`。
2. 在 `printf` 语句中,你使用 `%s` 格式说明符来打印 `name[r]` 的值。但是根据你的代码,`name[r]` 是一个指向字符串的指针,所以你应该使用 `%s` 格式说明符来打印字符串。
下面是修改后的代码:
```c
#include<stdio.h>
int amount[] = {1, 5, 10, 25, 50};
char* name[] = {"penny", "nickel", "dime", "quarter", "half-dollar"};
int search(int key, int a[], int len)
{
int ret = -1;
int i = 0;
for(i = 0; i < len; i++)
{
if(key == a[i])
{
ret = i;
break;
}
}
return ret;
}
int main()
{
int k = 10;
int r = search(k, amount, sizeof(amount) / sizeof(amount[0]));
if(r > -1)
{
printf("%s\n", name[r]);
}
return 0;
}
```
这样修改后的代码应该不再产生警告,且能正确打印出 "dime"。
阅读全文