C语言设计精髓OJ.docx

上传人:b****8 文档编号:23883221 上传时间:2023-05-21 格式:DOCX 页数:36 大小:19.50KB
下载 相关 举报
C语言设计精髓OJ.docx_第1页
第1页 / 共36页
C语言设计精髓OJ.docx_第2页
第2页 / 共36页
C语言设计精髓OJ.docx_第3页
第3页 / 共36页
C语言设计精髓OJ.docx_第4页
第4页 / 共36页
C语言设计精髓OJ.docx_第5页
第5页 / 共36页
点击查看更多>>
下载资源
资源描述

C语言设计精髓OJ.docx

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

C语言设计精髓OJ.docx

C语言设计精髓OJ

2011/1字符串翻转

#include

#include

#defineMAX80

voidinverse(charstr[]);

intmain()

{

inti;

charstr[MAX];

printf("Input:

\n");

gets(str);

inverse(str);

printf("Afterinverse:

\n%s\n",str);

return0;

}

voidinverse(charstr[])

{

chars[MAX];

inti,j,n;

n=strlen(str);

for(i=0,j=n-1;str[i]!

='\0';i++,j--)

{

s[j]=str[i];

}

s[n]='\0';

strcpy(str,s);

}

2011/2辗转相除求最大公约数习题7.7

#include

intgcd(inta,intb);

intmain()

{

inta,b;

printf("Inputab\n");

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

printf("Result:

\n%d",gcd(a,b));

return0;

}

intgcd(inta,intb)

{

intr;

if(b==0)

returna;

else

{

r=a%b;

a=b;

b=r;

returngcd(a,b);

}

}

12/1百万富翁计划

#include

#include

intmain()

{

longa=0,i;

doubleb=0.0;

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

{

a+=100000;

b+=pow(2,i);

}

b=b/100.0;

printf("Rich:

%ld\nPoor:

%lf\n",a,b);

return0;

}

12/2**矩阵乘积(不会写)

#include

#defineMAX10

intmain()

{

inta,b,i,j,x,y,flag;

intA[MAX][MAX],B[MAX][MAX],C[MAX][MAX]={0};

printf("Inputab\n");

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

for(i=0;i

{

for(j=0;j

{

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

}

}

for(i=0;i

{

for(j=0;j

{

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

}

}

for(i=0;i

{

flag=0;

for(j=0;j

{

if(flag=0)

{

x=i;

y=j;

flag=1;

}

C[x][y]+=(A[i][j]*B[j][i]);

}

}

for(i=0;i

{

for(j=0;j

{

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

}

printf("\n");

}

return0;

}

2012/3字符串连接

#include

#include

voidMystrcat(chardstStr[],charsrcStr[]);

#defineMAX20

intmain()

{

chardstStr[MAX],srcStr[MAX];

printf("Inputdst&&src:

\n");

gets(dstStr);

gets(srcStr);

Mystrcat(dstStr,srcStr);

printf("After:

%s\n",dstStr);

return0;

}

voidMystrcat(chardstStr[],charsrcStr[])

{

//chars[MAX];

inti,j,n;

n=strlen(dstStr);

for(i=n,j=0;srcStr[j]!

='\0';i++,j++)

{

dstStr[i]=srcStr[j];

}

dstStr[i]='\0';

}

13/1猴子吃桃

#include

intmain()

{

inti,sum=1;

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

{

sum=2*(sum+1);

}

printf("%d",sum);

}

13/2feedback数组

#include

intMedian(intanswer[],intn);

voidDataSort(inta[],intn);

intmain()

{

intfeedback[20],n,i,median;

printf("Inputtotalnumberiffeedback\n");

scanf("%d",&n);

printf("Inputfeedbacks\n");

for(i=0;i

{

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

}

DataSort(feedback,n);

median=Median(feedback,n);

printf("Medianvalue=%d\n",median);

return0;

}

voidDataSort(inta[],intn)

{

inti,j,term;

for(i=0;i

{

for(j=i+1;j

{

if(a[i]

{

term=a[i];

a[i]=a[j];

a[j]=term;

}

}

}

}

intMedian(intanswer[],intn)

{

if(n%2==1)

returnanswer[n/2];

if(n%2==0)

return(answer[n/2]+answer[n/2-1])/2;

}

2013/3国名排序第十章例题10.4

#include

#include

#defineMAX_LEN20

#defineN10

voidSortString(charstr[][MAX_LEN],intn);

intmain()

{

inti;

charstr[N][MAX_LEN];

for(i=0;i

{

gets(str[i]);

}

SortString(str,N);

printf("Sortedresults\n");

for(i=0;i

{

printf("%s\n",str[i]);

}

return0;

}

voidSortString(charstr[][MAX_LEN],intn)

{

inti,j;

charterm[MAX_LEN];

for(i=0;i

{

for(j=i+1;j

{

if(strcmp(str[i],str[j])>0)

{

strcpy(term,str[i]);

strcpy(str[i],str[j]);

strcpy(str[j],term);

}

}

}

}

/*

SouthKorea

Finland

UnitedStates

England

Australia

Brazil

Egypt

China

Mexico

Spain

*/

2014/1杨辉三角

#include

voidYHTriangle(inta[][15],intn);

voidPrintYHTriangle(inta[][15],intn);

intmain()

{

intn;

inta[15][15]={0};

printf("Inputn(n<=15):

\n");

scanf("%d",&n);

YHTriangle(a,n);

PrintYHTriangle(a,n);

return0;

}

voidYHTriangle(inta[][15],intn)

{

inti,j;

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

{

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

{

if(j==0||i==j)

{

a[i][j]=1;

}

}

}

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

{

for(j=1;j

{

a[i][j]=(a[i-1][j-1]+a[i-1][j]);

}

}

}

voidPrintYHTriangle(inta[][15],intn)

{

inti,j;

for(i=0;i

{

for(j=0;j

{

if(a[i][j]!

=0)

{

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

}

}

printf("\n");

}

}

2014/2**国王的许诺第六章实验题

#include

#include

intmain()

{

doublesum=0;

doublevolum;

inti;

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

{

sum+=pow(2,i);

}

volum=sum/(1.42*1e8);

printf("sum=%e\n",sum);

printf("volum=%e\n",volum);

return0;

}

2015/1计算n以内含6的所有自然数的倒数之和

#include

intmain()

{

intn,i,flag,num;

floatsum=0;

printf("Inputn(0

scanf("%d",&n);

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

{

num=i;

flag=0;

while(num!

=0)

{

if(num%10==6)

flag=1;

num/=10;

}

if(flag==1)

{

sum+=1.0/i;

}

}

printf("%.2f\n",sum);

return0;

}

2015/2字符串每个字符之间插入一个空格

#include

#include

#defineMAX80

voidInsert(chars[]);

intmain()

{

chars[MAX];

inti;

printf("Inputastring:

\n");

gets(s);

Insert(s);

printf("Insertresult:

\n");

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

return0;

}

voidInsert(chars[])

{

charstr[MAX];

inti,j,len;

len=strlen(s);

for(i=0,j=0;i

{

str[j]=s[i];

j++;

str[j]='';

j++;

}

str[j]='\0';

strcpy(s,str);

s[j]='\0';

}

2015/3评委打分

#include

#defineM5

voidReadScore(floatscore[][M],intn,intm);

voidCountScore(floataveragescore[],floatscore[][M],intn,intm);

voidPrintScore(floataveragescore[],intn);

intmain()

{

floatscore[20][M]={0.0};

floataveragescore[20]={0.0};

intn,m;

printf("Inputthenumberofathletes:

\n");

scanf("%d",&n);

printf("Inputthenumberofjudges:

\n");

scanf("%d",&m);

ReadScore(score,n,m);

CountScore(averagescore,score,n,m);

PrintScore(averagescore,n);

return0;

}

voidReadScore(floatscore[][M],intn,intm)

{

inti,j;

printf("Input%djudges'scoresfor%dathletes\n",m,n);

for(i=0;i

{

for(j=0;j

{

scanf("%f",&score[i][j]);

}

}

}

voidCountScore(floataveragescore[],floatscore[][M],intn,intm)

{

intmaxn,minn,i,j;

for(i=0;i

{

maxn=0,minn=0;

for(j=0;j

{

if(score[i][j]>score[i][maxn])

{

maxn=j;

}

if(score[i][j]

{

minn=j;

}

}

for(j=0;j

{

if(j!

=maxn&&j!

=minn)

{

averagescore[i]+=score[i][j];

}

}

averagescore[i]/=(m-2);

}

}

voidPrintScore(floataveragescore[],intn)

{

inti;

printf("Thefinalscoresforeachathlete\n");

for(i=0;i

{

printf("%.2f\n",averagescore[i]);

}

}

习题5.8

#include

#include

intmain()

{

charc;

printf("Input:

\n");

//scanf("%c",&c);

c=getchar();

if(isspace(c))

{

printf("Space!

\n");

}

elseif(isdigit(c))

{

printf("Digit!

\n");

}

elseif(c>='a'&&c<='z')

{

printf("Schar!

\n");

}

elseif(c>='A'&&c<='Z')

{

printf("Bchar!

\n");

}

return0;

}

习题5.10

#include

intmain()

{

intyear,mon;

printf("Inputy/m\n");

scanf("%d%d",&year,&mon);

switch(mon)

{

case1:

case3:

case5:

case7:

case8:

case10:

case12:

printf("31days\n");

break;

case2:

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

=0||year%400==0)

printf("29days\n");

else

printf("28days\n");

break;

case4:

case6:

case9:

case11:

printf("30days\n");

break;

default:

printf("Inputerror!

\n");

return-1;

}

}

例题6.4

#include

#include

intmain()

{

intn,i;

intpf=1,lf=1;

printf("Inputn:

\n");

scanf("%d",&n);

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

{

printf("%d:

pf:

%dlf:

%d\n",i,i*i,i*i*i);

}

return0;

}

6.3改错题

1.main可以不写返回类型,不算错

2.=-》==

3.x++在if外执行

习题6.6教育资金问题**注意:

要迭代五次而不是四次

#include

intmain()

{

floatx=0.0,y;

inti;

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

{

y=(x+1000.0)/(1+0.01875*12);

x=y;

}

printf("Result:

%f\n",y);

return0;

}

6.7工业产值翻翻

#include

intmain()

{

intyear,i=0;

floatrate;

longbj=1e6,zj;

printf("Inputrate:

\n");

scanf("%f",&rate);

while(bj<2e6)

{

bj*=(1+rate);

i++;

}

printf("After%dyears!

\n",i);

return0;

}

6.8pi值的计算**应该声明为double而非float

#include

#include

#defineN1e-4

intmain()

{

doublepi,n,sum=0.0,fz=-1,fm;

inti=1;

do

{

fz*=-1;

fm=2*i-1;

n=fz/fm;

sum+=n;

i++;

}

while(fabs(n)>=N);

printf("pi:

%lfi:

%d\n",4*sum,i-1);

return0;

}

6.9e值计算**尤其注意这一题,从1开始加的,后面才是通项,e是2.7几,count是10;

#include

#include

#defineN1e-5

intmain()

{

doublesum=1.0,n=1.0;

inti=1;

do

{

n*=i;

sum+=(1/n);

i++;

}

while(fabs(1/n)>=1e-5);

printf("e:

%lfi:

%d\n",sum,i);

return0;

}

6.11计算阶乘和的上限**注意输入格式用unsignedlong输出格式用%lu

#include

intmain()

{

unsignedlongn,i=1,jc=1,sum=0;

printf("Inputn:

\n");

scanf("%lu",&n);

do

{

jc*=i;

sum+=jc;

i++;

}

while(sum

printf("Result:

%d",i-2);

return0;

}

6.18九九乘法表

(一)

#include

intmain()

{

inti,j;

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

{

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

{

printf("%3d",i*j);

}

printf("\n");

}

return0;

}

6.18九九乘法表

(二)

#include

intmain()

{

inti,j;

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

{

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

{

if(i>=j)

printf("%3d",i*j);

}

printf("\n");

}

return0;

}

6.18九九乘法表(三)**注意,与二不同,前面不显示的是空格

#include

intmain()

{

inti,j;

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

{

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

{

if(i>j)

{

printf("");

}

elseprintf("%3d",i*j);

}

printf("\n");

}

return0;

}

7.8水手分椰子问题****极易错答案3121

#include

intCocount(intn);

intmain()

{

printf("y=%d\n",Cocount(5));

return0;

}

intCocount(intn)

{

floatx=1,y;

inti=1;

y=n*x+1;

do

{

y=y*n/(n-1)+1;

if(y!

=(int)y)

{

x++;

y=n*x+1;

i=1;

}

i++;

}

while(i

return(int)y;

}

习题7.12**汉诺塔问题,易错

#include

voidHanoi(intn,chara,charb,charc);

voidMove(intn,chara,charb);

intmain()

{

intn;

printf("Inputthenumofdisk:

\n");

scanf("%d",&n);

Hanoi(n,'A','B','

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

当前位置:首页 > 高中教育 > 高考

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

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