改错题 给定程序中fun函数的功能是:将n个无序整数从小到大排序。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
给定源程序:
#include<stdio.h>
#include<stdlib.h>
void fun(int n,int*a)
{int i,j,p,t;
for(j=0;j<n-1;j++)
{p=j;
/**********found**********/
for(i=j+1;i<n-1;i++)
if(a[p]>a[i])
/**********found**********/
t=i;
if(p!=j)
{t=a[j];a[j]=a[p];a[p]=t;}
}
}
void putarr(int n,int*z)
{int i;
for(i=1;i<=n;i++,z++)
{printf('%4d',*z);
if(!(i%10))printf('\n');
}printf('\n');
}
main()
{int aa[20]={9,3,0,4,1,2,5,6,8,10,7},n=11;
printf('\n\nBefore sorting %d numbers:\n',n);
putarr(n,aa);
fun(n,aa);
printf('\nAfter sorting %d numbers:\n',n);
putarr(n,aa);
}
改错题 下列给定的程序中,函数proc()的功能是:用选择法对数组中的n个元素按从大到小的顺序进行排序。
请修改程序中的错误,使它能得出正确的结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include<stdio.h>
#define M 20
void proc(int a[],int n)
{
int i,j,t,P;
for(j=0;j<n-1;j++)
//****found****
{ p=j
for(i=j;i<n;i++)
if(a[i]<a[p])
//****found****
p=j;
t=a[p];a[p]=a[j];a[j]=t;
}
}
void main()
{
int arr[M]={9,6,8,3,-1},i,m=5;
printf('排序前的数据:');
for(i=0;i<m;i++)printf('%d',arr[i]);
printf('\n');
proc(arr,m);
printf('排序后的顺序:');
for(i=0;i<m;i++)printf('%d',arr[i]);
printf('\n');
}
改错题 下列给定程序中函数fun的功能是:用选择法对数组中的n个元素进行升序排列。
请修改程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行和删行,也不得更改程序的结构!
试题程序:
#include <stdio.h>
#define N 20
void fun(int a[],int n)
{
int i,j,t,p;
for(j=0;j>n-1;j++)
{
/********found********/
p=j
for(i=j;i<n;i++)
if(a[i]<a[p])
/********found********/
p=j;
t=a[p];a[p]=a[j];a[j]=t;
}
}
void main()
{
int a[N]={9,6,8,3,-1},i,m=5;
printf('排序前的数据:');
for(i=0;i<m;i++)
printf('%d',a[i]);
printf('\n');
fun(a,m);
printf('排序后的顺序:');
for(i=0;i<m;i++)
printf('%d',a[i]);
printf('\n');
}
改错题 下列给定程序中,函数fun的功能是:求S的值。
S=(22/(1×3))×(42/(3×5))×(62/(5×7))×…×(2k)2/((2k-1)×(2k+1))
例如,当k为10时,函数的值应为1.533852。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdlib.h>
#include<conio.h>
#include<stdio.h>
#include<math.h>
/********found********/
double fun(int k)
{
int n;float s,w,p,q;
n=1;
s=10;
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
}
void main()
{system('CLS');
printf('%f\n',fun(10));
}
改错题
给定程序MODI1.c中函数fun的功能:交换主函数中两个变量的值。例如,变量a中的值原为8,b中的值原为3;调用函数后,a中的值为3,b中的值为8。
请改正程序中的错误,使它能计算出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
给定源程序如下:
#include stdio.h
/*********found**********/
void 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);
}
改错题 下列给定程序中函数fun的功能是:用选择法对数组中的n个元素进行升序排列。
请修改程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行和删行,也不得更改程序的结构!
试题程序:
#include <stdio.h>
#define N 20
void fun(int a[],int n)
{
int i,j,t,p;
for(j=0;j>n-1;j++)
{
/********found********/
p=j
for(i=j;i<n;i++)
if(a[i]<a[p])
/********found********/
p=j;
t=a[p];a[p]=a[j];a[j]=t;
}
}
void main()
{
int a[N]={9,6,8,3,-1},i,m=5;
printf('排序前的数据:');
for(i=0;i<m;i++)
printf('%d',a[i]);
printf('\n');
fun(a,m);
printf('排序后的顺序:');
for(i=0;i<m;i++)
printf('%d',a[i]);
printf('\n');
}
改错题给定程序中函数fun的功能是:根据以下公式求π值,并作为函数值返回。例如,给指定精度的变量eps输入0.0005时,应当输出Pi=3.140578。请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。给定源程序:#include<math.h>#include<stdio.h>doublefun(doubleeps){doubles,t;intn=1;s=0.0;/************found************/t=0;while(t>eps){s+=t;t=t*n/(2*n+1);n++;}/************found************/return(s);}main(){doublex;printf('\nPleaseenteraprecision:');scanf('%lf',x);printf('\neps=%lf,Pi=%lf\n\n',x,fun(x));}
改错题 给定程序中函数fun的功能是:将m(1≤m≤10)个字符串连接起来,组成一个新串,放入pt所指存储区中。
例如:把3个串:'abc','CD','EF'连接起来,结果是'abcCDEF'。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
给定源程序:
#include <stdio.h>
#include <string.h>
void fun(char str[][10],int m,char *pt)
{
/**********found**********/
Int k,q,i;
for(k=0;k<m;k++)
{ q=strlen(str [k]);
for(i=0;i<q;i++)
/**********found**********/
pt[i]=str[k,i];
pt+=q;
pt[0]=0;
}
}
main()
{ int m,h;
char s[10][10],p[120];
printf('\nPlease enter m:');
scanf('%d',m); gets(s[0]);
printf('\nPlease enter%d string:\n',m);
for(h=0;h<m;h++) gets(s[h]);
fun(s,m,p);
printf('\nThe result is:%s\n',p);
}
改错题给定程序中函数fun的功能是:用下面的公式求π的近似值,直到最后一项的绝对值小于指定的数(参数num)为止:例如,程序运行后,输入0.0001,则程序输出3.1414。请改正程序中的错误,使它能输出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include<math.h>#include<stdio.h>floatfun(floatnum){ints;floatn,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;returnpi;}main(){floatn1,n2;printf('Enterafloatnumber:');scanf('%f',n1);n2=fun(n1);printf('%6.4f\n',n2);}
改错题
给定程序MODI1.c中函数fun的功能:找出100~n(n≤1000)的三位数字相等的所有整数,把这些整数放在s所指数组中,个数作为函数值返回。
请改正函数fun中指定位置的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程程序的结构!
给定源程序如下:
#include stdio.h
#define N 100
int fun(int *s, int n)
{ int i,j,k,a,b,c;
j=0;
for(i=100; in; i++) {
/**************found**************/
k=n;
a=k%10; k/=10;
b=k%10; k/=10;
/**************found**************/
c=k%10
if( a==b a==c ) s[j++]=i;
}
return j;
}
main()
{ int a[N], n, num=0, i;
do
{ printf('\nEnter n( =1000 ) : '); scanf('%d',n); }
while(n 1000);
num = fun( a,n );
printf('\n\nThe result :\n');
for(i=0; inum; i++)printf('%5d',a[i]);
printf('\n\n');
}
改错题
给定程序MODI1.C中函数fun的功能是:输出M行M列整数方阵,然后求两条对角线上元素之和,返回此和数。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
给定源程序:
#include<stdio.h>
#define M 5
/**********found**********/
int fun(int n, int xx[][])
{ int i, j, sum=0;
printf('\nThe %d x %d matrix:\n', M, M);
for(i=0; i<M; i++)
{ for(j=0; j<M; j++)
/**********found**********/
printf('%f', xx[i][j]);
printf('\n');
}
for(i=0; i<n; i++)
sum+=xx[i][i]+xx[i][n-i-1];
return(sum);
}
main()
{ int aa[M][M]={{1, 2, 3, 4, 5}, {4, 3, 2, 1, 0},
{6, 7, 8, 9, 0}, {9, 8, 7, 6, 5}, {3, 4, 5, 6, 7}};
printf('\nThe sum of all elements on 2 diagnals is %d.', fun(M, aa));
}
改错题 下列给定的程序中,fun函数的功能是:将p所指的字符串中每个单词的最后一个字母改成大写(这里的“单词”是指有空格隔开的字符串)。
例如,若输入:“I am a student to take the examination”,
则应输出:“I aM A studenT tO takE thE examinatioN”。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdlib.h>
#include<string.h>
#include<conio.h>
#include<ctype.h>
#include<stdio.h>
void fun(char*p)
{
int k=0;
for(;*p;p++)
if(k)
{
/**********found**********/
if(p=='')
{
k=0;
/**********found**********/
*p=toupper(*(p-1));
}
}
else
k=1;
}
void main()
{
char chrstr[64];
int d;
system('CLS');
printf('\nPlease enter an English sentence within 63 letters:');
gets(chrstr);
d=strlen(chrstr);
chrstr[d]='';
chrstr[d+1]=0;
printf('\nBefore changing:\n%s',chrstr);
fun(chrstr);
printf('\nAfter changing:\n%s',chrstr);
}
改错题 下列给定程序中,函数fun的功能是:先将s所指字符串中的字符按逆序存放到t所指字符串中,然后把s所指串中的字符按正序连接到t所指串之后。
例如,当s所指的字符串为“ABCDE”时,t所指的字符串应为“EDCBAABCDE”。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdlib.h>
#include<conio.h>
#include<stdio.h>
#include<string.h>
void fun(char *s,char *t)
{
/********found********/
int i;
s1=strlen(s);
for(i=0;i<s1;i++)
/********found********/
t[i]=s[s1-i];
for(i=0;i<s1;i++)
t[s1+i]=s[i];
t[2*s1]='\0';
}
main()
{
char s[100],t[100];
system('CLS');
printf('\nPlease enter string s:');
scanf('%s',s);
fun(s,t);
printf('The result is:%s\n',t);
}
改错题 下列给定程序中,函数fun的功能是:将大写字母转换为对应小写字母之后的第5个字母;若小写字母为v~z,则使小写字母的值减21。转换后的小写字母作为函数值返回。例如,若形参是字母A,则转换为小写字母f;形参是字母w,则转换为小写字母b。
请改正函数fun中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdio.h>
#include<ctype.h>
char fun(char c)
{
if(c>='A' c<='Z')
/**********found**********/
c=c-32;
if(c>='a' c<='u')
/**********found**********/
c=c-5;
else if(c>='v' c<='z')
c=c-21;
return c;
}
main()
{
char c1,c2;
printf('\nEnter a letter(A-Z):');
c1=getchar():
if(isupper(c1))
{
c2=fun(c1);
printf('\n k nThe letter %c change to%c\n',c1,c2);
}
else
{
printf('\nEnter(A-Z)!\n');
}
}
改错题 下列给定程序中,函数fun的功能是:判断一个整数是否为素数,若是素数返回1,否则返回0。
在main函数中,若fun返回1输出YES,若fun返回0输出NO。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdlib.h>
#include<conio.h>
#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;
}
void main()
{
int n;
system('CLS');
printf('\nPlease enter n:');
scanf('%d',&n);
if(fun(n))printf('YES\n');
else printf('NO!\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));}
改错题 下列给定程序中,函数fun的功能是:找出100~n(不大于1000)三个位上的数字都相等的所有整数,把这些整数放在s所指的数组中,个数作为函数值返回。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include<stdio.h>
#define N 100
int fun(int*s,int n)
{
int i,j,k,a,b,c;
j=0;
for(i=100;i<n;i++)
{
/**********found**********/
k=n;
a=k%10;
k/=10;
/**********found**********/
b=k/10;
c=k/10;
if(a==b a==c)
s[j++]=i;
}
return j;
}
main()
{
int a[N],n,num=0,i;
do
{
printf('\nEnter n(<=1000):');
scanf('%d',n);
}while(n>1000);
num=fun(a,n);
printf('\n\nThe result:\n');
for(i=0;i<num;i++)
printf('%5d',a[i]);
printf('\n\n');
}
改错题 给定程序中函数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');
}
改错题
给定程序MODI1.c中函数fun的功能:从低位开始取出长整型变量s中偶数位上的数,依次构成一个新数放在t中。高位仍在高位,低位仍在低位。
例如,当s中的数为7654321时,t中的数为642。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
给定源程序如下:
#include stdio.h
/************found************/
void fun (long s, long t)
{ long sl=10;
s /= 10;
*t = s % 10;
/************found************/
while ( s 0)
{ s = s/100;
*t = s%10*sl + *t;
sl = sl * 10;
}
}
main()
{ long s, t;
printf('\nPlease enter s:'); scanf('%ld', s);
fun(s, t);
printf('The result is: %ld\n', t);
}
改错题 下列给定程序中,函数fun的功能是:从低位开始依次取出长整型变量s中偶数位上的数,构成一个新数放在t中。高位仍在高位,低位仍在低位。
例如,当s中的数为7654321时,t中的数为642。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdio.h>
/********found********/
void fun(long s,long t)
(long s1=10;
s/=10;
*t=s%10;
/********found********/
while(s<0)
{s=s/100;
*t=s%10*s1+*t;
s1=s1 *10;
}
}
main()
{long s,t;
printf('\nPlease enter s:');scanf('%ld',&s);
fun(s,&t);
printf('The result is:%ld\n',t);
}
