![]() |
#2
rjsp2021-02-25 07:41
|

#include<stdio.h>
#include<stdlib.h>
#define NUM 5
void save(int* p, int n);
void read(int* p, int n);
void menu();
void output(int* p, int num);
void scan(int* p, int num);
int checkLoc(int loc);
int insert(int a[NUM + 1], int N, int b, int c);
int deleting(int a[NUM + 1], int b);
int find(int a[NUM + 1], int x);
int main()
{
int select;//选项输入
int flag, index;//标志数字
int loc, x;//位置和数字
int t;
int i;//循环参数
int a[NUM + 1];
for (i = 0; i < NUM; i++)
{
scanf("%d", &a[i]);//通过键盘给数组赋值
}
//read(a,NUM);//通过文件读入数值
output(a, NUM);//请打印数组
for (;;)
{
menu();
printf("请输入选项1-5进行选择:\n");
scanf("%d", &select);
switch (select)
{
case 1:
while (1)
{
printf("请输入待插入一个位置\n");
scanf("%d", &loc);
t = checkLoc(loc);
if (t == 1)//checkLoc函数用来检测插入或删除位置的检测,比如位置不能小于0
break;
}
printf("请输入一个待插入的数:\n");
scanf("%d", &x);
flag = insert(a[NUM + 1], NUM, loc, x);
output(a, NUM);//请在a数组中的loc位置插入一个值x,成功返回1,不成功返回0
break;
case 2:
while (1)
{
printf("请输入待删除一个位置:\n");
scanf("%d", &loc);
t = checkLoc(loc);
if (t == 1)//checkLoc函数用来检测插入或删除位置的检测,比如位置不能小于0
break;
}
flag = delete(a[NUM + 1], loc);//请在a数组的loc位置删除一个数,成功返回1,不成功返回0
break;
case 3:
index = find(a[NUM + 1], x);//请在a数组中查找x,成功返回x所在下标,不成功返回-1
break;
case 4:
//update(a, loc, x, NUM + 1);
break;
case 5:
exit(0);
default:
printf("输入有误,请重新输入");
}
}
save(a, NUM + 1);
}
void save(int* p, int n)
{
FILE* fp;
if ((fp = fopen("f:\\ab.txt", "wb+")) == NULL)
{
printf("cannot open file ");
exit(0);
}
int t = fwrite(p, sizeof(int), n, fp);
printf("t=%d", t);
fclose(fp);
}
void read(int* p, int n)
{
FILE* fp;
if ((fp = fopen("f:\\ab.txt", "rb")) == NULL)
{
printf("cannot open file ");
exit(0);
}
int t = fread(p, sizeof(int), 5, fp);
int i;
for (i = 0; i <= n - 1; i++)
{
printf("p[i]=%d", p[i]);
}
fclose(fp);
}
void menu()
{
printf("\n\t\t\t\twelcome to the data world!\n");
printf("\n");
printf("\t\t\t1、向数组插入数值 2、删除数组的值\n");
printf("\n");
printf("\t\t\t3、查找数组元素 4、修改数组的值\n");
printf("\n");
printf("\t\t\t5、退出\n");
printf("\n");
}
void output(int* p, int num)
{
int i;
for (i = 0; i <= num - 1; i++)
{
printf("%4d", p[i]);
}
}
void scan(int* p, int num)
{
int i;
printf("请给数组赋值:%d个\n", num);
for (i = 0; i <= num - 1; i++)
{
scanf("%d", &p[i]);
}
}
int checkLoc(int loc)
{
if (loc < 0 || loc>4)
{
printf("输入位置无效\n");
return 0;
}
else
return 1;
}
int insert(int a[NUM + 1], int N, int b, int c) //添加函数,这个函数有问题?
{
int i;
for (i = N; i >= b + 1; i--)
a[i] = a[i - 1];
a[b] = c;
printf("插入数据后的序列为:\n");
for (i = 0; i <= N; i++)
printf("%4d", a[i]);
printf("\n");
}
int deleting(int a[NUM + 1], int b)//删除数组
{
int i;
for (i = b; i < NUM; i++)
{
a[i] = a[i + 1];
}
printf("删除数组后的序列为:\n");
for (i = 0; i <= NUM; i++)
printf("%4d", a[i]);
printf("\n");
}
int find(int a[NUM + 1], int x)
{
int i;
for (i = 0; i < NUM; i++)
{
if (a[i] == x)
{
return i;
}
}
return -1;
}
#include<stdlib.h>
#define NUM 5
void save(int* p, int n);
void read(int* p, int n);
void menu();
void output(int* p, int num);
void scan(int* p, int num);
int checkLoc(int loc);
int insert(int a[NUM + 1], int N, int b, int c);
int deleting(int a[NUM + 1], int b);
int find(int a[NUM + 1], int x);
int main()
{
int select;//选项输入
int flag, index;//标志数字
int loc, x;//位置和数字
int t;
int i;//循环参数
int a[NUM + 1];
for (i = 0; i < NUM; i++)
{
scanf("%d", &a[i]);//通过键盘给数组赋值
}
//read(a,NUM);//通过文件读入数值
output(a, NUM);//请打印数组
for (;;)
{
menu();
printf("请输入选项1-5进行选择:\n");
scanf("%d", &select);
switch (select)
{
case 1:
while (1)
{
printf("请输入待插入一个位置\n");
scanf("%d", &loc);
t = checkLoc(loc);
if (t == 1)//checkLoc函数用来检测插入或删除位置的检测,比如位置不能小于0
break;
}
printf("请输入一个待插入的数:\n");
scanf("%d", &x);
flag = insert(a[NUM + 1], NUM, loc, x);
output(a, NUM);//请在a数组中的loc位置插入一个值x,成功返回1,不成功返回0
break;
case 2:
while (1)
{
printf("请输入待删除一个位置:\n");
scanf("%d", &loc);
t = checkLoc(loc);
if (t == 1)//checkLoc函数用来检测插入或删除位置的检测,比如位置不能小于0
break;
}
flag = delete(a[NUM + 1], loc);//请在a数组的loc位置删除一个数,成功返回1,不成功返回0
break;
case 3:
index = find(a[NUM + 1], x);//请在a数组中查找x,成功返回x所在下标,不成功返回-1
break;
case 4:
//update(a, loc, x, NUM + 1);
break;
case 5:
exit(0);
default:
printf("输入有误,请重新输入");
}
}
save(a, NUM + 1);
}
void save(int* p, int n)
{
FILE* fp;
if ((fp = fopen("f:\\ab.txt", "wb+")) == NULL)
{
printf("cannot open file ");
exit(0);
}
int t = fwrite(p, sizeof(int), n, fp);
printf("t=%d", t);
fclose(fp);
}
void read(int* p, int n)
{
FILE* fp;
if ((fp = fopen("f:\\ab.txt", "rb")) == NULL)
{
printf("cannot open file ");
exit(0);
}
int t = fread(p, sizeof(int), 5, fp);
int i;
for (i = 0; i <= n - 1; i++)
{
printf("p[i]=%d", p[i]);
}
fclose(fp);
}
void menu()
{
printf("\n\t\t\t\twelcome to the data world!\n");
printf("\n");
printf("\t\t\t1、向数组插入数值 2、删除数组的值\n");
printf("\n");
printf("\t\t\t3、查找数组元素 4、修改数组的值\n");
printf("\n");
printf("\t\t\t5、退出\n");
printf("\n");
}
void output(int* p, int num)
{
int i;
for (i = 0; i <= num - 1; i++)
{
printf("%4d", p[i]);
}
}
void scan(int* p, int num)
{
int i;
printf("请给数组赋值:%d个\n", num);
for (i = 0; i <= num - 1; i++)
{
scanf("%d", &p[i]);
}
}
int checkLoc(int loc)
{
if (loc < 0 || loc>4)
{
printf("输入位置无效\n");
return 0;
}
else
return 1;
}
int insert(int a[NUM + 1], int N, int b, int c) //添加函数,这个函数有问题?
{
int i;
for (i = N; i >= b + 1; i--)
a[i] = a[i - 1];
a[b] = c;
printf("插入数据后的序列为:\n");
for (i = 0; i <= N; i++)
printf("%4d", a[i]);
printf("\n");
}
int deleting(int a[NUM + 1], int b)//删除数组
{
int i;
for (i = b; i < NUM; i++)
{
a[i] = a[i + 1];
}
printf("删除数组后的序列为:\n");
for (i = 0; i <= NUM; i++)
printf("%4d", a[i]);
printf("\n");
}
int find(int a[NUM + 1], int x)
{
int i;
for (i = 0; i < NUM; i++)
{
if (a[i] == x)
{
return i;
}
}
return -1;
}