一个结构体包含 char int double 三种类型,用printf输出
时间: 2024-05-07 08:15:18 浏览: 104
可以使用以下代码输出:
```c
#include <stdio.h>
struct MyStruct {
char c;
int i;
double d;
};
int main() {
struct MyStruct s = {'A', 123, 3.14};
printf("char: %c\n", s.c);
printf("int: %d\n", s.i);
printf("double: %f\n", s.d);
return 0;
}
```
输出结果为:
```
char: A
int: 123
double: 3.140000
```
相关问题
有一学生情况如下表所示。编写一个C程序,用冒泡法对该学生情况表按成绩(grade)从低到高进行排序。 学号 姓名 性别 年龄 成绩 101 Zhang M 19 95.6 102 Wang F 18 92.2 103 Zhao M 19 85.7 104 Li M 20 96.3 105 Gao M 19 90.2 106 Lin M 18 91.2 107 Ma F 18 98.7 108 Zhen M 21 88.7 109 Xu M 19 90.1 110 Mao F 22 94.7 具体要求如下: ① 结构体类型为 struct student { int num; char name[8]; char sex; int age; double grade; } ② 在程序中用一个结构体指针数组,其中每一个指针元素指向结构体类型的各元素。 ③ 在程序中,首先输出排序前的学生情况,然后输出排序后的结果,其格式如上表所示。
以下是符合题目要求的C语言程序:
```c
#include <stdio.h>
#include <stdlib.h>
struct student {
int num;
char name[8];
char sex;
int age;
double grade;
};
int main() {
// 定义结构体指针数组,用于存储学生信息
struct student *stu[10];
// 定义临时变量和计数变量
int i, j, n = 10;
struct student *temp;
// 初始化学生信息
struct student st[10] = {
{101, "Zhang", 'M', 19, 95.6},
{102, "Wang", 'F', 18, 92.2},
{103, "Zhao", 'M', 19, 85.7},
{104, "Li", 'M', 20, 96.3},
{105, "Gao", 'M', 19, 90.2},
{106, "Lin", 'M', 18, 91.2},
{107, "Ma", 'F', 18, 98.7},
{108, "Zhen", 'M', 21, 88.7},
{109, "Xu", 'M', 19, 90.1},
{110, "Mao", 'F', 22, 94.7}
};
// 将结构体指针数组的各元素指向结构体类型的各元素
for (i = 0; i < n; i++) {
stu[i] = &st[i];
}
// 输出排序前的学生情况
printf("排序前的学生情况:\n");
printf("学号\t姓名\t性别\t年龄\t成绩\n");
for (i = 0; i < n; i++) {
printf("%d\t%s\t%c\t%d\t%.1lf\n",
stu[i]->num, stu[i]->name, stu[i]->sex, stu[i]->age, stu[i]->grade);
}
// 冒泡排序,按成绩从低到高排序
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - i - 1; j++) {
if (stu[j]->grade > stu[j + 1]->grade) {
temp = stu[j];
stu[j] = stu[j + 1];
stu[j + 1] = temp;
}
}
}
// 输出排序后的学生情况
printf("\n排序后的学生情况:\n");
printf("学号\t姓名\t性别\t年龄\t成绩\n");
for (i = 0; i < n; i++) {
printf("%d\t%s\t%c\t%d\t%.1lf\n",
stu[i]->num, stu[i]->name, stu[i]->sex, stu[i]->age, stu[i]->grade);
}
system("pause");
return 0;
}
```
程序中先定义了一个结构体类型`student`,包含学号、姓名、性别、年龄和成绩5个成员变量。然后定义了一个结构体指针数组`stu`,用于存储学生信息,其中每一个指针元素指向结构体类型的各元素。接着定义临时变量和计数变量。然后初始化学生信息,将结构体指针数组的各元素指向结构体类型的各元素。输出排序前的学生情况。接下来进行冒泡排序,按成绩从低到高排序。最后输出排序后的学生情况。
需要注意的是,在输出学生情况时,需要按照表格的格式进行输出,并使用制表符`\t`进行分割。
怎么printf一个结构体中所有数据
可以使用循环遍历结构体中的每个成员变量,并使用printf输出。例如:
```
#include <stdio.h>
struct student {
char name[20];
int id;
double grade;
};
int main() {
struct student s = {"Tom", 12345, 90.5};
printf("Name: %s\n", s.name);
printf("ID: %d\n", s.id);
printf("Grade: %lf\n", s.grade);
return 0;
}
```
这样就可以输出结构体中所有成员变量的值。
阅读全文