经典C语言源代码.docx

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

经典C语言源代码.docx

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

经典C语言源代码.docx

经典C语言源代码

经典C语言源代码

1、

(1)某年某月某日是星期几

#include

intmain()

{

intyear,month,day;

while(scanf_s("%d%d%d",&year,&month,&day)!

=EOF)

{

if(month==1||month==2)//判断month是否为1或2 

{

year--;

month+=12;

}

intc=year/100;

inty=year-c*100;

intweek=(c/4)-2*c+(y+y/4)+(13*(month+1)/5)+day-1;

while(week<0){week+=7;}

week%=7;

switch(week)

{

case1:

printf("Monday\n");break;

case2:

printf("Tuesday\n");break;

case3:

printf("Wednesday\n");break;

case4:

printf("Thursday\n");break;

case5:

printf("Friday\n");break;

case6:

printf("Saturday\n");break;

case0:

printf("Sunday\n");break;

}

}

return0;

}

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",&year,&month,&day);

dayth=day;

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

=0);

if(flag)

month_day[2]=29;

for(i=1;i

dayth=dayth+month_day[i];

printf("%d/%d/%d是第%d天\n",year,month,day,dayth);

}

 

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

#include"stdio.h"

#defineSIZE30

voidmain(){

inti;

floatdata[SIZE];

intmin;

printf("请输入%d个浮点数:

\n",SIZE);

for(i=0;i

//scanf_s("%f",&data[i]);

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

printf("%f、",data[i]);

}

min=0;

for(i=1;i

if(data[i]

min=i;

}

printf("最小值是%5.2f,位置是%5d\n",data[min],min);

}

 

3、30个数从小到大排序

(1)

#include"stdio.h"

#defineSIZE30

voidmain(){

inti,j;

floatdata[SIZE],temp;

intmin;

printf("请输入%d个整型数:

\n",SIZE);

for(i=0;i

scanf_s("%f",&data[i]);

}

for(i=0;i

min=i;

for(j=i+1;j

if(data[j]

min=j;

temp=data[min];

data[min]=data[i];

data[i]=temp;

}

printf("\n排序后的结果是:

\n");

for(i=0;i

printf("%5.2f",data[i]);

}

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

#include"stdio.h"

#defineSIZE5

voidaccept_array(floata[],intsize);

voidsort(floata[],intsize);

voidshow_array(floata[],intsize);

voidmain(){

floatscore[SIZE];

accept_array(score,SIZE);

printf("排序前:

");

show_array(score,SIZE);

sort(score,SIZE);

printf("排序后:

");

show_array(score,SIZE);

}

voidaccept_array(floata[],intsize){

inti;

printf("请输入%d个分数:

",size);

for(i=0;i

scanf_s("%f",&a[i]);

}

voidshow_array(floata[],intsize){

inti;

for(i=0;i

printf("%5.2f",a[i]);

printf("\n");

}

voidsort(floata[],intsize){

inti,min,j;

floattemp;

for(i=0;i

min=i;

for(j=i+1;j

if(a[j]

min=j;

temp=a[min];

a[min]=a[i];

a[i]=temp;

}

}

 

4、

(1)指针加减:

#include"stdio.h"

#defineSIZE10

voidmain(){

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

int*pa,i;

pa=&a[0];

//pa=a;

printf("\n");

for(i=0;i

printf("%d",*pa);

//printf("%d",*(pa+1));

pa++;

}

}

(2)指针比较:

#include"stdio.h"

#defineSIZE10

voidmain(){

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

int*pa,i;

int*qa;

pa=qa=&a[0];

printf("请输入%d整型数:

",SIZE);

for(;pa

scanf_s("%d",pa);

for(pa--;qa<=pa;pa--)

printf("%d",*pa);

}

5、两字符串相连:

#include"stdio.h"

#include"string.h"

voidstr_cat(charstr1[],charstr2[]);

voidmain(){

inti,j;

charstr1[160];

charstr2[80];

printf("请输入第一个字符串:

");

gets(str1);

printf("请输入第二个字符串:

");

gets(str2);

str_cat(str1,str2);

puts(str1);

}

voidstr_cat(charstr1[],charstr2[]){

inti,j;

i=0;

while(str1[i]!

='\0')

i++;

j=0;

while(str2[j]!

='\0'){

str1[i]=str2[j];

i++;j++;

}

str1[i]='\0';

}

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

#include"stdio.h"

voidmain(){

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

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

for(i=0;i<2;i++){

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

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

}

printf("\na:

\n");

for(i=0;i<3;i++){

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

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

printf("\n");

}

printf("\nb:

\n");

for(i=0;i<2;i++){

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

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

printf("\n");

}

}

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

#include"stdio.h"

voidmain(){

intx[2][3];

inti,j;

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

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

scanf_s("%d",*(x+i)+j);

putchar('\n');

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

{

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

printf("%d",*(*(x+i)+j));

putchar('\n');

}

}

 

8、冒泡法排序一个数组

#include"stdio.h"

#definesize10

voidmaopao(inta[]);

voidmain(){

inta[10];

inti;

printf("请输入10个整数:

\n");

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

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

maopao(a);

}

voidmaopao(inta[]){

inti,j,temp;

for(i=0;i<9;i++){//进行9轮排序

for(j=0;j<9-i;j++)//每轮进行9-i次交换

{

if(a[j]>a[j+1])

{

temp=a[j];

a[j]=a[j+1];//大的沉底,小的上浮

a[j+1]=temp;

}

}

}

printf("排序结果:

\n");

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

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

}

 

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

A:

4,7,9

B:

1,3,5,8,9

变换后

A:

1,3,5

B:

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

B[j-1]=B[j++];//寻找A[m-1]的插入位置

B[j-1]=x;

x=A[m-1];

i=m-2;

while(i>=0&&A[i]>x)

A[i+1]=A[i--];//寻找B[0]的插入位置

A[i+1]=x;

}

}

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

{

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

printf("输入第一个数组:

");

for(i=0;i<3;i++){

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

}

printf("\n输入第二个数组:

");

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

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

}

ReArranger(A,B,3,5);

printf("\n输出第一个数组:

");

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

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

printf("\n\n");

printf("输出第二个数组:

");

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

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

printf("\n");

}

 

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

A1

BC64

DEF到325

#include

voidmain(){

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

for(a=1;a<=6;a++)

for(b=1;b<=6;b++){

if(b==a)

continue;

for(c=1;c<=6;c++){

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

continue;

for(d=1;d<=6;d++){

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

continue;

for(e=1;e<=6;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);

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

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

}

}

}

}

}

}

 

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

#include

void*sortString(charunsort[],intlength){

for(inti=0;i

for(intj=i+1;j

if(unsort[i]>unsort[j]){

inttemp=unsort[j];

unsort[j]=unsort[i];

unsort[i]=temp;

}

}

}

}

voidmain(){

chars1[50];

gets(s1);

charvalue;

scanf_s("%c",&value);

printf("s1:

%s\n",s1);

printf("value:

%c\n",value);

intlength=strlen(s1);

printf("length:

%d\n",length);

sortString(s1,length);

printf("s1:

%s\n",s1);

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)

printf("该字符在已知字符串中,即在第%d个\n",mid);

else

printf("该字符不在已知字符串中\n");

}

 

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

#include

intisprime(intn)

{

if(n<2)

return0;

for(inti=2;i

if(n%i==0)

return0;

return1;

}

voidmain()

{

inti,k=0;

for(i=100;i<=300;i++)

if(isprime(i))

{

printf("%3d",i);

k++;

if(k%10==0)printf("\n");

}

for(i=500;i<=700;i++)

if(isprime(i))

{

printf("%3d",i);

k++;

if(k%10==0)printf("\n");

}

printf("\n");

}

 

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

#include

#include

voidmain()

{

intm,i,k;

printf("请输入一个整数:

");

scanf_s("%d",&m);

k=(int)sqrt(m);

for(i=2;i<=k;i++)

if(m%i==0)

break;

if(i>k)

printf("%d是素数。

\n",m);

else

printf("%d不是素数。

\n",m);

}

 

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

#include

#include

boolis5Num(intnum){

inttemp=num%10;

while(temp!

=5&&num>10){

num=num/10;

temp=num%10;

}

if(temp!

=5)

returnfalse;

else

returntrue;

}

voidmain(){

intnum;

printf("输入一个数:

\n");

scanf_s("%d",&num);

if(is5Num(num))

printf("含5\n");

else

printf("不含5\n");

}

 

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

#include

voidmain(){

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

intnum;

printf("插入前数组为:

\n");

for(inti=0;i<10;i++)

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

printf("\n");

printf("请输入一个数:

\n");

scanf_s("%d",&num);

if(num>a[9])

a[10]=num;

else{

for(inti=0;i<10;i++)

if(num

for(intj=9;j>=i;j--)

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

a[i]=num;

break;

}

}

printf("插入后数组为:

\n");

for(inti=0;i<=10;i++)

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

printf("\n");

}

 

16、牛顿迭代法:

#include

#include

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

printf("迭代过程中倒数为0!

\n");

return;

}

x1=x0-func(x0)/func1(x0);//进行牛顿迭代计算

while(!

(func1(x1-x0)

x0=x1;//准备下一次迭代

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

printf("迭代过程中倒数为0!

\n");

x1=x0-fu

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

当前位置:首页 > 医药卫生 > 基础医学

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

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