改错题 下列给定程序中,函数proc()的功能是:计算并输出下列级数的前N项之和SN,直到SN+1大于q为止,q的值通过形参传入。
SN=2/1+3/2+4/3+(N+1)/N
例如,若q的值为57,则函数值为59.593612。
请修改程序中的错误,使它能得出正确的结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include<stdlib.h>
#include<conio.h>
#include<stdio.h>
//****found****
double proc(double q)
{
int n;double sum,t;
n=2;
sum=2.0;
while(sum<=q)
{
t=sum;
//****found****
sum=sum+(n+1)/n;
n++;
}
//****found****
return sum;
}
void main()
{
system('CLS');
printf('%f\n',proc(60));
}
改错题 下列给定程序中,函数fun的功能是:求两个非零正整数的最大公约数,并作为函数值返回。
例如,若num1和num2分别为49和21,则输出的最大公约数为7;苦num1和num2分别为27和81,则输出的最大公约数为27。
清改正程序中的错误,使它能得出正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdio.h>
int fun(int a,int b)
{int r,t;
if(a<b)
{t=a;b=a;a=t;
/*****************found*****************/
}
r=a%b;
while(r!=0)
{a=b;b=r;r=a%b;}
/*****************found*****************/
return(a);
}
void main()
{int num1,num2,a;
printf('Input num1 num2:');
scanf('%d%d',num1,num2);
printf('num1=%d num2=%d\n\n',num1,num2);
a=fun(num 1,num2);
printf('The maximun common divisor is%d\n\n',a);
}
改错题 给定程序中函数fun的功能是:判断ch中的字符是否与str所指串中的某个字符相同;若相同,什么也不做,若不同,则将其插在串的最后。
请改正程序中的错误,使它能进行正确的操作。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
给定源程序:
#include <stdio.h>
#include <string.h>
/**********found**********/
void fun(char str, char ch)
{ while(*str*str!=ch)str++;
/**********found**********/
if (*sfr==ch)
{str[0]=ch;
/**********found**********/
str[1]='0';
}
}
main()
{ char s[81],c;
printf('\nPlease enter a string:\n'); gets(s);
printf ('\n Please enter the character to search: ');
c=getchar();
fun(s,c);
printf('\nThe result is%s\n', s);
}
改错题
给定程序MODI1.c中函数fun的功能:先从键盘上输入一个3行3列矩阵的各个元素的值,然后输出主对角线元素之和。
请改正函数fun中的错误或在横线处填上适当的内容,并把横线删除,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
给定源程序如下:
#include stdio.h
void fun()
{
int a[3][3],sum;
int i,j;
/*********found**********/
______;
printf('Input data:');
for (i=0;i3;i++)
{ for (j=0;j3;j++)
/*********found**********/
scanf('%d',a[i][j]);
}
for (i=0;i3;i++)
sum=sum+a[i][i];
printf('Sum=%d\n',sum);
}
main()
{
fun();
}
改错题 给定程序中函数fun的功能是:对N名学生的学习成绩,按从高到低的顺序找出前m(m≤10)名学生来,并将这些学生数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
给定源程序:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 10
typedef struct ss
{char num[10];
int s;
}STU;
STU*fun(STU a[],int m)
{STU b[N],*t;
int i,j,k;
/**********found**********/
t=(STU*)calloc(sizeof(STU),m)
for(i=0;i<N;i++)b[i]=a[i];
for(k=0;k<m;k++)
{for(i=j=0;i<N;i++)
if(b[i].s>b[j].s)j=i;
/**********found**********/
t(k)=b(j);
b[j].s=0;
}
return t;
}
void outresuh(STU at],FILE*pf)
{int i;
for(i=0;i<N;i++)
fprintf(pf,'No=%s Mark=%d\n',a[i],num,a[i].s);
fprintf(pf,'\n\n');
}
main()
{STU a[N]={{'A01',81},{'A02',89},{'A03',66},{'A04',87},{'A05',77},{'A06',90},{'A07',79},{'A08',61},{'A09',80},{'A10',71}};
STU*pOrder;
int i,m;
printf('*****The Original data*****\n');
outresult(a,stdout);
printf('\nGive the number of the students who have better score:');
scanf('%d',m);
while(m>10)
{printf('\nGive the number of the students who have better score:');
scanf('%d',m);
}
pOrder=fun(a,m);
printf('*****THE RESULT*****\n');
printf('The top:\n');
for(i=0;i<m;i++)
printf('%s %d\n',pOrder[i].num,pOrder[i].s);
free(pOrder);
}
改错题 给定程序中fun函数的功能是:将p所指字符串中每个单词的最后一个字母改成大写。(这里的“单词”是指由空格隔开的字符串)。
例如,若输入
'I am a student to take the examination.',
则应输出'I aM A studenT tO takE thE examination.'。
请修改程序中的错误之处,使它能得出正确的结果。
注意:不要改动main函数,不得删行,也不得更改程序的结构!
给定源程序:
#include <ctype.h>
#include <stdio.h>
#include <string.h>
void fun(char*p)
{
int k=0;
for(;*p;p++)
if(k)
{
/**********found**********/
if(p==')
{
k=0;
/**********found**********/
*(p-1)=toupper(*(p-1))
}
}
else
k=1;
}
main()
{
char chrstr[64];
int d;
printf('\nPlease enter an English sentence within 63 letters:');
gets(chrstr);
d=strlen(chrstr);
chrstr[d]='';
chrstr[d+1]=0;
printf('\n\nBefore changing:\n%s', chrstr);
fun(chrstr);
printf('\nAfterchanging:\n%s', chrstr);
}
改错题 给定程序中函数fun的功能是:统计字符串中各元音字母(即:A、E、I、O、U)的个数。注意:字母不分大、小写。
例如:若输入:THIs is a boot,则输出应该是:1、0、2、2、0。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
给定源程序:
#include<stdio.h>
void fun(char *s, int num[5])
{ int k, i=5;
for(k=0; k<i; k++)
/**********found**********/
num[i]=0;
for(; *s; s++)
{ i=-1;
/**********found**********/
switch(s)
{ case'a':case'A':{i=0; break;}
case'e':case'E':{i=1; break;}
case'i':case'I':{i=2; break;}
case'o':case'O':{i=3; break;}
case'u':case'U':{i=4; break;}
}
if(i>=0)
num[j]++;
}
}
main()
{ char s1[81]; int num1[5], i;
printf('\nPlease enter a string:'); gets(s1);
fun(s1, num1);
for(i=0; i<5; i++)printf('%d', num1[i]);
printf('\n');
}
改错题给定程序MODI1.c中函数fun的功能:根据整型形参n,计算如下公式的值。例如,若n=10,则应输出0.617977。请改正程序中的语法错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序如下:#includestdio.h/************found************/intfun(intn){floatA=1;inti;/************found************/for(i=2;in;i++)/************found************/A=1/A+1;returnA;}main(){intn;printf('\nPleaseentern:');scanf('%d',n);printf('A%d=%f\n',n,fun(n));}
改错题 给定程序中函数fun的功能是:计算整数n的阶乘。
请改正程序中的错误或在下划线处填上适当的内容,使它能计算出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
给定源程序:
#include <stdio.h>
double fun(int n)
{
double result=1.0;
while (n>1n<170)
/**********found**********/
result*=--n;
/**********found**********/
return ______;
}
main()
{
int n;
printf('Enter an integer:');
scanf('%d',n);
printf('\n\n%d!=%lg\n\n',n,fun(n));
}
改错题下列给定程序中函数fun的功能是:用递归算法求形参a的平方根。求平方根的迭代公式如下:例如,a为2时,平方根值为1.414214。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#include<math.h>#include<stdio.h>/**********found**********/fun(doublea,doublex0){doublex1,y;x1=(x0+a/x0)/2.0;/**********found**********/if(fabs(x1-x0)<0.00001)y=fun(a,x1);elsey=x1;returny;}voidmain(){doublex;printf('Enterx:');scanf('%lf',x);printf('Thesquarerootof%lfis%lf\n',x,fun(x,1,0));}
改错题 给定程序中函数fun的功能是:判断一个整数是否是素数,若是返回1,否则返回0。在main()函数中,若fun返回1输出YES,若fun返回0输出NO!。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数。不得增行或删行,也不得更改程序的结构!
给定源程序:
#include<stdio.h>
int fun(int m)
{ int k=2;
while(k<=m(m%k))
/**********found**********/
k++
/**********found**********/
if(m=k)
return 1;
else return 0;
}
main()
{ int n;
printf('\nPlease enter n:');
scanf('%d', n);
if(fun(n))printf('YES\n');
else printf('NO!\n');
}
改错题 给定程序中函数fun的功能是:判断ch中的字符是否与str所指串中的某个字符相同;若相同,什么也不做,若不同,则将其插在串的最后。
请改正程序中的错误,使它能进行正确的操作。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
给定源程序:
#include <stdio.h>
#include <string.h>
/**********found**********/
void fun(char str, char ch)
{ while(*str*str!=ch)str++;
/**********found**********/
if (*sfr==ch)
{str[0]=ch;
/**********found**********/
str[1]='0';
}
}
main()
{ char s[81],c;
printf('\nPlease enter a string:\n'); gets(s);
printf ('\n Please enter the character to search: ');
c=getchar();
fun(s,c);
printf('\nThe result is%s\n', s);
}
改错题 给定程序中函数fun的功能是:首先把b所指字符串中的字符按逆序存放,然后将a所指字符串中的字符和b所指字符串中的字符,按排列的顺序交叉合并到c所指数组中,过长的剩余字符接在c所指数组的尾部。例如,当a所指字符串中的内容为“abcdefg”,b所指字符串中的内容为“1234”时,c所指数组中的内容应该为“a4b3c2d1efg”;而当a所指字符串中的内容为“1234”,b所指字符串中的内容为“abcdefg”时,c所指数组中的内容应该为“1g2f3e4dcba”。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
给定源程序:
#include<stdio.h>
#include<string.h>
void fun(char *a, char *b, char *c)
{
int i, j; char ch;
i=0; j=strlen(b)-1;
/**********found**********/
while(i>j)
(ch=b[i]; b[i]=b[j]; b[j]=ch;
i++; j--;
}
while(*a||*b){
/**********found**********/
If(*a)
{ *c=*a; c++; a++;}
if(*b)
{ *c=*b; c++; b++;}
}
*c=0;
}
main()
{
char s1[100], s2[100], t[200];
printf('\nEnter s1 string:'); scanf('%s', s1);
printf('\nEnter s2 string:'); scanf('%s', s2);
fun(s1, s2, t);
printf('\nThe result is:%s\n', t);
}
改错题 给定程序中函数fun的功能是:从整数10到55之间,选出能被3整除、且有一位上的数是5的那些数,并把这些数放在b所指的数组中,这些数的个数作为函数值返回。规定,函数中a1放个位数,a2放十位数。
请改正程序中的错误,使它能得出正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
给定源程序:
#include<stdio.h>
int fun(int *b)
{int k,a1,a2,i=0;
for(k=10;k<=55;k++){
/************found************/
a2=k/10;
a1=k-a2*10;
if((k%3==0a2==5)||(k%3==0a1==5))
{b[i]=k;i++;)
}
/************found************/
return k;
}
main()
{int a[100],k,m;
m=fun(a);
printf('The result is:\n');
for(k=0;k<m;k++)printf('%4d',a[k]);
printf('\n');
}
改错题给定程序MODI1.c中函数fun的功能:根据整型形参m的值,计算如下公式的值。例如,m中的值为5,则应输出0.536389。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序如下:#includestdio.hdoublefun(intm){doubley=1.0;inti;/**************found**************/for(i=2;im;i++)/**************found**************/y-=1/(i*i);return(y);}main(){intn=5;printf('\nTheresultis%lf\n',fun(n));}
改错题 下列给定程序中,函数proc()的功能是:用冒泡法对6个字符串按由小到大的顺序进行排序。
请修改程序中的错误,使它能得到正确结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include<string.h>
#include<stdlib.h>
#include<conio.h>
#include<stdio.h>
#define MAX 20
void proc(char*pstr[6])
{
int i,j;
char*p;
for(i=0;i<5;i++)
for(j=i+1;j<6;j++)
//****found****
if(strcmp((pstr+i),(pstr+j))>0)
{
p=*(pstr+i);
*(pstr+i)=*(pstr+j);
//****found****
*(pstr+j)=*p;
}
}
void main()
{
int i;
char *p[6],str[6][MAX];
system('CLS');
for(i=0;i<6;i++)
p[i]=str[i];
printf('\nEnter6 string(1 string at each line):\n');
for(i=0;i<6;i++)
scanf('%s',p[i]);
proc(p);
printf('The strings after sorting:\n');
for(i=0;i<6;i++)
printf('%s\n',p[i]);
}
改错题
数列中,第一项的值为3,后一项都比前一项的值增5;给定程序MODI1.c中函数fun的功能:计算前n(4<n<50)项的累加和;每累加一次把被4除后余2的当前累加值放入数组中,符合此条件的累加值的个数作为函数值返回主函数。
例如,当n的值为20时,该数列为3,8,13,18,23,28,…,93,98。符合此条件的累加值应为42,126,
366,570,1010。
请改正函数fun中指定位置的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
给定源程序如下:
#include stdio.h
#define N 20
int fun(int n,int *a)
{ int i,j,k,sum;
/**************found**************/
sum=j==0;
for(k=3,i=0;in;i++,k+=5)
{ sum=sum+k;
/**************found**************/
if(sum%4=2)
a[j++]=sum;
}
return j;
}
main()
{ int a[N],d,n,i;
printf('\nEnter n (4n=50): ');scanf('%d',n);
d=fun(n,a);
printf('\n\nThe result :\n');
for(i=0; id; i++)printf('%6d',a[i]);printf('\n\n');
}
改错题给定程序中函数fun的功能是:求s的值。例如,当k为10时,函数值应为:1.533852。请改正程序中的错误,使程序能输出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include<stdio.h>#include<math.h>/************found************/voidfun(intk){intn;doubles,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************/returns}main(){printf('%f\n',fun(10));}
改错题 下列给定程序中,函数proc()的功能是:首先把b所指字符串中的字符按逆序存放,然后将str1所指字符串中的字符和str2所指字符串中的字符,按排列的顺序交叉合并到str所指数组中,过长的剩余字符接在str所指数组的尾部。
例如,当str1所指字符串中的内容为“ABCDEFG”,str2所指字符串中的内容为“1234”时,str所指数组中的内容应该为“A483C2D1EFG”;而当str1所指字符串中的内容为“1234”,str2所指字符串中的内容为“ABCEDFG”时,str所指数组中的内容应该为“1G2F3E4DCBA”。
请修改程序中的错误,使它能得出正确的结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include<stdlib.h>
#include<conio.h>
#include<stdio.h>
#include<string.h>
void proc(char *str1,char *str2,char *str)
{
int i,j;char ch;
i=0;j=strlen(str2)-1;
//****found****
while(i>j)
{
ch=str2[i]:str2[i]=str2[j];str2[j]=ch;
i++;j--;
}
while(*str1||*str2)
{
if(*str1){*str=*str1;str++;str1++;}
if(*str2){*str=*str2;str++;str2++;}
}
//****found****
*str=0:
}
void main()
{
char s1[100],s2[100],t[200];
system('CLS');
printf('\nEnter s1 string:');
scanf('%s',s1);
printf('\nEnter s2 string:');
scanf('%s',s2);
proc(s1,s2,t);
printf('\nThe result is:%s\n',t);
}
改错题 给定程序中函数fun的功能是:在字符串的最前端加入n个*号,形成新串,并且覆盖原串。
注意:字符串的长度最长允许为79。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
给定源程序:
#include<stdio.h>
#include<string.h>
void fun(char s[],int n)
{
char a[80],*p;
int i;
/**********found**********/
s=p;
for(i=0;i<n;i++)a[i]='*';
do
{a[i]=*p;
i++;
}
/**********found**********/
while(*p++)
a[i]=0;
strcpy(s,a);
}
main()
{int n; char s[80];
printf('\nEnter a string:');gets(s);
printf('\nThe string\'%s\'\n',s);
printf('\nEnter n(number of*):');
scanf('%d',n);
fun(s,n);
printf('\nThe string after insert:\'%s\'\n',s);
}