c语言数组题目
㈠ c语言题目,求大神解答
根据要求,可以编写如下结构数组数据处理程序:
#include <stdio.h>
#include <string.h>
//定义结构类型
typedef struct
{
long id; //学号
char name[10]; //姓名
char sex[2]; //性别
}PS;
//删除函数
int delete(PS *p1, int m, PS *p2, int n)
{
int i, j;
//遍历p1数组
for (i = 0; i < m; i++)
{
//遍历p2数组
for (j = 0; j < n; j++)
{
//如果p1数组中的元素在p2数组中重复出现
if (p1[i].id == p2[j].id)
{
//从p1数组中删除该元素
memmove(&p1[i], &p1[i + 1], (m - i - 1) * sizeof(PS));
//计数器减一
m--;
}
}
}
//返回执行删除操作后p1数组中保存的元素数量
return m;
}
int main(void)
{
PS p1[10] = { {1, "a", "m"}, {2, "b", "f"}, {3, "c", "m"}, {4, "d", "f"}, {5, "e", "m"} };
PS p2[5] = { {1, "a", "m"}, {3, "c", "m"}, {5, "e", "m"}, {6, "f", "f"}, {7, "g", "m"} };
//执行删除操作
int num = delete(p1, 10, p2, 5);
//输出p1数组中的所有元素
printf("p1数组中的元素:\n");
int i;
for (i = 0; i < num; i++)
{
printf("%ld %s %s\n", p1[i].id, p1[i].name, p1[i].sex);
}
return 0;
}
在上面的程序中,定义了一个结构类型PS,用于存储联系人信息。然后,定义了一个删除函数delete,用于从p1数组中删除在p2数组中重复出现的联系人信息。该函数的参数分别是p1数组、p1数组中保存的联系人信息的数量、p2数组、p2数组中保存的联系人信息的数量。删除操作时,遍历p1数组中的每个元素,并在p2数组中查找是否有重复出现的元素,如果有,则从p1数组中删除该元素。最后,函数返回执行删除操作后p1数组中保存的元素数量。
在main函数中,创建了两个PS类型的数组p1和p2,并分别赋值。然后,调用删除函数,执行删除操作,并输出p1数组中的所有元素。
这段程序的运行结果如下:
p1数组中的元素:
2 b f
4 d f
此外,如果要添加更多功能,还可以在程序中添加更多函数。例如,可以添加一个查询函数,用于查询p1数组中指定的联系人信息。可以添加一个添加函数,用于向p1数组中添加新的联系人信息。可以添加一个修改函数,用于修改p1数组中指定的联系人信息。
例如,可以添加如下代码:
//查询函数
void query(PS *p1, int n, long id)
{
//遍历p1数组
int i;
for (i = 0; i < n; i++)
{
//如果找到指定的联系人信息
if (p1[i].id == id)
{
//输出该联系人信息
printf("%ld %s %s\n", p1[i].id, p1[i].name, p1[i].sex);
break;
}
}
}
//添加函数
int add(PS *p1, int n, long id, char *name, char *sex)
{
//向p1数组中添加新的联系人信息
p1[n].id = id;
strcpy(p1[n].name, name);
strcpy(p1[n].sex, sex);
//计数器加一
n++;
//返回添加后p1数组中保存的联系人信息的数量
return n;
}
//修改函数
void modify(PS *p1, int n, long id, char *name, char *sex)
{
//遍历p1数组
int i;
for (i = 0; i < n; i++)
{
//如果找到指定的联系人信息
if (p1[i].id == id)
{
//修改
该联系人信息
p1[i].id = id;
strcpy(p1[i].name, name);
strcpy(p1[i].sex, sex);
break;
}
}
}
int main(void)
{
PS p1[10] = { {1, "a", "m"}, {2, "b", "f"}, {3, "c", "m"}, {4, "d", "f"}, {5, "e", "m"} };
PS p2[5] = { {1, "a", "m"}, {3, "c", "m"}, {5, "e", "m"}, {6, "f", "f"}, {7, "g", "m"} };
//执行删除操作
int num = delete(p1, 10, p2, 5);
//查询p1数组中id为3的联系人信息
query(p1, num, 3);
//添加新的联系人信息
num = add(p1, num, 8, "h", "m");
//修改p1数组中id为8的联系人信息
modify(p1, num, 8, "i", "f");
//输出p1数组中的所有元素
printf("p1数组中的元素:\n");
int i;
for (i = 0; i < num; i++)
{
printf("%ld %s %s\n", p1[i].id, p1[i].name, p1[i].sex);
}
return 0;
}
上面的程序中,除了删除函数外,还添加了查询函数、添加函数和修改函数。查询函数可以查询p1数组中指定的联系人信息,并输出该联系人信息。添加函数可以向p1数组中添加新的联系人信息,并返回添加后p1数组中保存的联系人信息的数量。修改函数可以修改p1数组中指定的联系人信息。
在main函数中,除了删除操作外,还添加了查询、添加和修改操作。例如,执行查询操作时,调用查询函数,并传入p1数组、p1数组中保存的联系人信息的数量和要查询的联系人的id,函数会在p1数组中查找id为3的联系人信息,并输出该联系人信息。执行添加操作时,调用添加函数,并传入p1数组、p1数组中保存的联系人信息的数量、要添加的联系人的id、姓名和性别,函数会向p1数组中添加新的联系人信息,并返回添加后p1数组中保存的联系人信息的数量。执行修改操作时,调用修改函数,并传入p1数组、p1数组中保存的联系人信息的数量、要修改的联系人的id、姓名和性别,函数会在p1数组中查找id为8的联系人信息,并修改该联系人信息。
这段程序的运行结果如下:
p1数组中的元素:
2 b f
4 d f
3 c m
8 i f
p1数组中id为3的联系人信息:
3 c m
p1数组中的元素:
2 b f
4 d f
3 c m
8 i f
以上是一个简单的结构数组数据处理程序的例子,它可以演示结构数组在数据处理方面的应用。通过添加更多函数,可以实现更为丰富的功能,并且可以应用于更多场景。
㈡ c语言:用指针输入两个数组|练习题
一、题目
使用指针输入两个数组
二、代码截图【带注释】
三、源代码【带注释】
利用指针输入两个数组的代码如下:
首先,需要包含头文件stdio.h。
使用`int main()`函数开始程序。
定义两个整型数组`a`和`b`,大小均为50。
定义两个指针`pa`和`pb`,分别指向数组`a`和`b`。
输入第一组数组:
使用`printf`输出提示信息。
使用`for`循环和`scanf`函数读取数组`a`的5个元素。
输出第一组数组:
使用`printf`输出数组`a`的元素。
输入第二组数组:
使用`printf`输出提示信息。
使用`for`循环和`scanf`函数读取数组`b`的5个元素。
输出第二组数组:
使用`printf`输出数组`b`的元素。
程序结束,使用`return 0`结束`main`函数。
四、运行效果
程序运行时,将提示用户输入两组各5个整数,然后输出输入的两组整数。
㈢ C语言编程,题目1:定义一个一维数组,用指针引用的方法对该数组各元素赋值,然后输出该数组。【未完】
题目1
void main()
{
int i;
char a[3];
*a=1;
*(a+1)=2;
*(a+2)=3;
for(i=0;i<3;i++)
{
printf("%d.\n",a[i]);
}
return;
}
题目二
#include<stdio.h>
void main()
{
int i,j;
int A[3][4]=
{
{1,2,3,4},
{5,6,7,8},
{9,10,11,12}
};
int (*p)[4]=A;
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
printf("%d.\n",*(*(p+i)+j));
}
}
return;
}