问答题给定程序MODI1.C中函数fun的功能是:将 m(1≤m≤10)个字符串连接起来,组成一个新串,放入pt所指存储区中。
例如:把3个串:"abc","CD","EF"连接起来,结果是 "abcCDEF"。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
给定源程序:
#include
#include
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 ;
char s[10][10], p[120] ;
printf( "/nPlease enter m:" ) ;
scanf("%d", gets(s[0]) ;
printf( "/nPlease enter %d string:/n", m ) ;
for ( h = 0; h < m; h++ ) gets( s[h]) ;
fun(s, m, p) ;
printf( "/nThe result is : %s/n", p) ;
}
问答题请编写函数fun,其功能是:计算并输出3到n之问(含3和n)所有素数的平方根之和。
例如,在主函数中从键盘给n输入100后,输出为:
sum=148.874270。
注意:要求n的值大于2但不大于100。
部分源程序在文件PROG 1.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#inclucle
#inclucle
double fun(int n)
{
}
NONO()
{/*请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。 */
FILE*rf,*wf ; int n,i;double s;
rf=fopen("in.dat","r");
wf=fopen("out.dat","w");
for(i=0;i<10;i++) {
fsCarlf(rf,"%d",&n);
s=fun(n);
fpr2ntf(wf,"%lf/n",s);
}
fclose(rf); fclose(wf);
}
main()
{ int n;double sum;
printf("/n/nInput n: "); scanf
("%d", &n);
sum=fun(n);
printf("/n/rlsum=%f/n/n",sum);
NONO();
}
问答题用筛选法可得到2~n(n<10000)之间的所有素数,方法是:首先从素数2开始,将所有2的倍数的数从数表中删去(把数表中相应位置的值置成0);接着从数表中找下一个非0数,并从数表中删去该数的所有倍数;依此类推,直到所找的下一个数等于n为止。这样会得到一个序列:
2,3,5,7,11,13,17,19,23,……
函数fun用筛选法找出所有小于等于n的素数,并统计素数的个数作为函数值返回。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在
下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include<stdio.h>
int fun(int n)
{int a[i0000], i, j, count=0;
for(i=2; i<=n; i++) a[i]=i;
i=2;
while(i<n){
/**********found**********/
for(j=a[i]*2; j<=n; j+=______)
a[j]=0;
i++;
/**********found**********/
while(______==0)
i++;
}
printf("/nThe prime number between 2 to %d/n", n);
for(i=2; i<=n; i++)
/**********found**********/
if(a[i]!=______)
{count++; printf(count%15?"%5d": "/n%5d", a[i]);}
return count;
}
main()
{int n=20, r;
r=fun(n);
printf("/nThe number of prime is: %d/n", r);
}
问答题下列给定程序中,函数proc()的功能是:删除字符串str中所有空白字符(包括Tab字符、Enter符及换行符)。输入字符串时以“#”结束输入。
请修改程序中的错误,使它能得出正确的结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include<string.h>
#include<stdio.h>
#include<ctype.h>
void proc(char *p)
{
int i, t; char c[80];
for(i=0, t=0; p[i]; i++)
if(! isspace(*(p+i))) c[t++]=p[i];
//****found****
c[t]="/0";
strcpy(p, c);
}
void main()
{
char c, str[80];
int i=0;
printf("Input a string:");
c=getchar();
while(c!="#")
{
str [i]=c; i++; c=getchar(); }
str[i]="/0";
proc(str);
puts(str);
}
问答题编写函数int fun(int lim,int aa[MAX]),其功能是求出小于或等于lim的所有素数并放在aa数组中,并返回所求出的素数的个数。
注意:请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#define MAX 100
int fun(int lim,int aa[MAX])
{
}
void main()
{
FILE *wf;
int limit,i,sum;
int aa[MAX];
system("CLS");
printf("输入一个整数:");
scanf("%d",
sum=fun(limit,aa);
for(i=0;i<sum;i++)
{
if(i%10==0
printf("%5d",aa[i]);
}
/******************/
wf=fopen("out.dat","w");
sum=fun(15,aa);
for(i=0;i<sum;i++)
{
if(i%10==0
fprintf(wf,"%5d",aa[i]);
}
fclose(wf);
/******************/
}
问答题给定程序中,函数fun的功能是将不带头结点的单向链表逆置。即若原链表中从头至尾结点数据域依次为:2、4、6、8、10,逆置后,从头至尾结点数据域依次为:10、8、6、4、2。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构!1 #include<stdio.h>2 #include<stdlib.h>3 #define N 54 typedef struct node{5 int data;6 struct node *next,t7 } NODE;8 /**********found**********/9 __1___ fun(NODE *h)10 {NODE *p,*q,*r;11 p=h;12 if(p=NULL)13 return NULL;14 q=p->next;15 p->next=NULL;16 while(q)17 {18 /**********found**********/19 r=q->__2__;20 q->next=p;21 p=q;22 /**********found**********/23 q=__3__;24 }25 return p;26 }27 NODE *creatlist(int a[])28 { NODE*h,*p,*q;int i;29 h=NULL;30 for(i=0;i<N;i++)31 (q=(NODE *)malloc(sizeof(NODE));32 q->data=a[i];33 q->next=NULL;34 if(h==NULL)h=p=q;35 else{p->next=q;p=q;}36 }37 return h;38 }39 void outlist(NODE *h)40 { NODE *p;41 p=h;42 if(p==NULL)printf(''The list is NULL!\n'');43 else44 { printf(''\nHead'');45 do46 { printf(''->%d”,p->data); p=p->next;}47 while(p!=NULL);48 printf(''->End\n'');49 }50 }51 main ( )52 { NODE *head;53 int a[N]={2,4,6,8,10};54 head=creatlist(a);55 printf(''\nThe original list:\n'');56 outlist(head);57 head=fun(head);58 printf(''\nThe list after inverting:\n'');59 outlist(head);60 }
问答题函数fun的功能是:将s所指字符串中下标为偶数的字符删除,串中剩余字符形成的新串放在t所指数组中。
例如,当s所指字符串中的内容为:"ABCDEFGHIJK",在t所指数组中的内容应是:"BDFHJ"。
注意: 部分源程序存在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
给定源程序:
#include
#include
void fun(char *s, char t[])
{
}
main()
{
char s[100], t[100];
printf("/nPlease enter string S:"); scanf("%s", s);
fun(s, t);
printf("/nThe result is: %s/n", t);
NONO();
}
问答题下列给定程序中,函数proc()的功能是计算并输出h以内的素数之和。h由主函数传给proc()函数。若h的值为80,则函数的值为791。
请修改程序中的错误,使它能得到正确结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include<stdlib.h>
#include<conio.h>
#include<stdio.h>
#include<math.h>
int proc(int h)
{
int sum=0, n=0, j, yes;
while(h>=2)
{
yes=1;
for(j=2; j<=h/2; j++)
//****found****
ifh%j==0
{
yes=0;
break;
}
//****found****
if(yes==0)
{
sum+=h;
n++;
}
h--;
}
return sum;
}
void main()
{
system("CLS");
printf("%d/n", proc(80));
}
问答题
给定程序MODI1.C中函数fun的功能是:通过某种方式实现两个变量值的交换,规定不允许增加语句和表达式。例如变量a中的值原为8,b中的值原为3,程序运行后a中的值为3,b中的值为8。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include<stdio.h>
int fun(int*x, int y)
{
int t;
/**********found**********/
t=x; x=y;
/**********found**********/
return(y);
}
main()
{
int a=3, b=8;
printf("%d %d/n", a, b);
b=fun(
printf("%d %d/n", a, b);
}
问答题规定输入的字符串中只包含字母和*号。编写函数fun,其功能是:删除字符串中所有的*号。编写函数时,不得使用C语言提供的字符串函数。 例如,字符串中的内容为“****A*BC*DEF*G*******”,删除后,字符串中的内容应当是“ABCDEFG”。 注意:部分源程序已给出。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: #include<conio.h> #include<stdio.h> void fun(char*a) int i,j=0; for(i=0;a[i]!='/0';i++) if(a[i]!='*') a[j++]=a[i];/*若不是要删除的字符'*'则保留*/ a[j]='/0';/*最后加上字符串结束符'/0'*/ void main() char s[81]; printf("Enter a string:/n"); gets(s); fun(s); printf("The string after deleted:/n"); puts(s);
问答题给定程序中,函数fun的功能是:计算出形参s所指字符串中包含的单词个数,作为函数值返回。为便于统计,规定各单词之间用空格隔开。 例如,形参s所指的字符串为:This is a C languageprogram,函数的返回值为6。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构!1 #include<stdio.h>2 int fun(char *s)3 { int n=0,flag=0;4 while(* s!='\0')5 { if(*s!=' '&&flag==0){6 /**********found**********/7 __1__;flag=1 ;}8 /**********found**********/9 if(*s==' ')flag=__2__;10 /**********found**********/11 __3__;12 }13 return n;14 }15 main()16 { char str[81];int n;17 printf(''\nEnter a line text:\n''); gets(str);18 n=fun(str);19 printf(''\nThere are %d words in this text.\n\n'',n);20 }
问答题编程题
请编写一个函数int fun(int *s,int t,int *k),用来求出数组的最小元素在数组中的下标并存放在k所指的存储单元中。
例如,输入如下整数:
234 345 753 134 436 458 100 321 135 760
则输出结果为6,100。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include
#include
int fun(int *s,int t,int *k)
{
}
main()
{
int a[10]={234,345,753,134,436,458,100,321,135,760},k;
clrscr();
fun(a, 10,
printf("%d, %d/n ", k, a[k]);
}
问答题下列给定程序中,函数fun的功能是:有N×N矩阵,将矩阵的外围元素做顺时针旋转。操作顺序是:首先将第一行元素的值存入临时数组r,然后使第一列成为第一行,最后一行成为第一列,最后一列成为最后一行,再使临时数组中的元素成为最后一列。 例如,若N=3,有下列矩阵: 1 2 3 …… 4 5 6 …… 7 8 9 操作后应为: 7 4 1 …… 8 5 2 …… 9 6 3 请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。 注意:部分源程序给出如下。 不得增行或删行,也不得更改程序的结构! 试题程序: #include<stdio.h> #define N 4 void fun(int(*f)(N1) int i,[N]; for(j=0;j<N;j++) r[j]=t[0][j]; for(j=0;j<N;j++) /********found********/ t[0][N-j-1]=t[j] (1) ; for(j=0;j<N;j++) f[j][0]=t[N-1][j]; /********found******/ for(j=N-1;j>=0; (2) ) t[N-1][N-1-j]=t[j][N-1]; for(j=N-1;j>=0;j--) /********found********/ t[j][N-1]=[ (3) ]; } main() int t[][N]=21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10,i,j; printf("/nThe original array:/n"); for(i=0;i<N;i++) for(j=0;j<N;j++) printf("%2d",t[i][j]); printf("/n"); fun(t); printf("/nThe result is:/n"); for(i=0;i<N;i++) for(j=0;j<N;j++) printf("%2d",t[i][j]); printf("/n");
问答题学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun(),它的功能是:把指定分数范围内的学生数据放在b所指的数组中,分数范围内的学生人数由函数值返回。 例如,输入的分数是60和69,则应当把分数在60到69的学生数据进行输出,包含60分和69分的学生数据。主函数中把60放在low中,把69放在heigh中。 注意:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: #include <stdio.h> #define N 16 typedef struct char num[10]; int s ; STREC; int fun (STREC *a, STREC *b, int 1, int h ) main () STREC s [N] = "GA005", 85 , "GA003", 76 , "GA002", 69, "GA004", 85, "GA001", 96 , "GA007", 72, "GA008", 64, "GA006", 87 , "GA015", 85, "GA013", 94, "GA012", 64 , "GA014", 91, "GA011", 90, "GA017", 64 , "GA018", 64 , "GA016", 72 ; STREC h [N], tt; FILE *out; int i, j, n, low, heigh, t; printf("Enter 2 integer number low scanf ("%d%d ", if (heigh<low) t=heigh;heigh=low; low=t; n=fun (s,h, low, heigh); printf ("The student's data between %d--%d: /n ", low, heigh); for (i=0; i<n; i++) printf("%s %4d/n ",h[i] .num, h[i].s); /*输出指定分数范围内的学生记录*/ printf("/n "); out=fopen ("out74.dat ", "w") fprintf(out, "%d/n ",n)- n=fun (s,h, 80, 98); for (i=0; i<n-1; i++) /* 分数在80~98之间的学生记录按他数从低到高排序*/ for (j=i+l; j<n; j++) if (h[i] .s>h [j] .s) tt=h [i] ;h [ii =h [j] ;h [j] =tt; for (i=0; i<n; i++) fprintf(out, "%4d/n ",h[i] .s);fprintf(out, "/n ");fclose (out);
问答题编写函数用以求表达式x2-5x+4的值,x作为参数传送给函数。调用此函数求:
y1=22-5·2+4
y2=(x+15)2-5·(x+15)+4
y3=sin2x-5·sinx+4
y1的值为-2.0;x为0.5时,y2的值为166.75,y3的值为1.832721。
问答题给定程序MODI1.C中函数fun的功能是:把主函数中输入的3个数,最大的放在a中,最小的放在c中,中间的放在b中。 例如,输入的数为:55 12 34,输出结果应当是:a=55.0,b=34.0,c=12.0。 请改正程序中的错误,使它能得出正确结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。1 #include<stdio.h>2 void fun(float *a,float *b,float * c)3 {4 /**********found**********/5 float *k;6 if(*a<*b)7 { k=*a; *a=*b; *b=k;}8 /**********found**********/9 if(*a>*c)10 { k=*c; *c=*a; *a=k,}11 if(*b<*c)12 { k=*b;*b=*c;*c=k;}13 }14 main()15 { float a,b,c;16 printf(''Input a b c:''); scanf(''%f%f%f'',&a,&b,&c);17 printf(''a=%4.1f,b=%4.1f, c=%4.1f\n\n'',a,b,c);18 fun(&a,&b,&c);19 printf(''a=%4.1f,b=%4.1f, c=%4.1f\n\n'',a,b,c);20 }
问答题给定程序MODI1.C中,函数fun的功能是判断整数n是否是“完数”。当一个数的因子之和恰好等于这个数本身时,就称这个数为“完数”。例如:6的因子包括1、2、3,而6=1+2+3,所以6是完数。如果是完数,函数返回值为1,否则函数返回值为0。数组a中存放的是找到的因子,变量k中存放的是因子的个数。 请改正函数fun中指定部位的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。1 #include<stdio.h>2 int fun(int n,int a[],int *k)3 int m=0,i,t;4 t=n;5 /**********found**********/6 for(i=0;i<n;i++)7 if(n%i==0)8 {a[m]=i;m++;t=t-i;)9 /**********found**********/10 k=m;11 /**********found**********/12 if(t=0)return 1;13 else return 0;}14 main()15 { int n,a[10],flag,i,k;16 printf(''请输入一个整数: '');scanf(''%d'',&n);17 flag=fun(n,a,&k);18 if(flag)19 {printf(''%d是完数,其因子是:'',n);20 for(i=0;i<k;i++) printf(''%d'',a[i]);21 printf(''\n'');}22 else printf(''%d不是完数.\n'',n);23 }
问答题给定程序中,函数fun的功能是将不带头节点的单向链表结点数据域中的数据从小到大排序。即若原链表结点数据域从头至尾的数据为:10、4、2、8、6,排序后链表结点数据域从头至尾的数据为:2、4、6、8、10。
请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!
给定源程序:
#include
#include
#define N 6
typedef struct node {
int data;
struct node *next;
} NODE;
void fun(NODE *h)
{ NODE *p, *q; int t;
p = h;
while (p) {
q = __1__ ;
while (__2__)
{ if (p->data > q->data)
{ t = p->data; p->data = q->data; q->data = t; }
q = q->next;
}
p = __3__ ;
}
}
NODE *creatlist(int a[])
{ NODE *h,*p,*q; int i;
h=NULL;
for(i=0; idata=a[i];
q->next = NULL;
if (h == NULL) h = p = q;
else { p->next = q; p = q; }
}
return h;
}
void outlist(NODE *h)
{ NODE *p;
p=h;
if (p==NULL) printf("The list is NULL!\n");
else
{ printf("\nHead ");
do
{ printf("->%d", p->data); p=p->next; }
while(p!=NULL);
printf("->End\n");
}
}
main()
{ NODE *head;
int a[N]= {0, 10, 4, 2, 8, 6 };
head=creatlist(a);
printf("\nThe original list:\n");
outlist(head);
fun(head);
printf("\nThe list after inverting :\n");
outlist(head);
}
问答题下列给定程序中函数fun的功能是:从整数lO到55之间,查找能被3整除且有一位上的数值是5的数,把这些数放在b所指的数组中,这些数的个数作为函数值返回。规定函数中a1放个位数,a2放十位数。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件MODll.c中,不得增行或删行,也不得更改程序的结构! #include<stdio.h> int fun(int*b) { int k,a1,a2,i=0; for(k=10;k<=55;k++) { /***********found***********/ a2=k/10: al=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); prinff(“The result is:\n”); for(k=0;k<m;k++) printf(“%4d”,a[k]); printf(“\n”); }
问答题下列给定程序中,函数proc()的功能是:用冒泡法对6个字符串按由小到大的顺序进行排序。
请修改程序中的错误,使它能得到正确结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include<string.h>
#include<stdlib.h>
#include<conio.h>
#include<stdio.h>
#define MAX 20
void proc(char *pstr[6])
{
int i, j;
char *p;
for(i=0; i<5; i++)
for(j=i+1; j<6; j++)
//****found****
if(strcmp((pstr+i), (pstr+j))>0)
{
p=*(pstr+i);
*(pstr+i)=*(pstr+j);
//****found****
*(pstr+j)=*p;
}
}
void main()
{
int i;
char *p[6], str[6][MAX];
system("CLS");
for(i=0; i<6; i++)
p[i]=str[i];
printf("/nEnter 6 string(1 string at each line):/n");
for(i=0; i<6; i++)
scanf("%s", p[i]);
proc(p);
printf("The strings after sorting:/n");
for(i=0; i<6; i++)
printf("%s/n", p[i]);
}
