第 1 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
第 2 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
前 言
在唯C动力网站至200 5年6月8 日开办两个月来,始终以帮助考友顺利通过等级考试为目的。网站得到了许多考友的认可,同时站长和大家一直在为网站办得更好在努力着,所以此时推出了免费的《南开二级
C上机100题》的电子版。因为时间仓促,在录入过程中难免有错误,
诚恳地希望考友指正。谢谢!
特别感谢:Mickey、咖啡的学生、唯C动力QQ群、关心本站的网友们
声 明
《南开二级C上机100题》电子版版权归唯C动力网站站长:一杯咖啡所有。
《南开二级C上机100题》电子版使用权归关心唯C动力网站的网友们所有。
一杯咖啡
2005年 8月 8日第 3 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
第一部分 改错题
1,下列给定程序的功能是:读入一个整数 k(2≤k≤10000),打印它的所有质因子(即所有为素数的因子) 。例如,若输入整数 2310,则应输出:2、3、5、7、11。
请改正程序中的错误,使程序能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <conio.h>
#include <stdio.h>
/**********found***********/
IsPrime(int n);
{int i,m;
m=1;
for ( i=2; i<n; i++)
/**********found***********/
if !(n%i)
{ m=0; break; }
return (m);
}
main()
{ int j,k;
clrscr();
printf("nPlease enter an integer number between 2 and
10000:");scanf("%d",&k);
printf("nnThe prime factor(s) of %d is (are):",k);
for (j=2;j<=k;j++)
if ((!(k%j))&&(IsPrime(j)) printf("n %4d",j);
printf("n");
}
2、下列给定程序中,函数 fun 的功能是:逐个比较 a、b 两个字符串对应位置中的字符,把
ASCII 值大或等于的字符一次存放到 c 数组中,形成一个新的字符串。例如,若 a 中的字符串为 aBCDeFgH,b 中的字符串为:ABcd,则 c 中的字符串为:aBcdeFgh。
请改正程序中的错误,使程序能得出正确的结果。
注意,不要改多 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <studio.h>
#include <string.h>
/**********found***********/
void fun(char *p,char *q,char *c)
/**********found***********/
{int k=1;
第 4 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
/**********found***********/
while(*p!=*q)
/**********found***********/
{if (*p<*q) c[k]=*q;
else c[k]=*p;
if (*p) p++;
if (*q) q++;
k++;
}
}
main()
{char a[10]="aBCDeFgh",b[10]="ABcd",c[80]={'\0'};
fun(a,b,c);
printf("The string a:"); puts(a);
printf("The string b:"); puts (b);
printf("The result:"); puts(c);
}
3、下列给定程序中,函数 fun 的功能是:依次取出字符串中所有数字字符,形成新的字符串,并取代原字符串。
请改正程序中的错误,使程序能得出正确的结果。
注意,不要改多 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序
#include <stdio.h>
#include <conio.h>
void fun (char *s)
{ int i,j;
for (i=0,j=0;s[i]!='\0';i++)
/**********found***********/
if (s[i]>='0' && s[i]<='9')
s[j]=s[i];
/**********found***********/
s[j]="\0";
}
main()
{char item[80];
clrscr();
printf("\nEnter a string:");gets(item);
printf("\n\nThe string is,\%s\n",item);
fun (item);
printf("\n\nThe string of changing is,\%s\n",item);
}
4、下列给定程序中,函数 fun 的功能是:分别铜级字符串中大写字母和小写字母的个数。
第 5 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
例如,给字符串 s 输入:AAaaBBb123CCcccc d,则应该输出结果:upper=6,lower=8。
请改正程序中的错误,使程序能得出正确的结果。
注意,不要改多 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序
#include <conio.h>
#include <stdio.h>
/**********found***********/
void fun (char *s,int a,int b)
{ while(*s)
{ if (*s>='A' && *s<='Z')
/**********found***********/
a++;
if (*s>='a' && *s<='z')
/**********found***********/
b++;
s++;
}
}
main()
{ char s[100];int upper=0,lower=0;
clrscr();
printf("nPlease a string:");gets(s);
fun(s,&upper,&lower);
printf("n upper=%d lower=%dn",upper,lower);
}
5、假定整数数列中的数不重复,并存放在数组中。下列给定程序中,函数 fun 的功能是:
删除数列中值为 x 的元素。n 中存放的是数列中元素的个数。
请改正程序中的错误,使程序能得出正确的结果。
注意,不要改多 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序
#include <stdio.h>
#define N 20
fun (int *a,int n,int x)
{int p=0,i;
a[n]=x;
while (x!=a[p])
p=p+1;
if (p==n) return -1;
else
{for (i=p;i<n;i++)
第 6 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
/**********found***********/
a[i+1]=a[i];
return n-1;
}
}
main()
{int w[N]={-3,0,1,5,7,99,10,15,30,90},x,n,i;
n=10;
printf("The original data:n");
for (i=0;i<n;i++) printf("%5d",w[i]);
printf("nInput x (to delete):");scanf("%d",&x);
printf("Delete:%dn",x);
n=fun(w,n,x);
if (n==-1) printf("***Nor be found!***nn");
else
{printf("The data after deleted:n");
for (i=0,i<n;i++) printf("%5d",w[i]);printf("nn");
}
}
6,下列给定程序中,函数 fun 的功能是,根据整型形参 m 的值,计算如下公式的值。 t=1-1/(2
×2)-1/(3×3)-…-1/(m×m)
例如,若 m中的值为 5,则应输出:0.536389。
请改正程序中的错误,使程序能得出正确的结果。
注意,不要改多 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <conio.h>
#include <stdio.h>
double fun (int m)
{ double y=1.0;
int i;
/**********found***********/
for (i=2;i<m;i++)
/**********found***********/
y-=1/(i*i);
return(y);
}
main ()
{int n=5;
clrscr();
printf("\nRhe result is %1f\n",fun(n));
}
第 7 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
7、下列给定程序中,函数 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;
}
}
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");
}
8、下列给定程序中,函数 fun 的功能是:在字符串 str 中找出 ASCII 码值最大的字符,将其放在第一个位置上;并将该字符前的原字符向后顺序移动。例如,调用 fun 函数之前给字符串输入:ABCDeFGH,调用后字符串中的内容为 eABCDFGH。
请改正程序中的错误,使程序能得出正确的结果。
注意,不要改多 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <stdio.h>
fun(char *p)
{ char max,*q;int i=0;
max=p[i];
while(p[i]!=0)
第 8 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
{ if(max<p[i])
{max=p[i];
/**********found***********/
p=q+i;
}
i++;
}
/**********found***********/
while(q<p)
{*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 agter moving:");puts (str);ptintf("\n\n");
}
9、下列给定程序中,函数 fun 的功能是:从 n 个学生的成绩中统计出低于平均分的学生人数,此人数由函数值返回,平均分存放在形参 aver 所指的存储单元中。例如,若输入 8 名学生的成绩,
80.5 60 72 90.5 98 51.5 88 64
则低于平均分的学生人数为 4(平均分为:75.5625) 。
请改正程序中的错误,使程序能得出正确的结果。
注意,不要改多 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <conio.h>
#include <stdio.h>
#define N 20
int fun (float *s,int n,float *aver)
{float ave,t=0.0;
int count=0,k,i;
for (k=0;k<n;k++)
/**********found***********/
t=s[k];
ave=t/n;
for (i=0;i<n;i++)
第 9 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
if (s[i]<ave) count++;
/**********found***********/
*aver=&ave;
return count;
}
main()
{float s[30],aver;
int m,i;
clrscr();
printf("nPlease enter m:";scanf("%d",&m);
printf("nPlease enter %d mark:n",m);
for (i=0;i<m;i++) scanf("%f",s+i);
printf("nThe number of students:%dn",fun(s,m,&aver));
printf("Ave=%fn",aver);
)
10、下列给定程序中,函数 fun 的功能是:将 s 所指字符串中出现的 t1 所指子串全部替换成 t2 所指子字符串,所形成的新串放在 w 所指的数组中。在此处,要求 t1 和 t2 所指字符串的长度相同。例如,当 s 所指字符产中的内容为 abcdabfab,t1 所指子串中的内容为 ab,
t2 所指子串中的内容为 99 时,结果,在 2 所指的数组中内容应为 99cd99f99。
请改正程序中的错误,使程序能得出正确的结果。
注意,不要改多 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include<conio.h>
#include<stdio.h>
#include<string.h>
int fun (char *s,char *t1,char*t2,char*w)
{
int i; char *p,*r,*a;
strcpy(w,s);
while(*w)
{p=w;r=t1;
/**********found***********/
while(r)
if(*r==*p) {r++;p++}
else break;
if(*r=='')
{a=w;r=t2;
/**********found***********/
while(*r){*a=*r;a++;r++}
第 10 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
w+=strlen(t2);
}
else w++;
}
}
main()
{
char s[100],t1[100],t2[100],w[100];
clrscr();
printf("nPlease enter string S:");scanf("%s",s);
printf("nPlease enter string t1:");scanf("%s",t1);
printf("nPlease enter string t2:");scanf("%s",t2);
if (strlen(t1)==strlen(t2))
{
printf("nThe result is,%sn",w);
}
else printf("Error:strlen(t1)!=strlen(t2)n");
}
11、下列给定的程序中,函数 fun 的功能是,将一个由八进制数字字符组成的字符串转换为与其面值相等的十进制整数。规定属土的字符串最多只能包含 5 位 8 进制数字。例如,若输入
77777,则输出将是 32767。
请改正程序中的错误,使它能得到正确的结果,
注意,不要改动 main 函数,不得增行或删行,也不得更改程序的结构 !
试题程序,
#include<stdio.h>
int fun(char *p)
/**********found**********/
{ int n;
n=*p-‘o’;
p++;
/**********found**********/
while(*p!=0)
{ n=n*7+*p-‘o’;
p++;
}
return n;
}
main()
{ char s[6]; int i; int n;
printf(“Enter a srting (ocaral digits ):”); gets(s);
if(strlen(s)>5){printf(,Error,String too longer !|\n\n” );exit(0);}
for(i=0;s[i];i++)
第 11 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
if(s[i]<’0’)||s[i]>7)
{printf(“Error,%c not is ocatal digits !\n\n”,s[i]);exit(0);}
printf(“the ocaral string:,); puts(s);
n=fun(s);
printf(“\n%s is convered to integer number,%d\n\n”,s,n);
}
12、给定程序中,函数 fun 的功能是:求出在字符串中最后一次出现的子字符串的地址,通过函数值返回,在主函数中输出从此地址开始的字符串;若未找到则函数值为 NULL。例如,
当字符串 s中的内容为:abcdabfabcdx,子串 t 中的内容为:abc 时,输出结果应为:abcdx。
当子串 t 中的内容为:abd 时,输出未找到信息:Notbe found!。
请改正函数 fun 中指定部位的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <stdio.h>
/**********found**********/
char fun( char *s,char *t )
{ char *p,*r,*a;
a=NULL;
/**********found**********/
while( s )
{ p=s; r=t;
while(*r)
/**********found**********/
if( r==p ) r++; p++; }
else break;
if( *r==0 ) a=s;
s++;
}
/**********found**********/
retrun a;
}
main()
{ char s[50]= "abcdabfabcdx",t[50],*p;
printf("The string s,%s\n\n",s );
printf("Enter substring,"); gets(t);
p=fun(s,t);
if(p)printf("\nThe result is,%s\n",p );
else printf("\nNot be found !\n");
}
13、下列程序中,fun 函数的功能是:根据形参 m,计算如下公式的值。
t=1+ 1/2 + 1/3 +? + … + 1/m
例如,若输入 5,则应输出 2.283333。
第 12 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
请改正程序中的语法错误,使程序能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include<conio.h>
#include<stdio.h>
double fun(int m)
{
double t=1.0;
int i;
for(i=2;i<=m;i++)
/**********found***********/
t+=1.0/k;
/**********found***********/
____________;
}
main()
{
int m;
clrscr();
printf(“nPlease enter 1 integer number:”);
scanf(“%d”,&m);
printf(“nThe result is %1fn”,fun(m));
}
14、下列程序中,fun和 funx 函数的功能是,
用二分法求方程 2x×x×x-4x×x+3x-6=0 的一个根,并要求绝对误差不超过 0.001。例如,若给 m输入-100,给 n 输入90,则函数求得的一个根为 2.000。
请改正程序中的语法错误,使程序能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include<stdio.h>
#include<math.h>
double funx(double x)
{
return(2*x*x*x-4*x*x+3*x-6);
}
double fun(double m,double n)
{
/**********found***********/
int r;
r=(m+n)/2;
/**********found***********/
第 13 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
while(fabs(n-m)<0.001)
{if(fun(x)*funx(n)<0 m=r;
else n=r;
r=(m+n)/2;
)
return r;
)
main()
{
double m,n,root;
printf("Enter m n:n");scanf("%1f%1f",&m,&n);
root=fun(m,n);
printf("root=%6.3fn",root);
}
15、下列给定程序中,函数 fun 的功能是:判断字符 ch 是否与 str 所指串中的某个字符相同;若相同,则什么也不做,若不同,则将器插在串的最后。
请改正程序中的错误,使程序能得出正确的结果。
注意,不要改多 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序
#include <conio.h>
#include <stdio.h>
#include <string.h>
/**********found***********/
void fun(char str,char ch)
{ while(*str && *str!=ch) str++;
/**********found***********/
if (*str==ch)
{ str[0]=ch;
/**********found***********/
str[1]='0';
}
}
main()
{char s[81],c;
clrscr();
printf("nPlease enter a string:n");gets(s)
printf("nPlease enter the character to search:");
c=getchar();
fun(s,c);
printf("nThe result is %sn",s);
}
第 14 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
16、下列给定程序中,函数 Creatlink 的功能是:创建带头结点的单项链表,并为各结点数据域赋 0 到m-1 的值。
请改正程序中的错误,使程序能得出正确的结果。
注意,不要改多 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
typedef struct aa
{ int data;
struct aa *next;
}NODE;
NODE *Creatlink(int n,int m)
{NODE *h=Null,*p,*s;
int i;
s=(NODE *)malloc(sizeof(NODE));
/**********found***********/
h=p;
p->next=NULL;
for (i=1;i<=n;i++)
{s=(NODE *)malloc(sizeof(NODE));
/**********found***********/
s->data=rand()%m;
s->next=p->next;
p->next=s;
p=p->next;
}
/**********found***********/
return p;
}
outlink(NODE *h)
{NODE *p;
p=h->next;
printf("nnTHE LIST:nn HEAD");
while(p)
{printf("->%d",p->data);
p=p->next;
}
printf("n");
}
第 15 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
main()
{ NODE *head;
clrscr();
head=Creatlink(8,22);
outlink(head);
}
17、下列给定程序中,函数 fun 的功能是:计算并输出 k 以内最大的 10 个能被 13 或 17 整除的自然数之和。k 的值由主函数传入,若 k 的值为 500,则函数值为 4622。
请改正程序中的错误,使程序能得出正确的结果。
注意,不要改多 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序
#include <conio.h>
#include <stdio.h>
int fun(int k)
{int m=0,mc=0,j;
while ((k>=2)&&(mc<10))
/**********found***********/
{if ((k%13=0)||(k%17=0))
{m=m+k;mc++;}
k--;
}
return m;
/**********found***********/
_____________
main()
{clrscr();
printf("%dn",fun(500));
}
18、下列给定程序中,函数 fun 的功能是:实现两个整数的交换。例如给 a 和 b 分别输入
60和 65,输出为:a=65 b=60
请改正程序中的错误,使程序能得出正确的结果。
注意,不要改多 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序
#include <conio.h>
#include <stdio.h>
/**********found***********/
void fun (int a,b)
{int t;
/**********found***********/
第 16 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
t=b;b=a;a=t;
}
main()
{int a,b;
clrscr();
printf("Enter a,b:");scanf("%d%d",&a,&b);
fun(&a,&b);
printf("a=%d b=%dn",a,b);
}
19、下列给定程序中,函数 fun 的功能是:从低位开始取出长整型变量 s 中偶数位上的数,
一次构成一个新数放在 t 中。例如,当 s 中的数为 7654321时,t 是的数为 642。
请改正程序中的错误,使程序能得出正确的结果。
注意,不要改多 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序
#include <conio.h>
#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;
clrscr();
printf("nPlease enter s:");scanf("%ld",&s);
fun(s,&t);
printf("The result is,%ldn",t);
}
20、N 个有序整数数列已放在一堆数组中,下列给定程序中,函数 fun的功能是:利用折半查找算法找整数 m 再数组中的位置。若找到,则返回其下标值;反之,则返回-1。
折半查找的基本算法是:每次查找前先确定数组中待查的范围:low和 high(low<high),然后把 m 与中间位置(mid)中元素的值进行比较。如果 m 的值大于中间位置元素中的值,则下一次的查找范围放在中间位置之后的元素中;反之,下一次的查找范围落在中间位置之前的元素中。直到 low>high,查找结束。
第 17 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
请改正程序中的错误,使程序能得出正确的结果。
注意,不要改多 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序
#include <stdio.h>
#define N 10
/**********found***********/
void fun(int a[],int m)
{int low=0,high=N-1,mid;
while(low<=high)
{mid=(low+high)/2;
if (m<a[mid])
high=mid-1;
/**********found***********/
else if (m>=a[mid])
low=mid+1;
else return(mid);
}
return(-1);
}
main()
{int i,a[N]={-3,4,7,9,13,45,67,89,100,180},k,m;
printf("a数组中的数据如下:");
for(i=0;i<N;i++) printf("%d",a[i]);
printf("Enter m:");scanf("%d",&m);
k=fun(a,m);
if(k>=0) printf("m=%d,index=%d\n",m,k);
else printf("Not be found!\n");
}
21,给定程序是建立一个带头结点的单向链表,并用随机函数为各结点数据域赋值。 函数 fun
的作用是求出单向链表结点(不包括头结点)数据域中的最大值,并且作为函数值返回。
请改正函数 fun 中指定部位的错误,使它能得出正确的结果。
注意,不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
typedef struct aa
{ int data;
struct aa *next;
} NODE;
fun ( NODE *h )
第 18 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
{ int max=-1;
NODE *p;
/***********found**********/
p=h->next;
//p=h ;
while(p)
{ if(p->data>max )
max=p->data;
/***********found**********/
p=p->next;
//p=h->next ;
}
return max;
}
outresult(int s,FILE *pf)
{ fprintf(pf,"\nThe max in link,%d\n",s);}
NODE *creatlink(int n,int m)
{ NODE *h,*p,*s,*q;
int i,x;
h=p=(NODE *)malloc(sizeof(NODE));h->data=9999;
for(i=1; i<=n; i++)
{ s=(NODE *)malloc(sizeof(NODE));
s->data=rand()%m; s->next=p->next;
p->next=s; p=p->next;
}
p->next=NULL;
return h;
}
outlink(NODE *h,FILE *pf)
{ NODE *p;
p=h->next;
fprintf(pf,"\nTHE LIST,\n\n HEAD ");
while(p)
{ fprintf(pf,"->%d ",p->data); p=p->next; }
fprintf(pf,"\n");
}
main()
{ NODE *head; int m;
clrscr();
head=creatlink(12,100);
outlink(head,stdout);
m=fun(head);
printf("\nTHE RESULT,\n"); outresult(m,stdout);
第 19 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
}
22、下列给定的程序中,函数 fun 的功能是,根据整形参 m,计算如下公式的值,
y=1+1/(2× 2)+1/(3× 3)+1/(4× 4)+……+1/(m× m)
例如,若 m 中的值为 5,则应输出,1.463611
请改正程序中的错误,使它能得到正确的结果,
注意,不要改动 main 函数,不得增行或删行,也不得更改程序的结构 !
试题程序,
#include<conio.h>
#include<stdio.h>
double fun(int m)
{
/***********found**********/
double y =1.0;
int i;
for(i=2;i<m;i++)
/***********found**********/
y+=1 /(i*1);
return(y);
}
main()
{ int n=5;
clrscr();
printf(“\nThe result is %1f\n”,fun(n));
}
23、下列给定的程序中,函数 fun 的功能是,按以下递归公式求函数值。
┏ 10 (n=1)
fun(n)= ┫
┺ fun(n-1)+2 (n>1)
例如,当给 n 输入 5 时,函数值为 18;当 n 输入 3 时,函数值为 14,
请改正程序中的错误,使它能得出正确的结果,
注意,不要改动 main 函数,不得增行或删行,也不得更改程序的结构。
试题程序,
#include <stdio,h>
/***********found**********/
fun(n)
{ int c;
/***********found**********/
if(n=1)
c=10;
第 20 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
else
c=fun(n-1)+2;
return(c),
}
main()
{ int n;
printf(“Enter n ;,); scanf(,%d”,&n);
printf(“The result,%d\n\n”,fun(n));
}
24、下列给定程序中,函数 fun 的功能是:从 s 所指字符串中,找出 t 所指子串的个数作为函数值返回。例如:当 s 所指字符串中的内容为 abcdabfab,t 所指字符串的内容为 ab,则函数返回整数 3。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构。
试题程序,
#include<conio.h>
#include<stdio.h>
#include<string.h>
int fun(char *s,char *t)
{
int n; char *p,*r;
n=0;
while(*s)
{ p=s; r=t;
while(*r)
/***********found**********/
if(r=p) {r++;p++}
else break;
/***********found**********/
if(r==’\0’)
n++;
s++;
}
return n;
}
main()
{
char s[100],t[100],; int m;
clrscr();
printf(“\nPlease enter string S:”); scanf(“%s”,s);
第 21 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
printf(“\nPlease enter substring t,”) scanf(“%s”,t);
m=fun(s,t);
printf(“\nThe result is,m=%d\n”,m);
}
25,给定程序MODI1.C中函数 fun 的功能是,计算n!。 例如,给n输入5,则输出120.000000。
请改正程序中的错误,使程序能输出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
#include <conio.h>
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)) ;
}
26、给定程序 MODI1.C中,fun 函数的功能是:先从键盘上输入一个 3行 3 列矩阵的各个元素的值,然后输出主对角线元素之积。
请改正程序中的错误,或在横线处填上适当的内容并把横线删除,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <stdio.h>
int fun ()
{
int a [3] [3],sum;
int i,j;
/**********found***********/*
_____;
for (i=0;i<3;i++)
第 22 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
{ for (j=0;j<3;j++)
/**********found***********/
scanf (〃%d〃 a [i] [j]);
}
for (i=0; i<3; i++)
sum=sum*a[i] [i];
printf (〃Sum=%dn〃,sum);
}
main ()
{ fun (); }
27、下列给定程序中,函数 fun 的功能是:根据以下公式求π值,并作为函数值返回。例如,
给指定精度的变量 eps输入 0.0005时,应当输出 Pi=3.140578,
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行和删行,也不得更改程序的结构!
试题程序,
#include <conio.h>
#include <math.h>
#include <stdio.h>
double fun(double eps)
{double s,t;
int n=1;
s=0.0;
t=0;
while(t>eps)
{s+=t;
t=t*n/(2*n+1);
n++;
}
return (s);
}
main()
{double x;
scanf("%lf",&x);
printf("\neps=%lf,Pi=%lf\n\n",x,fun(x));
}
28、给定程序 MODI1.C 中函数 fun 的功能是:在字符串的最前端加入 n 个*号,形成新串,
并且覆盖原串。
注意:字符串的长度最长允许为 79。
请改正函数 fun 中指定部位的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
第 23 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
试题程序,
#include <conio.h>
#include <string.h>
#include <stdio.h>
void fun ( char s[],int n )
{
char a[80],*p;
int i;
/**********found***********/
s=p;
for(i=0; i<n;i++)
{ a[i]=*p;
i++;
/**********found***********/
} while(*p);
a[i]=0;
strcpy(s,a);
}
main()
{ int n; char s[80];
clrscr();
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 inster,\"%s\" \n",s);
}
29、下列给定程序中,函数 fun 的功能是:求出两个非零正整数的最大公约数,并作为函数值返回。例如,若给 num1 和num2 分别输入 49 和21,则输出的最大公约数为 7。若给 num1
和 num2 分别输入 27 和 81,则输出的最大公约数为 27。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行和删行,也不得更改程序的结构!
试题程序,
#include <stdio.h>
int fun(int a,int b)
{int r,t;
/***********found**********/
if(a<b)
{t=a;b=a;a=t;}
r=a%b;
while(r!=0)
第 24 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
{a=b;b=r;r=a/b;}
/***********found**********/
return a;
}
main()
{int num1,num2,a;
scanf("%d%d",&num1,&num2);
a=fun(num1,num2);
printf("the maximum common divisor is %d\n\n",a);
}
30、计算正整数 num 的各位上的数字之积。例如,若输入 252,则输出应该是 20,若输入 202,
则输出应该是 0。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行和删行,也不得更改程序的结构!
试题程序,
#include <stdio.h>
#include <conio.h>
long fun(long num)
{
/***********found**********/
long k;
do
{
/***********found**********/
k*=num%10 ;
num\=10;
} while(num) ;
return (k);
}
main( )
{
long n
clrscr() ;
printf("Please enter a number:") ;
scanf("%ld",&n) ;
printf("\n %ld\n ",fun(n)) ;
}
31、下列给定程序中,函数 fun()的作用是:将字符串 tt 中的小写字母都改为对应的大写第 25 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
字母,其他字符不变。例如,若输入“Ab,cD”,则输出“"AB,CD” 。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行和删行,也不得更改程序的结构!
试题程序,
#include <conio.h>
#include <stdio.h>
#include <string.h>
char* fun(char tt[])
{
int i;
/***********found**********/
for(i=0;tt[i];i++)
{
if(('a'<=tt[i])||(tt<[i]<='z'))
/***********found**********/
tt[i]+=32;
}
return(tt);
}
main()
{
int i;
char tt[81];
clrscr();
printf("\nPlease enter a string,");
gets(tt);
printf("\nThe result string is,\n%s",fun(tt));
}
32、下列给定的程序中,函数 fun 的功能是,按顺序给定 s 所指数组中的元素赋予从 2 开始的偶数,然后再按顺序对每五个元素求一个平均值,并将这些值依次存放再 w 所指得数组中。
若 s 所指数组中元素的个数不是 5 的倍数,多余部分忽略不计。例如,s 所指数组有 14 个元素,则只能对前 10 个元素进行处理,不对最后的 4 个元素求平均值。
请改正程序中的错误,使它能得到正确的结果,
注意,不要改动 main 函数,不得增行或删行,也不得更改程序的结构 !
试题程序,
#include<stdio.h>
#define SIZE 20
fun(double *s,double *w)
{ int k,i ; double sum ;
for(k=2,i=0;i<SIZE;i++)
{ s[i]=k; k+=2;
sum=0.0;
第 26 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
for(k=0,i=0; i<SIZE;i++)
/**********found***********/
{ sum+=s[i];
if(i+1%5==0)
{ w[k] =sum/5;sum=0;k++;}
}
return k;
}
main()
{ double a[SIZE],b[SIZE/5];
int i,k;
k=fun(a,b)
printf(“The original data,\n”);
for(i=0;i<SIZE;i++)
{ if(i%5==0) printf(“\n”);
printf(“%4.0f”,a[i]);
}
printf(“\n\n The result,\n”);
for(i=0;i<k;i++) printf(“%6.2f,,b[i]);
printf(“\n\n”);
}
33,给定程序中函数 fun的功能是,将 s 所指字符串中的字母转换为按字母序列的后续字母
(但Z 转换为A,z 转换为a),其它字符不变。
请改正函数 fun 中指定部位的错误,使它能得出正确的结果。
注意,不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <stdio.h>
#include <ctype.h>
#include <conio.h>
void fun (char *s)
{
/**********found***********/
while(*s!='@')
{ if(*s>='A' & *s <= 'Z' || *s >= 'a' && *s<='z')
{ if(*s=='Z') *s='A';
else if(*s=='z') *s='a';
else *s += 1;
}
/**********found***********/
(*s)++;
}
}
第 27 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
main()
{ char s[80];
clrscr();
printf("\n Enter a string with length < 80.,\n\n "); gets(s);
printf("\n The string,\n\n "); puts(s);
fun ( s );
printf ("\n\n The Cords,\n\n "); puts(s);
}
34、给定程序中函数 fun 的功能是:将长整型数中每一位上为奇数的数依次取出,构成一个新数放在 t中。高位仍在高位,低位仍在低位。例如,当 s 中的数为:87653142 时,t 中的数为:7531。请改正程序中的错误,使它能得出正确的结果。
试题程序,
#include <conio.h>
#include <stdio.h>
void fun (long s,long *t)
{ int d;
long sl=1;
/************found************/
t = 0;
while ( s > 0)
{ d = s%10;
/************found************/
if (d%2 = = 0)
{ *t = d * sl + *t;
sl *= 10;
}
s /= 10;
}
}
main()
{ long s,t;
clrscr();
printf("\nPlease enter s:"); scanf("%ld",&s);
fun(s,&t);
printf("The result is,%ld\n",t);
}
35、下列给定程序中,fun 函数的功能是:将其中每个单词的最后一个字母改成大写,然后输出此文本行 (这里的“单词”是指由空格隔开或句号结尾的字符串) 。
例如,若输入 I am a student to tak e the examination.,
则应输出"I aM A st udenT tO takE thE examinatioN."。
请改正程序中的错误,使它能计算出正确的结果。
第 28 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <conio.h>
#include <stdio.h>
#include <ctype.h>
void fun (char*p)
{
/************found************/
int k = 0 ;
for ( ;*p ;p++ )
if ( k )
{if ( p == ' ')
{k = 0 ;
/************found************/
*p = toupper( *( p - 1 ));
}
}
else
k = 1 ;
}
main( )
{
char charchrstr[64] ;
int d;
clrscr() ;
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( "\nAfter changing:\n%s",chrstr );
}
36、给定程序中函数 fun 的功能是:求三个数的最小公倍数。例如,给变量 x1,x2,x3 分别输入 15,11,2,则输出结果为 360。
请改正程序中的错误,使它能计算出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构。
试题程序,
# include <stdio.h>
第 29 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
fun(int x,int y,int z)
{
/***********found**********/
int j,t,n,m;
j=0;
t=j%x;
m=t%y;
n=j%z;
/***********found**********/
while(t!=0||m!=0||n!=0)
{
j=j+1;
t=j%x;
m=t%y;
n=j%z;
}
return j;
}
main()
{
int x1,x2,x3;
printf(“input x1,x2,x3:,);
scanf(“%d%d%d”,&x1,&x2,&x3);
printf(“x1=%d,x2=%d,x3=%d\n”,x1,x2,x3);
j=fun(x1,x2,x3);
printf(“The minimal common multiple is,%d\n”,j);
}
37、给定程序中函数 fun 的功能是:计算 s 所指字符串中含有 t 所指字符串的数目,并作为函数值返回。
请改正函数 fun 中指定部位的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <conio.h>
#include <stdio.h>
#include <string.h>
#define N 80
int fun(char *s,char *t)
{ int n;
char *p,*r;
n=0;
while ( *s )
{ p=s;
第 30 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
/*********found**********/
r=p;
while(*r)
if(*r==*p) { r++; p++; }
else break;
/*********found**********/
if(*r= O)
n++;
s++;
}
return n;
}
main()
{ char a[N],b[N]; int m;
clrscr();
printf(\nPlease enter string a,); gets(a);
printf(\nPlease enter substring b,); gets( b );
m=fun(a,b);
printf(\nThe result is,m = %d\n,m);
}
38、给定程序中,函数 fun 的功能是:通过某种方式实现两个变量值的交换,规定不允许增加任何语句和表达式。 例如变量 a 中的值原为 8,b 中的值原为 3,程序运行后 a 中的值为 3,
b 中的值为8。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <conio.h>
#include <stdio.h>
/**********found***********/
void fun(int *x,int y)
{ int t;
/**********found***********/
t=x; x=y;
retum (y);
}
main()
{ int a=3,b=8;
clrscr();
printf("%d %d \n",a,b);
b=fun(&a,b);
printf("%d b=%d \n",a,b);
}
第 31 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
39、给定程序 MODI1.C 中函数 fun 的功能是:将 s 所指字符串的正序和反序进行连接,形成一个新串放在 t 所指的数组中。
例如,当 s串为"ABCD" 时,则 t 串中的内容应为"ABCDDCBA"。
请改正函数 fun 中的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <conio.h>
#include <stdio.h>
#include <string.h>
/************found************/
void fun (char s,char t)
{
int i,d;
d = strlen(s);
for (i = 0; i<d; i++) t[i] = s[i];
for (i = 0; i<d; i++) t[d+i] = s[d-1-i];
/************found************/
t[2*d-1] = '\0';
}
main()
{
char s[100],t[100];
clrscr();
printf("\nPlease enter string S:"); scanf("%s",s);
fun(s,t);
printf("\nThe result is,%s\n",t);
}
40、下列给定程序中 fun 函数的功能是:将 n 个无序整数从小到大排序。
请改正函数 fun 中的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
fun ( int n,int *a )
{ int i,j,p,t;
for ( j = 0; j
{ p = j;
第 32 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
/************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; }
}
}
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;
clrscr();
printf( "\n\nBefore sorting %d numbers:\n",n ); putarr( n,aa );
fun( n,aa );
printf( "\nAfter sorting %d numbers:\n",n ); putarr( n,aa );
}
41、下列给定程序是建立一个带头节点的单向链表,并用随机函数为各节点赋值。函数 fun
功能将单向链表结点(不包括头结点)数据域为偶数的值累加起来,并且作为函数值返回。
请改正函数 fun 中的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
typedef struct aa
{ int data; struct aa *next; }NODE;
int fun(NODE *h)
{ int sum = 0 ;
NODE *p;
/***********found**********/
p=h;
while(p)
{ if(p->data%2==0)
sum +=p->data;
/***********found**********/
第 33 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
p=h->next;
}
return sum;
}
NODE *creatlink(int n)
{ NODE *h,*p,*s,*q;
int i,x;
h=p=(NODE *)malloc(sizeof(NODE));
for(i=1; i<=n; i++)
{ s=(NODE *)malloc(sizeof(NODE));
s->data=rand()%16;
s->next=p->next;
p->next=s;
p=p->next;
}
p->next=NULL;
return h;
}
outlink(NODE *h,FILE *pf)
{ NODE *p;
p = h->next;
fprintf(pf,"\n\nTHE LIST,\n\n HEAD " );
while(p)
{ fprintf(pf,"->%d ",p->data ); p=p->next; }
fprintf (pf,"\n");
}
outresult(int s,FILE *pf)
{ fprintf(pf,"\nThe sum of even numbers,%d\n",s);}
main()
{ NODE *head; int even;
clrscr();
head=creatlink(12);
head->data=9000;
outlink(head,stdout);
even=fun(head);
printf("\nThe result,\n"); outresult(even,stdout);
}
42、下列给定程序中,函数 fun 的功能是:将字符串 s 中位于奇数位置的字符会 ASCLL 码为偶数的字符放入字符串 t 中(规定第一个字符放在第 0 位中) 。例如:字符串中的数据为
AABBCCDDEEFF,则输出应当使 ABBCDDEFF。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构。
第 34 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
试题程序,
#include <conio.h>
#include <stdio.h>
#include <string.h>
#define N 80
viod fun(char*s,char t[])
{ int i,j=0;
/***********found**********/
for (i=0;i<strlen(s);i++)
if(i%2&&s[i]%2==0)
/***********found**********/
t[j++]=s[i];
t[i]=’\0’;
}
main()
{ char s[N],t[N];
clrscr();
printf(“\nPlease enter string s:”); gets(s);
fun(s,t);
printf(“\nThe result is,%s\n”,t);
}
43、给定程序中函数 fun 的功能是:找出 100 至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; i<N; 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;
}
第 35 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
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; iprintf("\n\n");
}
44、下列给定程序中,函数 fun 的功能是:根据形参 m 的值( 2≤m≤9),在 m 行 m 列的二维数组中存放如下所示的数据,由 main()函数输出。
例如,若输入 2 若输入 4
则输出,则输出,
1 2 1 2 3 4
2 4 2 4 6 8
3 6 9 12
4 8 12 16
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构。
试题程序,
#include<stdio.h>
#include<conio.h>
#define M 10
int a[M][M]={0};
/***********found**********/
fun(int **a,int m)
{ int j,k;
for(j=0;j<m;j++)
/***********found**********/
for(k=0;k<m;k++)
a[j][k]=k*j;
}
main()
{ int i,j,n;
clscr();
printf(“Enter n,”); scanf (“%d”,&n);
fun (a,n);
for(i=0;i<n;i++)
{ for(j=0;j<n;j++)
第 36 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
printf(“%4d”,a[i][j]);
printf ( "\n”) ;
}
}
45、给定程序中函数 fun 的功能是:将字符串 s 中最后一次出现的子字符串 t1 替换成字符串 t2,所形成的新串放在 w 所指的数组中。在此处,要求 t1 和t2 所指字符串的长度相同。
例如,当 s 所指字符串中的内容为"abcdabfabc",t1 中的内容为"ab",t2 中的内容为"99"
时,结果,在 w 所指的数组中的内容应为"abcdabf99c"。
请改正函数 fun 中的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <conio.h>
#include <stdio.h>
#include <string.h>
int fun (char *s,char *t1,char *t2,char *w)
{
int i; char *p,*r,*a;
strcpy( w,s );
/************found************/
while ( w )
{ p = w; r = t1;
while ( *r )
/************found************/
IF ( *r == *p ) { r++; p++; }
else break;
if ( *r == '\0' ) a = w;
w++;
}
r = t2;
while ( *r ){ *a = *r; a++; r++; }
}
main()
{
char s[100],t1[100],t2[100],w[100];
clrscr();
printf("\nPlease enter string S:"); scanf("%s",s);
printf("\nPlease enter substring t1:"); scanf("%s",t1);
printf("\nPlease enter substring t2:"); scanf("%s",t2);
if ( strlen(t1)==strlen(t2) )
{ fun( s,t1,t2,w);
第 37 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
printf("\nThe result is,%s\n",w);
}
else printf("\nError,strlen(t1) != strlen(t2)\n");
}
46、已知一个数列从第 0 项开始的前三项分别为 0、0、1,以后的各项都是其相邻的前三项的和。 下列给定程序中,函数 fun 的功能是,计算并输出该数列的前 n 项的平方根之和 sum,n
的值通过形参传入。例如,当 n=10时,程序的输出结果应为 23.177745。
请更改程序中的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行和删行,也不得更改程序的结构!
试题程序,
#include <conio.h>
#include <stdio.h>
#include <math.h>
/***********found**********/
fun (int n)
{double sum,s0,s1,s2,s;
int k;
sum=0.0;
if(n<=2) sum=0.0;
s0=0.0;s1=0.0;s2=0.0;
for(k=4;k>n;k++)
{s=s0+s1+s2;
sum+=sqrt(s);
s0=s1;s1=s2;s2=s;
}
/***********found**********/
return sum
}
main()
{int n;
scanf("%d",&n);
printf("%lf\n",fun(n));
}
47、下列给定程序中,函数 fun 的功能是:求出数组中最大的数和次最大的数,并把最大数和 a[0]中的数对调、次最大数和 a[1]中的数对调。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构。
试题程序,
#include<conio.h>
#include<stdio.h>
第 38 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
#define N 20
/***********found**********/
int fun (int *a,int n)
{ int i,m,t,k;
for(i=0;i<2;i++)
/***********found**********/
{ m=0;
for (k=i; k<n; k++)
if(a[k]>a[m] ) k=m;
t=a[i];a[i]=a[m];a[m]=t;
}
}
main()
{ int x,b[n]={11,5,12,0,3,6,9,7,10,8},n=10,I;
clrscr() ;
for(i=0;i<n;i++) printf(“%d”,b[i]);
printf(“\n”);
fun(b,n);
for(i=0,i<n;i++) printf(“%d”,b[i]);
printf(“\n”);
}
48、给定程序中函数 fun 的功能是:对 N 名学生的学习成绩,按从高到低的顺序找出前 m(m
≤10)名学生来,并将这些学生数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。
请改正函数 fun 中指定部位的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <stdio.h>
#include <alloc.h>
#include <string.h>
#include <conio.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=calloc(sizeof(STU),m);
第 39 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
for(i=0; ifor(k=0; k{ for(i=j=0; iif(b[i].s > b[j].s) j=i;
/**********found**********/
t[k].num=b[j].num;
t[k].s=b[j].s;
b[j].s=0;
}
return t;
}
outresult(STU a[],FILE *pf)
{ int i;
for(i=0; ifprintf(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;
clrscr();
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; iprintf(" %s %d\n",pOrder[i].num,pOrder[i].s);
free(pOrder);
}
50、给定程序中函数 fun 的功能是:先将在字符串 s 中的字符按逆序存放到 t 串中,然后把
s 中的字符按正序连接到 t 串的后面。例如:当 s 中的字符串为:ABCDE 时,则 t 中的字符串应为:EDCBAABCDE。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <conio.h>
#include <stdio.h>
#include <string.h>
第 40 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
void fun(char*s,char*t)
{
/************found************/
int i;
sl=strlen(s);
for(i=0;i<s1; i++)
/************found************/
t[i]=s[sl-i];
for(i=0;i t[sl+i]=s[i];
t[2*sl]='\0';
}
main()
{chars[100],t[100];
clrscr();
printf(\nPleaseenterstrings:);scanf(%s,s);
fun(s,t);
printf(Theresultis:%s\n,t);
}
51、给定程序中函数 fun 的功能是:将 m(1≤m≤10)个字符串连接起来,组成一个新串,
放入 pt 所指字符串中。例如:把 3个串:"abc","CD","EF"串连起来,结果是 "a bcCDEF"。
请改正程序中的错误,使它能计算出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <conio.h>
#include <stdio.h>
#include <string.h>
int 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
/************found************/
pt[i] = str[k,i] ;
pt += q ;
pt[0] = 0 ;
}
}
main( )
{ int m,h ;
第 41 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
char s[10][10],p[120] ;
clrscr() ;
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) ;
}
52、给定程序中,函数 fun的功能是:给定 n 个实数,输出平均值,并统计在平均值以上(含平均值)的实数的个数。例如,n 的值为 8 时,输入
193.199,195.673,195.757,196.051,196.092,196.596,196.579,196.763,所得平均值为
195.838745;在平均值以上(含平均值)的实数的个数为 5。
请改正函数 fun 中的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <conio.h>
#include <stdio.h>
int fun(float x[],int n)
/**********found**********/
int i;
/**********found**********/
float xn=0.0;
for(i=0;i<n;i++)
/**********found**********/
xn=xn+x[j]/n;
printf("ave=%f\n",xn);
for(i=0;i<n;i++)
/**********found**********/
if(x[i]=>xn)c++;
return c;
}
main()
{ float x[100] = {193.199,195.673,195.757,196.051,196.092,196.596,196.579,
196.763};
clrscr( );
printf("%d\n",fun(x,8));
}
53,下列给定的程序中,函数 fun 的功能是,用递归算法计算斐波拉契级数数列中第 n 项的值。
从第 1 项起,斐波拉契级数序列为 1,1,2,3,5,8,13,21……例如,若给 n 输入 7,该项的斐波拉契级数值为 13。
第 42 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
请改正程序中的错误,使它能得到正确的结果,
注意,不要改动 main 函数,不得增行或删行,也不得更改程序的结构 !
试题程序,
#include<stdio.h>
/**************found**************/
long fun( int g)
{ switch(g);
{ case 0,return 0;
/**************found**************/
case 1; case 2,return 1;
}
rturn (fun(g-1 )+fun(g-2));
}
main()
{ long fib ; int n;
printf(“Input n;,); scanf(“%d”,&n); printf(“n=%d\n”,n);
fib=fun(n);
printf(“fib=%d\n\n”,fib);
}
54、下列给定的程序中,函数 fun 的功能是比较两个字符串,将长的那个字符串的首地址作为函数值返回。
请改正程序中的错误,使它能得到正确的结果,
注意,不要改动 main 函数,不得增行或删行,也不得更改程序的结构 !
试题程序,
#include<conio.h>
#include<stdio.h>
/**************found**************/
double fun(char *s,char *t)
{ int s1=0,t1=0; char *ss,*tt;
ss=s; tt=t;
/**************found**************/
while(*ss)
{ s1++;
(*ss)++;
}
/**************found**************/
while(*tt)
{ t1++;
( *tt) ++;
}
if(t1>s1) return t;
第 43 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
else return s;
}
main()
{ char a[80],b[80],*p,*q; int i ;
cltscr();
printf(“\nEnter a sring,,);gets(a);
printf(“\nEnter a sring again:,); gets(b);
printf(“\n The longer is,\n\n”%s\”\n”,fun(a,b));
}
55,给定程序中函数 fun的功能是,为一个偶数寻找两个素数,这两个素数之和等于该偶数,
并将这两个素数通过形参指针传回主函数。
请改正函数 fun 中指定部位的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <stdio.h>
#include <math.h>
void fun(int a,int *b,int *c)
{ int i,j,d,y;
for(i=3;i<=a/2;i=i+2) {
/**************found**************/
y=0;
for(j=2;j<=sqrt((double)i);j++)
if(i%j==0) y=0;
if(y==1) {
/**************found**************/
d=i-a;
for(j=2;j<=sqrt((double)d);j++)
if(d%j==0) y=0;
if(y==1)
{ *b=i; *c=d; }
}
}
}
main()
{ int a,b,c;
do
{ printf("\nInput a,"); scanf("%d",&a); }
while(a%2);
fun(a,&b,&c);
printf("\n\n%d = %d + %d\n",a,b,c);
}
第 44 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
56、给定程序中 fun 函数的功能是:用冒泡法对 5 个字符串按由小到大的顺序进行排序。
请改正 fun函数中的错误,使它能得出正确的结果。
试题程序,
# include <stdio.h>
# include <conio.h>
# define MAXLINE 20
/***********found**********/
fun(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);
/***********found**********/
*(pstr+i)=pstr+j;
*(pstr+j)=p;
}
}
}
main()
{
int i;
char *pstr[6],str[6][MAXLINE];
cltscr();
for(i=0;i<6;i++)
pstr[i]=str[i];
printf(“\nEnter 6 string (1 string at each line):\n”);
for(i=0;i<6;i++)
scanf(“%s”,pstr[i]);
fun(pstr);
printf(“The strings after sorting,\n”);
for (i=0;i<6;i++)
printf(“%s\n”,pstr[i]);
}
57、给定程序中函数 fun 的功能是:首先把 b 所指字符串中的字符按逆序存放,然后将 a
所指字符串中的字符和 b 所指字符串中的字符,按排列的顺序交叉合并到 c 所指数组中,过长的剩余字符接在 c 所指数组的尾部。 例如,当 a 所指字符串中的内容为"abcdefg",b 所第 45 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
指字符串中的内容为"1234"时,c 所指数组中的内容应该为"a4b3c2d1efg";而当 a 所指字符串中的内容为"1234",b 所指字符串中的内容为" abcdefg"时,c 所指数组中的内容应该
为"1g2f3e4dcba"。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <conio.h>
#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];
clrscr();
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 );
}
58、给定程序中函数 fun 的功能是:先将在字符串 s 中的字符按正序存放到 t 串中,然后把
s 中的字符按逆序连接到 t 串的后面。例如:当 s中的字符串为:"ABCDE"时,
则 t 中的字符串应为:"ABCDEEDCBA"。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序
的结构!
第 46 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
试题程序,
#include <conio.h>
#include <stdio.h>
#include <string.h>
void fun (char*s,char*t)
{ int i,sl;
sl = strlen(s);
/************found************/
for( i=0; i <= s1; i ++)
t = s;
for (i=0; i < sl; i++)
t[sl+i] = s[sl-i-1];
/************found************/
t[sl] = '\0';
}
main()
{char s[100],t[100];
clrscr();
printf("\nPlease enter string s:"); scanf("%s",s);
fun(s,t);
printf("The result is,%s\n",t);
}
59、给定程序中函数 fun 的功能是:统计字符串中各元音字母(即:A、E、I、O、U)的个数。注意:字母不分大、小写。例如:若输入:THIs is a boot,则输出应该是:1、0、2、
2、0。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <conio.h>
#include <stdio.h>
fun ( char *s,int num[5] )
{ int k,i=5;
/**********found**********/
for ( k = 0; k<I;k++);
num[i]=0;
for (; *s; s++)
{ i = -1;
/**********found**********/
switch ( s )
{ case 'a',case 'A',{i=0; break;}
第 47 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
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[i]++;
}
}
main( )
{ char s1[81]; int num1[5],i;
clrscr();
printf( "\nPlease enter a string," ); gets( s1 );
fun ( s1,num1 );
for ( i=0; i < 5; i++ ) printf ("%d ",num1[i]); printf ("\n");
}
60、下列程序中,函数 fun 的功能是:找出一个大于给定整数 m 且紧随m 的素数,并作为函数值返回。
请改正程序中的错误,使它能得出正确结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <conio.h>
#include <stdio.h>
int fun(int m)
{ int i,k;
for (i=m+1;;i++) {
for (k=2;k< i,k++)
/************found************/
if (i%k!=0)
break;
/************found************/
if (k< i) return(i);
}
}
main()
{int n;
clrscr();
printf("\nPlease enter n:");
scanf("%d",&n);
printf("%d\n",fun(n));
}
第 48 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
61、给定程序 MODI1.C中函数 fun 的功能是:根据整型形参 m,计算如下公式的值。
1 1 1 1
y = ------- + --------- + --------- + …… + -------
100*100 200*200 300*300 m*m
例如,若 m = 2000,则应输出,0.000160。
请改正程序中的语法错误,使它能计算出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <conio.h>
#include <stdio.h>
/************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 ;
clrscr( ) ;
printf( "\nThe result is %lf\n",fun ( n ) ) ;
}
62、给定程序中函数 fun 的功能是:计算并输出 high 以内最大的 10 个素数之和。high 由主函数传给 fun 函数。若high 的值为100,则函数值为 732。
请修改函数 fun 中的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序结构!
试题程序,
#include <conio.h>
#include <stdio.h>
#include <math.h>
int fun( int high )
{ int sum = 0,n=0,j,yes;
/************found************/
while ((high >= 2) && (n < 10)
{ yes = 1;
第 49 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
for (j=2; j<=high/2; j++ )
/************found************/
if (high % j ==0 ){yes=0; break }
if (yes) { sum +=high; n++; }
high--;
}
return sum ;
}
main ( )
{ clrscr( );
printf("%d\n",fun (100));
}
63、将字符串 a 中的所有字符复制到字符串 b中,要求每复制三个字符之后插入一个空格,
例如:在调用 fun 函数之前给字符串 a 输入:ABCDEFGHIJK 调用函数之后,字符串 b 中
的内容则为:ABC DEF GHI JK
请改正程序中的错误,使它能计算出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include<stdio.h>
void fun(char *p,char *b)
{int i,k=0;
/***********found**********/
while(*p)
{i=1;
/***********found**********/
while(i<3||*p)
/***********found**********/
{b[k]=*p;
k++;p++;i++;
}
if(*p)
{
b[k++]=' ';
}
}
b[k]='\0';
}
main()
{ char a[80],b[80];
printf("Enter a string,");gets (a);
printf("The original string:")prts(a);
第 50 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
fun(a,b);
printf("\n The string after insert space,");puts(b);printf("\n\n");
}
64,给定程序中函数 fun的功能是,首先将大写字母转换为对应小写字母; 若小写字母为 a~
u,则将其转换为其后的第 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\nThe letter \'%c\' change to \'%c\'\n",c1,c2);
}
else printf("\nEnter (A-Z)!\n");
}
65、给定程序中函数 fun 的功能是:从低位开始取出长整型变量 s 中奇数位上的数,依次构成一个新数放在 t 中。例如,当 s中的数为:7654321 时,t 中的数为:7531。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <conio.h>
#include <stdio.h>
/************found************/
第 51 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
void fun (long s,long t)
{ long sl=10;
*t = s % 10;
while ( s > 0)
{ s = s/100;
*t = s%10 * sl + *t;
/************found************/
sl = sl*100;
}
}
main()
{ long s,t;
clrscr();
printf("\nPlease enter s:"); scanf("%ld",&s);
fun(s,&t);
printf("The result is,%ld\n",t);
}
66、给定程序中函数 fun 的功能是:求以下分数序列的前 n项之和,
请修改函数fun 中的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序结构!
试题程序,
#include <conio.h>
#include <stdio.h>
/**************found**************/
fun (int n )
{ int a = 2,b = 1,c,k ;
double s=0.0 ;
for ( k = 1; k <= n; k++ )
{ s = s + 1.0 * a / b ;
/**************found**************/
c = a; a += b; b += c;
}
return(s) ;
}
main( )
{ int n = 5 ;
clrscr( ) ;
第 52 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
printf( "\nThe value of function is,%lf\n",fun ( n ) ) ;
}
67、给定程序中函数 fun 的功能是:应用递归算法求某数 a的平方根,请填空。求平方根的迭代公式如下,
)
0
0(
2
1
1
x
a
xx +=
例如,2 的平方根值为 1.414214
请改正程序中的错误,使它能计算出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <stdio.h>
#include <math.h>
/***********found**********/
fun(double a,double x0)
{
double x1,y;
x1=(x0+a/x0)/2.0;
/***********found**********/
if(fabs(x1-x0)>0.00001)
y=fun(a,x1);
else y=x1;
return y;
}
main()
{
double x;
printf(“Enter x:”); scanf(“%lf”,&x);
printf(“The square root of %lf is %lf\n”,x,fun(x,1.0));
}
68、给定程序中函数 fun 的功能是:根据输入的三个边长(整型值),判断能否构成三角形,
构成的是等边三角形,还是等腰三角形。若能构成等边三角形函数返回 3,若能构成等腰三角形函数返回 2,若能构成一般三角形函数返回 1,若不能构成三角形函数返回 0。
请改正函数 fun 中指定部位的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <math.h>
int fun(int a,int b,int c)
{ if(a+b>c && b+c>a && a+c>b) {
if(a==b && b==c)
第 53 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
/**************found**************/
return 1;
else if(a==b||b==c||a==c)
return 2;
/**************found**************/
else return 3;
}
else return 0;
}
main()
{ int a,b,c,shape;
printf("\nInput a,b,c,"); scanf("%d%d%d",&a,&b,&c);
printf("\na=%d,b=%d,c=%d\n",a,b,c);
shape =fun(a,b,c);
printf("\n\nThe shape,%d\n",shape);
}
69,下列给定程序的功能是,读入一个英文文本行,将其中每个单词的第一个字母改成大写,
然后输出此文本行,(这里的“单词”是由空格的隔开的字符串) 。例,若输入 I am a student
to take the examination,则输出 I Am A Student To Take The Examina tion,
请改正程序中的错误,使它能计算出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <ctype.h>
#include <string.h>
#include <stdio.h>
/***********found**********/
upfst (char p)
{int k=0;
for (;*p;p++)
if (k)
{if (*p==' ') k=0;}
else if (*p!=' ')
{ k=1; *p=toupper(*p);}
}
main()
{char chrstr[81];
clrscr();
gets(chrstr);
printf("\n\nbefore changing:\n %s",chrstr);
upfst(chrstr);
printf("%s\n",chrstr);
}
第 54 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
70、下列给定程序中,函数 fun 的功能是:从整数 1 到 55 之间,选出能被 3 整除,且有一位上的数是 5 的那些数,并把这些数放在 b 所指的数组中,这些数的个数作为函数值返回。
规定:函数中 a1 放个位数,a2 放十位数。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构。
试题程序,
#include<stdio.h>
/***********found**********/
fun(int *b)
{ int k,a1,a2,i=0;
/***********found**********/
for(k=10;k<=55;k++)
a2=k/10;
a1=k-a2*10;
if((k%3==0&&a2==5)||( k%3==0&&a1==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++) printf(“%4d”,a[k]); printf(“\n”);
}
71、下列程序中,函数 fun 的功能是:求 k!(k<13),所求阶乘的值作为函数值返回。例如:
若 k=10,则应输出:3628800。
请改正程序中的错误,使它能计算出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <conio.h>
#include <stdio.h>
long fun(int k)
{
/************found************/
if k>0
return (k*fun(k-1));
/************found************/
else if (k=0)
第 55 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
return 1L;
}
main()
{int k=10;
clrscr();
printf("%d!=%ld\n",k,fun(k));
}
72、给定程序中函数 fun 的功能是:统计子字符串 substr在字符串 str 中出现的次数。例如,若字符串为 aaas lkaaas,子字符串为 as,则应输出 2。
请改正程序中的错误,使它能计算出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <stdio.h>
fun (char *str,char *substr)
{ int i,j,k,num=0;
/************found************/
for(i = 0,str[i],i++)
for(j=i,k=0;substr[k]==str[j];k++,j++)
/************found************/
If(substr[k+1]=='\0')
{ num++;
break;
}
return num;
}
main()
{
char str[80],substr[80];
printf("Input a string:") ;
gets(str);
printf("Input a substring:") ;
gets(substr);
printf("%d\n",fun(str,substr));
}
73、给定程序中 fun 函数的功能是,传入一个整数 m,计算如下公式的值。
1 1 1
t = 1 - ----- - ----- - …… - -----
2 3 m
例如,若输入 5,则应输出 -0.283333。
第 56 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
请改正函数 fun 中的错误或在横线处填上适当的内容并把横线删除,使它能计算出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <conio.h>
#include <stdio.h>
double fun( int m )
{
double t = 1.0;
int i;
for( i = 2; i <= m; i++ )
/**********found**********/
t = 1.0-1 /i;
/**********found**********/
______;
}
main()
{
int m ;
clrscr();
printf( "\nPlease enter 1 integer numbers:\n" );
scanf( "%d",&m);
printf( "\n\nThe result is %lf\n",fun( m ) );
}
74、下列程序中,函数 fun 的功能是:利用插入排序法对字符串中的字符按从小到大的顺序进行排序。插入法的基本算法是:先对字符串中的头两个元素进行排序。然后把第三个字符插入到前两个字符中,插入后前三个字符依然有序;再把第四个字符插入到前三个字符中,……。待排序的字符串已在主函数已在主函数中赋予。
请改正程序中的错误,使它能得出正确结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#define N 80
#include "stdio.h"
#include "string.h"
void insert(char *aa)
{int i,j,n; char ch;
/************found************/
n=stlen(aa);
for(i=1;i<n;i++)
第 57 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
/************found************/
{c=aa[i];
j=i-1;
while ((j>=0)&&(ch { aa[j+1]=aa[j];
j--;
}
aa[j+1]=ch;
}
}
main()
{ char a[N]="QWERTYUIOPASDFGHJKLMNBVCXZ";
int i;
printf("The original string,%s\n",a);
insert(a);
printf("The string after sorting:%s\n\n",a);
}
75、给定程序中函数 fun 的功能是:输出 M 行M列整数方阵,然后求两条对角线上各元素之和,返回此和数。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <conio.h>
#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( "%4f",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},
第 58 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
{6,7,8,9,0},{9,8,7,6,5},{3,4,5,6,7}};
clrscr();
printf ( "\nThe sum of all elements on 2 diagnals is %d.",fun( M,aa ));
}
76、给定程序中函数 fun 的功能是:将长整型数中每一位上为偶数的数依次取出,构成一个新数放在 t中。高位仍在高位,低位仍在低位。
例如,当 s中的数为:87653142 时,t 中的数为:8642。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <conio.h>
#include <stdio.h>
void fun (long s,long *t)
{ int d;
long sl=1;
*t = 0;
while ( s > 0)
{ d = s%10;
/************found************/
if (d%2=0)
{ *t=d* sl+ *t;
sl *= 10;
}
/************found************/
s \= 10;
}
}
main()
{ long s,t;
clrscr();
printf("\nPlease enter s:"); scanf("%ld",&s);
fun(s,&t);
printf("The result is,%ld\n",t);
}
77、给定程序中函数 fun 的功能是:将字符串中的内容按 逆序输出,但不改变字符串中的内容。 例如,若字符串为 abcd,则应输出:dcba。
请改正程序中的错误,使它能计算出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序 的结构!
试题程序,
#include <stdio.h>
第 59 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
/************found************/
fun (char a)
{ if ( *a )
{ fun(a+1) ;
/************found************/
printf("%c" *a) ;
}
}
main( )
{ char s[10]="abcd";
printf("处理前字符串=%s\n 处理后字符串=",s);
fun(s); printf("\n") ;
}
78、给定程序中函数 fun 的功能是判断一个整数 m 是否是素数,若是返回 1,否则返回 0。
在 main()函数中,若 fun 返回1 输出 YES 并打印该素数,若 fun 返回0 输出NO!
请改正程序中的错误,使它能计算出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序 的结构!
试题程序,
#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;
}
main( )
{ int n;
clrscr( );
printf( "\nPlease enter n," ); scanf( "%d",&n );
if ( fun ( n ) ) printf( "YES\n" );
else printf( "NO!\n" );
}
79、给定程序中函数 fun 的功能是:删除字符串中的所有空白字符。输入字符串时,用’#’
第 60 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
结束输入。
注意:不改动 main 函数,不得增行或删行,也不得更改程序的结构。
请改正程序中的错误,使它能计算出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <conio.h>
#include <stdio.h>
#include <ctype.h>
fun(char *p)
{
int i,t;
char c[80];
for(i=0,t=0;p[i];i++)
/***********found**********/
if(!isspace(*(p+i)))
c[t++]=p[i];
c[t]=”\0”;
strcpy(p,C) ;
}
main()
{
char c,s[80];
int i=0;
printf(“input a string:,);
c=getchar();
while(c!=‘#’)
{s[i]=c;
i++;
c=getchar();
}
s[i]=‘\0’ ;
fun(s);
puts(s);
}
80、给定程序中函数 fun 的功能是:求出以下分数序列的前 n 项之和。和值通过函数值返回 main 函数。
2 3 5 8 13 21
┄┄,┄┄,┄┄,┄┄,┄┄,┄┄,……
1 2 3 5 8 13
例如,若 n = 5,则应输出:8.391667。
请改正程序中的错误,使它能计算出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
第 61 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
试题程序,
#include <conio.h>
#include <stdio.h>
/************found************/
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;
clrscr( );
printf( "\nThe value of function is,%lf\n",fun ( n ) );
}
81、给定程序中函数 fun 的功能是:根据整型形参 n,计算如下公式的值。
1 1 1
A[1]=1,A[2]=---------,A[3]=---------,…,A[n]=----------
1 + A[1] 1 + A[2] 1 + A[n-1]
例如,若 n=10,则应输出,0.617977。
请改正程序中的语法错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <conio.h>
#include <stdio.h>
/************found************/
int fun ( int n )
{ float A=1; int i;
/************found************/
for (i=2; i A = 1.0/(1+A);
return A ;
}
main( )
{ int n ;
clrscr( ) ;
第 62 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
printf("\nPlease enter n,") ;
scanf("%d",&n ) ;
printf("A%d=%f\n",n,fun(n) ) ;
}
82、给定程序中函数 fun 的功能是,计算整数 n的阶乘。
请改正程序中的错误或在横线处填上适当的内容并把横线删除,使它能计算出正确的结果。
注意,不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include "stdio.h"
double fun(int n)
{
double result=1.0;
while (n>1 && n<170)
/*********found*********/
result*=--n;
/*********found*********/
return _____;
}
main()
{
int n;
clrscr();
printf("Enter an integer,");
scanf("%d",&n);
printf("\n\n%d!=%lg\n\n",n,fun(n));
NONO();
}
83、给定程序中函数 fun的功能是,实现交换两个变量值的操作。例如,若变量 a 中的值原为 8,b 中的值为 3; 程序运行后 a 中的值为 3,b中的值为 8。
请改正程序中的错误,使它能计算出正确的结果。
注意,不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <stdio.h>
/*********found**********/
int fun(int x,int y)
{ int t;
/*********found**********/
t=x;x=y;y=t;
}
main()
第 63 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
{ int a,b;
a=8;b=3;
fun(&a,&b);
printf("%d,%d\n",a,b);
}
84、给定程序中函数 fun 的功能是,将十进制正整数 m 转换成 k(2≤k≤9)进制数,并按位输出。 例如,若输入 8 和 2,则应输出 1000 (即十进制数 8 转换成二进制表示是 1000) 。
请改正 fun 函数中的错误,使它能得出正确的结果。
注意:不要改动 main 函数。不得增行或删行,也不得更改程序的结构!
试题程序,
#include <conio.h>
#include <stdio.h>
void fun( int m,int k )
{
int aa[20],i;
for( i = 0; m; i++ )
{
/**********found**********/
aa[i] = m/k;
m /= k;
}
for( ; i; i-- )
/**********found**********/
printf( "%d",aa[ i ] );
}
main()
{
int b,n;
clrscr();
printf( "\nPlease enter a number and a base:\n" );
scanf( "%d %d",&n,&b );
fun( n,b );
printf("\n");
}
85、给定程序中,函数 fun 的功能是:从字符串 s 中删除所有小写字母'c'。
请改正函数 fun 中的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <stdio.h>
第 64 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
/**********found**********/
include <stdio.h>;
void fun(char *s)
{ int i,j;
for(i=j=0;s[i]!='\0';i++)
if(s[i]!='c')
/**********found**********/
s[j]=s[i];
s[i]='\0';
}
main()
{ char s[80];
printf("Enter a string:");gets(s);
printf("The original string:");puts(s);
fun(s);
printf("The string after deleted:");puts(s);printf("\n\n");
}
86、给定程序中,函数 fun 的功能是:把主函数中输入的 3 个数,最大的放在 a 中,最小的放在 c 中。例如,输入的数为:55 12 34,输出结果应当是:a=5 5.0,b=34.0,c=12.0。
请改正函数 fun 中指定部位的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <stdio.h>
void fun(float *p,float *q,float *s)
{
float *k;
/**************found**************/
if(*p<*q)
{ k=*p;*p=*q;*q=k; }
/**************found**************/
if(*s<*p)
{ k=*s;*s=*p;*p=k; }
if(*q<*s)
{ k=*q;*q=*s;*s=k; }
}
main()
{
float a,b,c;
printf("Input a b c:"); scanf("%f%f%f",&a,&b,&c);
printf("a=%4.1f,b=%4.1f,c=%4.1f\n\n",a,b,c);
fun(&a,&b,&c);
printf("a=%4.1f,b=%4.1f,c=%4.1f\n\n",a,b,c);
第 65 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
}
87、给定程序中,函数 fun 的功能是:给一维数组 a 输入任意 4 个整数,并按下例的规律输出。例如输入 1、2、3、4,程序运行后将输出以下方阵。
4 1 2 3
3 4 1 2
2 3 4 1
1 2 3 4
请改正函数 fun 中指定部位的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <stdio.h>
#define M 4
/**************found**************/
void fun(inta)
{int i,j,k,m;
printf("Enter 4 number:");
for(i=0;i<M;i++) scanf("%d",&a[i]);
printf("\n\nTheresult:\n\n");
for(i=M;i>0;i--)
{k=a[M-1];
for(j=M-1;j>0;j--)
/**************found**************/
a[j]=a[j+1];
a[0]=k;
for(m=0;m
printf("\n");
}
}
main()
{inta[M];
fun(a);printf("\n\n");
}
88、给定程序中函数 fun 的功能是:从 3 个红球,5 个白球,6 个黑球中任意取出 8 个作为一组,进行输出。在每组中,可以没有黑球,但必须要有红球和白球。组合数作为函数值返回。正确的组合数应该是 15。程序中 i 的值代表红球数,j 的值代表白球数,k 的值代表黑球数。
请改正函数 fun 中指定部位的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
第 66 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
#include <stdio.h>
int fun()
{ int i,j,k,sum=0;
printf("\nThe result,\n\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\n",sum);
}
89、给定程序中函数 fun 的功能是,求整数 x 的 y 次方的低 3 位值。例如,整数 5 的 6 次方为 12625,此值的低 3位值为 625。
请改正函数 fun 中指定部位的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <stdio.h>
long fun(int x,int y,long *p )
{ int i;
long t=1;
/**************found**************/
for(i=1; it=t*x;
*p=t;
/**************found**************/
t=t/1000;
return t;
}
main()
{ long t,r; int x,y;
printf("\nInput x and y,"); scanf("%ld%ld",&x,&y);
t=fun(x,y,&r);
第 67 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
printf("\n\nx=%d,y=%d,r=%ld,last=%ld\n\n",x,y,r,t );
}
90、给定程序中函数 fun 的功能是:计算 n 的5次方的值(规定 n 的值大于 2、小于 8),通过形参指针传回主函数。并计算该值的个位、十位、百位上数字之和作为函数值返回。例如,
7 的5 次方是16807,其低3 位数的和值是15。
请改正函数 fun 中指定部位的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <stdio.h>
#include <math.h>
int fun( int n,int *value )
{ int d,s,i;
/**************found**************/
d=0; s=1;
for(i=1; i<=5; i++) d=d*n;
*value=d;
for(i=1; i<=3; i++)
{ s=s+d%10;
/**************found**************/
s=s/10;
}
return s;
}
main()
{ int n,sum,v;
do
{ printf("\nEnter n( 2while(n<=2||n>=8);
sum=fun( n,&v );
printf("\n\nThe result:\n value=%d sum=%d\n\n",v,sum);
}
91、给定程序中函数 fun 的功能是:读入一个字符串(长度<20),将该字符串中的所有字符按 ASCII 码升序排序后输出。例如,若输入 edcba,则应输出abcde。
请改正函数 fun 中指定部位的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <conio.h>
#include <stdio.h>
void fun(char t[])
{char c;
/***********found**********/
第 68 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
int i,j;
for(i=strlen(t);i;i--)
/***********found**********/
for(j=0;j<i;j++)
/***********found**********/
if(t[i]<t[j+1])
{c=t[j];
/***********found**********/
t[j]=t[j+1];
t[j+1]=c;
}
}
main()
{char s[81];
clrscr();
printf("\nPlease enter a character string,");
gets(s);
printf("\n\nBefore sorting:\n \%s\",s);
fun(s);
Printf("\nAfter sorting decendingly:\n \%s\",s);
}
92、给定程序中函数 fun 的功能是:求:S=aa……aa-……-aaa-aa-a 。a和 n 在1~9之间,
比如当 a=3,n=6 时,S=333333-33333-3333-333-33-3=296298。
请修改函数 fun 中的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序结构!
试题程序,
#include <conio.h>
#include <stdio.h>
long fun (int a,int n)
{ int j ;
/**************found**************/
long s = 0,t = 1 ;
for ( j = 0 ; j < n ; j++)
t = t * 10 + a ;
s = t ;
for ( j = 1 ; j < n ; j++) {
/**************found**************/
t = t % 10 ;
s = s - t ;
}
return(s) ;
第 69 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
}
main( )
{ int a,n ;
clrscr() ;
printf( "\nPlease enter a and n:") ;
scanf( "%d%d",&a,&n ) ;
printf( "The value of function is,%ld\n",fun ( a,n ) );
}
93、给定程序中函数 fun 的功能是:用下面的公式求的 π 近似值,直到最后一项的绝对值小于指定的数(参数 num)为止,
π 1 1 1
——≈1- —— + —— - —— + …
4 3 5 7
例如,程序运行后,输入 0.0001,则程序输出 3.1414。
请改正程序中的 4 个错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行和删行,也不得更改程序的结构!
试题程序,
#include <math.h>
#include <stdio.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;
/************found************/
s=-s;
t=s%n;
}
pi=pi*4;
return pi;
}
main()
{
float n1,n2;
第 70 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
clrscr();
printf("Enter a float number:");
scanf("%f",&n1);
n2=fun(n1);
printf("%6.4f\n",n2);
}
94、在主函数中从键盘输入若干个数放入数组中,用 0 结束输入并放在最后一个元素中。下列给定程序中,函数 fun 的功能是:计算数组元素中值为正数的平均值(不包括 0) 。例如,
数组中元素的值依次为 39,-47,21,2,-8,15,0,则程序的运行结果为 19.250000。
请改正程序中的 4 个错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行和删行,也不得更改程序的结构!
试题程序,
double fun(int x[])
{
/************found************/
float sum=0.0;
int c=0,i=0;
while(x[i] !=0)
{if (x[i]>0)
{sum+=x[i];c++;}
i++;
}
/************found************/
sum\=c;
return sum;
}
main()
{int x[1000];int i=0;
clrscr();
printf("\nPlease enter some data (end with 0):");
do
{scanf("%d",&x[i]);}
while(x[i++]!=0);
printf("%f\n",fun(x));
}
95、给定程序中函数 fun 的功能是:计算并输出下列级数的前 N 项之和S N,直到 S N+1大于 Q
为止。Q 值通过形参传入。
第 71 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
例如:若 Q=50.0,则函数值为 49.394948。
请修改函数 fun 中的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序结构!
试题程序,
#include <conio.h>
#include <stdio.h>
double fun( double q )
{ int n; double s;
n = 2;
/************found************/
s = 2.0
while (s<=q)
{
/************found************/
s=s+ (n+1)/n;
n++;
}
printf("n=%d\n",n);
return s;
}
main ( )
{ clrscr( );
printf("%f\n",fun(50));
}
96、给定程序中函数 f的功能是:求 S 的值当k 的值为10,设
12 42 62 (2k)2
S=---- x ---- x ---- x … x----------------
1·3 3·5 5·7 (2k-1) ·(2k+1)
例如,当 k为 10 时,函数值为 1.533852。
试题程序,
#include <conio.h>
#include <stdio.h>
#include <math.h>
/************found************/
fun(int k)
{
int n; float s,w,p,q;
n=1;
s=1.0;
第 72 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
/************found************/
while(n<=k)
{
w=2.0*n;
p=w-1.0;
q=w+1.0;
s=s*w*w/p/q;
n++;
}
return s
}
main()
{ clrscr();
printf("%f\n",fun(10));
}
97、给定程序中函数 f的功能是:计算 S = f(-n) + f(-n+ 1) + …… + f(0) + f(1) + f(2)
+ …… + f(n)的值。
请修改函数 fun 中的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序结构!
试题程序,
#include <conio.h>
#include <stdio.h>
#include <math.h>
/************found************/
f( double x)
{
if (x == 0.0 || x == 2.0)
return 0.0;
else if (x < 0.0)
return (x -1)/(x-2);
else
return (x +1)/(x-2);
}
double fun( int n )
{ int i; double s=0.0,y;
for (i= -n; i<=n; i++)
{y=f(1.0*i); s += y;}
/************found************/
第 73 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
return s
}
main ( )
{ clrscr( );
printf("%f\n",fun(5) );
}
98、给定程序中函数 fun 的功能是:计算函数 F(x,y,z)=(x+ y)/(x-y)+(z+y)/(z-y)的值,
其中 x 和y的值不等,z和 y 的值不等。例如,当 x 的值为9、y 的值为11、z 的值为15 时,
函数值为-3.50。
请改正函数 fun 中指定部位的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <stdio.h>
#include <math.h>
/************found************/
#define FU(m,n) (m/n)
float fun(float a,float b,float c)
{
float value;
value=FU(a+b,a-b)+FU(c+b,c-b);
/************found************/
Return(value);
}
main()
{
float x,y,z,sum;
printf("Input x y z,");
scanf("%f%f%F",&x,&y,&z);
printf("x=%f,y=%f,z=%f\n",x,y,z);
if(x==y||y==z) {printf("Data error!\n");exit(0);}
sun=fun(x,y,z);
printf("The result is,%5.2f\n",sum);
}
99、数列中,第一项值为 3,后一项都比前一项的值增 5。给定程序 modi.c中函数 fun的功能是:计算前 n(n<4<50)项的累加和;在累加过程中把那些被 4 除后余 2 的当前累加值放入数组中,符合此条件的累加值的个数作为函数值返回主函数.例如,当 n 的值为 20 时,该数列为 3,8,13,18,23,28,……,93,98。 符合此条件的累加值应为 42,126,366,570,1010。
请改正函数 fun 中指定部位的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
第 74 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
试题程序,
#include <stdio.h>
#define N 20
int fun(int n,int *a)
{ int i,j,k,sum;
/**************found**************/
sum=0;
for(k=3,i=0;i{ sum=sum+k;
/**************found**************/
if(sum%4=2)
a[j++]=sum;
}
return j;
}
main()
{ int a[N],d,n,i;
printf("\nEnter n (4<n<=50):");scanf("%d",&n);
d=fun(n,a);
printf("\n\nThe result,\n");
for(i=0;i<d;i++)
printf("%6d",a[i]);
printf("\n\n");
}
100、给定程序中函数 fun 的功能是:统计一个无符号整数中各位数字值为零的个数,通过形参传回主函数:并把该整数中各位上最大的数字值作为函数值返回。例如,若输入无符号整数 30800,则数字值为零的个数为 3,各位上数字值最大的是 8。
请改正函数 fun 中指定部位的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <stdio.h>
int fun(unsigned n,int *zero)
{ int count=0,max=0,t;
do
{ t=n%10;
/**************found**************/
if(t=0)
count++;
if(maxn=n/10;
}while(n);
/**************found**************/
zero=count;
return max;
第 75 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
}
main()
{ unsigned n; int zero,max;
printf("\nInput n(unsigned),"); scanf("%d",&n);
max = fun( n,&zero );
printf("\nThe result,max=%d zero=%d\n",max,zero);
}
唯 C 动力( http://www.clearner.net)版权所有
第 2 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
前 言
在唯C动力网站至200 5年6月8 日开办两个月来,始终以帮助考友顺利通过等级考试为目的。网站得到了许多考友的认可,同时站长和大家一直在为网站办得更好在努力着,所以此时推出了免费的《南开二级
C上机100题》的电子版。因为时间仓促,在录入过程中难免有错误,
诚恳地希望考友指正。谢谢!
特别感谢:Mickey、咖啡的学生、唯C动力QQ群、关心本站的网友们
声 明
《南开二级C上机100题》电子版版权归唯C动力网站站长:一杯咖啡所有。
《南开二级C上机100题》电子版使用权归关心唯C动力网站的网友们所有。
一杯咖啡
2005年 8月 8日第 3 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
第一部分 改错题
1,下列给定程序的功能是:读入一个整数 k(2≤k≤10000),打印它的所有质因子(即所有为素数的因子) 。例如,若输入整数 2310,则应输出:2、3、5、7、11。
请改正程序中的错误,使程序能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <conio.h>
#include <stdio.h>
/**********found***********/
IsPrime(int n);
{int i,m;
m=1;
for ( i=2; i<n; i++)
/**********found***********/
if !(n%i)
{ m=0; break; }
return (m);
}
main()
{ int j,k;
clrscr();
printf("nPlease enter an integer number between 2 and
10000:");scanf("%d",&k);
printf("nnThe prime factor(s) of %d is (are):",k);
for (j=2;j<=k;j++)
if ((!(k%j))&&(IsPrime(j)) printf("n %4d",j);
printf("n");
}
2、下列给定程序中,函数 fun 的功能是:逐个比较 a、b 两个字符串对应位置中的字符,把
ASCII 值大或等于的字符一次存放到 c 数组中,形成一个新的字符串。例如,若 a 中的字符串为 aBCDeFgH,b 中的字符串为:ABcd,则 c 中的字符串为:aBcdeFgh。
请改正程序中的错误,使程序能得出正确的结果。
注意,不要改多 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <studio.h>
#include <string.h>
/**********found***********/
void fun(char *p,char *q,char *c)
/**********found***********/
{int k=1;
第 4 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
/**********found***********/
while(*p!=*q)
/**********found***********/
{if (*p<*q) c[k]=*q;
else c[k]=*p;
if (*p) p++;
if (*q) q++;
k++;
}
}
main()
{char a[10]="aBCDeFgh",b[10]="ABcd",c[80]={'\0'};
fun(a,b,c);
printf("The string a:"); puts(a);
printf("The string b:"); puts (b);
printf("The result:"); puts(c);
}
3、下列给定程序中,函数 fun 的功能是:依次取出字符串中所有数字字符,形成新的字符串,并取代原字符串。
请改正程序中的错误,使程序能得出正确的结果。
注意,不要改多 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序
#include <stdio.h>
#include <conio.h>
void fun (char *s)
{ int i,j;
for (i=0,j=0;s[i]!='\0';i++)
/**********found***********/
if (s[i]>='0' && s[i]<='9')
s[j]=s[i];
/**********found***********/
s[j]="\0";
}
main()
{char item[80];
clrscr();
printf("\nEnter a string:");gets(item);
printf("\n\nThe string is,\%s\n",item);
fun (item);
printf("\n\nThe string of changing is,\%s\n",item);
}
4、下列给定程序中,函数 fun 的功能是:分别铜级字符串中大写字母和小写字母的个数。
第 5 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
例如,给字符串 s 输入:AAaaBBb123CCcccc d,则应该输出结果:upper=6,lower=8。
请改正程序中的错误,使程序能得出正确的结果。
注意,不要改多 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序
#include <conio.h>
#include <stdio.h>
/**********found***********/
void fun (char *s,int a,int b)
{ while(*s)
{ if (*s>='A' && *s<='Z')
/**********found***********/
a++;
if (*s>='a' && *s<='z')
/**********found***********/
b++;
s++;
}
}
main()
{ char s[100];int upper=0,lower=0;
clrscr();
printf("nPlease a string:");gets(s);
fun(s,&upper,&lower);
printf("n upper=%d lower=%dn",upper,lower);
}
5、假定整数数列中的数不重复,并存放在数组中。下列给定程序中,函数 fun 的功能是:
删除数列中值为 x 的元素。n 中存放的是数列中元素的个数。
请改正程序中的错误,使程序能得出正确的结果。
注意,不要改多 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序
#include <stdio.h>
#define N 20
fun (int *a,int n,int x)
{int p=0,i;
a[n]=x;
while (x!=a[p])
p=p+1;
if (p==n) return -1;
else
{for (i=p;i<n;i++)
第 6 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
/**********found***********/
a[i+1]=a[i];
return n-1;
}
}
main()
{int w[N]={-3,0,1,5,7,99,10,15,30,90},x,n,i;
n=10;
printf("The original data:n");
for (i=0;i<n;i++) printf("%5d",w[i]);
printf("nInput x (to delete):");scanf("%d",&x);
printf("Delete:%dn",x);
n=fun(w,n,x);
if (n==-1) printf("***Nor be found!***nn");
else
{printf("The data after deleted:n");
for (i=0,i<n;i++) printf("%5d",w[i]);printf("nn");
}
}
6,下列给定程序中,函数 fun 的功能是,根据整型形参 m 的值,计算如下公式的值。 t=1-1/(2
×2)-1/(3×3)-…-1/(m×m)
例如,若 m中的值为 5,则应输出:0.536389。
请改正程序中的错误,使程序能得出正确的结果。
注意,不要改多 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <conio.h>
#include <stdio.h>
double fun (int m)
{ double y=1.0;
int i;
/**********found***********/
for (i=2;i<m;i++)
/**********found***********/
y-=1/(i*i);
return(y);
}
main ()
{int n=5;
clrscr();
printf("\nRhe result is %1f\n",fun(n));
}
第 7 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
7、下列给定程序中,函数 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;
}
}
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");
}
8、下列给定程序中,函数 fun 的功能是:在字符串 str 中找出 ASCII 码值最大的字符,将其放在第一个位置上;并将该字符前的原字符向后顺序移动。例如,调用 fun 函数之前给字符串输入:ABCDeFGH,调用后字符串中的内容为 eABCDFGH。
请改正程序中的错误,使程序能得出正确的结果。
注意,不要改多 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <stdio.h>
fun(char *p)
{ char max,*q;int i=0;
max=p[i];
while(p[i]!=0)
第 8 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
{ if(max<p[i])
{max=p[i];
/**********found***********/
p=q+i;
}
i++;
}
/**********found***********/
while(q<p)
{*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 agter moving:");puts (str);ptintf("\n\n");
}
9、下列给定程序中,函数 fun 的功能是:从 n 个学生的成绩中统计出低于平均分的学生人数,此人数由函数值返回,平均分存放在形参 aver 所指的存储单元中。例如,若输入 8 名学生的成绩,
80.5 60 72 90.5 98 51.5 88 64
则低于平均分的学生人数为 4(平均分为:75.5625) 。
请改正程序中的错误,使程序能得出正确的结果。
注意,不要改多 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <conio.h>
#include <stdio.h>
#define N 20
int fun (float *s,int n,float *aver)
{float ave,t=0.0;
int count=0,k,i;
for (k=0;k<n;k++)
/**********found***********/
t=s[k];
ave=t/n;
for (i=0;i<n;i++)
第 9 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
if (s[i]<ave) count++;
/**********found***********/
*aver=&ave;
return count;
}
main()
{float s[30],aver;
int m,i;
clrscr();
printf("nPlease enter m:";scanf("%d",&m);
printf("nPlease enter %d mark:n",m);
for (i=0;i<m;i++) scanf("%f",s+i);
printf("nThe number of students:%dn",fun(s,m,&aver));
printf("Ave=%fn",aver);
)
10、下列给定程序中,函数 fun 的功能是:将 s 所指字符串中出现的 t1 所指子串全部替换成 t2 所指子字符串,所形成的新串放在 w 所指的数组中。在此处,要求 t1 和 t2 所指字符串的长度相同。例如,当 s 所指字符产中的内容为 abcdabfab,t1 所指子串中的内容为 ab,
t2 所指子串中的内容为 99 时,结果,在 2 所指的数组中内容应为 99cd99f99。
请改正程序中的错误,使程序能得出正确的结果。
注意,不要改多 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include<conio.h>
#include<stdio.h>
#include<string.h>
int fun (char *s,char *t1,char*t2,char*w)
{
int i; char *p,*r,*a;
strcpy(w,s);
while(*w)
{p=w;r=t1;
/**********found***********/
while(r)
if(*r==*p) {r++;p++}
else break;
if(*r=='')
{a=w;r=t2;
/**********found***********/
while(*r){*a=*r;a++;r++}
第 10 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
w+=strlen(t2);
}
else w++;
}
}
main()
{
char s[100],t1[100],t2[100],w[100];
clrscr();
printf("nPlease enter string S:");scanf("%s",s);
printf("nPlease enter string t1:");scanf("%s",t1);
printf("nPlease enter string t2:");scanf("%s",t2);
if (strlen(t1)==strlen(t2))
{
printf("nThe result is,%sn",w);
}
else printf("Error:strlen(t1)!=strlen(t2)n");
}
11、下列给定的程序中,函数 fun 的功能是,将一个由八进制数字字符组成的字符串转换为与其面值相等的十进制整数。规定属土的字符串最多只能包含 5 位 8 进制数字。例如,若输入
77777,则输出将是 32767。
请改正程序中的错误,使它能得到正确的结果,
注意,不要改动 main 函数,不得增行或删行,也不得更改程序的结构 !
试题程序,
#include<stdio.h>
int fun(char *p)
/**********found**********/
{ int n;
n=*p-‘o’;
p++;
/**********found**********/
while(*p!=0)
{ n=n*7+*p-‘o’;
p++;
}
return n;
}
main()
{ char s[6]; int i; int n;
printf(“Enter a srting (ocaral digits ):”); gets(s);
if(strlen(s)>5){printf(,Error,String too longer !|\n\n” );exit(0);}
for(i=0;s[i];i++)
第 11 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
if(s[i]<’0’)||s[i]>7)
{printf(“Error,%c not is ocatal digits !\n\n”,s[i]);exit(0);}
printf(“the ocaral string:,); puts(s);
n=fun(s);
printf(“\n%s is convered to integer number,%d\n\n”,s,n);
}
12、给定程序中,函数 fun 的功能是:求出在字符串中最后一次出现的子字符串的地址,通过函数值返回,在主函数中输出从此地址开始的字符串;若未找到则函数值为 NULL。例如,
当字符串 s中的内容为:abcdabfabcdx,子串 t 中的内容为:abc 时,输出结果应为:abcdx。
当子串 t 中的内容为:abd 时,输出未找到信息:Notbe found!。
请改正函数 fun 中指定部位的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <stdio.h>
/**********found**********/
char fun( char *s,char *t )
{ char *p,*r,*a;
a=NULL;
/**********found**********/
while( s )
{ p=s; r=t;
while(*r)
/**********found**********/
if( r==p ) r++; p++; }
else break;
if( *r==0 ) a=s;
s++;
}
/**********found**********/
retrun a;
}
main()
{ char s[50]= "abcdabfabcdx",t[50],*p;
printf("The string s,%s\n\n",s );
printf("Enter substring,"); gets(t);
p=fun(s,t);
if(p)printf("\nThe result is,%s\n",p );
else printf("\nNot be found !\n");
}
13、下列程序中,fun 函数的功能是:根据形参 m,计算如下公式的值。
t=1+ 1/2 + 1/3 +? + … + 1/m
例如,若输入 5,则应输出 2.283333。
第 12 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
请改正程序中的语法错误,使程序能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include<conio.h>
#include<stdio.h>
double fun(int m)
{
double t=1.0;
int i;
for(i=2;i<=m;i++)
/**********found***********/
t+=1.0/k;
/**********found***********/
____________;
}
main()
{
int m;
clrscr();
printf(“nPlease enter 1 integer number:”);
scanf(“%d”,&m);
printf(“nThe result is %1fn”,fun(m));
}
14、下列程序中,fun和 funx 函数的功能是,
用二分法求方程 2x×x×x-4x×x+3x-6=0 的一个根,并要求绝对误差不超过 0.001。例如,若给 m输入-100,给 n 输入90,则函数求得的一个根为 2.000。
请改正程序中的语法错误,使程序能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include<stdio.h>
#include<math.h>
double funx(double x)
{
return(2*x*x*x-4*x*x+3*x-6);
}
double fun(double m,double n)
{
/**********found***********/
int r;
r=(m+n)/2;
/**********found***********/
第 13 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
while(fabs(n-m)<0.001)
{if(fun(x)*funx(n)<0 m=r;
else n=r;
r=(m+n)/2;
)
return r;
)
main()
{
double m,n,root;
printf("Enter m n:n");scanf("%1f%1f",&m,&n);
root=fun(m,n);
printf("root=%6.3fn",root);
}
15、下列给定程序中,函数 fun 的功能是:判断字符 ch 是否与 str 所指串中的某个字符相同;若相同,则什么也不做,若不同,则将器插在串的最后。
请改正程序中的错误,使程序能得出正确的结果。
注意,不要改多 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序
#include <conio.h>
#include <stdio.h>
#include <string.h>
/**********found***********/
void fun(char str,char ch)
{ while(*str && *str!=ch) str++;
/**********found***********/
if (*str==ch)
{ str[0]=ch;
/**********found***********/
str[1]='0';
}
}
main()
{char s[81],c;
clrscr();
printf("nPlease enter a string:n");gets(s)
printf("nPlease enter the character to search:");
c=getchar();
fun(s,c);
printf("nThe result is %sn",s);
}
第 14 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
16、下列给定程序中,函数 Creatlink 的功能是:创建带头结点的单项链表,并为各结点数据域赋 0 到m-1 的值。
请改正程序中的错误,使程序能得出正确的结果。
注意,不要改多 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
typedef struct aa
{ int data;
struct aa *next;
}NODE;
NODE *Creatlink(int n,int m)
{NODE *h=Null,*p,*s;
int i;
s=(NODE *)malloc(sizeof(NODE));
/**********found***********/
h=p;
p->next=NULL;
for (i=1;i<=n;i++)
{s=(NODE *)malloc(sizeof(NODE));
/**********found***********/
s->data=rand()%m;
s->next=p->next;
p->next=s;
p=p->next;
}
/**********found***********/
return p;
}
outlink(NODE *h)
{NODE *p;
p=h->next;
printf("nnTHE LIST:nn HEAD");
while(p)
{printf("->%d",p->data);
p=p->next;
}
printf("n");
}
第 15 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
main()
{ NODE *head;
clrscr();
head=Creatlink(8,22);
outlink(head);
}
17、下列给定程序中,函数 fun 的功能是:计算并输出 k 以内最大的 10 个能被 13 或 17 整除的自然数之和。k 的值由主函数传入,若 k 的值为 500,则函数值为 4622。
请改正程序中的错误,使程序能得出正确的结果。
注意,不要改多 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序
#include <conio.h>
#include <stdio.h>
int fun(int k)
{int m=0,mc=0,j;
while ((k>=2)&&(mc<10))
/**********found***********/
{if ((k%13=0)||(k%17=0))
{m=m+k;mc++;}
k--;
}
return m;
/**********found***********/
_____________
main()
{clrscr();
printf("%dn",fun(500));
}
18、下列给定程序中,函数 fun 的功能是:实现两个整数的交换。例如给 a 和 b 分别输入
60和 65,输出为:a=65 b=60
请改正程序中的错误,使程序能得出正确的结果。
注意,不要改多 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序
#include <conio.h>
#include <stdio.h>
/**********found***********/
void fun (int a,b)
{int t;
/**********found***********/
第 16 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
t=b;b=a;a=t;
}
main()
{int a,b;
clrscr();
printf("Enter a,b:");scanf("%d%d",&a,&b);
fun(&a,&b);
printf("a=%d b=%dn",a,b);
}
19、下列给定程序中,函数 fun 的功能是:从低位开始取出长整型变量 s 中偶数位上的数,
一次构成一个新数放在 t 中。例如,当 s 中的数为 7654321时,t 是的数为 642。
请改正程序中的错误,使程序能得出正确的结果。
注意,不要改多 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序
#include <conio.h>
#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;
clrscr();
printf("nPlease enter s:");scanf("%ld",&s);
fun(s,&t);
printf("The result is,%ldn",t);
}
20、N 个有序整数数列已放在一堆数组中,下列给定程序中,函数 fun的功能是:利用折半查找算法找整数 m 再数组中的位置。若找到,则返回其下标值;反之,则返回-1。
折半查找的基本算法是:每次查找前先确定数组中待查的范围:low和 high(low<high),然后把 m 与中间位置(mid)中元素的值进行比较。如果 m 的值大于中间位置元素中的值,则下一次的查找范围放在中间位置之后的元素中;反之,下一次的查找范围落在中间位置之前的元素中。直到 low>high,查找结束。
第 17 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
请改正程序中的错误,使程序能得出正确的结果。
注意,不要改多 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序
#include <stdio.h>
#define N 10
/**********found***********/
void fun(int a[],int m)
{int low=0,high=N-1,mid;
while(low<=high)
{mid=(low+high)/2;
if (m<a[mid])
high=mid-1;
/**********found***********/
else if (m>=a[mid])
low=mid+1;
else return(mid);
}
return(-1);
}
main()
{int i,a[N]={-3,4,7,9,13,45,67,89,100,180},k,m;
printf("a数组中的数据如下:");
for(i=0;i<N;i++) printf("%d",a[i]);
printf("Enter m:");scanf("%d",&m);
k=fun(a,m);
if(k>=0) printf("m=%d,index=%d\n",m,k);
else printf("Not be found!\n");
}
21,给定程序是建立一个带头结点的单向链表,并用随机函数为各结点数据域赋值。 函数 fun
的作用是求出单向链表结点(不包括头结点)数据域中的最大值,并且作为函数值返回。
请改正函数 fun 中指定部位的错误,使它能得出正确的结果。
注意,不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
typedef struct aa
{ int data;
struct aa *next;
} NODE;
fun ( NODE *h )
第 18 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
{ int max=-1;
NODE *p;
/***********found**********/
p=h->next;
//p=h ;
while(p)
{ if(p->data>max )
max=p->data;
/***********found**********/
p=p->next;
//p=h->next ;
}
return max;
}
outresult(int s,FILE *pf)
{ fprintf(pf,"\nThe max in link,%d\n",s);}
NODE *creatlink(int n,int m)
{ NODE *h,*p,*s,*q;
int i,x;
h=p=(NODE *)malloc(sizeof(NODE));h->data=9999;
for(i=1; i<=n; i++)
{ s=(NODE *)malloc(sizeof(NODE));
s->data=rand()%m; s->next=p->next;
p->next=s; p=p->next;
}
p->next=NULL;
return h;
}
outlink(NODE *h,FILE *pf)
{ NODE *p;
p=h->next;
fprintf(pf,"\nTHE LIST,\n\n HEAD ");
while(p)
{ fprintf(pf,"->%d ",p->data); p=p->next; }
fprintf(pf,"\n");
}
main()
{ NODE *head; int m;
clrscr();
head=creatlink(12,100);
outlink(head,stdout);
m=fun(head);
printf("\nTHE RESULT,\n"); outresult(m,stdout);
第 19 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
}
22、下列给定的程序中,函数 fun 的功能是,根据整形参 m,计算如下公式的值,
y=1+1/(2× 2)+1/(3× 3)+1/(4× 4)+……+1/(m× m)
例如,若 m 中的值为 5,则应输出,1.463611
请改正程序中的错误,使它能得到正确的结果,
注意,不要改动 main 函数,不得增行或删行,也不得更改程序的结构 !
试题程序,
#include<conio.h>
#include<stdio.h>
double fun(int m)
{
/***********found**********/
double y =1.0;
int i;
for(i=2;i<m;i++)
/***********found**********/
y+=1 /(i*1);
return(y);
}
main()
{ int n=5;
clrscr();
printf(“\nThe result is %1f\n”,fun(n));
}
23、下列给定的程序中,函数 fun 的功能是,按以下递归公式求函数值。
┏ 10 (n=1)
fun(n)= ┫
┺ fun(n-1)+2 (n>1)
例如,当给 n 输入 5 时,函数值为 18;当 n 输入 3 时,函数值为 14,
请改正程序中的错误,使它能得出正确的结果,
注意,不要改动 main 函数,不得增行或删行,也不得更改程序的结构。
试题程序,
#include <stdio,h>
/***********found**********/
fun(n)
{ int c;
/***********found**********/
if(n=1)
c=10;
第 20 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
else
c=fun(n-1)+2;
return(c),
}
main()
{ int n;
printf(“Enter n ;,); scanf(,%d”,&n);
printf(“The result,%d\n\n”,fun(n));
}
24、下列给定程序中,函数 fun 的功能是:从 s 所指字符串中,找出 t 所指子串的个数作为函数值返回。例如:当 s 所指字符串中的内容为 abcdabfab,t 所指字符串的内容为 ab,则函数返回整数 3。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构。
试题程序,
#include<conio.h>
#include<stdio.h>
#include<string.h>
int fun(char *s,char *t)
{
int n; char *p,*r;
n=0;
while(*s)
{ p=s; r=t;
while(*r)
/***********found**********/
if(r=p) {r++;p++}
else break;
/***********found**********/
if(r==’\0’)
n++;
s++;
}
return n;
}
main()
{
char s[100],t[100],; int m;
clrscr();
printf(“\nPlease enter string S:”); scanf(“%s”,s);
第 21 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
printf(“\nPlease enter substring t,”) scanf(“%s”,t);
m=fun(s,t);
printf(“\nThe result is,m=%d\n”,m);
}
25,给定程序MODI1.C中函数 fun 的功能是,计算n!。 例如,给n输入5,则输出120.000000。
请改正程序中的错误,使程序能输出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
#include <conio.h>
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)) ;
}
26、给定程序 MODI1.C中,fun 函数的功能是:先从键盘上输入一个 3行 3 列矩阵的各个元素的值,然后输出主对角线元素之积。
请改正程序中的错误,或在横线处填上适当的内容并把横线删除,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <stdio.h>
int fun ()
{
int a [3] [3],sum;
int i,j;
/**********found***********/*
_____;
for (i=0;i<3;i++)
第 22 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
{ for (j=0;j<3;j++)
/**********found***********/
scanf (〃%d〃 a [i] [j]);
}
for (i=0; i<3; i++)
sum=sum*a[i] [i];
printf (〃Sum=%dn〃,sum);
}
main ()
{ fun (); }
27、下列给定程序中,函数 fun 的功能是:根据以下公式求π值,并作为函数值返回。例如,
给指定精度的变量 eps输入 0.0005时,应当输出 Pi=3.140578,
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行和删行,也不得更改程序的结构!
试题程序,
#include <conio.h>
#include <math.h>
#include <stdio.h>
double fun(double eps)
{double s,t;
int n=1;
s=0.0;
t=0;
while(t>eps)
{s+=t;
t=t*n/(2*n+1);
n++;
}
return (s);
}
main()
{double x;
scanf("%lf",&x);
printf("\neps=%lf,Pi=%lf\n\n",x,fun(x));
}
28、给定程序 MODI1.C 中函数 fun 的功能是:在字符串的最前端加入 n 个*号,形成新串,
并且覆盖原串。
注意:字符串的长度最长允许为 79。
请改正函数 fun 中指定部位的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
第 23 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
试题程序,
#include <conio.h>
#include <string.h>
#include <stdio.h>
void fun ( char s[],int n )
{
char a[80],*p;
int i;
/**********found***********/
s=p;
for(i=0; i<n;i++)
{ a[i]=*p;
i++;
/**********found***********/
} while(*p);
a[i]=0;
strcpy(s,a);
}
main()
{ int n; char s[80];
clrscr();
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 inster,\"%s\" \n",s);
}
29、下列给定程序中,函数 fun 的功能是:求出两个非零正整数的最大公约数,并作为函数值返回。例如,若给 num1 和num2 分别输入 49 和21,则输出的最大公约数为 7。若给 num1
和 num2 分别输入 27 和 81,则输出的最大公约数为 27。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行和删行,也不得更改程序的结构!
试题程序,
#include <stdio.h>
int fun(int a,int b)
{int r,t;
/***********found**********/
if(a<b)
{t=a;b=a;a=t;}
r=a%b;
while(r!=0)
第 24 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
{a=b;b=r;r=a/b;}
/***********found**********/
return a;
}
main()
{int num1,num2,a;
scanf("%d%d",&num1,&num2);
a=fun(num1,num2);
printf("the maximum common divisor is %d\n\n",a);
}
30、计算正整数 num 的各位上的数字之积。例如,若输入 252,则输出应该是 20,若输入 202,
则输出应该是 0。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行和删行,也不得更改程序的结构!
试题程序,
#include <stdio.h>
#include <conio.h>
long fun(long num)
{
/***********found**********/
long k;
do
{
/***********found**********/
k*=num%10 ;
num\=10;
} while(num) ;
return (k);
}
main( )
{
long n
clrscr() ;
printf("Please enter a number:") ;
scanf("%ld",&n) ;
printf("\n %ld\n ",fun(n)) ;
}
31、下列给定程序中,函数 fun()的作用是:将字符串 tt 中的小写字母都改为对应的大写第 25 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
字母,其他字符不变。例如,若输入“Ab,cD”,则输出“"AB,CD” 。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行和删行,也不得更改程序的结构!
试题程序,
#include <conio.h>
#include <stdio.h>
#include <string.h>
char* fun(char tt[])
{
int i;
/***********found**********/
for(i=0;tt[i];i++)
{
if(('a'<=tt[i])||(tt<[i]<='z'))
/***********found**********/
tt[i]+=32;
}
return(tt);
}
main()
{
int i;
char tt[81];
clrscr();
printf("\nPlease enter a string,");
gets(tt);
printf("\nThe result string is,\n%s",fun(tt));
}
32、下列给定的程序中,函数 fun 的功能是,按顺序给定 s 所指数组中的元素赋予从 2 开始的偶数,然后再按顺序对每五个元素求一个平均值,并将这些值依次存放再 w 所指得数组中。
若 s 所指数组中元素的个数不是 5 的倍数,多余部分忽略不计。例如,s 所指数组有 14 个元素,则只能对前 10 个元素进行处理,不对最后的 4 个元素求平均值。
请改正程序中的错误,使它能得到正确的结果,
注意,不要改动 main 函数,不得增行或删行,也不得更改程序的结构 !
试题程序,
#include<stdio.h>
#define SIZE 20
fun(double *s,double *w)
{ int k,i ; double sum ;
for(k=2,i=0;i<SIZE;i++)
{ s[i]=k; k+=2;
sum=0.0;
第 26 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
for(k=0,i=0; i<SIZE;i++)
/**********found***********/
{ sum+=s[i];
if(i+1%5==0)
{ w[k] =sum/5;sum=0;k++;}
}
return k;
}
main()
{ double a[SIZE],b[SIZE/5];
int i,k;
k=fun(a,b)
printf(“The original data,\n”);
for(i=0;i<SIZE;i++)
{ if(i%5==0) printf(“\n”);
printf(“%4.0f”,a[i]);
}
printf(“\n\n The result,\n”);
for(i=0;i<k;i++) printf(“%6.2f,,b[i]);
printf(“\n\n”);
}
33,给定程序中函数 fun的功能是,将 s 所指字符串中的字母转换为按字母序列的后续字母
(但Z 转换为A,z 转换为a),其它字符不变。
请改正函数 fun 中指定部位的错误,使它能得出正确的结果。
注意,不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <stdio.h>
#include <ctype.h>
#include <conio.h>
void fun (char *s)
{
/**********found***********/
while(*s!='@')
{ if(*s>='A' & *s <= 'Z' || *s >= 'a' && *s<='z')
{ if(*s=='Z') *s='A';
else if(*s=='z') *s='a';
else *s += 1;
}
/**********found***********/
(*s)++;
}
}
第 27 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
main()
{ char s[80];
clrscr();
printf("\n Enter a string with length < 80.,\n\n "); gets(s);
printf("\n The string,\n\n "); puts(s);
fun ( s );
printf ("\n\n The Cords,\n\n "); puts(s);
}
34、给定程序中函数 fun 的功能是:将长整型数中每一位上为奇数的数依次取出,构成一个新数放在 t中。高位仍在高位,低位仍在低位。例如,当 s 中的数为:87653142 时,t 中的数为:7531。请改正程序中的错误,使它能得出正确的结果。
试题程序,
#include <conio.h>
#include <stdio.h>
void fun (long s,long *t)
{ int d;
long sl=1;
/************found************/
t = 0;
while ( s > 0)
{ d = s%10;
/************found************/
if (d%2 = = 0)
{ *t = d * sl + *t;
sl *= 10;
}
s /= 10;
}
}
main()
{ long s,t;
clrscr();
printf("\nPlease enter s:"); scanf("%ld",&s);
fun(s,&t);
printf("The result is,%ld\n",t);
}
35、下列给定程序中,fun 函数的功能是:将其中每个单词的最后一个字母改成大写,然后输出此文本行 (这里的“单词”是指由空格隔开或句号结尾的字符串) 。
例如,若输入 I am a student to tak e the examination.,
则应输出"I aM A st udenT tO takE thE examinatioN."。
请改正程序中的错误,使它能计算出正确的结果。
第 28 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <conio.h>
#include <stdio.h>
#include <ctype.h>
void fun (char*p)
{
/************found************/
int k = 0 ;
for ( ;*p ;p++ )
if ( k )
{if ( p == ' ')
{k = 0 ;
/************found************/
*p = toupper( *( p - 1 ));
}
}
else
k = 1 ;
}
main( )
{
char charchrstr[64] ;
int d;
clrscr() ;
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( "\nAfter changing:\n%s",chrstr );
}
36、给定程序中函数 fun 的功能是:求三个数的最小公倍数。例如,给变量 x1,x2,x3 分别输入 15,11,2,则输出结果为 360。
请改正程序中的错误,使它能计算出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构。
试题程序,
# include <stdio.h>
第 29 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
fun(int x,int y,int z)
{
/***********found**********/
int j,t,n,m;
j=0;
t=j%x;
m=t%y;
n=j%z;
/***********found**********/
while(t!=0||m!=0||n!=0)
{
j=j+1;
t=j%x;
m=t%y;
n=j%z;
}
return j;
}
main()
{
int x1,x2,x3;
printf(“input x1,x2,x3:,);
scanf(“%d%d%d”,&x1,&x2,&x3);
printf(“x1=%d,x2=%d,x3=%d\n”,x1,x2,x3);
j=fun(x1,x2,x3);
printf(“The minimal common multiple is,%d\n”,j);
}
37、给定程序中函数 fun 的功能是:计算 s 所指字符串中含有 t 所指字符串的数目,并作为函数值返回。
请改正函数 fun 中指定部位的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <conio.h>
#include <stdio.h>
#include <string.h>
#define N 80
int fun(char *s,char *t)
{ int n;
char *p,*r;
n=0;
while ( *s )
{ p=s;
第 30 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
/*********found**********/
r=p;
while(*r)
if(*r==*p) { r++; p++; }
else break;
/*********found**********/
if(*r= O)
n++;
s++;
}
return n;
}
main()
{ char a[N],b[N]; int m;
clrscr();
printf(\nPlease enter string a,); gets(a);
printf(\nPlease enter substring b,); gets( b );
m=fun(a,b);
printf(\nThe result is,m = %d\n,m);
}
38、给定程序中,函数 fun 的功能是:通过某种方式实现两个变量值的交换,规定不允许增加任何语句和表达式。 例如变量 a 中的值原为 8,b 中的值原为 3,程序运行后 a 中的值为 3,
b 中的值为8。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <conio.h>
#include <stdio.h>
/**********found***********/
void fun(int *x,int y)
{ int t;
/**********found***********/
t=x; x=y;
retum (y);
}
main()
{ int a=3,b=8;
clrscr();
printf("%d %d \n",a,b);
b=fun(&a,b);
printf("%d b=%d \n",a,b);
}
第 31 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
39、给定程序 MODI1.C 中函数 fun 的功能是:将 s 所指字符串的正序和反序进行连接,形成一个新串放在 t 所指的数组中。
例如,当 s串为"ABCD" 时,则 t 串中的内容应为"ABCDDCBA"。
请改正函数 fun 中的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <conio.h>
#include <stdio.h>
#include <string.h>
/************found************/
void fun (char s,char t)
{
int i,d;
d = strlen(s);
for (i = 0; i<d; i++) t[i] = s[i];
for (i = 0; i<d; i++) t[d+i] = s[d-1-i];
/************found************/
t[2*d-1] = '\0';
}
main()
{
char s[100],t[100];
clrscr();
printf("\nPlease enter string S:"); scanf("%s",s);
fun(s,t);
printf("\nThe result is,%s\n",t);
}
40、下列给定程序中 fun 函数的功能是:将 n 个无序整数从小到大排序。
请改正函数 fun 中的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
fun ( int n,int *a )
{ int i,j,p,t;
for ( j = 0; j
{ p = j;
第 32 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
/************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; }
}
}
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;
clrscr();
printf( "\n\nBefore sorting %d numbers:\n",n ); putarr( n,aa );
fun( n,aa );
printf( "\nAfter sorting %d numbers:\n",n ); putarr( n,aa );
}
41、下列给定程序是建立一个带头节点的单向链表,并用随机函数为各节点赋值。函数 fun
功能将单向链表结点(不包括头结点)数据域为偶数的值累加起来,并且作为函数值返回。
请改正函数 fun 中的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
typedef struct aa
{ int data; struct aa *next; }NODE;
int fun(NODE *h)
{ int sum = 0 ;
NODE *p;
/***********found**********/
p=h;
while(p)
{ if(p->data%2==0)
sum +=p->data;
/***********found**********/
第 33 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
p=h->next;
}
return sum;
}
NODE *creatlink(int n)
{ NODE *h,*p,*s,*q;
int i,x;
h=p=(NODE *)malloc(sizeof(NODE));
for(i=1; i<=n; i++)
{ s=(NODE *)malloc(sizeof(NODE));
s->data=rand()%16;
s->next=p->next;
p->next=s;
p=p->next;
}
p->next=NULL;
return h;
}
outlink(NODE *h,FILE *pf)
{ NODE *p;
p = h->next;
fprintf(pf,"\n\nTHE LIST,\n\n HEAD " );
while(p)
{ fprintf(pf,"->%d ",p->data ); p=p->next; }
fprintf (pf,"\n");
}
outresult(int s,FILE *pf)
{ fprintf(pf,"\nThe sum of even numbers,%d\n",s);}
main()
{ NODE *head; int even;
clrscr();
head=creatlink(12);
head->data=9000;
outlink(head,stdout);
even=fun(head);
printf("\nThe result,\n"); outresult(even,stdout);
}
42、下列给定程序中,函数 fun 的功能是:将字符串 s 中位于奇数位置的字符会 ASCLL 码为偶数的字符放入字符串 t 中(规定第一个字符放在第 0 位中) 。例如:字符串中的数据为
AABBCCDDEEFF,则输出应当使 ABBCDDEFF。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构。
第 34 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
试题程序,
#include <conio.h>
#include <stdio.h>
#include <string.h>
#define N 80
viod fun(char*s,char t[])
{ int i,j=0;
/***********found**********/
for (i=0;i<strlen(s);i++)
if(i%2&&s[i]%2==0)
/***********found**********/
t[j++]=s[i];
t[i]=’\0’;
}
main()
{ char s[N],t[N];
clrscr();
printf(“\nPlease enter string s:”); gets(s);
fun(s,t);
printf(“\nThe result is,%s\n”,t);
}
43、给定程序中函数 fun 的功能是:找出 100 至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; i<N; 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;
}
第 35 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
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; iprintf("\n\n");
}
44、下列给定程序中,函数 fun 的功能是:根据形参 m 的值( 2≤m≤9),在 m 行 m 列的二维数组中存放如下所示的数据,由 main()函数输出。
例如,若输入 2 若输入 4
则输出,则输出,
1 2 1 2 3 4
2 4 2 4 6 8
3 6 9 12
4 8 12 16
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构。
试题程序,
#include<stdio.h>
#include<conio.h>
#define M 10
int a[M][M]={0};
/***********found**********/
fun(int **a,int m)
{ int j,k;
for(j=0;j<m;j++)
/***********found**********/
for(k=0;k<m;k++)
a[j][k]=k*j;
}
main()
{ int i,j,n;
clscr();
printf(“Enter n,”); scanf (“%d”,&n);
fun (a,n);
for(i=0;i<n;i++)
{ for(j=0;j<n;j++)
第 36 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
printf(“%4d”,a[i][j]);
printf ( "\n”) ;
}
}
45、给定程序中函数 fun 的功能是:将字符串 s 中最后一次出现的子字符串 t1 替换成字符串 t2,所形成的新串放在 w 所指的数组中。在此处,要求 t1 和t2 所指字符串的长度相同。
例如,当 s 所指字符串中的内容为"abcdabfabc",t1 中的内容为"ab",t2 中的内容为"99"
时,结果,在 w 所指的数组中的内容应为"abcdabf99c"。
请改正函数 fun 中的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <conio.h>
#include <stdio.h>
#include <string.h>
int fun (char *s,char *t1,char *t2,char *w)
{
int i; char *p,*r,*a;
strcpy( w,s );
/************found************/
while ( w )
{ p = w; r = t1;
while ( *r )
/************found************/
IF ( *r == *p ) { r++; p++; }
else break;
if ( *r == '\0' ) a = w;
w++;
}
r = t2;
while ( *r ){ *a = *r; a++; r++; }
}
main()
{
char s[100],t1[100],t2[100],w[100];
clrscr();
printf("\nPlease enter string S:"); scanf("%s",s);
printf("\nPlease enter substring t1:"); scanf("%s",t1);
printf("\nPlease enter substring t2:"); scanf("%s",t2);
if ( strlen(t1)==strlen(t2) )
{ fun( s,t1,t2,w);
第 37 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
printf("\nThe result is,%s\n",w);
}
else printf("\nError,strlen(t1) != strlen(t2)\n");
}
46、已知一个数列从第 0 项开始的前三项分别为 0、0、1,以后的各项都是其相邻的前三项的和。 下列给定程序中,函数 fun 的功能是,计算并输出该数列的前 n 项的平方根之和 sum,n
的值通过形参传入。例如,当 n=10时,程序的输出结果应为 23.177745。
请更改程序中的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行和删行,也不得更改程序的结构!
试题程序,
#include <conio.h>
#include <stdio.h>
#include <math.h>
/***********found**********/
fun (int n)
{double sum,s0,s1,s2,s;
int k;
sum=0.0;
if(n<=2) sum=0.0;
s0=0.0;s1=0.0;s2=0.0;
for(k=4;k>n;k++)
{s=s0+s1+s2;
sum+=sqrt(s);
s0=s1;s1=s2;s2=s;
}
/***********found**********/
return sum
}
main()
{int n;
scanf("%d",&n);
printf("%lf\n",fun(n));
}
47、下列给定程序中,函数 fun 的功能是:求出数组中最大的数和次最大的数,并把最大数和 a[0]中的数对调、次最大数和 a[1]中的数对调。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构。
试题程序,
#include<conio.h>
#include<stdio.h>
第 38 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
#define N 20
/***********found**********/
int fun (int *a,int n)
{ int i,m,t,k;
for(i=0;i<2;i++)
/***********found**********/
{ m=0;
for (k=i; k<n; k++)
if(a[k]>a[m] ) k=m;
t=a[i];a[i]=a[m];a[m]=t;
}
}
main()
{ int x,b[n]={11,5,12,0,3,6,9,7,10,8},n=10,I;
clrscr() ;
for(i=0;i<n;i++) printf(“%d”,b[i]);
printf(“\n”);
fun(b,n);
for(i=0,i<n;i++) printf(“%d”,b[i]);
printf(“\n”);
}
48、给定程序中函数 fun 的功能是:对 N 名学生的学习成绩,按从高到低的顺序找出前 m(m
≤10)名学生来,并将这些学生数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。
请改正函数 fun 中指定部位的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <stdio.h>
#include <alloc.h>
#include <string.h>
#include <conio.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=calloc(sizeof(STU),m);
第 39 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
for(i=0; ifor(k=0; k{ for(i=j=0; iif(b[i].s > b[j].s) j=i;
/**********found**********/
t[k].num=b[j].num;
t[k].s=b[j].s;
b[j].s=0;
}
return t;
}
outresult(STU a[],FILE *pf)
{ int i;
for(i=0; ifprintf(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;
clrscr();
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; iprintf(" %s %d\n",pOrder[i].num,pOrder[i].s);
free(pOrder);
}
50、给定程序中函数 fun 的功能是:先将在字符串 s 中的字符按逆序存放到 t 串中,然后把
s 中的字符按正序连接到 t 串的后面。例如:当 s 中的字符串为:ABCDE 时,则 t 中的字符串应为:EDCBAABCDE。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <conio.h>
#include <stdio.h>
#include <string.h>
第 40 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
void fun(char*s,char*t)
{
/************found************/
int i;
sl=strlen(s);
for(i=0;i<s1; i++)
/************found************/
t[i]=s[sl-i];
for(i=0;i t[sl+i]=s[i];
t[2*sl]='\0';
}
main()
{chars[100],t[100];
clrscr();
printf(\nPleaseenterstrings:);scanf(%s,s);
fun(s,t);
printf(Theresultis:%s\n,t);
}
51、给定程序中函数 fun 的功能是:将 m(1≤m≤10)个字符串连接起来,组成一个新串,
放入 pt 所指字符串中。例如:把 3个串:"abc","CD","EF"串连起来,结果是 "a bcCDEF"。
请改正程序中的错误,使它能计算出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <conio.h>
#include <stdio.h>
#include <string.h>
int 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
/************found************/
pt[i] = str[k,i] ;
pt += q ;
pt[0] = 0 ;
}
}
main( )
{ int m,h ;
第 41 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
char s[10][10],p[120] ;
clrscr() ;
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) ;
}
52、给定程序中,函数 fun的功能是:给定 n 个实数,输出平均值,并统计在平均值以上(含平均值)的实数的个数。例如,n 的值为 8 时,输入
193.199,195.673,195.757,196.051,196.092,196.596,196.579,196.763,所得平均值为
195.838745;在平均值以上(含平均值)的实数的个数为 5。
请改正函数 fun 中的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <conio.h>
#include <stdio.h>
int fun(float x[],int n)
/**********found**********/
int i;
/**********found**********/
float xn=0.0;
for(i=0;i<n;i++)
/**********found**********/
xn=xn+x[j]/n;
printf("ave=%f\n",xn);
for(i=0;i<n;i++)
/**********found**********/
if(x[i]=>xn)c++;
return c;
}
main()
{ float x[100] = {193.199,195.673,195.757,196.051,196.092,196.596,196.579,
196.763};
clrscr( );
printf("%d\n",fun(x,8));
}
53,下列给定的程序中,函数 fun 的功能是,用递归算法计算斐波拉契级数数列中第 n 项的值。
从第 1 项起,斐波拉契级数序列为 1,1,2,3,5,8,13,21……例如,若给 n 输入 7,该项的斐波拉契级数值为 13。
第 42 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
请改正程序中的错误,使它能得到正确的结果,
注意,不要改动 main 函数,不得增行或删行,也不得更改程序的结构 !
试题程序,
#include<stdio.h>
/**************found**************/
long fun( int g)
{ switch(g);
{ case 0,return 0;
/**************found**************/
case 1; case 2,return 1;
}
rturn (fun(g-1 )+fun(g-2));
}
main()
{ long fib ; int n;
printf(“Input n;,); scanf(“%d”,&n); printf(“n=%d\n”,n);
fib=fun(n);
printf(“fib=%d\n\n”,fib);
}
54、下列给定的程序中,函数 fun 的功能是比较两个字符串,将长的那个字符串的首地址作为函数值返回。
请改正程序中的错误,使它能得到正确的结果,
注意,不要改动 main 函数,不得增行或删行,也不得更改程序的结构 !
试题程序,
#include<conio.h>
#include<stdio.h>
/**************found**************/
double fun(char *s,char *t)
{ int s1=0,t1=0; char *ss,*tt;
ss=s; tt=t;
/**************found**************/
while(*ss)
{ s1++;
(*ss)++;
}
/**************found**************/
while(*tt)
{ t1++;
( *tt) ++;
}
if(t1>s1) return t;
第 43 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
else return s;
}
main()
{ char a[80],b[80],*p,*q; int i ;
cltscr();
printf(“\nEnter a sring,,);gets(a);
printf(“\nEnter a sring again:,); gets(b);
printf(“\n The longer is,\n\n”%s\”\n”,fun(a,b));
}
55,给定程序中函数 fun的功能是,为一个偶数寻找两个素数,这两个素数之和等于该偶数,
并将这两个素数通过形参指针传回主函数。
请改正函数 fun 中指定部位的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <stdio.h>
#include <math.h>
void fun(int a,int *b,int *c)
{ int i,j,d,y;
for(i=3;i<=a/2;i=i+2) {
/**************found**************/
y=0;
for(j=2;j<=sqrt((double)i);j++)
if(i%j==0) y=0;
if(y==1) {
/**************found**************/
d=i-a;
for(j=2;j<=sqrt((double)d);j++)
if(d%j==0) y=0;
if(y==1)
{ *b=i; *c=d; }
}
}
}
main()
{ int a,b,c;
do
{ printf("\nInput a,"); scanf("%d",&a); }
while(a%2);
fun(a,&b,&c);
printf("\n\n%d = %d + %d\n",a,b,c);
}
第 44 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
56、给定程序中 fun 函数的功能是:用冒泡法对 5 个字符串按由小到大的顺序进行排序。
请改正 fun函数中的错误,使它能得出正确的结果。
试题程序,
# include <stdio.h>
# include <conio.h>
# define MAXLINE 20
/***********found**********/
fun(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);
/***********found**********/
*(pstr+i)=pstr+j;
*(pstr+j)=p;
}
}
}
main()
{
int i;
char *pstr[6],str[6][MAXLINE];
cltscr();
for(i=0;i<6;i++)
pstr[i]=str[i];
printf(“\nEnter 6 string (1 string at each line):\n”);
for(i=0;i<6;i++)
scanf(“%s”,pstr[i]);
fun(pstr);
printf(“The strings after sorting,\n”);
for (i=0;i<6;i++)
printf(“%s\n”,pstr[i]);
}
57、给定程序中函数 fun 的功能是:首先把 b 所指字符串中的字符按逆序存放,然后将 a
所指字符串中的字符和 b 所指字符串中的字符,按排列的顺序交叉合并到 c 所指数组中,过长的剩余字符接在 c 所指数组的尾部。 例如,当 a 所指字符串中的内容为"abcdefg",b 所第 45 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
指字符串中的内容为"1234"时,c 所指数组中的内容应该为"a4b3c2d1efg";而当 a 所指字符串中的内容为"1234",b 所指字符串中的内容为" abcdefg"时,c 所指数组中的内容应该
为"1g2f3e4dcba"。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <conio.h>
#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];
clrscr();
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 );
}
58、给定程序中函数 fun 的功能是:先将在字符串 s 中的字符按正序存放到 t 串中,然后把
s 中的字符按逆序连接到 t 串的后面。例如:当 s中的字符串为:"ABCDE"时,
则 t 中的字符串应为:"ABCDEEDCBA"。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序
的结构!
第 46 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
试题程序,
#include <conio.h>
#include <stdio.h>
#include <string.h>
void fun (char*s,char*t)
{ int i,sl;
sl = strlen(s);
/************found************/
for( i=0; i <= s1; i ++)
t = s;
for (i=0; i < sl; i++)
t[sl+i] = s[sl-i-1];
/************found************/
t[sl] = '\0';
}
main()
{char s[100],t[100];
clrscr();
printf("\nPlease enter string s:"); scanf("%s",s);
fun(s,t);
printf("The result is,%s\n",t);
}
59、给定程序中函数 fun 的功能是:统计字符串中各元音字母(即:A、E、I、O、U)的个数。注意:字母不分大、小写。例如:若输入:THIs is a boot,则输出应该是:1、0、2、
2、0。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <conio.h>
#include <stdio.h>
fun ( char *s,int num[5] )
{ int k,i=5;
/**********found**********/
for ( k = 0; k<I;k++);
num[i]=0;
for (; *s; s++)
{ i = -1;
/**********found**********/
switch ( s )
{ case 'a',case 'A',{i=0; break;}
第 47 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
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[i]++;
}
}
main( )
{ char s1[81]; int num1[5],i;
clrscr();
printf( "\nPlease enter a string," ); gets( s1 );
fun ( s1,num1 );
for ( i=0; i < 5; i++ ) printf ("%d ",num1[i]); printf ("\n");
}
60、下列程序中,函数 fun 的功能是:找出一个大于给定整数 m 且紧随m 的素数,并作为函数值返回。
请改正程序中的错误,使它能得出正确结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <conio.h>
#include <stdio.h>
int fun(int m)
{ int i,k;
for (i=m+1;;i++) {
for (k=2;k< i,k++)
/************found************/
if (i%k!=0)
break;
/************found************/
if (k< i) return(i);
}
}
main()
{int n;
clrscr();
printf("\nPlease enter n:");
scanf("%d",&n);
printf("%d\n",fun(n));
}
第 48 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
61、给定程序 MODI1.C中函数 fun 的功能是:根据整型形参 m,计算如下公式的值。
1 1 1 1
y = ------- + --------- + --------- + …… + -------
100*100 200*200 300*300 m*m
例如,若 m = 2000,则应输出,0.000160。
请改正程序中的语法错误,使它能计算出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <conio.h>
#include <stdio.h>
/************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 ;
clrscr( ) ;
printf( "\nThe result is %lf\n",fun ( n ) ) ;
}
62、给定程序中函数 fun 的功能是:计算并输出 high 以内最大的 10 个素数之和。high 由主函数传给 fun 函数。若high 的值为100,则函数值为 732。
请修改函数 fun 中的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序结构!
试题程序,
#include <conio.h>
#include <stdio.h>
#include <math.h>
int fun( int high )
{ int sum = 0,n=0,j,yes;
/************found************/
while ((high >= 2) && (n < 10)
{ yes = 1;
第 49 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
for (j=2; j<=high/2; j++ )
/************found************/
if (high % j ==0 ){yes=0; break }
if (yes) { sum +=high; n++; }
high--;
}
return sum ;
}
main ( )
{ clrscr( );
printf("%d\n",fun (100));
}
63、将字符串 a 中的所有字符复制到字符串 b中,要求每复制三个字符之后插入一个空格,
例如:在调用 fun 函数之前给字符串 a 输入:ABCDEFGHIJK 调用函数之后,字符串 b 中
的内容则为:ABC DEF GHI JK
请改正程序中的错误,使它能计算出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include<stdio.h>
void fun(char *p,char *b)
{int i,k=0;
/***********found**********/
while(*p)
{i=1;
/***********found**********/
while(i<3||*p)
/***********found**********/
{b[k]=*p;
k++;p++;i++;
}
if(*p)
{
b[k++]=' ';
}
}
b[k]='\0';
}
main()
{ char a[80],b[80];
printf("Enter a string,");gets (a);
printf("The original string:")prts(a);
第 50 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
fun(a,b);
printf("\n The string after insert space,");puts(b);printf("\n\n");
}
64,给定程序中函数 fun的功能是,首先将大写字母转换为对应小写字母; 若小写字母为 a~
u,则将其转换为其后的第 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\nThe letter \'%c\' change to \'%c\'\n",c1,c2);
}
else printf("\nEnter (A-Z)!\n");
}
65、给定程序中函数 fun 的功能是:从低位开始取出长整型变量 s 中奇数位上的数,依次构成一个新数放在 t 中。例如,当 s中的数为:7654321 时,t 中的数为:7531。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <conio.h>
#include <stdio.h>
/************found************/
第 51 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
void fun (long s,long t)
{ long sl=10;
*t = s % 10;
while ( s > 0)
{ s = s/100;
*t = s%10 * sl + *t;
/************found************/
sl = sl*100;
}
}
main()
{ long s,t;
clrscr();
printf("\nPlease enter s:"); scanf("%ld",&s);
fun(s,&t);
printf("The result is,%ld\n",t);
}
66、给定程序中函数 fun 的功能是:求以下分数序列的前 n项之和,
请修改函数fun 中的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序结构!
试题程序,
#include <conio.h>
#include <stdio.h>
/**************found**************/
fun (int n )
{ int a = 2,b = 1,c,k ;
double s=0.0 ;
for ( k = 1; k <= n; k++ )
{ s = s + 1.0 * a / b ;
/**************found**************/
c = a; a += b; b += c;
}
return(s) ;
}
main( )
{ int n = 5 ;
clrscr( ) ;
第 52 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
printf( "\nThe value of function is,%lf\n",fun ( n ) ) ;
}
67、给定程序中函数 fun 的功能是:应用递归算法求某数 a的平方根,请填空。求平方根的迭代公式如下,
)
0
0(
2
1
1
x
a
xx +=
例如,2 的平方根值为 1.414214
请改正程序中的错误,使它能计算出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <stdio.h>
#include <math.h>
/***********found**********/
fun(double a,double x0)
{
double x1,y;
x1=(x0+a/x0)/2.0;
/***********found**********/
if(fabs(x1-x0)>0.00001)
y=fun(a,x1);
else y=x1;
return y;
}
main()
{
double x;
printf(“Enter x:”); scanf(“%lf”,&x);
printf(“The square root of %lf is %lf\n”,x,fun(x,1.0));
}
68、给定程序中函数 fun 的功能是:根据输入的三个边长(整型值),判断能否构成三角形,
构成的是等边三角形,还是等腰三角形。若能构成等边三角形函数返回 3,若能构成等腰三角形函数返回 2,若能构成一般三角形函数返回 1,若不能构成三角形函数返回 0。
请改正函数 fun 中指定部位的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <math.h>
int fun(int a,int b,int c)
{ if(a+b>c && b+c>a && a+c>b) {
if(a==b && b==c)
第 53 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
/**************found**************/
return 1;
else if(a==b||b==c||a==c)
return 2;
/**************found**************/
else return 3;
}
else return 0;
}
main()
{ int a,b,c,shape;
printf("\nInput a,b,c,"); scanf("%d%d%d",&a,&b,&c);
printf("\na=%d,b=%d,c=%d\n",a,b,c);
shape =fun(a,b,c);
printf("\n\nThe shape,%d\n",shape);
}
69,下列给定程序的功能是,读入一个英文文本行,将其中每个单词的第一个字母改成大写,
然后输出此文本行,(这里的“单词”是由空格的隔开的字符串) 。例,若输入 I am a student
to take the examination,则输出 I Am A Student To Take The Examina tion,
请改正程序中的错误,使它能计算出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <ctype.h>
#include <string.h>
#include <stdio.h>
/***********found**********/
upfst (char p)
{int k=0;
for (;*p;p++)
if (k)
{if (*p==' ') k=0;}
else if (*p!=' ')
{ k=1; *p=toupper(*p);}
}
main()
{char chrstr[81];
clrscr();
gets(chrstr);
printf("\n\nbefore changing:\n %s",chrstr);
upfst(chrstr);
printf("%s\n",chrstr);
}
第 54 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
70、下列给定程序中,函数 fun 的功能是:从整数 1 到 55 之间,选出能被 3 整除,且有一位上的数是 5 的那些数,并把这些数放在 b 所指的数组中,这些数的个数作为函数值返回。
规定:函数中 a1 放个位数,a2 放十位数。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构。
试题程序,
#include<stdio.h>
/***********found**********/
fun(int *b)
{ int k,a1,a2,i=0;
/***********found**********/
for(k=10;k<=55;k++)
a2=k/10;
a1=k-a2*10;
if((k%3==0&&a2==5)||( k%3==0&&a1==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++) printf(“%4d”,a[k]); printf(“\n”);
}
71、下列程序中,函数 fun 的功能是:求 k!(k<13),所求阶乘的值作为函数值返回。例如:
若 k=10,则应输出:3628800。
请改正程序中的错误,使它能计算出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <conio.h>
#include <stdio.h>
long fun(int k)
{
/************found************/
if k>0
return (k*fun(k-1));
/************found************/
else if (k=0)
第 55 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
return 1L;
}
main()
{int k=10;
clrscr();
printf("%d!=%ld\n",k,fun(k));
}
72、给定程序中函数 fun 的功能是:统计子字符串 substr在字符串 str 中出现的次数。例如,若字符串为 aaas lkaaas,子字符串为 as,则应输出 2。
请改正程序中的错误,使它能计算出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <stdio.h>
fun (char *str,char *substr)
{ int i,j,k,num=0;
/************found************/
for(i = 0,str[i],i++)
for(j=i,k=0;substr[k]==str[j];k++,j++)
/************found************/
If(substr[k+1]=='\0')
{ num++;
break;
}
return num;
}
main()
{
char str[80],substr[80];
printf("Input a string:") ;
gets(str);
printf("Input a substring:") ;
gets(substr);
printf("%d\n",fun(str,substr));
}
73、给定程序中 fun 函数的功能是,传入一个整数 m,计算如下公式的值。
1 1 1
t = 1 - ----- - ----- - …… - -----
2 3 m
例如,若输入 5,则应输出 -0.283333。
第 56 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
请改正函数 fun 中的错误或在横线处填上适当的内容并把横线删除,使它能计算出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <conio.h>
#include <stdio.h>
double fun( int m )
{
double t = 1.0;
int i;
for( i = 2; i <= m; i++ )
/**********found**********/
t = 1.0-1 /i;
/**********found**********/
______;
}
main()
{
int m ;
clrscr();
printf( "\nPlease enter 1 integer numbers:\n" );
scanf( "%d",&m);
printf( "\n\nThe result is %lf\n",fun( m ) );
}
74、下列程序中,函数 fun 的功能是:利用插入排序法对字符串中的字符按从小到大的顺序进行排序。插入法的基本算法是:先对字符串中的头两个元素进行排序。然后把第三个字符插入到前两个字符中,插入后前三个字符依然有序;再把第四个字符插入到前三个字符中,……。待排序的字符串已在主函数已在主函数中赋予。
请改正程序中的错误,使它能得出正确结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#define N 80
#include "stdio.h"
#include "string.h"
void insert(char *aa)
{int i,j,n; char ch;
/************found************/
n=stlen(aa);
for(i=1;i<n;i++)
第 57 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
/************found************/
{c=aa[i];
j=i-1;
while ((j>=0)&&(ch { aa[j+1]=aa[j];
j--;
}
aa[j+1]=ch;
}
}
main()
{ char a[N]="QWERTYUIOPASDFGHJKLMNBVCXZ";
int i;
printf("The original string,%s\n",a);
insert(a);
printf("The string after sorting:%s\n\n",a);
}
75、给定程序中函数 fun 的功能是:输出 M 行M列整数方阵,然后求两条对角线上各元素之和,返回此和数。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <conio.h>
#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( "%4f",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},
第 58 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
{6,7,8,9,0},{9,8,7,6,5},{3,4,5,6,7}};
clrscr();
printf ( "\nThe sum of all elements on 2 diagnals is %d.",fun( M,aa ));
}
76、给定程序中函数 fun 的功能是:将长整型数中每一位上为偶数的数依次取出,构成一个新数放在 t中。高位仍在高位,低位仍在低位。
例如,当 s中的数为:87653142 时,t 中的数为:8642。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <conio.h>
#include <stdio.h>
void fun (long s,long *t)
{ int d;
long sl=1;
*t = 0;
while ( s > 0)
{ d = s%10;
/************found************/
if (d%2=0)
{ *t=d* sl+ *t;
sl *= 10;
}
/************found************/
s \= 10;
}
}
main()
{ long s,t;
clrscr();
printf("\nPlease enter s:"); scanf("%ld",&s);
fun(s,&t);
printf("The result is,%ld\n",t);
}
77、给定程序中函数 fun 的功能是:将字符串中的内容按 逆序输出,但不改变字符串中的内容。 例如,若字符串为 abcd,则应输出:dcba。
请改正程序中的错误,使它能计算出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序 的结构!
试题程序,
#include <stdio.h>
第 59 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
/************found************/
fun (char a)
{ if ( *a )
{ fun(a+1) ;
/************found************/
printf("%c" *a) ;
}
}
main( )
{ char s[10]="abcd";
printf("处理前字符串=%s\n 处理后字符串=",s);
fun(s); printf("\n") ;
}
78、给定程序中函数 fun 的功能是判断一个整数 m 是否是素数,若是返回 1,否则返回 0。
在 main()函数中,若 fun 返回1 输出 YES 并打印该素数,若 fun 返回0 输出NO!
请改正程序中的错误,使它能计算出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序 的结构!
试题程序,
#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;
}
main( )
{ int n;
clrscr( );
printf( "\nPlease enter n," ); scanf( "%d",&n );
if ( fun ( n ) ) printf( "YES\n" );
else printf( "NO!\n" );
}
79、给定程序中函数 fun 的功能是:删除字符串中的所有空白字符。输入字符串时,用’#’
第 60 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
结束输入。
注意:不改动 main 函数,不得增行或删行,也不得更改程序的结构。
请改正程序中的错误,使它能计算出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <conio.h>
#include <stdio.h>
#include <ctype.h>
fun(char *p)
{
int i,t;
char c[80];
for(i=0,t=0;p[i];i++)
/***********found**********/
if(!isspace(*(p+i)))
c[t++]=p[i];
c[t]=”\0”;
strcpy(p,C) ;
}
main()
{
char c,s[80];
int i=0;
printf(“input a string:,);
c=getchar();
while(c!=‘#’)
{s[i]=c;
i++;
c=getchar();
}
s[i]=‘\0’ ;
fun(s);
puts(s);
}
80、给定程序中函数 fun 的功能是:求出以下分数序列的前 n 项之和。和值通过函数值返回 main 函数。
2 3 5 8 13 21
┄┄,┄┄,┄┄,┄┄,┄┄,┄┄,……
1 2 3 5 8 13
例如,若 n = 5,则应输出:8.391667。
请改正程序中的错误,使它能计算出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
第 61 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
试题程序,
#include <conio.h>
#include <stdio.h>
/************found************/
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;
clrscr( );
printf( "\nThe value of function is,%lf\n",fun ( n ) );
}
81、给定程序中函数 fun 的功能是:根据整型形参 n,计算如下公式的值。
1 1 1
A[1]=1,A[2]=---------,A[3]=---------,…,A[n]=----------
1 + A[1] 1 + A[2] 1 + A[n-1]
例如,若 n=10,则应输出,0.617977。
请改正程序中的语法错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <conio.h>
#include <stdio.h>
/************found************/
int fun ( int n )
{ float A=1; int i;
/************found************/
for (i=2; i A = 1.0/(1+A);
return A ;
}
main( )
{ int n ;
clrscr( ) ;
第 62 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
printf("\nPlease enter n,") ;
scanf("%d",&n ) ;
printf("A%d=%f\n",n,fun(n) ) ;
}
82、给定程序中函数 fun 的功能是,计算整数 n的阶乘。
请改正程序中的错误或在横线处填上适当的内容并把横线删除,使它能计算出正确的结果。
注意,不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include "stdio.h"
double fun(int n)
{
double result=1.0;
while (n>1 && n<170)
/*********found*********/
result*=--n;
/*********found*********/
return _____;
}
main()
{
int n;
clrscr();
printf("Enter an integer,");
scanf("%d",&n);
printf("\n\n%d!=%lg\n\n",n,fun(n));
NONO();
}
83、给定程序中函数 fun的功能是,实现交换两个变量值的操作。例如,若变量 a 中的值原为 8,b 中的值为 3; 程序运行后 a 中的值为 3,b中的值为 8。
请改正程序中的错误,使它能计算出正确的结果。
注意,不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <stdio.h>
/*********found**********/
int fun(int x,int y)
{ int t;
/*********found**********/
t=x;x=y;y=t;
}
main()
第 63 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
{ int a,b;
a=8;b=3;
fun(&a,&b);
printf("%d,%d\n",a,b);
}
84、给定程序中函数 fun 的功能是,将十进制正整数 m 转换成 k(2≤k≤9)进制数,并按位输出。 例如,若输入 8 和 2,则应输出 1000 (即十进制数 8 转换成二进制表示是 1000) 。
请改正 fun 函数中的错误,使它能得出正确的结果。
注意:不要改动 main 函数。不得增行或删行,也不得更改程序的结构!
试题程序,
#include <conio.h>
#include <stdio.h>
void fun( int m,int k )
{
int aa[20],i;
for( i = 0; m; i++ )
{
/**********found**********/
aa[i] = m/k;
m /= k;
}
for( ; i; i-- )
/**********found**********/
printf( "%d",aa[ i ] );
}
main()
{
int b,n;
clrscr();
printf( "\nPlease enter a number and a base:\n" );
scanf( "%d %d",&n,&b );
fun( n,b );
printf("\n");
}
85、给定程序中,函数 fun 的功能是:从字符串 s 中删除所有小写字母'c'。
请改正函数 fun 中的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <stdio.h>
第 64 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
/**********found**********/
include <stdio.h>;
void fun(char *s)
{ int i,j;
for(i=j=0;s[i]!='\0';i++)
if(s[i]!='c')
/**********found**********/
s[j]=s[i];
s[i]='\0';
}
main()
{ char s[80];
printf("Enter a string:");gets(s);
printf("The original string:");puts(s);
fun(s);
printf("The string after deleted:");puts(s);printf("\n\n");
}
86、给定程序中,函数 fun 的功能是:把主函数中输入的 3 个数,最大的放在 a 中,最小的放在 c 中。例如,输入的数为:55 12 34,输出结果应当是:a=5 5.0,b=34.0,c=12.0。
请改正函数 fun 中指定部位的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <stdio.h>
void fun(float *p,float *q,float *s)
{
float *k;
/**************found**************/
if(*p<*q)
{ k=*p;*p=*q;*q=k; }
/**************found**************/
if(*s<*p)
{ k=*s;*s=*p;*p=k; }
if(*q<*s)
{ k=*q;*q=*s;*s=k; }
}
main()
{
float a,b,c;
printf("Input a b c:"); scanf("%f%f%f",&a,&b,&c);
printf("a=%4.1f,b=%4.1f,c=%4.1f\n\n",a,b,c);
fun(&a,&b,&c);
printf("a=%4.1f,b=%4.1f,c=%4.1f\n\n",a,b,c);
第 65 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
}
87、给定程序中,函数 fun 的功能是:给一维数组 a 输入任意 4 个整数,并按下例的规律输出。例如输入 1、2、3、4,程序运行后将输出以下方阵。
4 1 2 3
3 4 1 2
2 3 4 1
1 2 3 4
请改正函数 fun 中指定部位的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <stdio.h>
#define M 4
/**************found**************/
void fun(inta)
{int i,j,k,m;
printf("Enter 4 number:");
for(i=0;i<M;i++) scanf("%d",&a[i]);
printf("\n\nTheresult:\n\n");
for(i=M;i>0;i--)
{k=a[M-1];
for(j=M-1;j>0;j--)
/**************found**************/
a[j]=a[j+1];
a[0]=k;
for(m=0;m
printf("\n");
}
}
main()
{inta[M];
fun(a);printf("\n\n");
}
88、给定程序中函数 fun 的功能是:从 3 个红球,5 个白球,6 个黑球中任意取出 8 个作为一组,进行输出。在每组中,可以没有黑球,但必须要有红球和白球。组合数作为函数值返回。正确的组合数应该是 15。程序中 i 的值代表红球数,j 的值代表白球数,k 的值代表黑球数。
请改正函数 fun 中指定部位的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
第 66 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
#include <stdio.h>
int fun()
{ int i,j,k,sum=0;
printf("\nThe result,\n\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\n",sum);
}
89、给定程序中函数 fun 的功能是,求整数 x 的 y 次方的低 3 位值。例如,整数 5 的 6 次方为 12625,此值的低 3位值为 625。
请改正函数 fun 中指定部位的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <stdio.h>
long fun(int x,int y,long *p )
{ int i;
long t=1;
/**************found**************/
for(i=1; it=t*x;
*p=t;
/**************found**************/
t=t/1000;
return t;
}
main()
{ long t,r; int x,y;
printf("\nInput x and y,"); scanf("%ld%ld",&x,&y);
t=fun(x,y,&r);
第 67 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
printf("\n\nx=%d,y=%d,r=%ld,last=%ld\n\n",x,y,r,t );
}
90、给定程序中函数 fun 的功能是:计算 n 的5次方的值(规定 n 的值大于 2、小于 8),通过形参指针传回主函数。并计算该值的个位、十位、百位上数字之和作为函数值返回。例如,
7 的5 次方是16807,其低3 位数的和值是15。
请改正函数 fun 中指定部位的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <stdio.h>
#include <math.h>
int fun( int n,int *value )
{ int d,s,i;
/**************found**************/
d=0; s=1;
for(i=1; i<=5; i++) d=d*n;
*value=d;
for(i=1; i<=3; i++)
{ s=s+d%10;
/**************found**************/
s=s/10;
}
return s;
}
main()
{ int n,sum,v;
do
{ printf("\nEnter n( 2while(n<=2||n>=8);
sum=fun( n,&v );
printf("\n\nThe result:\n value=%d sum=%d\n\n",v,sum);
}
91、给定程序中函数 fun 的功能是:读入一个字符串(长度<20),将该字符串中的所有字符按 ASCII 码升序排序后输出。例如,若输入 edcba,则应输出abcde。
请改正函数 fun 中指定部位的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <conio.h>
#include <stdio.h>
void fun(char t[])
{char c;
/***********found**********/
第 68 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
int i,j;
for(i=strlen(t);i;i--)
/***********found**********/
for(j=0;j<i;j++)
/***********found**********/
if(t[i]<t[j+1])
{c=t[j];
/***********found**********/
t[j]=t[j+1];
t[j+1]=c;
}
}
main()
{char s[81];
clrscr();
printf("\nPlease enter a character string,");
gets(s);
printf("\n\nBefore sorting:\n \%s\",s);
fun(s);
Printf("\nAfter sorting decendingly:\n \%s\",s);
}
92、给定程序中函数 fun 的功能是:求:S=aa……aa-……-aaa-aa-a 。a和 n 在1~9之间,
比如当 a=3,n=6 时,S=333333-33333-3333-333-33-3=296298。
请修改函数 fun 中的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序结构!
试题程序,
#include <conio.h>
#include <stdio.h>
long fun (int a,int n)
{ int j ;
/**************found**************/
long s = 0,t = 1 ;
for ( j = 0 ; j < n ; j++)
t = t * 10 + a ;
s = t ;
for ( j = 1 ; j < n ; j++) {
/**************found**************/
t = t % 10 ;
s = s - t ;
}
return(s) ;
第 69 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
}
main( )
{ int a,n ;
clrscr() ;
printf( "\nPlease enter a and n:") ;
scanf( "%d%d",&a,&n ) ;
printf( "The value of function is,%ld\n",fun ( a,n ) );
}
93、给定程序中函数 fun 的功能是:用下面的公式求的 π 近似值,直到最后一项的绝对值小于指定的数(参数 num)为止,
π 1 1 1
——≈1- —— + —— - —— + …
4 3 5 7
例如,程序运行后,输入 0.0001,则程序输出 3.1414。
请改正程序中的 4 个错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行和删行,也不得更改程序的结构!
试题程序,
#include <math.h>
#include <stdio.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;
/************found************/
s=-s;
t=s%n;
}
pi=pi*4;
return pi;
}
main()
{
float n1,n2;
第 70 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
clrscr();
printf("Enter a float number:");
scanf("%f",&n1);
n2=fun(n1);
printf("%6.4f\n",n2);
}
94、在主函数中从键盘输入若干个数放入数组中,用 0 结束输入并放在最后一个元素中。下列给定程序中,函数 fun 的功能是:计算数组元素中值为正数的平均值(不包括 0) 。例如,
数组中元素的值依次为 39,-47,21,2,-8,15,0,则程序的运行结果为 19.250000。
请改正程序中的 4 个错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行和删行,也不得更改程序的结构!
试题程序,
double fun(int x[])
{
/************found************/
float sum=0.0;
int c=0,i=0;
while(x[i] !=0)
{if (x[i]>0)
{sum+=x[i];c++;}
i++;
}
/************found************/
sum\=c;
return sum;
}
main()
{int x[1000];int i=0;
clrscr();
printf("\nPlease enter some data (end with 0):");
do
{scanf("%d",&x[i]);}
while(x[i++]!=0);
printf("%f\n",fun(x));
}
95、给定程序中函数 fun 的功能是:计算并输出下列级数的前 N 项之和S N,直到 S N+1大于 Q
为止。Q 值通过形参传入。
第 71 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
例如:若 Q=50.0,则函数值为 49.394948。
请修改函数 fun 中的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序结构!
试题程序,
#include <conio.h>
#include <stdio.h>
double fun( double q )
{ int n; double s;
n = 2;
/************found************/
s = 2.0
while (s<=q)
{
/************found************/
s=s+ (n+1)/n;
n++;
}
printf("n=%d\n",n);
return s;
}
main ( )
{ clrscr( );
printf("%f\n",fun(50));
}
96、给定程序中函数 f的功能是:求 S 的值当k 的值为10,设
12 42 62 (2k)2
S=---- x ---- x ---- x … x----------------
1·3 3·5 5·7 (2k-1) ·(2k+1)
例如,当 k为 10 时,函数值为 1.533852。
试题程序,
#include <conio.h>
#include <stdio.h>
#include <math.h>
/************found************/
fun(int k)
{
int n; float s,w,p,q;
n=1;
s=1.0;
第 72 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
/************found************/
while(n<=k)
{
w=2.0*n;
p=w-1.0;
q=w+1.0;
s=s*w*w/p/q;
n++;
}
return s
}
main()
{ clrscr();
printf("%f\n",fun(10));
}
97、给定程序中函数 f的功能是:计算 S = f(-n) + f(-n+ 1) + …… + f(0) + f(1) + f(2)
+ …… + f(n)的值。
请修改函数 fun 中的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序结构!
试题程序,
#include <conio.h>
#include <stdio.h>
#include <math.h>
/************found************/
f( double x)
{
if (x == 0.0 || x == 2.0)
return 0.0;
else if (x < 0.0)
return (x -1)/(x-2);
else
return (x +1)/(x-2);
}
double fun( int n )
{ int i; double s=0.0,y;
for (i= -n; i<=n; i++)
{y=f(1.0*i); s += y;}
/************found************/
第 73 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
return s
}
main ( )
{ clrscr( );
printf("%f\n",fun(5) );
}
98、给定程序中函数 fun 的功能是:计算函数 F(x,y,z)=(x+ y)/(x-y)+(z+y)/(z-y)的值,
其中 x 和y的值不等,z和 y 的值不等。例如,当 x 的值为9、y 的值为11、z 的值为15 时,
函数值为-3.50。
请改正函数 fun 中指定部位的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <stdio.h>
#include <math.h>
/************found************/
#define FU(m,n) (m/n)
float fun(float a,float b,float c)
{
float value;
value=FU(a+b,a-b)+FU(c+b,c-b);
/************found************/
Return(value);
}
main()
{
float x,y,z,sum;
printf("Input x y z,");
scanf("%f%f%F",&x,&y,&z);
printf("x=%f,y=%f,z=%f\n",x,y,z);
if(x==y||y==z) {printf("Data error!\n");exit(0);}
sun=fun(x,y,z);
printf("The result is,%5.2f\n",sum);
}
99、数列中,第一项值为 3,后一项都比前一项的值增 5。给定程序 modi.c中函数 fun的功能是:计算前 n(n<4<50)项的累加和;在累加过程中把那些被 4 除后余 2 的当前累加值放入数组中,符合此条件的累加值的个数作为函数值返回主函数.例如,当 n 的值为 20 时,该数列为 3,8,13,18,23,28,……,93,98。 符合此条件的累加值应为 42,126,366,570,1010。
请改正函数 fun 中指定部位的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
第 74 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
试题程序,
#include <stdio.h>
#define N 20
int fun(int n,int *a)
{ int i,j,k,sum;
/**************found**************/
sum=0;
for(k=3,i=0;i{ sum=sum+k;
/**************found**************/
if(sum%4=2)
a[j++]=sum;
}
return j;
}
main()
{ int a[N],d,n,i;
printf("\nEnter n (4<n<=50):");scanf("%d",&n);
d=fun(n,a);
printf("\n\nThe result,\n");
for(i=0;i<d;i++)
printf("%6d",a[i]);
printf("\n\n");
}
100、给定程序中函数 fun 的功能是:统计一个无符号整数中各位数字值为零的个数,通过形参传回主函数:并把该整数中各位上最大的数字值作为函数值返回。例如,若输入无符号整数 30800,则数字值为零的个数为 3,各位上数字值最大的是 8。
请改正函数 fun 中指定部位的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
试题程序,
#include <stdio.h>
int fun(unsigned n,int *zero)
{ int count=0,max=0,t;
do
{ t=n%10;
/**************found**************/
if(t=0)
count++;
if(maxn=n/10;
}while(n);
/**************found**************/
zero=count;
return max;
第 75 页 共 75 页
唯 C 动力( http://www.clearner.net)版权所有
}
main()
{ unsigned n; int zero,max;
printf("\nInput n(unsigned),"); scanf("%d",&n);
max = fun( n,&zero );
printf("\nThe result,max=%d zero=%d\n",max,zero);
}