今天下午进行了计算机复试的笔试部分,总体感觉比去年的难了一些。
第一题是猜数字的游戏,不太难的。题目:随即产生一个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
……………………………………
从这个文件当中读入学生的信息,然后按照总成绩从高到低进行排序并输出学生信息。由于长时间没有做过有关文件操作的题目,感觉很多都记不起来了,仅仅凭着一点记忆把代码写出来了,后面的结构体数组的排序处理就比较简单了。
总而言之,感觉还是有一定的难度的,哎,不管了,考过就结束了,还是好好准备明天的专业课复试吧。哈哈~~~
第一题:
第二题:
第三题:
第一题是猜数字的游戏,不太难的。题目:随即产生一个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;
}