c语言编程:1. 用户先输入10个整数,再输入x,请删除所有的x再输出,如果x不在数组中,输出not found. 函数原型:int delete(int *a, int *n, int x); 其中,a是数组首元素地址,n是数组元素个数所在地址,x是要删除的整数。如果删除了x返回1,否则返回0。 2. 用户输入n,再输入n个长度不超过20的有序字符串(按照字典顺序),再输入一个字符串(长度不超过20),将其插入现有字符串数组后仍有序。 函数原型:void (char (*p)[21],int n, char *t); 其中,p是n个字符串在内存中的首地址,n是字符串个数,t是要插入的字符串。 要求使用有序插入,只不过在比较和挪数据时要使用字符串函数而已。 main函数负责输入、调用和输出。
时间: 2024-02-29 19:52:30 浏览: 59
以下是代码实现:
```c
#include <stdio.h>
#include <string.h>
int delete(int *a, int *n, int x);
void insert(char (*p)[21], int n, char *t);
int main()
{
int a[10], n = 10, x, i, flag;
char str[10][21], t[21];
printf("请输入10个整数:\n");
for (i = 0; i < n; i++)
scanf("%d", &a[i]);
printf("请输入要删除的整数:\n");
scanf("%d", &x);
flag = delete(a, &n, x);
if (flag == 1)
{
printf("删除后的数组为:\n");
for (i = 0; i < n; i++)
printf("%d ", a[i]);
printf("\n");
}
else if (flag == 0)
printf("not found.\n");
printf("请输入字符串个数n:\n");
scanf("%d", &n);
printf("请输入%d个有序字符串:\n", n);
for (i = 0; i < n; i++)
scanf("%s", str[i]);
printf("请输入要插入的字符串:\n");
scanf("%s", t);
insert(str, n, t);
printf("插入后的字符串数组为:\n");
for (i = 0; i < n + 1; i++)
printf("%s\n", str[i]);
return 0;
}
int delete(int *a, int *n, int x)
{
int i, j, flag = 0;
for (i = 0; i < *n; i++)
{
if (a[i] == x)
{
flag = 1;
for (j = i + 1; j < *n; j++)
a[j - 1] = a[j];
i--;
(*n)--;
}
}
return flag;
}
void insert(char (*p)[21], int n, char *t)
{
int i, j;
for (i = 0; i < n; i++)
{
if (strcmp(t, p[i]) < 0)
{
for (j = n - 1; j >= i; j--)
strcpy(p[j + 1], p[j]);
strcpy(p[i], t);
break;
}
}
if (i == n)
strcpy(p[n], t);
}
```
代码中使用 `delete` 函数实现了删除数组中所有的 `x`,并返回删除状态,如果删除成功则输出删除后的数组,否则输出 `not found.`。
使用 `insert` 函数实现了有序插入字符串,首先在数组中找到插入位置,然后将后面的字符串依次往后挪一位,最后将新字符串插入到指定位置。
阅读全文