第一题:输出句子里最长的单词。输入一串字符串,包括空格,标点符号,判断最长的单词。
//输出句子里面最长的单词
//思路:将输入句子的单词识别到结构体数组中
//遍历结构体组,找出最长的单词,输出即可
#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的最大素数k和k+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;
}
运行结果: