杭电2010年复试笔试

1. 猜数字游戏

练习4-6 猜数字游戏 (15 分)

题目:随机产生一个3位的正整数,猜数字。如果猜小了,输出“猜小了,请继续”。如果猜大了,输出“猜大了,请继续”。如果猜对了,输出“恭喜你,猜对了”。

最多只能猜10次,如果猜了10次还没猜对,就退出程序,输出:“Bye Bye”。

 

2. 字符串提取数字并求和

编写函数 FindAndSum, 输入一个字符串,把字符串中的数字作为整数进行求和,并输出结果。

输入样例:

There are some apple.

输出样例:

0

输入样例:

124and 1524

输出样例:

1648

 

3.文件操作

 有一个文件 student.txt,文件当中包括一组学生的信息,包括名字、学号、英语成绩、语文成绩、数学成绩、科学成绩。

从这个文件当中读入学生的信息,然后按照 总成绩 从高到低 进行排序 并输出学生

student.txt

gengsj 1528140524 99 98 97 96
gaoxh 1528140520 88 77 66 55
niujw 1333434343 88 99 33 44

 文件操作_小甲鱼

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
#include <algorithm>
using namespace std;

// 学生结构体
struct Student {
	char name[20];
	char id[15];
	int eng, chn, math, science;
}stu[110];

// 排序函数,总成绩 从大到小
bool cmp(Student a, Student b) {
	int suma = a.eng + a.chn + a.math + a.science;
	int sumb = a.eng + a.chn + a.math + a.science;
	return suma > sumb;
}

int main() {
	char str[20]; // 表头
	FILE *fp; // 文件指针

    //打开文件失败
	if ((fp = fopen("student.txt", "r")) == NULL) { 
		printf("error\n");
		exit(EXIT_FAILURE);
	}

	//读取表头并输出
	for (int i = 0; i < 6; i++) {
		fscanf(fp, "%s", &str);
		printf("%s ", str);
	}
	printf("\n");
    
    // 读取每行元素并 录入到结构体数组stu中
	int i = 0;
	while (fscanf(fp, "%s", &stu[i].name) != EOF) {
		fscanf(fp, "%s", &stu[i].id);
		fscanf(fp, "%d", &stu[i].eng);
		fscanf(fp, "%d", &stu[i].chn);
		fscanf(fp, "%d", &stu[i].math);
		fscanf(fp, "%d", &stu[i].science);
		i++;
	}
    // 排序
	sort(stu, stu + i, cmp);
    // 输出
	for (int j = 0; j < i; j++) {
		printf("%s %s %d %d %d %d\n", stu[j].name, stu[j].id, stu[j].eng, stu[j].chn, stu[j].math, stu[j].science);
	}

}

 

 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值