c语言程序详解110.doc

上传人:wj 文档编号:4718101 上传时间:2023-05-07 格式:DOC 页数:26 大小:172.50KB
下载 相关 举报
c语言程序详解110.doc_第1页
第1页 / 共26页
c语言程序详解110.doc_第2页
第2页 / 共26页
c语言程序详解110.doc_第3页
第3页 / 共26页
c语言程序详解110.doc_第4页
第4页 / 共26页
c语言程序详解110.doc_第5页
第5页 / 共26页
c语言程序详解110.doc_第6页
第6页 / 共26页
c语言程序详解110.doc_第7页
第7页 / 共26页
c语言程序详解110.doc_第8页
第8页 / 共26页
c语言程序详解110.doc_第9页
第9页 / 共26页
c语言程序详解110.doc_第10页
第10页 / 共26页
c语言程序详解110.doc_第11页
第11页 / 共26页
c语言程序详解110.doc_第12页
第12页 / 共26页
c语言程序详解110.doc_第13页
第13页 / 共26页
c语言程序详解110.doc_第14页
第14页 / 共26页
c语言程序详解110.doc_第15页
第15页 / 共26页
c语言程序详解110.doc_第16页
第16页 / 共26页
c语言程序详解110.doc_第17页
第17页 / 共26页
c语言程序详解110.doc_第18页
第18页 / 共26页
c语言程序详解110.doc_第19页
第19页 / 共26页
c语言程序详解110.doc_第20页
第20页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

c语言程序详解110.doc

《c语言程序详解110.doc》由会员分享,可在线阅读,更多相关《c语言程序详解110.doc(26页珍藏版)》请在冰点文库上搜索。

c语言程序详解110.doc

//对data.txt文件写入10条记录

#include

main()

{FILE*fp;

inti;

floatx;

fp=fopen("d:

\\date.txt","w");

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

{scanf("%f",&x);

fprintf(fp,"%f\n",x);

}

fclose(fp);

}

有一个3×4的矩阵,要求输出其中值最大的元素的值,以及它的行号和列号。

#include

#defineM3

#defineN4

main()

{intmax,i,j,r,c;

inta[M][N]={{123,94,-10,218},{3,9,10,-83},{45,16,44,-99}};

max=a[0][0];

for(i=0;i

for(j=0;j

if(a[i][j]>max)

{max=a[i][j];

r=i;

c=j;

}

printf("max=%d,row=%d,colum=%d\n",max,r,c);

}

求一个3×3矩阵主对角线元素之和。

#include

voidmain()

{

inta[3][3]={1,2,3,4,5,6,7,8,9},sum=0,i,j;

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

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

if(i==j)

sum+=a[i][j];

printf("%d",sum);

}

/*建立一个通讯录结构体,其成员变量主要有:

序号,姓名,电话。

根据建好的结构体设计有3个人员的通讯录,对其赋值,并将3人的通讯录按行输出。

*/

#include"stdio.h"

structmember

{

charnum[5];

charname[10];

inttel;

};

voidmain()

{ inti;

structmembermem[3]={{"001","zhangsan",139},{"002","lisi",139},{"003","wangwu",139}};

printf("Number Nametel\n");

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

printf("%5s%10s%5d\n",mem[i].num,mem[i].name,mem[i].tel);

}

/*2、编写程序,从键盘读入一个字符串,

用字符数组保存,然后分别用strlen()、

sizeof()计算其长度,输出结果并分析。

*/

#include

#include

voidmain()

{chars[20];

gets(s);

puts(s);

printf("%d,%d\n",sizeof(s),strlen(s));

}

程序中头文件type1.h的内容是:

  #defineN5

  #defineM1N*3

  程序如下:

  #include"type1.h"

  #defineM2N*2

  main()

  {inti;

  i=M1+M2;printf("%d\n",i);}

  程序编译运行后的输出结果是(c)

  A)10B)20C)25D)30

1、所谓“同构数”是指这样一个数,它出现在它的平方数的右侧,例如5的平方是25,25的平方是625,故5和25都是同构数,求[1,1000]之间所有同构数的个数和总和。

7,1114

#include

voidmain(){

inti,a,n=0,sum=0;

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

{a=i*i;

if(i<10&&a%10==i)

{n++;

sum=sum+i;

}

elseif(i<100&&a%100==i)

{n++;

sum=sum+i;

}

elseif(a%1000==i)

{n++;

sum=sum+i;

}

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

}

方法二:

#include

voidmain(){

inti,a,sum=0,n=0;

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

{a=i*i;

if(a%10==i||a%100==i||a%1000==i)

{

n++;

sum=sum+i;

}}

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

猴子第一天摘下若干桃子,当即吃了一半,还不过瘾又多吃了一个。

第二天早上又将剩下的桃子吃了一半,还是不过瘾,有多吃一个。

以后每天都吃前一天剩下的一半再加一个。

到第10天再吃剩下一个了。

求猴子第一天摘了多少桃子?

1534

#include

voidmain()

{

inti,x=1;

for(i=9;i>0;i--)

x=(x+1)*2;

printf("第一天共摘了%d只桃子\n",x);

}

方法二:

#include

intpeach(intn)

{intc;

if(n==10)c=1;

elsec=2*(peach(n+1)+1);

returnc;

}

voidmain()

{intsum=0;

sum=peach

(1);

printf("%d",sum);

}2、一个素数(设为p)依次从最高位去掉一位,二位,三位,……,若得到的各数仍都是素数(注:

1不是素数),且数p的各位数字均不为零,则称该数p为逆向超级素数。

例如,617,17,7都是素数,因此617是逆向超级素数,尽管503,03,3都是素数,但它不是逆向超级素数,因为它包含有零。

试求[100,999]之内的所有逆向超级素数的个数。

39

#include

#include

intprime(intm)

{ inti,k,f=1;

if(m==1)

f=0;

k=(int)sqrt(m);

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

if(m%i==0)

f=0;

returnf;

}

voidmain(){

intp,i,j,k,sum=0;

for(p=100;p<=999;p++)

{i=p/100;

j=(p/10)%10;

k=p%10;

if(prime(p)&&prime(j*10+k)&&prime(k)&&k!

=0&&j!

=0)

{printf("%d",p);

sum++;

}

}

printf("%d",sum);

}

/*

程序:

冒泡法排序函数的定义。

*/

#include

voidBubble(int*pa,intn);//冒泡法排序函数声明

intmain(){

inta[10],n,i;

do

{

printf("Inputn(1<=n<=10):

\n");

scanf("%d",&n);

}while(n<1||n>10);

printf("Input%delements:

\n",n);

for(i=0;i

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

printf("Theoriginalarrayis:

\n");

for(i=0;i

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

printf("\n");

Bubble(a,n); //冒泡排序函数调用

printf("Thesortedarrayis:

\n");

for(i=0;i

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

printf("\n");

return0;

}

voidBubble(int*pa,intn)

{

{inti,j,t;

for(i=0;i

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

if(pa[j]

{t=pa[j-1];

pa[j-1]=pa[j];

pa[j]=t;}

}

}德国数学家哥德巴赫曾猜测:

任何大于6的偶数都可以分解成两个素数的和。

但有些偶数可以分解成多种素数对的和,如:

10=3+7,10=5+5,即10可以分解成两种不同的素数对。

试求6744可以分解成多少种不同的素数对(注:

A+B与B+A认为是相同素数对) 144

#include

#include

intprime(intm)

{ inti,k,f=1;

if(m==1)

f=0;

k=(int)sqrt(m);

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

if(m%i==0)

f=0;

returnf;

}

voidmain()

{

inta,b,n=0;

for(a=1;a<6744/2;a=a+2)

if(prime(a))

{b=6744-a;

if(prime(b))

n++;}

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

}

/*

程序6.6求最大公约数函数的定义与调用。

第4章的程序4.9是求最大公约数程序的主函数形式,

现在将其求最大公约数部分独立定义为函数gcd,并在主函数中调用

*/

#include

intgcd(intdividend,intdivider);//求最大公约数函数声明

intmain()

{

intm,n;

do

{

printf("Inputm,n:

\n");

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

}while(m<=0||n<=0);

printf("hcd:

%d\n",gcd(m,n));//求最大公约数函数调用

return0;

}

intgcd(intdividend,intdivider)//求最大公约数函数定义

{ intremainder;

remainder=dividend%divider;

while(remainder)

{

dividend=divider;

divider=remainder;

remainder=dividend%divider;

}

returndivider;//循环终止时的除数

}

1、在[100,999]范围内同时满足以下两个条件的十进制数.⑴其个位数字与十位数字之和除以10所得的余数是百位数字;⑵该数是素数;求有多少个这样的数?

15

方法一:

main(){

inta,i,j,k,m,sum=0;

for(a=100;a<=999;a++)

{i=a%10;

j=(a/10)%10;

k=a/100;

if((i+j)%10==k)

{for(m=2;m

if(a%m==0)

break;

if(m>=a)

sum++;

}

}

printf("%d",sum);

}

方法二:

#include"math.h"

intprime(inti){

intj;

for(j=2;j<=sqrt(i);j++)

if(i%j==0)

return0;

return1;

}

main(){

inta,i,j,k,m,sum=0;

for(a=100;a<=999;a++)

{i=a%10;

j=(a/10)%10;

k=a/100;

if((i+j)%10==k&&prime(a))

sum++;

}

printf("%d",sum);

}

3、自然数对是指两个自然数的和与差都是平方数,如8和17的和8+17=25与其差17-8=9都是平方数,则称8和17是自然数对(8,17)。

假定(A,B)与(B,A)是同一个自然数对且假定A>=B,求所有小于或等于100(即:

A<=100,B<=100)的自然数对中A之和。

1669

#include"math.h"

main(){

inta,b,i,j,k,sum=0;

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

for(b=1;b

{i=a+b;

j=a-b;

if((sqrt(i)-(int)sqrt(i))==0&&(sqrt(j)-(int)sqrt(j))==0)

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

sum=sum+j;

}

}

printf("%d",sum);

}

方法二

#include"stdio.h"

#include"math.h"

intf(inti)

{

intflag;

if(sqrt(i)-(int)sqrt(i)==0)

flag=1;

else

flag=0;

returnflag;

}

main(){

inta,b,i,j,k,sum=0;

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

for(b=1;b

if(f(a+b)&&f(a-b))

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

sum=sum+(a-b);}

printf("%d",sum);

}

梅森尼数是指能使2^n-1为素数的数n,求[1,21]范围内最大的梅素尼数?

19

梅森尼数是指能使2^n-1为素数的数n,求[1,21]范围内有多少个梅森尼数?

7

#include"math.h"

intprime(inti){

intj;

for(j=2;j<=sqrt(i);j++)

if(i%j==0)

return0;

return1;

}

main(){

inti,j,p,sum=0;

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

{p=1;

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

p=p*2;

if(prime(p-1)==1)

{printf("%d",i);

sum++;}

}

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

}

求100~200间的全部素数

方法一:

#include

#include

voidmain()

{intm,k,i,n=0;

for(m=101;m<=200;m=m+2)

{

k=sqrt(m);

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

if(m%i==0)break;

if(i>=k+1)

{

printf("%d″,m);

n=n+1;

}

if(n%10==0)printf(″\n″);

}

printf("\n");}

方法二:

#include

main(){

inti,j,k,n=0;

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

{k=1;

for(j=2;j<=sqrt(i);j++)

if(i%j==0)

k=0;

if(k)

{printf("%d",i);

n++;}

}

printf("\n");

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

}

一个数如果刚好与它所有的因子之和相等,则称该数为一个“完数”,如:

6=1+2+3,则6就是一个完数。

求出200到500之间所有的完数之和。

496

main(){

intn,s,i,total=0;

for(n=200;n<=500;n++)

{s=0;

for(i=1;i

if(n%i==0)

s=s+i;

if(s==n)

total=total+n;

}

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

}

求出1000以内所有的完数,并输出其因子

main(){

intn,s,i;

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

{s=0;

for(i=1;i

if(n%i==0)

s=s+i;

if(s==n)

{printf("%d",n);

for(i=1;i

if(n%i==0)

printf("%d",i);

printf("\n");

}

}

}

编程序求出1到5000之间的能被5整除的前若干个偶数之和,当和大于500时程序退出。

550

方法一

Voidmain(){

intsum=0,i;

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

{if(i%5==0)

sum=sum+i;

if(sum>500)

break;

}

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

}

方法二

#include

voidmain()

{

intsum=0,i;

i=2;

while(sum<=500)

{if(i%5==0)

sum=sum+i;

i=i+2;

}

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

getch();

}

编程序求出2+4+8+16+32+…这样的数之和。

如果累加数大于500时,则程序终止并输出结果。

510

方法一:

main(){

intsum=0,i=2;

while(sum<=500)

{sum=sum+i;

i=i*2;

}

printf("%d,%d\n",sum,i/2);}

方法二:

main(){

intsum=0,i=2;

for(i=2;i<=5000;i=i*2)

{sum=sum+i;

if(sum>500)

break;

}

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

}

“水仙花数”是指这样的数,其各位数字的立方和等于该数本身,如:

153=1^3+5^3+3^3。

编写程序求100至999的范围内有多少个水仙花数。

4

main(){

inti,j,k,n;

for(n=100;n<=999;n++)

{i=n/100;

j=(n/10)%10;

k=n%10;

if(n==i*i*i+j*j*j+k*k*k)

printf("%d",n);

}

}

一个数如果恰好等于它的所有真因子之和,这个数就称为“完数”。

例如,6的真因子为1,2,3,而6=1+2+3,因此,6是“完数”。

求200到500之间的的所有完数之和。

496

main(){

intn,s,i,total=0;

for(n=200;n<=500;n++)

{s=0;

for(i=1;i

if(n%i==0)

s=s+i;

if(s==n)

total=total+n;

}

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

}

求[100,200]范围内素数的个数。

21

#include

main(){

inti,j,k,n=0;

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

{k=1;

for(j=2;j<=sqrt(i);j++)

if(i%j==0)

k=0;

if(k)

n++;

printf("%d",i);

}

printf("\n");

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

}

编写程序,求所有符合算式ij*ji=1300的最小数ij(即i*10+j)。

其中i、j是1~9之间的一位整数。

25

voidmain()

{

inti,j,n,t=0;

for(n=11;n<=99;n++)

{i=n/10;

j=n%10;

if(n*(j*10+i)==1300)

break;}

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

}

德国数学家哥德巴赫曾猜测:

任何大于6的偶数都可以分解成两个素数的和。

但有些偶数可以分解成多种素数对的和,如:

10=3+7,10=5+5,即10可以分解成两种不同的素数对。

试求6744可以分解成多少种不同的素数对(注:

A+B与B+A认为是相同素数对) 144

#include

#include

voidmain()

{

inta,b,i,j,f1,f,n=0;

for(a=3;a<6744/2;a=a+2)

{

f1=1;

for(j=2;j<=sqrt(a);j++)

{

if(a%j==0)

f1=0;

}

if(f1)

{

b=6744-a;

f=1;

for(i=2;i<=sqrt(b);i++)

{

if(b%i==0)

f=0;}

if(f)

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

n++;}}

}

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

}

方法二:

#include

#include

voidmain()

{intf(intx);

inta,b,n=0;

for(a=3;a<6744/2;a=a+2)

if(f(a))

{b=6744-a;

if(f(b))

n++;}

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

}

intf(intx)

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

当前位置:首页 > 幼儿教育 > 幼儿读物

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

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