我最近考试比较多,所以可能没啥时间写解析了,我准备把题目答案发一下,解析的话考完试再看看吧。
1.下面代码通过函数调用对4到N(1000>=N>=4)之间的偶数,验证哥德巴赫猜想,请补充代码。哥德巴赫猜想:即任一大于2的偶数都可写成两个素数之和。
m%i==0
scanf(“%d”,&N);
isprime(i)==1&&isprime(n-i)==1
break
2.编写函数,求直角三角形的斜边长并以保留两位小数的形式输出。两条直角边(两个正整数)由键盘输入,以空格分隔,由被调函数计算斜边长。
float f(int a,int b)
{
float c;
c=sqrt(a*a+b*b);
return c;
}
3.本题要求实现一个函数,对给定的正整数N(N>=1),打印从1到N(包含N)的全部偶数(用一个空格分隔)。
void PrintN(int n)
{
int i;
for(i=1;i<=n;i++)
if(i%2==0)
printf("%d ",i);
return;
}
4.本题要求实现一个函数,在主函数中输入一个日期的年、月、日的值(空格分隔),然后在被调函数中求出这一天是当年的第几天,在主函数中输出结果。
int sumdays(int y,int m,int d)
{
int i;
int a[12]={31,28,31,30,31,30,31,31,30,31,30};
int sum=0;
for(i=0;i<=m-2;i++)
sum+=a[i];
sum+=d;
if((((y%4==0)&&(y%100!=0))||y%400==0)&&m>2)
sum+=1;
return sum;
}
5.要求实现一个函数,打印乘法口诀表,输入正整数n(9>=n>=1),输出n行口诀表,每个等式中的乘积值占三个字符宽度,左对齐
#include
void print(int x)
{
int i,j;
for(i=1;i<=x;i++)
{for(j=1;j<=i;j++)
printf("%d*%d=%-2d ",j,i,j*i);
printf("\n");}
}
6.在主函数中输入一个字符ch和一个正整数n(20>=n>=1),然后在被调函数中输出由n行字符ch构成的等腰三角形。
void printstar(char ch,int n)
{
int i,j;
for(i=1;i<=n;i++)
{for(j=1;j<=n-i;j++)
printf(" ");
for(j=1;j<=2*i-1;j++)
printf("%c",ch);
printf("\n");
}
return;
}
7.在主函数中输入一个正整数N(9>=N>=1),然后在被调函数中输出由N行数字构成的倒数字金字塔。
void printN(int n)
{
int i,j;
for(i=n;i>=1;i--)
{
for(j=0;j<n-i;j++)
printf(" ");
for(j=1;j<=i;j++)
printf("%d",j);
for(j=i-1;j>=1;j--)
printf("%d",j);
if(i!=1)
printf("\n");
}
return;
}
8.修改下面程序中的错误,使通过函数调用来求两个正整数的最大公约数(限定不使用全局变量)。
#include
int gcd(int a,int b)
{int m,n,r;
m=a;
n=b;
while(1)
{r=m%n;
if(r==0)
return n;
m=n;
n=r;
}
}
int main(void)
{int a,b,g;
scanf("%d%d",&a,&b);
g=gcd(a,b);
printf("%d\n",g);
return 0;
}