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;
}