欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

杭电2010复试上机真题

程序员文章站 2022-05-16 21:58:53
...

ps:题是别的地方copy过来的,代码是自己的

第一题:

猜数字的游戏。题目:随即产生一个3位的正整数,让你进行猜数字,如果猜小了,输出:“猜小了,请继续”。如果猜大了,输出:“猜大了,请继续”。如果猜对了。输出:“恭喜你,猜对了”。不过最多只能猜10次,如果猜了10次还没有猜对,就退出程序,输出:“Bye Bye”。

//考查rand函数使用,需要<stdlib.h>
//rand()会返回一个范围在0到RAND_MAX(至少是32767)之间的伪随机数(整数)
#include<stdio.h>
#include<stdlib.h>

int main(){
	int key = rand()%900 + 100;///需要100~999三位数,考虑余数0~899,除余900才能得到0~899的范围,再加100即可 
	int guess = 0;
	int cur;
		
	while(1){
		printf("请猜数字:");
		scanf("%d",&cur);
		printf("\n");
		if(cur == key){
			printf("猜对了!\n");
			break;
		}
		else if(cur < key){
			printf("猜小了,请继续\n");
			guess++; 
		}
		else if(cur > key){
			printf("猜大了,请继续\n");
			guess++; 
		}
		
		if(guess == 10){
			printf("Bye Bye\n");
			break;
		}
	} 
	return 1;
}

第二题

字符串求和。编写函数 FindAndSum,输入一个字符串,把字符串中的数字作为整数进行求和,并输出结果。Sample : 输入:There are some apple. 输出:0 。输入:124and 1524 输出:1648 。

//考查gets函数
#include<stdio.h>

int main(){
	char a[100];//存放输入字符串	
	while(gets(a)){
		int sum = 0;//输出的结果
		char num[100];//存放字符串中提取出来的,即将转换的数字
		char* p = a; 
		int cur = 0;//计算num数组的长度
		while(*p != '\0'){
			if(*p >= '0' && *p <= '9'){
				num[cur++] = *p;
				p++;
			}
			else if(cur != 0){
				int result = 0;
				int c = 1;
				while(--cur >= 0){
					result += (num[cur] - '0') * c;
					c *= 10; 
				}
				cur = 0;
				sum += result;
				p++;
			}
			else{
				p++;
			}			
		}
		if(cur != 0){//注意p指针跳出后,可能num中还有剩余数字没求和
			int result = 0;
			int c = 1;
			while(--cur >= 0){
				result += (num[cur] - '0') * c;
				c *= 10; 
			}
			sum += result;
		}		
		printf("%d\n",sum);
	}
	return 1;
}
//使用atoi,该函数将字符串转换为整形数,需要stdlib.h,字符串为123.45则输出123
//累加那段代码改为
if(cur != 0){	
	sum += atoi(num);
	cur = 0;
	p++; 
} 

第三题

文件操作和结构体对象数组的处理问题,处理一个文件 student.txt,文件当中包括一组学生的信息,包括名字、学号、英语成绩、语文成绩、数学成绩、科学成绩,如下: 

姓名 学号 英语 语文 数学 科学 

张三 20100601 78 89 62 75 

李四 20100602 78 54 98 86 

王五 20100603 78 69 85 75 

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

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

struct student{
    char name[20];
    char ID[20];
    int english;
    int chinese;
    int math;
    int science;
};

bool compare(student a,student b){
    int suma = a.chinese + a.english + a.math + a.science;
    int sumb = b.chinese + b.english + b.math + b.science;
    return suma > sumb;
} 

int main(){
	FILE* fp;
	fp = fopen("C:\\Users\\jh\\Desktop\\student.txt","r+");
    struct student s[100]; 
    int i = 0;
	while(!feof(fp)){ 
    	fscanf(fp,"%s %s %d %d %d %d\n",&s[i].name,&s[i].ID,&s[i].english,&s[i].chinese,&s[i].math,&s[i].science);
		i++;
	}
	
	sort(s,s + i,compare);//用sort最方便 
	
	for(int j = 0;j < i;j++){				
		printf("%s %s %d %d %d %d\n",s[j].name,s[j].ID,s[j].english,s[j].chinese,s[j].math,s[j].science);
	}
	
	fclose(fp);
	return 1;
}

 

相关标签: 考研