经典C语言源代码Word格式.docx

上传人:b****5 文档编号:19862709 上传时间:2023-01-11 格式:DOCX 页数:25 大小:21.46KB
下载 相关 举报
经典C语言源代码Word格式.docx_第1页
第1页 / 共25页
经典C语言源代码Word格式.docx_第2页
第2页 / 共25页
经典C语言源代码Word格式.docx_第3页
第3页 / 共25页
经典C语言源代码Word格式.docx_第4页
第4页 / 共25页
经典C语言源代码Word格式.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

经典C语言源代码Word格式.docx

《经典C语言源代码Word格式.docx》由会员分享,可在线阅读,更多相关《经典C语言源代码Word格式.docx(25页珍藏版)》请在冰豆网上搜索。

经典C语言源代码Word格式.docx

1、

(2)某年某月某日是第几天(一维数组)

#include"

stdio.h"

voidmain(){

inti,flag,year,month,day,dayth;

intmonth_day[]={0,31,28,31,30,31,30,31,31,30,31,30,31};

printf("

请输入年/月/日:

\n"

scanf_s("

%d/%d/%d"

day);

dayth=day;

flag=(year%400==0)||(year%4==0&

&

year%100!

=0);

if(flag)

month_day[2]=29;

for(i=1;

i<

month;

i++)

dayth=dayth+month_day[i];

%d/%d/%d是第%d天\n"

year,month,day,dayth);

 

2、30个数中找最小的数及其位置

#defineSIZE30

inti;

floatdata[SIZE];

intmin;

请输入%d个浮点数:

SIZE);

for(i=0;

SIZE;

i++){

//scanf_s("

%f"

data[i]);

data[i]=rand()%30+1;

printf("

%f、"

data[i]);

min=0;

if(data[i]<

data[min])

min=i;

最小值是%5.2f,位置是%5d\n"

data[min],min);

3、30个数从小到大排序

(1)

inti,j;

floatdata[SIZE],temp;

请输入%d个整型数:

scanf_s("

min=i;

for(j=i+1;

j<

j++)

if(data[j]<

min=j;

temp=data[min];

data[min]=data[i];

data[i]=temp;

}

\n排序后的结果是:

%5.2f"

(2)模块化程序(数组名作为函数参数)

#defineSIZE5

voidaccept_array(floata[],intsize);

voidsort(floata[],intsize);

voidshow_array(floata[],intsize);

floatscore[SIZE];

accept_array(score,SIZE);

排序前:

"

show_array(score,SIZE);

sort(score,SIZE);

排序后:

voidaccept_array(floata[],intsize){

请输入%d个分数:

size);

size;

a[i]);

voidshow_array(floata[],intsize){

%5.2f"

a[i]);

voidsort(floata[],intsize){

inti,min,j;

floattemp;

j++)

if(a[j]<

a[min])

temp=a[min];

a[min]=a[i];

a[i]=temp;

4、

(1)指针加减:

#defineSIZE10

inta[SIZE]={1,2,3,4,5,6,7,8,9,10};

int*pa,i;

pa=&

a[0];

//pa=a;

%d"

*pa);

//printf("

*(pa+1));

pa++;

(2)指针比较:

int*qa;

pa=qa=&

请输入%d整型数:

for(;

pa<

qa+SIZE;

pa++)

%d"

pa);

for(pa--;

qa<

=pa;

pa--)

5、两字符串相连:

string.h"

voidstr_cat(charstr1[],charstr2[]);

inti,j;

charstr1[160];

charstr2[80];

请输入第一个字符串:

gets(str1);

请输入第二个字符串:

gets(str2);

str_cat(str1,str2);

puts(str1);

voidstr_cat(charstr1[],charstr2[]){

i=0;

while(str1[i]!

='

\0'

i++;

j=0;

while(str2[j]!

){

str1[i]=str2[j];

j++;

str1[i]='

;

6、二维数组(a,b转置)

inti,j,b[2][3];

inta[3][2]={{1,2},{3,4},{5,6}};

2;

for(j=0;

3;

b[i][j]=a[j][i];

\na:

printf("

%5d"

a[i][j]);

\nb:

for(i=0;

b[i][j]);

7、输入一个二维数组并输出(指针)

intx[2][3];

scanf_s("

*(x+i)+j);

putchar('

\n'

%d"

*(*(x+i)+j));

putchar('

8、冒泡法排序一个数组

#definesize10

voidmaopao(inta[]);

inta[10];

请输入10个整数:

10;

maopao(a);

voidmaopao(inta[]){

inti,j,temp;

9;

i++){//进行9轮排序

9-i;

j++)//每轮进行9-i次交换

if(a[j]>

a[j+1])

{

temp=a[j];

a[j]=a[j+1];

//大的沉底,小的上浮

a[j+1]=temp;

}

排序结果:

%4d"

9、两数组A,B,要求A<

B,如

A:

4,7,9

B:

1,3,5,8,9

变换后

1,3,5

4,7,8,9,9

#include<

voidReArranger(int*A,int*B,intm,intn)//A和B是各有m个和n个整数的非降序数组,本算法将B数组元素逐个插入到A中,使A中各元素均不大于B中各元素,且两数组仍保持非降序排列。

intx,j,i;

while(A[m-1]>

B[0])

x=A[m-1];

A[m-1]=B[0];

//交换A[m-1]和B[0]

j=1;

while(j<

n&

B[j]<

x)

B[j-1]=B[j++];

//寻找A[m-1]的插入位置

B[j-1]=x;

i=m-2;

while(i>

=0&

A[i]>

A[i+1]=A[i--];

//寻找B[0]的插入位置

A[i+1]=x;

voidmain()//这里主要介绍算法思想,主函数就简单写了

intA[3],B[5],i;

输入第一个数组:

i<

3;

A[i]);

\n输入第二个数组:

5;

B[i]);

ReArranger(A,B,3,5);

\n输出第一个数组:

A[i]);

\n\n"

输出第二个数组:

B[i]);

10、符合1+6+3=3+2+5=1+4+5有哪几组

A1

BC64

DEF到325

inta,b,c,d,e,f;

for(a=1;

a<

=6;

a++)

for(b=1;

b<

b++){

if(b==a)

continue;

for(c=1;

c<

c++){

if((c==a)||(c==b))

continue;

for(d=1;

d<

d++){

if((d==a)||(d==b)||(d==c))

continue;

for(e=1;

e<

e++){

if((e==a)||(e==b)||(e==c)||(e==d))

continue;

f=21-(a+b+c+d+e);

if((a+b+d==d+e+f)&

(a+b+d==a+c+f)){

printf("

%d\n"

a);

%d%d\n"

b,c);

%d%d%d\n"

d,e,f);

}

}

}

11、输入一串字符,升序排序,折半查找其中一字符

void*sortString(charunsort[],intlength){

for(inti=0;

length;

for(intj=i+1;

j++){

if(unsort[i]>

unsort[j]){

inttemp=unsort[j];

unsort[j]=unsort[i];

unsort[i]=temp;

chars1[50];

gets(s1);

charvalue;

%c"

value);

s1:

%s\n"

s1);

value:

%c\n"

value);

intlength=strlen(s1);

length:

%d\n"

length);

sortString(s1,length);

intstart=0,end=length-1;

intmid=(end+start)/2;

while(start<

=end&

s1[mid]!

=value){

mid=(end+start)/2;

if(value>

s1[mid])

start=mid+1;

else

end=mid-1;

if(mid)

该字符在已知字符串中,即在第%d个\n"

mid);

else

该字符不在已知字符串中\n"

12、100-300和500-700直接素数,m不被2到根号m直接任一整除

intisprime(intn)

if(n<

2)

return0;

for(inti=2;

n/2;

if(n%i==0)

return0;

return1;

voidmain()

inti,k=0;

for(i=100;

=300;

if(isprime(i))

%3d"

i);

k++;

if(k%10==0)printf("

for(i=500;

=700;

13、判断一个数是否是素数

math.h>

intm,i,k;

请输入一个整数:

m);

k=(int)sqrt(m);

for(i=2;

=k;

if(m%i==0)

break;

if(i>

k)

%d是素数。

m);

%d不是素数。

14、一个数是否含有数字5

stdbool.h>

boolis5Num(intnum){

inttemp=num%10;

while(temp!

=5&

num>

10){

num=num/10;

temp=num%10;

if(temp!

=5)

returnfalse;

returntrue;

intnum;

输入一个数:

num);

if(is5Num(num))

含5\n"

不含5\n"

15、一个排好序的数组,插入一个数

inta[11]={1,2,3,4,5,6,7,8,9,10};

插入前数组为:

10;

%3d"

请输入一个数:

if(num>

a[9])

a[10]=num;

else{

for(inti=0;

i++)

if(num<

a[i]){

for(intj=9;

j>

=i;

j--)

a[j+1]=a[j];

a[i]=num;

break;

插入后数组为:

=10;

16、牛顿迭代法:

doublefunc(doublex){//函数

returnx*x*x+2.0*x*x+3.0*x+4.0;

doublefunc1(doublex){//导函数

return3*x*x+4*x+3;

voidNewton(doublex0,doubleprecision){//迭代次数

doublex1;

intk;

if(func1(x0)==0.0){//若通过初值,函数返回为0

迭代过程中倒数为0!

return;

x1=x0-func(x0)/func1(x0);

//进行牛顿迭代计算

while(!

(func1(x1-x0)<

precision||fabs(func(x1))<

precision)){

x0=x1;

//准备下一次迭代

if(func1(x0)==0.0)//若通过初值,函数返回值为0

x1=x0-fu

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

当前位置:首页 > 法律文书 > 调解书

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

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