有人帮忙看看哪里格式错了吗
给定N个学生的基本信息,包括学号(由12个数字组成的字符串)、姓名(长度小于20的不包含空白字符的非空字符串)、高等数学成绩、C语言程序设计成绩,成绩均为区间内的整数,要求统计C语言程序设计及格的人数,并按输入顺序给出C语言程序设计及格学生名单。输入格式:
输入在一行中给出正整数N(≤10)。
随后N行,每行给出一位学生的信息,格式为“学号 姓名 高等数学成绩 C语言程序设计成绩”,中间以空格分隔。
输出格式:
首先在一行中输出C语言程序设计及格人数,然后按照输入顺序,每行输出一位该成绩及格的学生的学号和姓名,间隔一个空格。
输入样例:
3
201410300106 wanyun 70 88
201618050322 zhangyu 59 60
201509210118 lixiao 80 59
输出样例:
2
201410300106 wanyun
201618050322 zhangyu
#include<stdio.h>
struct stu{
char num;
char name;
int m;
int c;
};
int main(){
int n,i,h=0;
scanf("%d",&n);
struct stu d;
for(i=0;i<n;i++){
scanf("%s%s%d%d",&d.num,&d.name,&d.m,&d.c);
}
for(i=0;i<n;i++){
if(d.c>=60){
h++;
}
}
printf("%d\n",h);
for(i=0;i<n;i++){
if(d.c>=60){
printf("%s %s\n",d.num,d.name);
}
}
return 0;
}
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <malloc.h>
typedef struct Node{
char ID, name; // 最后一位留给空字符 '\0'
unsigned short math, c;
struct Node* next;
}Node;
void show(Node* head, int sum) {
if (head) {
sum += 1;
show(head->next, sum);
if (head->c >= 60) {
printf("%s %s %hu %hu\n", head->ID, head->name, head->math, head->c);
}
}
else {
printf("%d\n", sum - 1);
return;
}
}
void freeAll(Node** head) {
Node* p;
while (*head) {
p = (*head);
*head = (*head)->next;
free(p);
}
free(*head);
}
int main(void) {
Node* head, * tail = head = NULL;
int N, t;
if (scanf("%d", &N)) {
for (int n = 0; n < N; ++n) {
tail = head;
head = (Node*)malloc(sizeof(Node));
if (head) {
if (scanf("%s", head->ID)) {
head->ID = '\0';
if (getchar());
t = 0;
while ((head->name = getchar()) != ' ');
head->name[--t] = '\0';
if (scanf("%hu%hu", &head->math, &head->c));
}
head->next = tail;
}
}
}
show(head, 0);
freeAll(&head);
return 0;
}3
201410300106 wanyun 70 88
201618050322 zhangyu 59 60
201509210118 lixiao 80 59
2
201410300106 wanyun 70 88
201618050322 zhangyu 59 60 我这边运行得出了正确答案,你可以重新试下编译?
#include<stdio.h>
struct stu{
char num;
char name;
int m;
int c;
};
int main(void){
int n,i,h=0;
scanf("%d",&n);
struct stu d;
for(i=0;i<n;i++){
scanf("%s%s%d%d",&d.num,&d.name,&d.m,&d.c);
}
for(i=0;i<n;i++){
if(d.c>=60){
h++;
}
}
printf("%d\n",h);
for(i=0;i<n;i++){
if(d.c>=60){
printf("%s %s\n",d.num,d.name);
}
}
return 0;
}
homeskating 发表于 2022-12-11 21:36
我这边运行得出了正确答案,你可以重新试下编译?
能运行,但还是错的
页:
[1]