c语言生成一个可接收学生信息的函数
时间: 2023-06-11 14:04:34 浏览: 16
好的,我可以帮你解答。下面是一个用 C 语言编写的接收学生信息的函数:
```c
#include <stdio.h>
struct Student {
char name[100];
int age;
char gender[10];
};
void getStudentInfo(struct Student *stu) {
printf("请输入学生姓名:");
scanf("%s", stu->name);
printf("请输入学生年龄:");
scanf("%d", &stu->age);
printf("请输入学生性别:");
scanf("%s", stu->gender);
}
```
这个函数用到了结构体,在函数内部通过指针来修改外部传入的结构体变量。你可以在主函数中定义一个结构体变量,并调用这个函数来获取学生信息。
相关问题
生成一个素数筛的c语言代码
### 回答1:
以下是一个生成素数筛的C语言代码:
```
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
void sieve_of_eratosthenes(int n) {
bool *prime = (bool *) malloc((n+1) * sizeof(bool));
for (int i = 0; i <= n; i++) {
prime[i] = true;
}
for (int p = 2; p*p <= n; p++) {
if (prime[p] == true) {
for (int i = p*p; i <= n; i += p) {
prime[i] = false;
}
}
}
printf("2 ");
for (int p = 3; p <= n; p += 2) {
if (prime[p] == true) {
printf("%d ", p);
}
}
}
int main() {
int n = 100; // 生成小于等于100的素数
printf("小于等于%d的素数有:\n", n);
sieve_of_eratosthenes(n);
return 0;
}
```
该代码使用了埃拉托色尼筛选法(sieve of Eratosthenes),该算法首先将所有数标记为素数,然后从2开始枚举,将所有的倍数标记为合数。最后输出所有标记为素数的数即为所求。
### 回答2:
以下是一段使用C语言编写的生成素数筛的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
void sieveOfEratosthenes(int n) {
bool isPrime[n+1];
// 默认所有数都是素数
for (int i = 2; i <= n; i++) {
isPrime[i] = true;
}
// 标记非素数
for (int p = 2; p * p <= n; p++) {
if (isPrime[p]) {
for (int i = p * p; i <= n; i += p) {
isPrime[i] = false;
}
}
}
// 输出素数
for (int p = 2; p <= n; p++) {
if (isPrime[p]) {
printf("%d ", p);
}
}
}
int main() {
int n;
printf("请输入一个正整数:");
scanf("%d", &n);
printf("从2到%d之间的素数为:\n", n);
sieveOfEratosthenes(n);
return 0;
}
```
这段代码首先使用bool数组`isPrime`来记录每个数字是否是素数。我们使用标记法来筛选出素数,将2到n之间的所有数都初始化为素数。然后从2开始,遍历到`p * p <= n`的所有数字,如果这个数字是素数,那么将其所有的倍数标记为非素数,最后输出素数。在主函数中,首先接收用户输入的正整数n,然后调用`sieveOfEratosthenes`函数来输出从2到n之间的素数。
### 回答3:
以下是一个生成素数筛的C语言代码:
#include <stdio.h>
#include <stdbool.h>
void primeSieve(int n) {
bool isPrime[n+1];
for (int i = 0; i <= n; i++) {
isPrime[i] = true;
}
for (int p = 2; p * p <= n; p++) {
if (isPrime[p] == true) {
for (int i = p * p; i <= n; i += p) {
isPrime[i] = false;
}
}
}
printf("素数筛结果:\n");
for (int p = 2; p <= n; p++) {
if (isPrime[p]) {
printf("%d ", p);
}
}
}
int main() {
int n;
printf("请输入一个正整数:");
scanf("%d", &n);
primeSieve(n);
return 0;
}
在这个代码中,我们首先定义了一个名为 primeSieve 的函数,它接受一个整数 n 作为输入。我们使用一个布尔数组 isPrime 来表示每个数是否为素数。初始时,我们将所有的数都标记为素数(值为 true)。
接下来,我们从 2 开始遍历到 n 的平方根,并检查每个数是否为素数。如果一个数 p 是素数,那么它的倍数一定不是素数,所以我们将 p 的所有倍数标记为非素数(值为 false)。
最后,我们遍历 isPrime 数组,并输出其中值为 true 的数,即为素数。
在主函数中,我们首先读取用户输入的正整数 n,然后调用 primeSieve 函数来生成素数筛结果。
希望对你有所帮助!
c语言生成一段链表,初始化代码
下面是一个生成并初始化链表的例子:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct node {
int data;
struct node *next;
} Node;
Node* createList(int arr[], int size) {
Node *head = NULL, *p = NULL, *q = NULL;
for (int i = 0; i < size; i++) {
p = (Node*) malloc(sizeof(Node));
p->data = arr[i];
p->next = NULL;
if (head == NULL) {
head = p;
} else {
q->next = p;
}
q = p;
}
return head;
}
void printList(Node* head) {
while (head != NULL) {
printf("%d ", head->data);
head = head->next;
}
printf("\n");
}
int main() {
int arr[5] = {1, 2, 3, 4, 5};
Node *head = createList(arr, 5);
printList(head);
return 0;
}
```
这段代码定义了一个 `Node` 结构体来表示链表节点,其中 `data` 表示节点数据,`next` 指向下一个节点。 `createList` 函数接收一个整数数组和数组长度作为参数,生成并初始化一个包含给定数据的链表,并返回链表头节点的指针。 `printList` 函数打印链表中的节点数据。程序的主函数里创建一个包含数据 `{1, 2, 3, 4, 5}` 的链表,并打印出来。
相关推荐
















