全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)C語(yǔ)言練習(xí)題(九)
1.程序填空題
請(qǐng)補(bǔ)充函數(shù)fun(),該函數(shù)的功能是把數(shù)組aa中的偶數(shù)元素按原來(lái)的先后順序放在原數(shù)組后面。
例如,輸入“33、67、42、58、25、76、85、16、41、56”,輸出結(jié)果“33、67、25、85、41、42、58、76、16、56”。
請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。
注意:不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
#include <stdio.h>
#include <windows.h>
#define N 10
void fun(int aa[])
{
int I,j=0,k=0;
int bb[N];
for(i=0;i<N; i++)
{
/**********found**********/
if(___1___)
bb[k++]=aa[i];
else
aa[j++]=aa[i];
}
/**********found**********/
for(i=0;___2___;i++,j++)
aa[j]=bb[i];
}
main()
{
int I;
int aa[N]={33,67,42,58,25,76,85,
16,41,56};
system("cls");
printf("\n***original list***\n");
for(i=0;i<N;i++) printf("%4d",aa[i]);
fun(aa);
printf("\n***new list***\n ");
for(i=0;i<N;i++) printf("%4d",aa[i]);
}
【答案】
(1)aa[i]%2==0 (2)i<k?
2.程序修改題
下列給定程序中,函數(shù)fun()的功能是根據(jù)整型形參n,計(jì)算如下公式的值:
A1=1,A2=1/(1+A1),A3=1/(1+A2),…,
An=1/(1+A(n-1))
例如,若n=10,則應(yīng)輸出0.617977。
請(qǐng)改正程序中的錯(cuò)誤,使其能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
#include <conio.h>
#include <stdio.h>
#include <windows.h>
/**********found**********/
int fun(int n)
{
float A=1; int I;
/**********found**********/
for(i=2;i<n;i++)
A=1.0/(1+A);
return A;
}
main()
{
int n;
system("cls");
printf("Please enter n: ");
scanf("%d",&n);
printf("A%d=%lf\n",n,fun(n));
}
【答案】
(1)將 int fun(int n) 改為:
float fun(int n)
(2)將 for(i=2;i<n;i++) 改為:
for(i=2;i<=n;i++)?
3.程序設(shè)計(jì)題
N名學(xué)生的成績(jī)已在主函數(shù)中放入一個(gè)帶頭節(jié)點(diǎn)的鏈表結(jié)構(gòu)中,h指向鏈表的頭節(jié)點(diǎn)。請(qǐng)編寫(xiě)函數(shù)fun(),它的功能是:求出平均分,由函數(shù)值返回。
例如,若學(xué)生的成績(jī)是85、76、69、91、72、64、87,則平均分應(yīng)當(dāng)是78.625。
注意:部分源程序已給出。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。
#include <stdlib.h>
#include <stdio.h>
#define N 8
struct slist
{double s;
struct slist *next;
};
typedef struct slist STREC;
double fun(STREC *h)
{
?
}
STREC *creat(double *s) /*創(chuàng)建鏈表*/
{
STREC *h,*p,*q;
int i=0;
h=p=( STREC*)malloc(sizeof(STREC));
p->s=0;
while(i<N)
{
q=( STREC*)malloc(sizeof(STREC));
q->s=s[i];i++;p->next=q;p=q;
}
p->next=0;
return h;
}
outlist(STREC *h)
{
STREC *p;
p=h->next;
printf("head");
do
{
printf("->%4.1f",p->s);
p=p->next; /*輸出各成績(jī)*/
}
while(p!=0);
}
main()
{
double s[N]={85,76,69,85,91,72,64,87},
ave;
STREC *h;
h=creat(s);
outlist(h);
ave=fun(h);
printf("ave=%6.3f\n",ave);
}
【答案】
double fun(STREC *h)
{
double av=0.0;
STREC *p=h->next;
while(p!=NULL)
{
av=av+p->s;
p=p->next;
}
return av/N;
1.程序填空題
請(qǐng)補(bǔ)充main函數(shù),該函數(shù)的功能是:把一維數(shù)組中的元素逆置。結(jié)果仍然保存在原數(shù)組中。
請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。
注意:不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
#include <stdio.h>
#include <windows.h>
#define N 10
main()
{
int I,j,t;
int bb[N];
system("cls");
for(i=0;i<N;i++) bb[i]=I;
printf("\n***original list***\n");
for(i=0;i<N; i++)
printf("%4d",bb[i]);
/**********found**********/
for(___1___;j<=I;___2___)
{ t=bb[j]; bb[j]=bb[i]; bb[i]=t; }
printf("\n*** new list ***\n");
for(i=0;i<N;i++) printf("%4d",bb[i]);
}
【答案】
(1)j=0,--i (2)j++,i--?
2.程序修改題
下列給定程序中,函數(shù)fun()的功能是:計(jì)算整數(shù)n的階乘。
請(qǐng)改正程序中的錯(cuò)誤,使其能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
#include <stdio.h>
#include <windows.h>
double fun(int n)
{
double result=1.0;
while(n>1&&n<170)
/**********found**********/
result*=--n;
/**********found**********/
return;
}
main()
{
int n;
system("cls");
printf("Enter an integer: ");
scanf("%d",&n);
printf("\n%d!=%1g\n",n,fun(n));
}
【答案】
(1)將 result*=--n; 改為:result*=n--;
(2)將 return; 改為:return result;
3.程序設(shè)計(jì)題
假定輸入的字符串中只包含字母和*號(hào)。請(qǐng)編寫(xiě)函數(shù)fun(),它的功能是:將字符串尾部的*號(hào)全部刪除,前面和中間的*號(hào)不刪除。
例如,若字符串中的內(nèi)容為****A*BC*DEF*G* ******,刪除后,字符串中的內(nèi)容則應(yīng)當(dāng)是****A*B C*DEF*G。
注意:部分源程序已給出。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。
#include <stdio.h>
#include <conio.h>
void fun(char *a)
{
?
}
main()
{
char s[81];
printf("Enter a string :\n");
gets(s);
fun(s);
printf("The string after deleted:\n");
puts(s);
}
【答案】
void fun (char *a)
{
while(*a!='\0')
a++;
a--;
while(*a=='*')
a--;
*(a+1)='\0';
}
1.程序填空題
請(qǐng)補(bǔ)充函數(shù)fun(),該函數(shù)的功能是:把數(shù)組aa中元素下標(biāo)為偶數(shù)的元素按從小到大重新保存在原數(shù)組中,其他元素位置不變。
例如,輸入“33、67、42、58、25、76、85、16、41、56”,則輸出“25、67、33、58、41、76、42、16、85、56”。
請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。
注意:不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
#include <stdio.h>
#include <windows.h>
#define N 10
void fun(int aa[])
{
int I,j,t;
for(i=0;i<N;i=i+2)
{
/**********found**********/
for(___1___;j<N;j=j+2)
/**********found**********/
if(___2___)
{ t=aa[j]; aa[j]=aa[i]; aa[i]=t; }
}
}
main()
{
int I;
int aa[N]={33,67,42,58,25,76,85,16,41,56};
system("cls");
printf("\n***original list***\n");
for(i=0;i<N;i++)
printf("%4d",aa[i]);
fun(aa);
printf("\n***new list***\n");
for(i=0; i<N; i++)
printf("%4d",aa[i]);
}
【答案】
(1)j=i或j=i+2 (2)aa[i]>aa[j]
2.程序修改題
給定程序中,函數(shù)fun()的功能是:使數(shù)組中的元素的值增加10倍。
改正其中的錯(cuò)誤,使其能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
#include <stdio.h>
#include <conio.h>
int m[10];
void fun(void)
{
int j;
printf("In subfunc after calling\n");
for(j=0;j<10;j++)
{
/**********found**********/
printf("%3d",m[j]*10);
}
}
main()
{
int I;
printf("In main before calling\n");
for(i=0;i<10;i++)
{ m[i]=I; printf("%3d",m[i]); }
fun();
printf("In main after calling\n");
for(i=0;i<10;i++)
printf("%3d",m[i]);
getch();
}
【答案】
將 printf("%3d",m[j]*10); 改為:
printf("%3d",m[j]=m[j]*10);?
3.程序設(shè)計(jì)題
函數(shù)fun的功能是:將形參b所指數(shù)組中的前半部分元素的值和后半部分元素的值對(duì)換。形參n中存放數(shù)組中數(shù)據(jù)的個(gè)數(shù),若n為奇數(shù),則中間的元素不動(dòng)。
例如,若a所指數(shù)組中的數(shù)據(jù)依次為:11 22 33 1 44 55 66,則調(diào)換后為:44 55 66 1 11 22 33。
注意:部分源程序已給出。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。
#include <stdio.h>
#define M 7
void fun(int b[],int n)
{
?
}
main()
{
int x[M]={11,22,33,1,44,55,66},I;
printf("\nThe original data :\n");
for(i=0;i<M;i++)
printf("%4d ",x[i]);
printf("\n");
fun(x,M);
printf("\nThe data after moving :\n");
for(i=0;i<M;i++)
printf("%4d ",x[i]);
printf("\n");
}
【答案】
int j,temp,p;
p=(n%2==0) ? n/2:n/2+1;
for(j=0;j<n/2;j++)
{
temp=b[j];
b[j]=b[p+j];
b[p+j]=temp;
}
1.程序填空題
請(qǐng)補(bǔ)充main函數(shù),該函數(shù)的功能是:打印出1~1000中滿足個(gè)位數(shù)字的立方等于其本身的數(shù)。本題的結(jié)果為:1 64 125 216 729
請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。
注意:不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
#include <stdio.h>
#include <windows.h>
main()
{
int I,g;
system("cls");
for(I=1;I<1000;I++)
{
/**********found**********/
g=___1___;
/**********found**********/
if(___2___)
printf("%4d",I);
}
}
【答案】
(1)i%10 (2)g*g*g==i?
2.程序修改題
在給定程序中,函數(shù)fun()的功能是:從3個(gè)紅球、5個(gè)白球、6個(gè)黑球中任意取出8個(gè)作為一組進(jìn)行輸出。在每組中,可以沒(méi)有黑球,但必須要有紅球和白球。組合數(shù)作為函數(shù)值返回。正確的組合數(shù)應(yīng)該是15。程序中i的值代表紅球數(shù),j的值代表白球數(shù),k的值代表黑球數(shù)。
請(qǐng)改正程序中的錯(cuò)誤,使其能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
#include <stdio.h>
int fun()
{
int I,j,k,sum=0;
printf("The result :\n");
/**********found**********/
for(i=0;i<=3;i++)
{
for(j=1;j<=5;j++)
{
k=8-i-j;
/**********found**********/
if(k>=1&&k<=6)
{
sum=sum+1;
printf("red:%4d white:%4d
black:%4d\n ",I,j,k);
}
}
}
return sum;
}
main()
{
int sum;
sum=fun();
printf("sum=%4d\n",sum);
}
【答案】
(1)將for(i=0;i<=3;i++) 改為:
for(i=1;i<=3;i++)
(2)將if(k>=1&&k<=6) 改為:
if((k>=1&&k<=6)&&(i!=0)&&(j!=0)||(k==0))
3.程序設(shè)計(jì)題
請(qǐng)編寫(xiě)函數(shù)fun(),其功能是:將s所指字符串中下標(biāo)為偶數(shù)的字符刪除,串中剩余字符形成的新串放在t所指數(shù)組中。
例如,當(dāng)s所指字符串中的內(nèi)容為ABCDEFGHI JK,則在t所指數(shù)組中的內(nèi)容應(yīng)是BDFHJ。
注意:部分源程序已給出。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。
#include <conio.h>
#include <stdio.h>
#include <string.h>
#include <windows.h>
void fun(char *s,char t[])
{
?
}
main()
{
char s[100],t[100];
system("cls");
printf("Please enter string S: ");
scanf("%s",s);
fun(s,t);
printf("The result is:%s\n ",t);
}
【答案】
void fun(char *s,char t[])
{
int i,j=0,k=strlen(s);
for(i=1;i<k;i=i+2)
t[j++]=s[i];
t[j]='\0';
}
1.程序填空題
請(qǐng)補(bǔ)充main函數(shù),該函數(shù)的功能是:從鍵盤(pán)輸入一個(gè)字符串及一個(gè)指定字符,然后把這個(gè)字符及其后面的所有字符全部刪除。結(jié)果仍然保存在原串中。
例如,輸入“abcdef”,指定字符為“e”,則輸出“abcd”。
請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。
注意:不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
#include <stdio.h>
#include <windows.h>
#define N 80
main()
{
int i=0;
char str[N];
char ch;
system("cls");
printf("Input a string:\n");
gets(str);
printf("Input a charator;\n");
scanf("%c",&ch);
while(str[i]!='\0')
{
if(str[i]==ch)
/**********found**********/
___1___;
/**********found**********/
___2___;
}
/**********found**********/
str[i]=___3___;
printf("\n***display string***\n");
puts(str);
}
【答案】
(1)break; (2)i++ (3)‘\0’?
2.程序修改題
下列給定程序中,函數(shù)fun的功能是:從整數(shù)1到50之間,選出能被3整除且有一位上的數(shù)是5的數(shù),并把這些數(shù)放在b所指的數(shù)組中,這些數(shù)的個(gè)數(shù)作為函數(shù)值返回。規(guī)定,函數(shù)中a1放個(gè)位數(shù),a2放十位數(shù)。
請(qǐng)改正程序中的錯(cuò)誤,使其能得到正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不能增行或刪行,也不得更改程序的結(jié)構(gòu)。
#include <stdio.h>
/********found********/
int fun(int *b);
{
int j,a1,a2,i=0;
/*******found*********/
for(j=10;j<=50;j++)
{
a2=j/10;
a1=j-a2*10;
if((j%3==0 && a2==5) || (j%3==0 && a1==5))
{
b[i]=j;
i++;
}
}
/*******found********/
return j;
}
main()
{
int a[50],I,n;
n=fun(a);
printf("The result is:\n");
for(i=0;i<n;i++)
printf("%4d",a[i]);
printf("\n");
}
【答案】
(1)將fun(int *b);改為:int fun(int *b)
(2)將for(j=10;j<=50;j++)改為:
for(j=1;j<=50;j++)
(3)將return j;改為:return i;
3.程序設(shè)計(jì)題
編寫(xiě)函數(shù)fun(),它的功能是計(jì)算并輸出下列級(jí)數(shù)的和:
S=1/(1×2)+1/(2×3)+…+1/(n×(n+1))例如,當(dāng)n=10時(shí),函數(shù)值為0.909091。
注意:部分源程序已給出。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。
#include <conio.h>
#include <stdio.h>
#include <windows.h>
double fun(int n)
{
?
}
main()
{
system("cls");
printf("%f\n",fun(10));
}
【答案】
double fun(int n)
{
int i;
double s=0.0;
for(i=1;i<=n;i++)
s=s+1.0/(i*(i+1));
return s;
}
1.程序填空題
請(qǐng)補(bǔ)充main函數(shù),該函數(shù)的功能是:輸出方程組“A+B=56,A+2B=72”的一組正整數(shù)解。本題的結(jié)果是:A=40,B=16。
請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。
注意:不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
#include <stdio.h>
main()
{
int I,j;
system("cls");
for(i=0;i<100;i++)
for(j=0;j<100;j++)
/**********found**********/
if(___1___)
/**********found**********/
printf("A=%2d,B=%2d",___2___);
}
【答案】
(1)i+j==56&&i+2*j==72 (2)i,j
2.程序修改題
在給定程序中,函數(shù)fun()的功能是,用下面的式子求π的近似值,直到最后一項(xiàng)的絕對(duì)值小于指定的數(shù)(參數(shù)num)為止:
π/4≈1-1/3+1/5-1/7+…
例如,程序運(yùn)行后,輸入0.0001,則程序輸出3.1414。
請(qǐng)改正程序中的錯(cuò)誤,使其能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
#include <math.h>
#include <stdio.h>
#include <windows.h>
float fun(float num)
{
int s;
float n,t,pi;
t=1;pi=0;n=1;s=1;
/**********found**********/
while(t>=num)
{
pi=pi+t;
n=n+2;
s=-s;
/**********found**********/
t=s%n;
}
pi=pi*4;
return pi;
}
Chapter_6
main()
{
float n1,n2;
system("cls");
printf("Enter a float number: ");
scanf("%f",&n1);
n2=fun(n1);
printf("%6.4f\n",n2);
}
【答案】
(1)將while(t>=num)改為:
while(fabs(t)>=num)
(2)將t=s%n; 改為:t=s/n;?
3.程序設(shè)計(jì)題
假定輸入的字符串中只包含字母和*號(hào)。請(qǐng)編寫(xiě)函數(shù)fun(),它的功能是:刪除字符串中所有的*號(hào)。在編寫(xiě)函數(shù)時(shí),不得使用C語(yǔ)言中提供的字符串函數(shù)。
例如,若字符串中的內(nèi)容為****A*BC*DEF*G*** ****,刪除后,字符串中的內(nèi)容則應(yīng)當(dāng)是ABCDEFG。
注意:部分源程序已給出。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。
#include <conio.h>
#include <stdio.h>
void fun(char *a)
{
?
}
main()
{
char s[81];
printf("Enter a string:\n");
gets(s);
fun(s);
printf("The string after deleted:\n");
puts(s);
}
【答案】
void fun(char *a)
{
int i,j=0;
for(i=0;a[i]!='\0';i++)
if(a[i]!='*')
a[j++]=a[i];
a[j]='\0';
}
1.程序填空題
請(qǐng)補(bǔ)充函數(shù)fun(),該函數(shù)的功能是把數(shù)組aa中的奇數(shù)元素按原來(lái)的先后順序放在原數(shù)組后面。
例如,輸入“33、67、42、58、25、76、85、16、41、56”,輸出結(jié)果“42、58、76、16、56、33、67、25、85、41”。
請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。
注意:不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
#include <stdio.h>
#include <windows.h>
#define N 10
void fun(int aa[])
{
int I,j=0,k=0;
int bb[N];
for(i=0;i<N;i++)
{
/**********found**********/
if(___1___)
bb[k++]=aa[i];
else
aa[j++]=aa[i];
}
/**********found**********/
for(i=0;i<k;___2___)
aa[j]=bb[i];
}
main()
{
int I;
int aa[N]={33,67,42,58,25,76,85,16,41,56};
system("cls");
printf("\n***original list***\n");
for(i=0;i<N;i++)
printf("%4d",aa[i]);
fun(aa);
printf("\n***new list***\n");
for(i=0;i<N;i++)
printf("%4d",aa[i]);
}
【答案】
(1)aa[i]%2!=0或aa[i]%2==1 (2)i++,j++?
2.程序修改題
給定程序中,函數(shù)fun()的功能是:求S的值。設(shè)
S=(22/(1*3))*(42/(3*5))*(62/(5*7))*…*(2k)2/
((2k-1)*(2k+1))
例如,當(dāng)k為10時(shí),函數(shù)的值應(yīng)為1.533852。
請(qǐng)改正程序中的錯(cuò)誤,使其能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
#include <conio.h>
#include <stdio.h>
#include <math.h>
#include <windows.h>
/**********found**********/
fun(int k)
{
int n; float s,w,p,q;
n=1;
s=1.0;
while(n<=k)
{
w=2.0*n;
p=w-1.0;
q=w+1.0;
s=s*w*w/p/q;
n++;
}
/**********found**********/
return s
}
main()
{
【答案】
(1)將 fun(int k) 改為:double fun(int k)
(2)將 return s 改為:return s ;?
3.程序設(shè)計(jì)題
請(qǐng)編寫(xiě)函數(shù)fun,其功能是:計(jì)算并輸出給定10個(gè)數(shù)的方差:
例如,給定的10個(gè)數(shù)為75.0、66.0、73.0、84.0、57.0、67.0、45.0、92.0、44.0、58.0,則輸出為F=14.982990。
注意:部分源程序已給出。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。
#include <stdio.h>
#include <math.h>
double fun(double y[10])
{
?
}
main()
{
double f,y[10]={75.0,66.0,73.0,84.0, 57.0,67.0,45.0,92.0,44.0,58.0};
int I;
FILE *out;
printf("\nThe original data is :\n");
for(i=0;i<10;i++)
printf("%6.1f",y[i]);
printf("\n\n");
f=fun(y);
printf("f=%f\n\n",f);
out=fopen ("outfile.dat","w");
fprintf(out,"%f",f);
fclose (out);
}
【答案】
int i,j;
double f=0.0,f1=0.0;
for(i=0;i<10;i++)
f1+=y[i];
f1/=10;
for(j=0;j<10;j++)
f+=(y[j]-f1)*(y[j]-f1);
f/=10;
f=pow(f,0.5);
return f;
1.程序填空題
請(qǐng)補(bǔ)充函數(shù)fun(),該函數(shù)的功能是:返回字符數(shù)組中指定字符的個(gè)數(shù),指定字符從鍵盤(pán)輸入。
請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。
注意:不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
#include <stdio.h>
#include <windows.h>
#define N 80
int fun(char s[],char ch)
{
int i=0,n=0;
/**********found**********/
while(___1___)
{
/**********found**********/
if(___2___)
n++;
i++;
}
/**********found**********/
___3___;
}
main()
{
int n;
char str[N], ch;
system("cls");
printf("Input a string:\n");
gets(str);
printf("Input a character:\n");
scanf("%c",&ch);
n=fun(str,ch);
printf("\nnumber of %c:%d",ch,n);
}
【答案】
(1)s[i]或s[i]!='\0'
(2)s[i]==ch
(3)return n
2.程序修改題
下列給定程序中函數(shù)fun的功能是:傳入一個(gè)整數(shù)n,計(jì)算如下公式的值:
例如,若輸入5,則應(yīng)輸出-0.283333。
請(qǐng)改正程序中的錯(cuò)誤,使其能得到正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不能增行或刪行,也不得更改程序的結(jié)構(gòu)。
#include <conio.h>
#include <stdio.h>
double fun(int n)
{
double s=1.0;
int I;
/*******found*********/
for(i=2;i<=n;i++)
s=1.0-1/I;
/*******found*******/
return n;
}
main()
{
int n;
printf("\nPlease enter 1 integer numbers:\n");
scanf("%d",&n);
printf("\n\nThe result is %lf\n",
fun(n);
}
【答案】
(1)將s=1.0-1/i;改為:s=s-1.0/i;
或:s-=1.0/i;或:s-=(double)1/i
(2)return s;
3.程序設(shè)計(jì)題
請(qǐng)編寫(xiě)函數(shù)fun(),它的功能是計(jì)算下列級(jí)數(shù)和,和值由函數(shù)值返回:
S=1+x+x2/2!+x3/3!+…+xn/n!
例如,當(dāng)n=10、x=0.3時(shí),函數(shù)值為1.349859。
注意:部分源程序已給出。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。
#include <conio.h>
#include <stdio.h>
#include <math.h>
#include <windows.h>
double fun(double x,int n)
{
?
}
main()
{
system("cls");
printf("%f",fun(0.3,10));
}
【答案】
double fun(double x,int n)
{
int i;
double s=1.0,s1=1.0;
for(i=1; i<=n; i++)
{
s1=s1*i;
s=s+pow(x,i)/s1;
}
return s;
}