程序的功能为:通过调用一个判断素数的函数isprime(),验证歌德巴赫猜想:即任何大于2的偶数均可表示为两个素数之和。例如:4=2+2(特例,仅此一个),6=3+3,8=3+5,…。程序要求输入任一偶数x,输出6到该数范围内的各个满足条件的组合。
#include <stdio.h>
int isprime(int m)
{ int i,flag=1;
for(i=2;i<m;i++)
if(m%i==0)
{ flag==0;
break;
}
if(flag) return 1;
else return 0;
}
main()
{ int n,x,a,b;
scanf("%d",&x);
for(n=6;n<=x;n+=2)
for(a=3;a<=n/2;a+=2)
if(isprime(a))
{ b=n-a;
if(isprime(b))
{ printf("%d=%d+%d\n",n,a,b);
continue; //退出a循环,判别下一个n的组合
}
}
}
#include<stdio.h>
void in(int arr[],int n);
void out(int arr[],int n);
int ave(int arr[],int n);
int max(int arr[],int n);
int min(int arr[],int n);
void sort(int arr[],int n);
main()
{
int a[10],n=10;
printf("请输入10个整数: ");
in(a,n);
printf("\n排序前为: ");
out(a,n);
printf("\n平均值为:%d\n",ave(a,n));
printf("\n最大值为:%d\n",max(a,n));
printf("\n最小值为:%d\n",min(a,n));
sort(a,n);
printf("\n排序后为:");
out(a,n);
printf('\n');
}
void in(int arr[],int n)
{
int i;
for(i=0;i<n;i++)
scanf("%2d",&arr[i]);
}
void out(int arr[],int n)
{
int i;
for(i=0;i<n;i++)
printf("%3d",arr[i]);
}
int ave(int arr[],int n)
{
int i,aver,sum=arr[0];
for(i=1;i<n;i++)
sum=sum+arr[i];
aver=sum/n;
return(aver);
}
int max(int arr[],int n)
{
int i,max=arr[0];
for(i=0;i<n;i++)
{
if(arr[i]>max)
max=arr[i];
}
return(max);
}
int min(int arr[],int n)
{
int i,min=arr[0];
for(i=0;i<n;i++)
{
if(arr[i]<min)
min=arr[i];
}
return(min);
}
void sort(int arr[],int n)
{
int i,j,t;
for(j=0;j<n-1;j++)
for(i=0;i<n-j;i++)
if(arr[i]>arr[i+1])
{
t=arr[i];
arr[i]=arr[i+1];
arr[i+1]=t;
}
}
程序的功能是:从键盘接受任意一个字符串,通过调用函数ishuiwen()判断出该字符串是否为回文字符串。
#include <stdio.h>
#include <string.h>
main()
{ int ishuiwen(char a[]);
char a[80];
puts("请输入一串字符:");
gets(a);
if(ishuiwen)
printf("是回文!\n");
else
printf("不是回文!\n");
}
int ishuiwen(char a[])
{ int i,j,flag=1;
for(i=0,j=strlen(a)-1;a[i]!='\0';i++)
if(a[i]!=a[j])
{ flag=0;
break;
}
if(flag) return 1;
else return 0;
}
函数fac()是用户自定义的一个用递归方法求任意整数阶乘的函数,在main函数中通过调用该函数求出一个三位整数n,其每位数字的阶乘之和正好等于该数本身,即x!+y!+z!=n。例如145=1!+4!+5!。
#include<stdio.h>
int fac(int m) //1
{ int f; //2
if(m==0||m==1) //3
f=1; //4
else //5
f=m*fac(m-1); //6
return f; //7
}
main()
{ int i,a,b,c; //8
for(i=100;i<=999;i++) //9
{ a = i / 100; //10
b = i % 100 / 10; //11
c = i % 10; //12
i=fac(a)+fac(b)+fac(c);//13
printf("%d\n", i); //14
}
}
编写程序:根据下面的要求,按所给的公式计算并输出结果。
要求:
①分别编写一个求阶乘n!的函数fac(n)、一个求组合数函数cnm(n,m);
②编写主函数,由键盘输入n和m,通过嵌套调用①中的函数完成计算。
③输入n和m要给出提示,并检查n和m的合理性,不合理的输入应输出错误信息,并不再进行计算。#include <stdio.h>
main()
{
int cnm(int n,int m);
int n,m;
printf("Input number:n,m\n");
scanf("%d,%d",&n,&m);
if(n<m||n<0||m<0)
printf("输入错误\n");
else
printf("result %d\n",cnm(n,m));
}
int fac(int n)
{ int f;
if(n==0||n==1)
f=1;
else
f=n*fac(n-1);
return f;
}
int cnm(int n,int m)
{
int fac(int n);
return (fac(n)/(fac(n-m)*fac(m)));
}
编写程序: 用递归方法编写求Fibonacci数列第n项的值的函数fib(n),并且在main函数中调用该函数输出Fibonacci数列从第1项到第n项的系数,每行输出5项,n的值由用户从键盘输入。
#include<stdio.h>
main()
{
int fib(int n);
int n,i;
printf("要输出几项:(n大于0)");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
printf("%12d",fib(i));
if(i%5==0)
printf("\n");
}
printf("\n");
}
int fib(int n)
{
int f;
if(n==1||n==2)
f=1;
else
f=fib(n-1)+fib(n-2);
return f;
}
分析以下程序的运行结果,然后运行程序验证自己的分析是否正确。
#include <stdio.h>
void f(int c)
{ int a=0;
static int b=0;
a++;
b++;
printf("%d: a=%d, b=%d\n", c, a, b);
}
main()
{ int i;
for (i=1; i<=3; i++)
f(i);
}
#include <stdio.h>
int a=10,b=20;
main( )
{ int a=1,c=0;
c=a+b;
printf("%d,",c);
a++;
b++;
mysum(a,b);
{ int a=6,b=6;
c=a+b;
printf("%d,",c);
}
printf("%d\n",a+b);
}
int mysum(int x,int y)
{ a++;
b++;
printf("%d\n",a+b);
return x+y;
}