C语言middle.docx

上传人:b****1 文档编号:3545289 上传时间:2023-05-06 格式:DOCX 页数:28 大小:20.69KB
下载 相关 举报
C语言middle.docx_第1页
第1页 / 共28页
C语言middle.docx_第2页
第2页 / 共28页
C语言middle.docx_第3页
第3页 / 共28页
C语言middle.docx_第4页
第4页 / 共28页
C语言middle.docx_第5页
第5页 / 共28页
C语言middle.docx_第6页
第6页 / 共28页
C语言middle.docx_第7页
第7页 / 共28页
C语言middle.docx_第8页
第8页 / 共28页
C语言middle.docx_第9页
第9页 / 共28页
C语言middle.docx_第10页
第10页 / 共28页
C语言middle.docx_第11页
第11页 / 共28页
C语言middle.docx_第12页
第12页 / 共28页
C语言middle.docx_第13页
第13页 / 共28页
C语言middle.docx_第14页
第14页 / 共28页
C语言middle.docx_第15页
第15页 / 共28页
C语言middle.docx_第16页
第16页 / 共28页
C语言middle.docx_第17页
第17页 / 共28页
C语言middle.docx_第18页
第18页 / 共28页
C语言middle.docx_第19页
第19页 / 共28页
C语言middle.docx_第20页
第20页 / 共28页
亲,该文档总共28页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C语言middle.docx

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

C语言middle.docx

C语言middle

Problem1三角形的个数

方法1:

#include<>

intisTriangle(inta,intb,intc).,array[3]存放千位

toArray(n,array);

if(array[3]+array[1]==array[2]*array[0])

return1;

else

return0;

}

intsqrtTest(intn)定义一个按规则构造好的10*10的数组s,定义一个10*10的数组t;

2.读入n,将数组t用0值初始化,将数组s中符合规则的数复制到数组t中,数组t中非0元素需要输出,0元素无需输出;

3.确定数组t中输出的开始行、结束行、开始列、结束列;

4.输出非0元素。

*/

#include<>

#include<>

voidoutput2(int*p).+n-1+n+n-1+n-2+...+1

*/

#include<>

intmain()

{

intlevel,i;

while(scanf("%d",&level)==1)

{

for(i=1;i

{

printf("%d+",i);

}

printf("%d",level);

for(i=level-1;i>=1;i--)

{

printf("+%d",i);

}

printf("\n");

}

return0;

}

Problem19三艘船

#include<>

constintMAX_DAY=100;

intmain(){

intspeed[3];

inthour[3];

intdis[3];

charfound;

inti,j,k;

while(scanf("%d%d%d",hour+0,hour+1,hour+2)==3)

{

scanf("%d%d%d",speed+0,speed+1,speed+2);

found=0;

for(i=0;i

found;i++)

{

dis[0]=(i*24+hour[0])*speed[0];

for(j=0;j

found;j++)

{

dis[1]=(j*24+hour[1])*speed[1];

if(dis[0]==dis[1])lf\n",p[n]);

}

return0;

}

Problem26菱形输出

/*两个字母间的空格用变量space控制,space初始值为1,

i:

2-n时,space=space+2

i:

n+1-2n-2时,space=space-2

*/

#include<>

voidoutput(inti,intn,char*a)

{

intj;

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

printf("");

printf("%c",*a);

(*a)--;

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

printf("");

printf("%c\n",*a);

(*a)--;

}

intmain()

{

intn,i,j;

intr=0;

chara;

while(scanf("%d",&n)==1)

{

if(r!

=0)printf("\n");

r++;

a='Z';

nv++nc++nv--nc--uit);uit)

{

case'S':

poker[i][j].v=4;break;

case'H':

poker[i][j].v=3;break;

case'D':

poker[i][j].v=2;break;

case'C':

poker[i][j].v=1;break;

}

scanf("%c",&t);alue=t-'0';

else

{

switch(t)

{

case'A':

poker[i][j].value=14;break;

case'K':

poker[i][j].value=13;break;

case'Q':

poker[i][j].value=12;break;

case'J':

poker[i][j].value=11;break;

case'T':

poker[i][j].value=10;break;

}

}

}

}

qsort(poker[0],13,sizeof(structcard),cmp);uit);

if(poker[i][j].value>=10)

switch(poker[i][j].value)

{

case14:

printf("A");break;

case13:

printf("K");break;

case12:

printf("Q");break;

case11:

printf("J");break;

case10:

printf("T");break;

}

else

printf("%d",poker[i][j].value);

}

printf("\n");

}

}

return0;

}

Problem32乒乓球

#include<>

#include<>

voidsolve(char*str,intbase);

intmain()

{

charstr[100],ts[31];

intlen;

inti;

intw,l;

while(gets(ts)!

=NULL)

{

strcpy(str,ts);

len=strlen(ts);

while(ts[len-1]!

='E')

{

gets(ts);

strcat(str,ts);

len=strlen(ts);

}otorcycleType);

}

voidinput()

{

inti;

for(i=0;i

motor[i].f=0;

}

}

intFindMotor(char*motorName)otorcycleType,motorName)==0)

returni;

return-1;

}

voidslv()

{

inti,j;

intfound=0;

for(i=0;i

{

j=FindMotor(motorList[i]);

if(j!

=-1)

{

motor[j].f=1;

found=1;

}

}

if(!

found)

printf("Cannotfound!

\n");

else

{

for(i=0;i

if(motor[i].f)

printf("%s%s%s\n",motor[i].motorcycleType,motor[i].color,motor[i].motorType);

}

}

intmain()

{

while(scanf("%d%d",&n,&m)==2)

{

input();

qsort(motor,m,sizeof(structMotor),cmp);因为要求最先出列的k个人都是绑匪,如果m<=k,则第1个出列的就是人质,所以m>=k+1。

所以m(外循环变量i)可以k+1、k+2…进行枚举。

4.针对每个m,参与游戏的人数(内循环变量i)依次为2k、2k-1…k+1。

i个人报数时,该出列的人的编号计算公式为s=(s+m)%i,如果s>k(第k到第i-1个绑匪)或s=0(第i个绑匪),则表示出列的是绑匪,否则是人质。

5.内循环时,如果出列的是人质,则表示当前的m不合适,这时离开内循环,开始下一轮外循环;如果出列的是绑匪,则进行下一轮内循环。

如果内循环正常结束,则表示出列的k个人都是绑匪,结束外循环,输出找到的m即可。

*/

#include<>

intmain(){

intk,m;

intfind,s,i;

while(scanf("%d",&k)==1)

{

m=k;

do

{

m++;

find=1;.、2位数、1位数

{

sum=0;

for(cnt=0;cnt

{

sum=sum*10+str[j+cnt]-'0';

}

if(isprime(sum)&&sum>max)

{

max=sum;

}

}

len--;

}

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

}

}

Problem46日期比较

#include<>

intd1,m1,y1;

intd2,m2,y2;

voidprinta()

{

printf("%02d%02d%disearlierthan%02d%02d%d\n",d1,m1,y1,d2,m2,y2);

}

voidprintb()

{

printf("%02d%02d%disearlierthan%02d%02d%d\n",d2,m2,y2,d1,m1,y1);

}

intmain()

{

while(scanf("%d%d%d%d%d%d",&d1,&m1,&y1,&d2,&m2,&y2)!

=EOF)

{

if(y1

elseif(y2

elseif(m1

elseif(m2

elseif(d1

elseprintb();

}

return0;

}

Problem47魔方阵

#include<>

intmain(){

intn,i,j;

intr=0;

inta[19][19];

intcolumn,line,num;

intnextColumn,nextLine;

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

=EOF)

{

if(r!

=0)printf("\n");

r++;

memset(a,0,sizeof(a));

column=n/2;//规则1

line=0;

for(num=1;num<=n*n;num++)//构造魔方阵

{

a[line][column]=num;

nextLine=line-1;//规则2

nextColumn=column+1;

if(nextLine<0)nextLine=n-1;//规则3

if(nextColumn==n)nextColumn=0;//规则4

if(a[nextLine][nextColumn]!

=0||(line==0&&column==n-1))//规则5

{

line=line+1;

if(line>=n)line=0;

}

else

{

line=nextLine;

column=nextColumn;

}

}

for(i=0;i

{

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

for(j=1;j

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

}

printf("\n");

}

}

return0;

}

Problem48最长的单词

#include<>

#include<>

intmain(){

chartemp[1000],rs[1000];

while(gets(temp)!

=NULL)

{

intmaxLen=0,len;

char*p=strtok(temp,"\n");//在temp中,以空格和换行符为分割符寻找单词

while(p)

{

len=strlen(p);

if(len>maxLen)

{

maxLen=len;

strcpy(rs,p);

}

p=strtok(NULL,"\n");//第2次开始后的调用

}

printf("%d%s\n",maxLen,rs);

}

return0;

}

Problem49奖学金

#include<>

#include<>

intmain(){

intfinalScore,appraiseScore,thesis;

charcadre,west,name[21],max_name[21];

intn;

intr=0;

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

=EOF)

{

intsum=0,max=-1,i;

if(r!

=0)printf("\n");

r++;

for(i=0;i

{

inttemp=0;//某个学生的奖学金

scanf("%s%d%d%*c%c%*c%c%d",name,&finalScore,&appraiseScore,&cadre,&west,&thesis);//ok

//scanf("%s%d%d%1s%*c%c%d",name,&finalScore,&appraiseScore,&cadre,&west,&thesis);//ok

//scanf("%s%d%d%*c%c%1s%d",name,&finalScore,&appraiseScore,&cadre,&west,&thesis);//NO

//scanf("%s%d%d%1s%1s%d",name,&finalScore,&appraiseScore,&cadre,&west,&thesis);//NO

if(finalScore>80&&thesis>0)//院士奖学金

{

temp+=8000;

}

if(finalScore>85&&appraiseScore>80)//五四奖学金

{

temp+=4000;

}

if(finalScore>90)//成绩优秀奖

{

temp+=2000;

}

if(finalScore>85&&'Y'==west)//西部奖学金

{

temp+=1000;

}

if(appraiseScore>80&&'Y'==cadre)//班级贡献奖

{

temp+=850;

}

if(temp>max){

max=temp;

strcpy(max_name,name);

}

sum+=temp;

}

printf("%s\n%d\n%d\n",max_name,max,sum);

}

return0;

}

Problem50序列

/*放球方法:

后1个盒子中比前1个盒子多放1个球;

最后剩余的remain个球依次从最后1个盒子开始往前,每个盒子增加1个,直到放完为止。

该方法能保证小球装入盒子的规则

*/

#include<>

intmain()

{

intballCnt;

intbox[140];//10000-(1+n)*n/2<=n,n的大小为140

inti;

intremain;//还未放入盒子中的球数

intlastBox;//最后一个盒子中放的球数

intboxCnt;//放有球的盒子总数

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

=EOF&&ballCnt)

{

remain=ballCnt;

lastBox=0;

for(i=0;remain>lastBox;i++)

{

box[i]=i+1;

remain-=i+1;

lastBox=box[i];

}

boxCnt=i;

while(remain>0)

{

i--;

box[i]++;

remain--;

}

for(i=0;i

{

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

}

printf("%d\n",box[i]);

}

return0;

}

Problem51树

#include<>

#include<>

intmain(){

intL,M;

charroad[10001];//1:

代表有树;0:

代表树已移走

intcnt,i,j;

intleft,right;

while(scanf("%d%d",&L,&M)!

=EOF){

memset(road,1,L+1);//road数组的前L+1个字节置初始值1

cnt=L+1;//初始树的棵数

for(i=0;i

{

scanf("%d%d",&left,&right);

for(j=left;j<=right;j++)

{

if(road[j]){

cnt--;

road[j]=0;

}

}

}

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

}

return0;

}

Problem52三角形

#include<>

intmain(){

ints,n;

intr=0,i,j;

while(scanf("%d%d",&s,&n)==2)

{

if(r!

=0)

printf("\n");

r++;

for(i=1;i<=n;i++)//控制输出的行数

{

for(j=1;j<=i;j++)//控制每行输出的数字个数

{

printf("%d",s);

if(j

{

printf("");

}

else

{

printf("\n");

}

s=s%9+1;//计算下一次输出的数字

}

}

}

return0;

}

Problem53回文数2

/*middle53:

给你一个整数(十进制),

判断该整数的十进制数和它的二进制数是否全为回文数。

*/

#include<>

#include<>

intisPalindrome(char*number);

intmain()

{

intn;

chardecimal[4];//(0,1000),十进制不超过3位

charbinary[11];//(0,1000),二进制不超过10位

while(scanf("%d",&n)==1)

{

itoa(n,binary,2);//将n转换成2进制的数字字符串,存放到binary中

itoa(n,decimal,10);//将n转换成10进制的数字字符串,存放到decimal中

if(isPalindrome(decimal)&&isPalindrome(binary))

printf("Yes\n");

else

printf("No\n");

}

return0;

}

intisPalindrome(char*number)//判断number所指向的数是否是回文数

{

char*head=number;

char*tail=head+strlen(number)-1;

while(head

{

if(*head!

=*tail)

return0;

head++;

tail--;

}

return1;

}

Problem54加法器

//与easy45题类似,且更简单

#include<>

#include<>

#include<>

intmain()

{

char*p;//存放分离出来的数字字符串

chartemp[1001];

intsum,tint;

while(gets(temp)!

=NULL)

{

sum=0;

p=strtok(temp,"+");//第1次分离

while(p)

{

tint=atoi(p);//数字字符串转换成整数

sum+=tint;

p=strtok(NULL,"+");//第2次开始分离

}

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

}

return0;

}

Problem55数列1

#include<>

intarr[50];

intmain()

{

intn;

inti,j,cnt,sum;

while(scanf("%d",&n)==1)

{

cnt=0;

for(i=0;i

scanf("%d",arr+i);

for(i=0;i

{

sum=0;

for(j=i;j

{

sum+=arr[j];

if(sum%11==0)

cnt++;

}

}

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

}

return0;

}

Problem56数列2

#include<>

intarr[15];

intmain()

{

intn,i,j,cnt,tmp,res;

while(scanf("%d",&n)==1)

{

cnt=0;

for(i=0;i

scanf("%d",arr+i);

for(i=1;i<=((1<

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

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2