c语言程序详解文档格式.docx
- 文档编号:20982758
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:33
- 大小:24.19KB
c语言程序详解文档格式.docx
《c语言程序详解文档格式.docx》由会员分享,可在线阅读,更多相关《c语言程序详解文档格式.docx(33页珍藏版)》请在冰豆网上搜索。
求一个3×
3矩阵主对角线元素之和。
voidmain()
{
inta[3][3]={1,2,3,4,5,6,7,8,9},sum=0,i,j;
for(i=0;
3;
for(j=0;
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"
003"
wangwu"
139}};
NumberNametel\n"
for(i=0;
printf("
%5s%10s%5d\n"
mem[i].num,mem[i].name,mem[i].tel);
/*2、编写程序,从键盘读入一个字符串,
用字符数组保存,然后分别用strlen()、
sizeof()计算其长度,输出结果并分析。
string.h>
{chars[20];
gets(s);
puts(s);
%d,%d\n"
sizeof(s),strlen(s));
程序中头文件type1.h的内容是:
#defineN5
#defineM1N*3
程序如下:
#include"
type1.h"
#defineM2N*2
main()
{inti;
i=M1+M2;
%d\n"
i);
程序编译运行后的输出结果是(c)
A)10B)20C)25D)30
1、所谓“同构数”是指这样一个数,它出现在它的平方数的右侧,例如5的平方是25,25的平方是625,故5和25都是同构数,求[1,1000]之间所有同构数的个数和总和。
7,1114
voidmain(){
inti,a,n=0,sum=0;
1000;
{a=i*i;
if(i<
10&
&
a%10==i)
{n++;
sum=sum+i;
elseif(i<
100&
a%100==i)
elseif(a%1000==i)
}printf("
%d,%d"
n,sum);
方法二:
inti,a,sum=0,n=0;
if(a%10==i||a%100==i||a%1000==i)
n++;
}}
%d%d"
sum,n);
猴子第一天摘下若干桃子,当即吃了一半,还不过瘾又多吃了一个。
第二天早上又将剩下的桃子吃了一半,还是不过瘾,有多吃一个。
以后每天都吃前一天剩下的一半再加一个。
到第10天再吃剩下一个了。
求猴子第一天摘了多少桃子?
1534
inti,x=1;
for(i=9;
i>
0;
i--)
x=(x+1)*2;
第一天共摘了%d只桃子\n"
intpeach(intn)
{intc;
if(n==10)c=1;
elsec=2*(peach(n+1)+1);
returnc;
{intsum=0;
sum=peach
(1);
}2、一个素数(设为p)依次从最高位去掉一位,二位,三位,……,若得到的各数仍都是素数(注:
1不是素数),且数p的各位数字均不为零,则称该数p为逆向超级素数。
例如,617,17,7都是素数,因此617是逆向超级素数,尽管503,03,3都是素数,但它不是逆向超级素数,因为它包含有零。
试求[100,999]之内的所有逆向超级素数的个数。
39
math.h>
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;
}
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++;
/*
程序:
冒泡法排序函数的定义。
voidBubble(int*pa,intn);
//冒泡法排序函数声明
intmain(){
inta[10],n,i;
do
{
Inputn(1<
=n<
=10):
\n"
scanf("
n);
}while(n<
1||n>
10);
Input%delements:
n);
for(i=0;
n;
a[i]);
Theoriginalarrayis:
%5d"
a[i]);
Bubble(a,n);
//冒泡排序函数调用
Thesortedarrayis:
return0;
voidBubble(int*pa,intn)
{
{inti,j,t;
n-1;
for(j=n-1;
j>
i;
j--)
if(pa[j]<
pa[j-1])
{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
inta,b,n=0;
for(a=1;
a<
6744/2;
a=a+2)
if(prime(a))
{b=6744-a;
if(prime(b))
}
}
程序6.6求最大公约数函数的定义与调用。
第4章的程序4.9是求最大公约数程序的主函数形式,
现在将其求最大公约数部分独立定义为函数gcd,并在主函数中调用
intgcd(intdividend,intdivider);
//求最大公约数函数声明
intmain()
intm,n;
Inputm,n:
%d%d"
m,&
}while(m<
=0||n<
=0);
hcd:
%d\n"
gcd(m,n));
//求最大公约数函数调用
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++)
{i=a%10;
j=(a/10)%10;
k=a/100;
if((i+j)%10==k)
{for(m=2;
m<
a;
m++)
if(a%m==0)
break;
if(m>
=a)
#include"
math.h"
intprime(inti){
intj;
for(j=2;
=sqrt(i);
if(i%j==0)
return0;
return1;
if((i+j)%10==k&
prime(a))
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
inta,b,i,j,k,sum=0;
for(a=1;
=100;
for(b=1;
b<
b++)
{i=a+b;
j=a-b;
if((sqrt(i)-(int)sqrt(i))==0&
(sqrt(j)-(int)sqrt(j))==0)
(%d,%d)\n"
a,b);
sum=sum+j;
方法二
intf(inti)
intflag;
if(sqrt(i)-(int)sqrt(i)==0)
flag=1;
else
flag=0;
returnflag;
if(f(a+b)&
f(a-b))
sum=sum+(a-b);
梅森尼数是指能使2^n-1为素数的数n,求[1,21]范围内最大的梅素尼数?
19
梅森尼数是指能使2^n-1为素数的数n,求[1,21]范围内有多少个梅森尼数?
7
inti,j,p,sum=0;
for(i=2;
=21;
{p=1;
for(j=1;
=i;
p=p*2;
if(prime(p-1)==1)
求100~200间的全部素数
#include<
#include<
voidmain()
{intm,k,i,n=0;
for(m=101;
=200;
m=m+2)
k=sqrt(m);
if(m%i==0)break;
if(i>
=k+1)
%d″,m);
n=n+1;
if(n%10==0)printf(″\n″);
printf("
\n"
inti,j,k,n=0;
for(i=100;
{k=1;
k=0;
if(k)
一个数如果刚好与它所有的因子之和相等,则称该数为一个“完数”,如:
6=1+2+3,则6就是一个完数。
求出200到500之间所有的完数之和。
496
intn,s,i,total=0;
for(n=200;
n<
=500;
n++)
{s=0;
if(n%i==0)
s=s+i;
if(s==n)
total=total+n;
total);
求出1000以内所有的完数,并输出其因子
intn,s,i;
for(n=1;
=1000;
编程序求出1到5000之间的能被5整除的前若干个偶数之和,当和大于500时程序退出。
550
方法一
Voidmain(){
intsum=0,i;
=5000;
i=i+2)
{if(i%5==0)
if(sum>
500)
%d,%d\n"
sum,i);
i=2;
while(sum<
=500)
i=i+2;
getch();
编程序求出2+4+8+16+32+…这样的数之和。
如果累加数大于500时,则程序终止并输出结果。
510
intsum=0,i=2;
{sum=sum+i;
i=i*2;
sum,i/2);
i=i*2)
“水仙花数”是指这样的数,其各位数字的立方和等于该数本身,如:
153=1^3+5^3+3^3。
编写程序求100至999的范围内有多少个水仙花数。
4
inti,j,k,n;
for(n=100;
{i=n/100;
j=(n/10)%10;
k=n%10;
if(n==i*i*i+j*j*j+k*k*k)
一个数如果恰好等于它的所有真因子之和,这个数就称为“完数”。
例如,6的真因子为1,2,3,而6=1+2+3,因此,6是“完数”。
求200到500之间的的所有完数之和。
496
求[100,200]范围内素数的个数。
21
编写程序,求所有符合算式ij*ji=1300的最小数ij(即i*10+j)。
其中i、j是1~9之间的一位整数。
25
{
inti,j,n,t=0;
for(n=11;
=99;
{i=n/10;
j=n%10;
if(n*(j*10+i)==1300)
德国数学家哥德巴赫曾猜测:
inta,b,i,j,f1,f,n=0;
for(a=3;
f1=1;
for(j=2;
=sqrt(a);
{
if(a%j==0)
f1=0;
}
if(f1)
{
b=6744-a;
f=1;
for(i=2;
=sqrt(b);
{
if(b%i==0)
f=0;
if(f)
{printf("
%d,%d\n"
n++;
}}
方法二:
{intf(intx);
if(f(a))
if(f(b))
intf(intx)
{ints=1,j;
=sqrt(x);
if(x%j==0)
s=0;
returns;
所谓“同构数”是指这样一个数,它出现在它的平方数的右侧,例如5的平方是25,25的平方是625,故5和25都是同构数,求[1,1000]之间所有同构数的个数和总和。
7,1114方法一:
inti,n=0,sum=0;
10)
{if(i==i*i%10)
%d\n"
}}
100)
{if((i*i-i)%100==0)
{if((i*i-i)%1000==0)
inti,b,sum=0,n=0;
{b=i*i;
if(b%10==i||b%100==i||b%1000==i)
倒勾股数是满足公式:
1/A^2+1/B^
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 程序 详解