fun( char *p )
{ char max,*q; int i=0;
max=p[i];
while( p[i]!=0 )
{ if( maxp )
{ *q=*(q-1);
q--;
}
p[0]=max;
}
main()
{ char str[80];
printf("Enter a string: "); gets(str);
printf("\nThe original string: "); puts(str);
fun(str);
printf("\nThe string after moving: "); puts(str); printf("\n\n");
}
答案:(1)q=p+i;(2)while(q>p)
※ 3、给定程序MODI1.C中函数fun的功能是:根据整型形参m,计算如下公式的值。
1 1 1 1
y = ------- + --------- + --------- + …… + -------
100*100 200*200 300*300 m*m
例如,若m = 2000,则应输出: 0.000160。
请改正程序中的语法错误,使它能计算出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
#include
/************found************/
fun ( int m )
{ double y = 0, d ;
int i ;
/************found************/
for( i = 100, i <= m, i += 100 )
{ d = (double)i * (double)i ;
y += 1.0 / d ;
}
return( y ) ;
}
main( )
{ int n = 2000 ;
printf( "\nThe result is %lf\n", fun ( n ) ) ;
}
答案:(1)double fun(int m)(2)for(i=100;i<=m;i~1+=0)
※ 4、给定程序MODI1.C中函数 fun 的功能是: 读入一个字符串(长度<20 ),将该字符串中的所有字符按ASCII码升序排序后输出。
例如, 若输入: edcba, 则应输出: abcde。
请改正程序中的错误,使它能统计出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
#include
void fun( char t[] )
{
char c;
int i, j;
/**********found***********/
for( i = strlen( t ); i; i-- )
for( j = 0; j < i; j++ )
/**********found***********/
if( t[j] < t[ j + 1 ] )
{
c = t[j];
t[j] = t[ j + 1 ];
t[j + 1 ] = c;
}
}
main()
{
char s[81];
printf( "\nPlease enter a character string: " );
gets( s );
printf( "\n\nBefore sorting:\n \"%s\"", s );
fun( s );
printf( "\nAfter sorting decendingly:\n \"%s\"", s );
}
答案:(1)for(i = strlen( t )-1; i;i--)(2)if(t[j] > t[j + 1 ] )
※ 5、给定程序MODI1.C中 fun 函数的功能是:分别统计字符串中大写字母和小写字母的个数。
例如, 给字符串 s 输入:AAaaBBb123CCccccd,则应输出结果:upper = 6, lower = 8。
请改正程序中的错误,使它能计算出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
#include
/**********found**********/
void fun ( char *s, int a, int b )
{
while ( *s )
{ if ( *s >= 'A' && *s <= 'Z' )
/**********found**********/
*a=a+1 ;
if ( *s >= 'a' && *s <= 'z' )
/**********found**********/
*b=b+1;
s++;
}
}
main( )
{ char s[100]; int upper = 0, lower = 0 ;
printf( "\nPlease a string : " ); gets ( s );
fun ( s, & upper, &lower );
printf( "\n upper = %d lower = %d\n", upper, lower );
}
答案:(1)void fun ( char *s, int *a, int *b )(2)++(*a);(3)++(*b);
#6、给定程序MODI1.C中函数fun的功能是: 交换主函数中两个变量的值。例如: 若变量a中的值原为8,b中的值为3。程序运行后a中的值为3, b中的值为8。
请改正程序中的错误, 使它能计算出正确的结果。
注意: 不要改动 main 函数, 不得增行或删行, 也不得更改程序的结构!
#include
/*********found**********/
int fun(int x,int y)
{
int t;
/*********found**********/
t=x;x=y;y=t;
}
main()
{
int a,b;
a=8;b=3;
fun(&a,&b);
printf("%d, %d\n",a,b);
}
答案:(1)int fun(int *x,int *y)(2)t=*x;*x=*y;*y=t;
#7.给定程序MODI1.C中函数 fun 的功能是:求出以下分数序列的前n项之和。和值通过函数值返回到main函数。
2 3 5 8 13 21
┄┄ , ┄┄ , ┄┄ , ┄┄ , ┄┄ , ┄┄ , ……
1 2 3 5 8 13
例如,若n = 5,则应输出:8.391667。
请改正程序中的错误,使它能计算出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include
/************found************/
void fun ( int n )
{ int a, b, c, k; double s;
s = 0.0; a = 2; b = 1;
for ( k = 1; k <= n; k++ ) {
/************found************/
s = s + (Double)a / b;
c = a; a = a + b; b = c;
}
return s;
}
main( )
{ int n = 5;
printf( "\nThe value of function is: %lf\n", fun ( n ) );
}
答案:(1)double fun ( int n )(2)s=s+(double)a/b;
※ 8、给定程序MODI1.C中函数 fun 的功能是:计算n!。
例如,给n输入5,则输出120.000000。
请改正程序中的错误,使程序能输出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include
double fun ( int n )
{ double result = 1.0 ;
/************found************/
if n = = 0
return 1.0 ;
while( n >1 && n < 170 )
/************found************/
result *= n--
return result ;
}
main ( )
{ int n ;
printf("Input N:") ;
scanf("%d", &n) ;
printf("\n\n%d! =%lf\n\n", n, fun(n)) ;
}
答案:(1)if (n==0)(2)result *= n-- ;
五、编程题
第3章
* 3.1 编写程序,把560分钟换算成用小时和分钟表示,然后进行输出。
答案:
main( )
{
int hour,minute;
hour=560/60;
minute=560%60;
printf("hour=%d,minute=%d",hour,minute);
}
* 3.2 编写程序,输入两个整数:1500和350,求出它们的商数和余数并进行输出。
答案:
#include
main( )
{
int num1,num2,i,j; /* 定义变量 i-商,j-余数 */
printf("input num1 and num2:\n");
scanf("%d%d",&num1,&num2);
i=num1/num2;
j=num1%num2;
printf("商=%d\n 余数=%d",i,j);
}
* 3.3 编写程序,读入三个双精度数,求它们的平均值并保留此平均值小数点后一位数,对小数点后第二位数进行四舍五入,最后输出结果。
答案:
main( )
{
double a,b,c,average=0;
printf("input a,b,c(double):\n");
scanf("%lf%lf%lf",&a,&b,&c);
average=(a+b+c)/3;
average=average*10;
average=average+0.5;
average=(int)average;
average=average/10;
printf("average=%lf",average);
}
——————————————————————————————————————
* 3.4 编写程序,读入三个整数给a,b,c,然后交换它们中的数,把a中原来的值给b,把b中原来的值给c,把c中的值给a。
答案:
main( )
{
int a,b,c,t=0;
printf("input a b c:\n");
scanf("%d%d%d",&a,&b,&c);
t=c;c=b;b=a;a=t;
printf("a=%d b=%d c=%d",a,b,c);
}
第4章
* 4.1 编写程序,输入一个整数,打印出它是奇数还是偶数。
答案:
main( )
{
int i;
printf("input a integer:\n");
scanf("%d",&i);
if(i%2==0) /*条件判断*/
printf("%d is a even",i);
else
printf("%d is a odd",i);
}
* 4.2 编写程序,输入a、b、c三个数,打印出最大者。
答案:
main( )
{
int a,b,c,max = 0;
printf("input (int)a b and c:\n");
scanf("%d%d%d",&a,&b,&c);
max = a;
if(max1e-6) /* fabs求浮点型数据的绝对值 */
{
t=t*i;
sum=sum+1/t;
i++;
}
printf("e=%lf",sum);
}
※ 5.3编写程序,打印以下图形:
*
***
*****
*******
*****
***
*
答案:
#include
main( )
{
int i,j;
for(i=1;i<=7;i++) /*控制行数*/
{
for(j=1;j<=7;j++) /*控制星数*/
{
if((j<=fabs(4-i))||(j>7-fabs(4-i)))
printf(" ");
else
printf("*")
}
printf("\n");
}
}
# 5.4.译密码。
为使电文保密,往往按一定规律将其转换成密码,收报人再按约定的规律将其译回原文。
假设:按以下规律将电文编成密码:
将字母A变成字母E,a变成e,即变成其后的第四个字母,非字母符不变!
请编写程序实现此功能。
答案:
#include
main()
{
char c;
while((c=getchar())!=‘\n’)
{
if(c>=’a’&&c<=‘z’)||(c>=‘A’&&c<=‘Z’)
{
c=c+4;
if(c>’Z’&&c<=‘Z’+4||c>’z’) c=c-26;
}
printf(“%c”,c);
}
}
# 5.5.打印出所有的“水仙花数”。所谓“水仙花数”是指一个3位数,其各位数字的立方和恰好等于它本身。例如,371=33+73+13。
答案:
main ( )
{ int n, i, j, k;
for( n=100; n<1000; n++ )
{ i=n/100;
j=n/10%10;
k=n%10;
if ( n == i*i*i+j*j*j+k*k*k)
printf (“%d = %d*%d*%d+%d*%d*%d +%d*%d*%d \n”, n,i,i,i,j,j,j,k,k,k);
}
}
※ 5.6编程实现猴子吃桃问题:
猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,就只剩一个桃子了。求第一天共摘多少桃子。
答案:
main()
{ int day,x1,x2;
day=9;
x2=1;
for(;day>0;day--)
{x1=(x2+1)*2;
x2=x1;
}
printf(“total=%d\n”,x1);
}
第6章
※ 6.1 请编写输出以下图案的程序,图案的行数由输入的值确定。
A
BBB
CCCCC
DDDDDDD
EEEEEEEEEEE
答案:
#include
main()
{
int i,j,k,n;
char a='A';
printf("please input:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
for(j=1;j<=n-i;j++)
printf(" ");
for(k=1;k<=2*i-1;k++)
printf("%c",a);
a=a+1;
printf("\n");
}
}
第7-10章
※ 1. 编写函数,根据整型形参m的值,计算如下公式的值。
t=1-1/(2 x 2)-1/(3 x 3)-...-1/(m x m)
例如:若m=5,则应输出0.536389。
答案:
main()
{
float t=1;
float f2(int);
int i,m;
scanf("%d",&m);
for(i=2;i<=m;i++)
t=t-f2(i);
printf("t=%f",t);
}
float f2(int m)
{
float s;
s=1.0/(m*m);
return s;
}
# 2. 编写函数用以求表达式x2-5x+4,x作为参数传给函数,调用此函数求:
y1=22-5*2+4
y2=(x+15)2-5*(x+15)+4
y3=sin2x-5*sinx+4
答案:
#include math.h
float fun(float x)
{
float y;
y=pow(x,2)-5*x+4;
return y;
}
main()
{
float x,y1,y2,y3;
clrscr();
printf("Enter x:\n");
scanf("%f",&x);
y1=fun(2);
y2=fun((x+15));
y3=fun(sin(x));
printf("y1=%f\ny2=%f\ny3=%f\n",y1,y2,y3);
}
_1211399375.unknown
_1301228070.unknown