科-19机试题目整理

第一题:输出句子里最长的单词。输入一串字符串,包括空格,标点符号,判断最长的单词。

//输出句子里面最长的单词
//思路:将输入句子的单词识别到结构体数组中
//遍历结构体组,找出最长的单词,输出即可
#include<bits/stdc++.h> 
#include<stdio.h>
#include<string.h>//c语言中处理字符串的头文件 
#define MAX 2000 

char str[MAX];

typedef struct string_m{
	int len;//单词长度 
	char s[20];//单词 
}S; 
//定义结构体数组 
S string_m[101];//存储识别的单词及其长度,这里假设一个句子单词的个数不超过100 

int main()
{
	gets(str);
	int len=strlen(str);//len的长度是数组中字符串的个数,不包括结束符。 

	//下面开始识别单词
	int count=0;//统计是识别第几个单词 
	int j=0;//遍历单词 
	for(int i=0;i<=len-1;i++)//遍历字符串 
	{
		if(str[i]==' '||str[i]==','||str[i]=='.')//分隔符 ,注意字符使用单引号,字符串使用双引号 
		{
			string_m[count].s[j]='\0';//结束符,识别完成一个单词 
			string_m[count].len=strlen(string_m[count].s);
			count++;//单词计数加1 
			j=0;//开始统计下一个
		}
		else string_m[count].s[j++]=str[i];
	}
	
	//遍历输出结构体数组中的单词
	int w;
	int maxlen=string_m[0].len;//为单词长度和单词赋初值 
	char ss[20];
	strcpy(ss,string_m[0].s);//赋初值 
	for(w=1;w<=count;w++)
	{
		if(string_m[w].len>maxlen)
		{
			maxlen=string_m[w].len;
			strcpy(ss,string_m[w].s);//c语言中将s的内容赋值到ss中去 
		}
	}
	printf("长度:%d,单词:%s\n",maxlen,ss);
	return 0;
} 

运行结果:

第二题:找到小于给定n的最大素数kk+2,例如输入20,输出素数17 19,简单,素数打表然后查表就好了。

//找出给定数n的最大素数k和k+2
#include<stdio.h>
int judges(int n)//判断一个属是否为素数 
{
	int i=2;
	for(i;i<n;i++)
	{
		if(n%i==0)return 0;
	}
	return 1;
}
void print_l_s(int n)//输出相邻的最大素数 
{
	int j;
	int max1=3,max2=5; 
	for(j=2;j<n-2;j++)
	{
		if(judges(j)&&judges(j+2))//找到相连的两个素数 
		{
			if(j>max1){max1=j;max2=j+2;}//存储最大的素数 
		}	
	}
	printf("%d %d\n",max1,max2);
}
int main()
{
	int n;
	scanf("%d",&n);
	print_l_s(n);
	return 0;
} 

运行结果:

第三题:学生成绩管理(n<20),求每个学生的最高分和平均分,使用结构体然后输出就可以,注意平均分需要实现四舍五入!这道题同样,其实每次输入完就可以直接输出了,根本就不用结构体,输入完了再逐个计算,再逐个输出。

//成绩管理系统 
//如何将平均成绩进行四舍五入
//假设每次输入一个学生的序号,语文数学英语三门成绩
//要求输出每一位学生的学号,最高分和平均成绩。 
//m表示共输入m个学生的成绩 
#include<stdio.h>
typedef struct student{
	int id;
	int max_score;
	int average;
}stu;
stu s[22];//结构体数组 
int t_max(int a,int b,int c)//求三个数中的最大值 
{
	int max=a;
	if(b>max)max=b;
	if(c>max)max=c;
	return max;
}
int main()
{
	int m;//录入多少组成绩
	scanf("%d",&m);
	int a1,a2,a3;//表示三门成绩 
	double ave;//浮点数的平均成绩 
	int aveg;//整型平均成绩 
	int max;//最高成绩 
	int i=0;//遍历 
	for(i;i<m;i++)
	{
		scanf("%d %d %d",&a1,&a2,&a3);
		max=t_max(a1,a2,a3);
		
		//下面这几行代码实现四舍五入 
		aveg=(a1+a2+a3)/3;
		ave=1.0*(a1+a2+a3)/3+0.5;
		if(ave-aveg>=1)aveg+=1;
		//对结构体变量内容进行赋值
		s[i].id=i+1;
		s[i].average=aveg;
		s[i].max_score=max; 
	}
	//遍历输出
	for(i=0;i<m;i++)
		printf("%d %d %d\n",s[i].id,s[i].max_score,s[i].average);
	return 0; 
}

运行结果:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值