C语言.docx

上传人:b****6 文档编号:6423601 上传时间:2023-01-06 格式:DOCX 页数:20 大小:19.14KB
下载 相关 举报
C语言.docx_第1页
第1页 / 共20页
C语言.docx_第2页
第2页 / 共20页
C语言.docx_第3页
第3页 / 共20页
C语言.docx_第4页
第4页 / 共20页
C语言.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

C语言.docx

《C语言.docx》由会员分享,可在线阅读,更多相关《C语言.docx(20页珍藏版)》请在冰豆网上搜索。

C语言.docx

C语言

Description

定义一个学生结构体,含学号(一维字符数组)、姓名、成绩(整型)。

从键盘输入n(n<20),再输入n个学生的信息,按学生成绩从小到大顺序输出学生信息。

Input

多组测试数据,每组输入一个n,接着输入n个学生的信息。

Output

按成绩从小到大顺序输出学生信息。

SampleInput

4

1001

Li

76

1002

Zhang

92

1003

Liu

85

1004

Wang

70

SampleOutput

1004Wang70

1001Li76

1003Liu85

1002Zhang92

#include

#include

structstudent

{

charnumber[20];

charname[20];

intscore;

};

intmain()

{

structstudentstu[22];

intn,i,j;

intt;

charname1[22],number1[22];

while(scanf("%d",&n)!

=EOF)

{

for(i=1;i<=n;i++)

scanf("%s%s%d",stu[i].number,stu[i].name,&stu[i].score);

for(j=1;j<=n;j++)

{

for(i=1;i<=n-j;i++)

{

if(stu[i].score>stu[i+1].score)

{

t=stu[i].score;

stu[i].score=stu[i+1].score;

stu[i+1].score=t;

strcpy(name1,stu[i].name);

strcpy(stu[i].name,stu[i+1].name);

strcpy(stu[i+1].name,name1);

strcpy(number1,stu[i].number);

strcpy(number1,stu[i].number);

strcpy(stu[i].number,stu[i+1].number);

strcpy(stu[i+1].number,number1);

}

}

}

for(i=1;i<=n;i++)

printf("%s%s%d\n",stu[i].number,stu[i].name,stu[i].score);

}

}

结构体:

求最高分和最低分

TimeLimit:

1SecMemoryLimit:

64MB

Submit:

3212Solved:

2216

Description

定义一个学生结构体,含学号(字符型)、姓名、成绩(整型)。

从键盘输入数字n(n<20),并输入n个学生的信息,输出最高分和最低分同学的信息。

Input

多组测试数据,每组输入一个n,接着输入n个学生的信息。

Output

输出最高分和最低分同学的学号、姓名、成绩。

SampleInput

4

1001

Li

76

1002

Zhang

92

1003

Liu

85

1004

Wang

70

SampleOutput

1002Zhang92

1004Wang70

#include

structstudent{

intnum;

charname[10];

intcj;

};

intmain()

{

structstudenta[10];

intn,m,j,k,h,i;

while(scanf("%d",&n)!

=-1)

{

for(i=0;i

scanf("%d%s%d",&a[i].num,a[i].name,&a[i].cj);

m=0;h=0;j=a[0].cj;

for(i=0;i

if(j

{

h=i;

j=a[i].cj;

}

for(i=0;i

{k=a[0].cj;

if(k>a[i].cj)

{

m=i;

k=a[i].cj;

}}

printf("%d%s%d\n",a[h].num,a[h].name,a[h].cj);

printf("%d%s%d\n",a[m].num,a[m].name,a[m].cj);

}}

结构体:

计算学生平均分

TimeLimit:

1SecMemoryLimit:

64MB

Submit:

4386Solved:

2589

Description

定义一个学生结构体,含学号(字符型)、姓名、2门课程的成绩。

从键盘输入3个学生的信息,计算并输出每个学生的平均成绩。

Input

按学号、姓名、成绩1、成绩2的顺序输入学生信息

Output

输出每个学生的平均分

SampleInput

101

Xue

87

90

102

Lin

98

92

103

Liu

89

83

SampleOutput

ave[0]=88.5

ave[1]=95.0

ave[2]=86.0

#include

structstudent

{

doublenum;

charname[20];

ints1,s2;

doubleaverage;

};

intmain()

{inti;

structstudents;

i=0;

while(scanf("%lf%s%d%d",&s.num,s.name,&s.s1,&s.s2)!

=EOF)

{

s.average=(s.s1+s.s2)/2.0;

printf("ave[%d]=%.1lf\n",i,s.average);

i++;

}

return0;

}

深入浅出学算法004-求多个数的最小公倍数

TimeLimit:

1SecMemoryLimit:

64MB

Submit:

1101Solved:

306

Description

求n个整数的最小公约数

Input

多组测试数据,先输入整数T表示组数然后每行先输入1个整数n,后面输入n个整数k1k2...kn

Output

求k1k2...kn的最小公倍数

SampleInput

1

312186

SampleOutput

36

HINT

Source

#include

intmain()

{

intlcm(intm,intn);

intT,n,a[100],i,d;

while(scanf("%d",&T)!

=EOF)

{

while(T--)

{

scanf("%d",&n);

for(i=0;i

scanf("%d",&a[i]);

d=a[0];

for(i=1;i

d=lcm(d,a[i]);

printf("%d\n",d);

}

}

return0;

}

intlcm(intm,intn)

{

intt,a,b,x,y;

if(m>n)

{

t=m;

m=n;

n=t;

}

x=m;y=n;

while(n>0&&m>0)

{

n=n%m;

if(n==0)break;

m=m%n;

}

if(n==0)a=m;

elseif(m==0)a=n;

b=x/a*y;

returnb;

}

或者~~~~~~~

最大公约数

#include

intmain()

{

intn,a,b,c,i;

while(scanf("%d",&n)!

=EOF)

{

for(i=0;i

{

scanf("%d%d",&a,&b);

c=a%b;

while(c!

=0)

{a=b;b=c;c=a%b;}

printf("%d\n",b);

}

}

}

求最小公倍数只需设一个原来两数乘积,再除以最大公约数~

深入浅出学算法020-排队购票

TimeLimit:

1SecMemoryLimit:

64MB

Submit:

1076Solved:

678

Description

一常球赛开始前,售票工作正在进行中。

每张球票为50元,现有k(1<=k<=30)人排队购票,其中n人手持50元的钱,剩余m人手持100元的钱,假设开始时售票处没有钱,求出售票处不出现找不开钱的不同排队种数(拿同样钞票面值的人换位置视为同一种排队)

Input

多组测试数据,先输入整数T表示组数,然后每组输入2个整数n和m

Output

对于每组测试数据输出1行,值为题目描述中的排队种数

SampleInput

2

12

11

SampleOutput

0

1

HINT

Source

#include

#include

#include

usingnamespacestd;

constintN=30+5;

intdp[N][N];

intT;

intn,m;

intmain(){

scanf("%d",&T);

while(T--){

memset(dp,0,sizeof(dp));

intflag=0;

scanf("%d%d",&n,&m);

if(n

for(inti=0;i<=n;i++){

for(intj=0;j<=max(i,m);j++){

if(i==0)dp[i][j]=0;

elseif(j==0&&i!

=0)dp[i][j]=1;

else{

dp[i][j]=dp[i-1][j];

if(i>j-1)dp[i][j]+=dp[i][j-1];

}

}

}

/*

for(inti=0;i<=n;i++){

for(intj=0;j<=m;j++){

printf("dp[%d][%d]=%d\n",i,j,dp[i][j]);

}

}

*/

printf("%d\n",dp[n][m]);

}

return0;

}

数组中删数

多组测试,每组第一行输入1个整数n(n<20),然后是n个整数第二行输入1个整数m

删除在第一行的n个整数中的数字m(多个的话都要删除),然后按照顺序输出剩下的数,

512343

3

124

#include

intmain()

{

intt,n,m,i,j,a[100];

while(scanf("%d",&n)!

=EOF)

{

for(i=0;i

scanf("%d",&a[i]);

scanf("%d",&m);

t=0;

for(i=0;i

{

if(a[i]!

=m)

{t++;

if(t==1)

printf("%d",a[i]);

else

printf("%d",a[i]);

}

}

printf("\n");

}

return0;

}

数组中插入一个数

3125

31

1235

2

#include

intmain()

{

intn,m,k,a[100],i,t,j,p;

while(scanf("%d",&n)!

=EOF)

{

for(i=0;i

scanf("%d",&a[i]);

scanf("%d",&m);

scanf("%d",&k);

for(i=0;i<=n;i++)

{

if(m<=a[i])

{

for(j=n;j>i;j--)

a[j]=a[j-1];

break;

}

}

a[j]=m;

for(p=0;p

printf("%d",a[p]);

printf("%d",a[n]);

printf("\n");

printf("%d",a[k]);

printf("\n");}

return0;

}

字符倒序输出

#include

#include

chara[100];

intmain()

{

inti,n;

while(gets(a))

{

n=strlen(a);

n--;

if(n<=0)

return0;

for(;n>=0;n--)

{

printf("%c",a[n]);

}

printf("\n");

}

return0;

}

数字大小排序

#include

intmain()

{

intn,m,j,i,t,k,a[100];

while(scanf("%d",&n)!

=EOF)

{

for(i=0;i

{

scanf("%d",&m);

for(j=0;j

scanf("%d",&a[j]);

for(k=0;k

for(j=k+1;j

if(a[k]

{

t=a[j];

a[j]=a[k];

a[k]=t;}

for(j=0;j

printf("%d",a[j]);

printf("%d\n",a[j]);

}

}

}

老外买瓷砖

#include

voidf(int*a,char*s)

{

while(*s)

{

switch(*s)

{

case'h':

case'H':

case'A':

case'a':

a[0]++;break;

case'E':

case'e':

a[1]++;break;

case'Y':

case'y':

case'I':

case'i':

a[2]++;break;

case'O':

case'o':

a[3]++;break;

case'U':

case'u':

a[4]++;break;

}

s++;

}

}

intmain()

{

chars[200];

inta[5];

intn,i,j;

scanf("%d",&n);

getchar();

for(i=0;i

{

for(j=0;j<5;j++)

a[j]=0;

gets(s);

f(a,s);

printf("a:

%d\ne:

%d\ni:

%d\no:

%d\nu:

%d\n",a[0],a[1],a[2],a[3],a[4]);

}

return0;

}

数字金字塔

#include

intmain()

{

inti,j,n;

printf("请输入金字塔的层数:

\n");

scanf("%d",&n);

for(i=1;i<=n;i++)

{

for(j=1;j<=n-i;j++)

printf("");

for(j=1;j<=2*i-1;j++)

printf("%d",i);

printf("\n");

}

return0;

}

ProblemE:

生日礼物

TimeLimit:

1SecMemoryLimit:

128MB

Submit:

823Solved:

240

Description

小明的生日比较特别,是2月29日,所以他经常需要等4年才有一次生日。

为此,每次的生日他会收到爷爷奶奶爸爸妈妈哥哥姐姐给他的礼物,但其中一份礼物比较特别。

后来小明发现一个规律,可以知道其中最特别的礼物是谁送的。

那就是每次装蛋糕的盒子上印的几个英文字母可以看出来。

如果是爷爷送的,上面会印着“grandfather",奶奶送的话会印“grandmother”,爸爸送的话会印“father”,妈妈送的话会印“mother”,哥哥送的话会是“brother”,姐姐送的话会印“sister”。

Input

多组测试数据,先输入一个整数T,表示组数,然后输入t行,每行是蛋糕盒上印的英文字母

Output

对于每组测试数据,请输出这年特别礼物是谁送的,如果是爸爸送的,就输出“baba”,爷爷奶奶妈妈哥哥姐姐送的依次输出“yeye”“nainai”“mama”“gege”“jiejie“

SampleInput

3

grandmother

mother

father

SampleOutput

nainai

mama

baba

#include

#include

intmain()

{

intt,i;

chara[100];

scanf("%d",&t);

getchar();

for(i=0;i

{

gets(a);

if(strcmp(a,"grandmother")==0)

printf("nainai");

if(strcmp(a,"mother")==0)

printf("mama");

if(strcmp(a,"father")==0)

printf("baba");

if(strcmp(a,"grandfather")==0)

printf("yeye");

if(strcmp(a,"brother")==0)

printf("gege");

if(strcmp(a,"sister")==0)

printf("jiejie");

printf("\n");

}

return0;

}

今天是近年第几天

#include

intf(intn);

intmain()

{

inta,b,c;

while(scanf("%d-%d-%d",&a,&b,&c)!

=EOF)

{

if(f(a)==1)

{

intm[13];

m[1]=0;

m[2]=31;

m[3]=60;

m[4]=91;

m[5]=121;

m[6]=152;

m[7]=182;

m[8]=213;

m[9]=244;

m[10]=274;

m[11]=305;

m[12]=335;

b=m[b];

printf("%d\n",b+c);

}

else

{

intm[13];

m[1]=0;

m[2]=31;

m[3]=59;

m[4]=90;

m[5]=120;

m[6]=151;

m[7]=181;

m[8]=212;

m[9]=243;

m[10]=273;

m[11]=304;

m[12]=334;

b=m[b];

printf("%d\n",b+c);

}

}

return0;

}

intf(intn)

{

if((n%4==0&&n%100!

=0)||n%400==0)

return1;

else

return0;

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 视频讲堂

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1