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

来源:互联网 发布:网络论坛 编辑:程序博客网 时间:2024/05/01 20:14
      今天下午进行了计算机复试的笔试部分,总体感觉比去年的难了一些。
      第一题是猜数字的游戏,不太难的。题目:随即产生一个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;}


原创粉丝点击