还有几道题目实在不会做,练习的时间太少了,头晕目眩
明天就要考试了,好急,麻烦各位了是要把编码完善
1、某餐厅用苹果、桔子、香蕉、菠萝、梨五种水果制作水果拼盘,要求每个拼盘中恰有三种不同水果。以下程序的功能就是计算可以制作出多少种这样的水果拼盘并列出组合方式。
#include <stdio.h>
typedef enum { apple,orange,banana,pineapple,pear } Fruit;
main()
{ (1) fruits[ ]={"apple","orange","banana","pineapple","pear"};
Fruit x,y,z,p;
int k=0,i;
for (x=(2);x<=pear;x++)
for (y=x+1;y<=pear;y++)
for (z=y+1;z<=pear;z++)
printf ("\n%d %s %s %s ",++k, fruits[x],fruits[y],fruits[z]);
}
2、以下程序中函数long fun(char *str)的功能是:自左至右取出非空字符串str中的所有数字字符,将这些数字字符组成一个不超过8位的十进制整数并输出。
例如,字符串str为“efg32gh76.jbejing08t5y4u2”,程序输出:32760854。
#include <stdio.h>
long fun(char *str)
{ int i=0; long k=0;
char *p=str;
while(*p!='\0'&& (3))
{ if(*p>='0'&&*p<='9')
{ k=(4)+*p-'0'; ++i; }
(5);
}
return k;
}
void main( )
{ char x[]="efg32gh76.jbejing08t5y4u2";
printf("%ld\n", fun(x));
}
3、下列程序的功能是寻找10000以内具有下列特性的四位正整数:其百位数为0,去掉百位数0可得到一个三位正整数,而该三位正整数乘以9等于原四位正整数。例如:6075=675×9。
#include <stdio.h>
main()
{
int i,a1,a2;
for(i=1000;i<10000;i++)
{ if(i%1000/100)
continue;
(6) ;
a2=i/1000;
if(( (7) )*9==i)
printf("%d\t",i);
}
}
4、程序功能:用牛顿迭代法求方程3x3-3x2+x-1=0在2.0附近的一个实根,精度要求为10-5函数F求f(x)的值,函数F1求f(x)的一阶导数值。 牛顿迭代公式如下:
#include<stdio.h>
#include<math.h>
float F(float x)
{
return x*(3*x*(x-1)+1)-1;
}
float F1(float x)
{
return 9*x*x-6*x+1;
}
float newtoon(float x)
{
float f,f1,x0;
do
{ (8) ;
f=F(x0);
f1=F1(x0);
x= (9) ;
}
while(fabs(x-x0)>1e-5);
return x;
}
main()
{
float x0;
scanf("%f",&x0);
printf("The result =%.2f\n",newtoon(x0));
}
5、程序功能:寻找具有下列特性的四位正整数,其百位数为0,去掉百位数0可得到一个三位正整数,而该三位正整数乘以9等于原四位正整数。例如,6075=675×9,所以6075是具有上述特性的正整数。
#include <stdio.h>
int fun( int n )
{ int a[4] , i , k ;
k=n ;
for( i=0 ; k>0 ; i++ )
{ a[i]= (10) ;
k/=10 ;
}
if( (11) &&( a[3]*100+a[1]*10+a[0])*9==n )
return 1 ;
else
return 0 ;
}
main( )
{ int i , n=0 ;
for( i=1000 ; i<10000 ; i++ )
if( fun( i ) )
printf ( "%4d\t" , i ) ;
printf ( "\n" ) ;
}
6、以下程序找到并输出所有满足给定条件的四位十进制表示的正整数:该数是某个数的平方、该数的后二位是25、组成该整数的各位数字中有两位是2。例如:1225是满足所给条件的四位正整数(352=1225)。
#include<stdio.h>
#include<math.h>
main()
{ long i,j,s,d=0;
for(i=1000;i<10000;i++)
{ (12) ;
j= (13) ;
if(i==j*j && i%100==25)
{ s=i;
while(s>0)
{ if( (14) )d++;
s=s/10;
}
if(d==2) printf("\n %d",i);
}
}
}
[ 本帖最后由 sblw1234 于 2010-4-16 14:13 编辑 ]