2010年杭电计算机研究生复试---笔试编程
生活随笔
收集整理的這篇文章主要介紹了
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位的正整數,讓你進行猜數字,如果猜小了,輸出:“猜小了,請繼續”。如果猜大了,輸出:“猜大了,請繼續”。如果猜對了。輸出:“恭喜你,猜對了”。不過最多只能猜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; }
總結
以上是生活随笔為你收集整理的2010年杭电计算机研究生复试---笔试编程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2006---2009年杭电计算机历年研
- 下一篇: 2011---2013年杭电计算机历年研