2010年杭电计算机研究生复试---笔试编程

      今天下午进行了计算机复试的笔试部分,总体感觉比去年的难了一些。
      第一题是猜数字的游戏,不太难的。题目:随即产生一个3位的正整数,让你进行猜数字,如果猜小了,输出:“猜小了,请继续”。如果猜大了,输出:“猜大了,请继续”。如果猜对了。输出:“恭喜你,猜对了”。不过最多只能猜10次,如果猜了10次还没有猜对,就退出程序,输出:“Bye Bye”。  还是比较简单的,就是三位随机数没有处理好。
      第二题是字符串求和。编写函数 FindAndSum,输入一个字符串,把字符串中的数字作为整数进行求和,并输出结果。Sample : 输入:There are some apple. 输出:0 。输入:124and 1524 输出:1648 。这个题目是最简单的,只要读入的时候记得使用 gets 函数就可以了,scanf 函数遇到空格的时候输入就结束了。
      第三题是文件操作和结构体对象数组的处理问题,处理一个文件 student.txt,文件当中包括一组学生的信息,包括名字、学号、英语成绩、语文成绩、数学成绩、科学成绩,如下:
      姓名       学号      英语  语文   数学   科学
      张三   20100601  78     89     62     75
      李四   20100602  78     54     98     86
      王五   20100603  78     69     85     75
      ……………………………………
     从这个文件当中读入学生的信息,然后按照总成绩从高到低进行排序并输出学生信息。由于长时间没有做过有关文件操作的题目,感觉很多都记不起来了,仅仅凭着一点记忆把代码写出来了,后面的结构体数组的排序处理就比较简单了。
      总而言之,感觉还是有一定的难度的,哎,不管了,考过就结束了,还是好好准备明天的专业课复试吧。哈哈~~~
第一题:
转载请标明出处,原文地址:http://blog.csdn.net/hackbuteer1/article/details/6667275
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

/**
总结二:生成n位随机数的方法
         rand() % N + A, A为起始位,N为数字的总数。
         例如: 生成 0~10的数字:rand() % 11 + 0,即rand() % 11;
                 生成 1~10的数字:rand() % 10 + 1,
                 生成 100~999的数字:rand() % 900 + 100
**/
int main(void)
{
	int num, count, guess;
	srand((unsigned)time(NULL));  //利用系统时间作为种子初始化随机数生成器
	num = rand() % 900 + 100;     //生成一个3位数的随机数
	count = 0;

	while(count < 10)
	{
		scanf("%d", &guess);
		if(guess == num)
		{
			printf("恭喜你,猜对了\n");
			break;
		}
		else if(guess < num)
		{
			printf("猜小了,请继续\n");
		}
		else if(guess > num)
		{
			printf("猜大了,请继续\n");
		}
		++count;
	}
	if(10 == count)
	{
		printf("Bye Bye\n");
	}
	return 0;
}

第二题:
转载请标明出处,原文地址:http://blog.csdn.net/hackbuteer1/article/details/6667275
#include <stdio.h>
#include <string.h>

int FindAndSum(char *str)      // 求和函数
{
	int sum, len, i, curr;
	len = strlen(str);

	curr = sum = 0;
	for(i = 0; i < len; ++i)
	{
		if(str[i] >= '0' && str[i] <= '9')
		{
			curr = curr * 10 + str[i] - '0';  //求权相加,得到一个整数
		}
		else
		{
			//当遇到不是数字的字符时,则一个整数完成,将得到的整数加到结果中
			if(i - 1 >= 0 && str[i - 1] >= '0' && str[i - 1] <= '9')
			{
				sum += curr;
				curr = 0;
			}
		}
	}
	return sum;
}
int main(void)
{
	char str[10000];
	gets(str);
	printf("%d\n", FindAndSum(str));
	return 0;
}

第三题:
转载请标明出处,原文地址:http://blog.csdn.net/hackbuteer1/article/details/6667275
#include <iostream>
#include <algorithm>
#include <fstream>
using namespace std;

int num;
struct student
{
	char name[20];
	char id[20];
	int english;
	int chinese;
	int math;
	int science;
	int score;
}stu[65];

bool cmp(const student& a, const student& b)
{
	if(a.score != b.score)
		return a.score>b.score;
}

void load()         //将数据从磁盘读到内存
{
	fstream in;
	num = 0;
	in.open("d:\\student.txt",ios::in);
	while(in>>stu[num].name>>stu[num].id>>stu[num].chinese>>stu[num].math>>stu[num].english>>stu[num].science)
	{
		++num;
	}
	return ;
}
void show()
{
	int j;
	for(j = 0; j < num; ++j)
		stu[j].score = stu[j].english + stu[j].chinese + stu[j].math + stu[j].science;
	sort(stu, stu + num, cmp);
	for(j = 0; j < num; ++j)
		printf("%-10s %-10s % 4d % 4d % 4d % 4d\n", stu[j].name, stu[j].id, stu[j].english, stu[j].chinese, stu[j].math, stu[j].science);
	//fstream out;
	//out.open("f:\\student.txt",ios::out);
	//for(j=0;j<num;j++)
	//out<<stu[j].name<<"   "<<stu[j].id<<"   "<<stu[j].chinese<<"   "<<stu[j].math<<"   "<<stu[j].english<<"   "<<stu[j].science<<endl;   
	return ;
}

int main(void)
{
	load();
	show();
	return 0;
}


  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值