问答题请编写函数fun,其功能是:计算并输出给定数组(长度为9)中每相邻两个元素的平均值的平方根之和。 例如,若给定数组中的9个元素依次为12.0、34.0、4.0、23.0、34.0、45.0、18.0、3.0,11.0,则输出应为S=35.951014。 注意:请勿改主动函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 #include<stdio.h> #include<math.h> double fun(double x[9]) { } main() {double s,a[9]={12.0,34.0,4.0,23.0,34.0,45.0,18.0,3.0,11.0}; int i; FILE *out; printf("\nThe original data is:"); for(i=0;i<9;i++) printf("%6.1f",a[i]); printf("\n"); s=fun(a): printf("s=%f\n",s); /************/ out=fopen("out.dat","w"); fprintf(out,"%f",s); fclose(out); /************/ }
问答题(补充每对/**/之间的程序段,完成题目的要求)
问答题下列程序中,函数fun的功能是:按顺序给s所指数组中的元素赋予从2开始的偶数,然后再按顺序对每5个元素求一个平均值,并将这些值依次存放在w所指的数组中。若s所指数组中元素的个数不是5的倍数,则多余部分忽略不计。例如,s所指数组有14个元素,则只对前10个元素进行处理,不对最后的4个元素求平均值。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#include<stdio.h>#define SIZE 20fun(double*s,double*W){ int k,i;double sum; for(k=2,i=0 ; i<SIZE;i++) { S[i]=k;k+=2;}/*********found*********/ sun=0.0; for(k=0,i=0;i<SIZE;i++) { sum+=s[i];/*********found*********/ if(i+1%5==0) {w[k]=sum/5;sum=0; k++;} } returrl 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\nThe result:\n"); for(i=0;i<k;i++) printf("%6.2f",b[i]); printf("\n\n"); }
问答题给定程序MODI1.C中函数fun的功能是:将p所指字符串中的所有字符复制到b中,要求每复制三个字符之后插入一个空格。
例如,在调用fun函数之前给a输入字符串:ABCDEFGHIJK,调用函数之后,字符数组b中的内容则为:ABC DEF GHI JK。
请改正程序中的错误,使它能得出正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
给定源程序:
#include
void fun(char *p, char *b)
{ int i, k=0;
while(*p)
{ i=1;
while( i<=3
k++; p++; i++;
}
if(*p)
{
/**********found**********/
b[k++]=" ";
}
}
b[k]='/0';
}
main()
{ char a[80],b[80];
printf("Enter a string: "); gets(a);
printf("The original string: "); puts(a);
fun(a,b);
printf("/nThe string after insert space: "); puts(b); printf("/n/n");
}
问答题给定程序中,函数fun的功能是:有N×N矩阵,以主对角线为对称线,对称元素相加并将结果存放在左下三角元素中,右上三角元素置为0。例如,若N=3,有下列矩阵:
1 2 3
4 5 6
7 8 9
计算结果为
1 0 0
6 5 0
10 14 9
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include
#define N 4
/*********found**********/
void fun(int (*t)【1】)
{ int i, j;
for(i=l; i
问答题给定程序中,函数fun的功能是:计算X所指数组中N个数的平均值(规定所有数均为正数),平均值通过形参返回给主函数,将小于平均值且最接近平均值的数作为函数值返回,并在主函数中输出。
例如,有10个正数:46、30、32、40、6、17、45、15、48、26,平均值为30.500000。
主函数中输出m=30。
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:部分源程序在文件BLANK1.C中。不得增行或删行,也不得更改程序的结构!
试题程序:
1 #include<Stdlib.h>
2 #include<Stdio.h>
3 #define N 10
4 double fun(double X[],double*av)
5 {int i,j;double d,S ;
6 s=0;
7 for(i=0,i<N,i++)s=s+x[i];
8 /*********found*********/
9
【1】
=S/N;
10 d=32767;
11 for(i=0;i<N;i++)
12 if(x[i]<*av&&*av-x[i]<=d){
13 /*********found*********/
14 d=*av-x[i];
15 j=
【2】
;
16 }
17 /*********found*********/
18 return
【3】
;
19 }
20 main()
21 {int i;double x[N],av,m;
22 for(i=0;i<N;i++)
23 { x[i]=rand()%50;
24 printf("%4.0 f",x[i]);}
25 printf("\n");
26 m=fun(x,&av);
27 printf("\nThe average is:%f\n”,av);
28 printf("m=%5.1 f",m);
29 printf("\n");
30 }
问答题下列给定程序中,函数proc()的功能是:通过某种方式实现两个变量值的交换,规定不允许增加语句和表达式。例如变量num1中的值原为2,num2中的值原为1,程序运行后,num1中的值为1,num2中的值为2。
请修改程序中的错误,使它能得出正确的结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include<stdlib.h>
#include<conio.h>
#include<stdio.h>
int proc(int*x, int y)
{
int t;
//****found****
t=x; x=y;
//****found****
return(y);
}
void main()
{
int num1=2, num2=1;
system("CLS");
printf("%d%a/n", num1, num2);
num2=proc(
printf("%d%d/n", num1, num2);
}
问答题给定程序中,函数fun的功能是:对形参ss所指字符串数组中的M个字符串按长度由短到长进行排序。ss所指字符串数组中共有M个字符串,且串长<N。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在
下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include<stdio.h>
#include<string.h>
#define M 5
#define N 20
void fun(char(*ss)[N])
{int i, j, k, n[M]; char t[N];
for(i=0; i<M; i++) n[i]=strlen(ss[i]);
for(i=0; i<M-1; i++)
{k=i;
/**********found**********/
for(j=______; j<M; j++)
/**********found**********/
if(n[k]>n[j])______;
if(k!=i)
{strcpy(t, ss[i]);
strcpy(ss[i], ss[k]);
/**********found**********/
strcpy(ss[k], ______);
n[k]=n[i];
}
}
}
main()
{char ss[M][N]={"shanghai", "guangzhou", "beijing", "tianjing", "cchongqing");
int i;
printf("/nThe original strings are:/n");
for(i=0; i<M, i++)printf("%s/n", ss[i]);
printf("/n");
fun(ss);
printf("/nThe result:/n");
for(i=0; i<M; i++)printf("%s/n", ss[i]);
}
问答题下列给定程序中,函数fun的功能是计算下式直到≤10-3,并将计算结果作为函数值返回。例如,若形参e的值为1e一3,函数的返回值为2.985678。请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。注意:部分源程序给出如下。不得增行或删行,也不得更改程序的结构!试题程序:#include<stdio.h>doublefun(doublee){inti;doubles,x;/*********found*********/s=0;i=【1】;x=1.0;while(x>e){/*********found*********/【2】;/*********found*********/x=(2.0*i—1)/((【3】)*(2.0*i));s=s+x;}returns;}main(){doublee=1e一3;printf("\nTheresultis:%f\n",fun(e));}
问答题
假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:删除字符串中所有的*号。在编写函数时,不得使用C语言提供的字符串函数。
例如,字符串中的内容为:****A*BC*DEF*G*******,删除后,字符串中的内容应当是:ABCDEFG。
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include<stdio.h>
void fun(char *a)
{
}
main()
{char s[81];
void NONO();
printf("Enter a string:/n"); gets(s);
fun(s);
printf("The string after deleted:/n"); puts(s);
NONO();
}
void NONO()
{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *in, *out;
int i; char s[81];
in=fopen("in.dat", "r");
out=fopen("out.dat", "w");
for(i=0; i<10; i++) {
fscanf(in, "%s", s);
fun(s);
fprintf(out, "%s/n", s);
}
fclose(in);
fclose(out);
}
问答题由N个有序整数组成的数列己放在一维数组中,给定程序MODI1.C中函数fun的功能是:利用折半查找算法查找整数m在数组中的位置。若找到,返回其下标值;反之,返回—1。
折半查找的基本算法是:每次查找前先确定数组中待查的范围:low和high( lowhigh,查找结束。
请改正程序中的错误,使它能得出正确结果。
注意:不要改动mam函数,不得增行或删行,也不得更改程序的结构。
#include
#define N 10
void fun(int a[] int m)
{ int low=0,high=N—1,mid;
while (low 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数组中|y|数据如下: ") ;
for (i=0;i
问答题给定程序中,函数fun的功能是:在带有头结点的单向链表中,查找数据域中值为ch的结点。找到后通过函数值返回该结点在链表中所处的顺序号;若不存在值为ch的结点,函数返回0值。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在
下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include<stdio.h>
#include<stdlib.h>
#define N 8
typedef struct list
{int data;
struct list *next;
} SLIST;
SLIST *creatlist(char *);
void outlist(SLIST *);
int fun(SLIST *h, char ch)
{SLIST *p; int n=0;
p=h->next;
/**********found**********/
while(p!=______)
{ n++;
/**********found**********/
if(p->data==ch)return______;
else p=p->next;
}
return 0;
}
main()
{SLIST *head; int k; char ch;
char a [N]={"m", "p", "g", "a", "w", "x", "r", "d"};
head=creatlist(a);
outlist(head);
printf("Enter a letter:");
scanf("%c",
/**********found**********/
k=fun(______);
if(k==0)printf("/nNot found!/n");
else printf("The sequence number is : %d/n", k);
}
SLIST *creatlist(char *a)
{SLIST *h, *p, *q; int i;
h=p=(SLIST*)malloc(sizeof(SLIST));
for(i=0; i<N; i++)
{q=(SLIST*)malloc(sizeof(SLIST));
q->data=a[i]; p->next=q; p=q;
}
p->next=0;
return h;
}
void outlist(SLIST *h)
{SLIST *p;
p=h->next;
if(p==NULL)printf("/nThe list is NULL!/n");
else
{printf("/nHead");
do
{printf("->%c", p->data); p=p->next;}
while(p!=NULL);
printf("->End/n");
}
}
问答题下列给定函数中,函数fun的功能是:统计字符串中各元音字母(即A、E、I、O、U)的个数。注意:字母不分大小写。 例如,输入”THls is a boot”,则应输出是1 0 2 2 0。 请改正程序中的错误,使它能得出正确的结果。 注意:部分源程序在文件MODI1.C中,不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#include < stdlib.h >#include < conio.h >#include < stdio.h >/*********found*********/fun (char * s, int num[ 5 ] ){ int k, i=5;for(k=0,k < i;k++)/*********found*********/ num[i] =0;/*********found*********/ switch (s) { case'a': case'A': {i = 0 ;break; } case 'e': case 'E' : {1 =1;break; } case 'i': case 'I': {1 =2;break; } case 'o': case 'O': {1 =3;breakf } case 'u': case 'U': {1 =4;break; } {i=4 ; break;} } if(i >=0) num[i]++; }}void main(){char s1[81];int numl[5],i; system("CLS"), printf("/nPlease enter astring:"); gets(s1); fun(s1,num1); for(i=0;i < 5;i++) printf("%d",numl[i]); printf("/n");}
问答题给定程序中,函数fun的作用是:不断从终端读入整数,由变量a统计大于0的个数,用变量c来统计小于0的个数,当输入0时结束输入,并通过形参pa和pb把统计的数据传回主函数进行输出。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include
void fun(int *px,int *py)
{
int (1) ;
scanf ( "%d",&k) ;
while ____(2)____
}
main ()
{int x,y;
printf ( "x=%d y=%d/n",x,y) ;
}
问答题函数fun的功能是:将s所指字符串中下标为偶数同时ASCII值为奇数的字符删除,s所指串中剩余的字符形成的新串放在t所指的数组中。例如,若s所指字符串中的内容为”ABCDEFG12345”,其中字符C的ASCII码值为奇数,在数组中的下标为偶数,因此必须删除;而字符1的ASCII码值为奇数,在数组中的下标为奇数,因此不应当删除,其他依此类推。最后t所指的数组中的内容应是"BDFl2345"。注意:部分源程序在文件PROG1.C中。请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。试题程序:#include<stdio.h>#include<string.h>void fun(char*,char t[]){}main(){ char s[100],t[100];void NONO(); printf("\nPlease enter string S:"); scanf("%s",s); fun(s,t); printf("\nThe result is:%s\n",t); NONO();}void NONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/ char S[100],t[100]; FILE* rf,(wf; int i; rf=fopen("in.dat","r"); wf=fopen("out.dat","W"); for(i=0;i<10;i++){ fscanf(rf,"%s",s); fun(s,t); fprintf(wf,"%s\n",t); } fclose(rf); fclose(wf); }
问答题给定程序MODI1.C中,fun函数的功能是:删除b所指数组中小于10的数据。主函数中输出删除后数组中余下的数据。 请改正函数fun中指定部位的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! 试题程序:#include < stdio.h >#include < stdlib.h >#define N 2 0int fun(int,*b){/*********found*********/ int t[N],i,num for(i=0 ; i < N;i++) if(b[i] >=10)/*********found*********/ t[++num]=b[i];/*********found*********/ for(i=0;i < nun;i++) b[i]=t[i]; return(num);}main(){int a[N],i,num; printf("a数组中的数据:/n"); for(i=0;i < N;i++) {a[i]=rand()%21; printf("%4 d",a[i]);)printf("/n");num=fun(a);for(i=0;i < num;i++) printf("%4 d",a[i]); printf("/n");}
问答题改错题
下列给定程序中,函数fun()的功能是根据整型形参m,计算如下公式的值。
y=1-1/(2×2)+1/(3×3)-1/(4×4)+…+(-1)(m+1)/(m×m)
例如:m中的值为5,则应输出0.838611。
请改正程序中的错误,使它能得到正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
#include
double fun(int m)
{ double y=1.0;
/**********************found***********************/
int j=1;
int i;
for(i=2; i<=m; i++)
{
j=-1*j;
/**********************found***********************/
y+=1/(i * i);
}
return(y);
}
main()
{
int n=5;
clrscr();
printf("/nThe result is %lf/n" ,fun(n));
}
问答题给定程序中,函数fun的功能是将a和b所指的两个字符串分别转换成面值相同的整数,并进行相加作为函数值返回,规定字符串中只含9个以下数字字符。
例如,主函数中输入字符串”32486”和”12345”,在主函数中输出的函数值为44831。
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:部分源程序在文件BLANK1.C中。不得增行或删行,也不得更改程序的结构!
试题程序:
1 #include<stdio.h>
2 #include<string.h>
3 #include<ctype.h>
4 #define N 9
5 long ctod(char*s)
6 { long d=0;
7 while(*S)
8 if(isdigit(*s)) {
9 /*********found*********/
10 d=d*10+*s-
【1】
;
11 /*********found*********/
12
【2】
;
13 }
14 return d;
15 }
16 long fun(char*a,char*b)
17 {
18 /*********found*********/
19 return
【3】
;j
20 }
21 main()
22 { char s1[N],s2[N];
23 do
24 { printf("Input string s1:");
25 gets(s1);}
26 while(strlen(s1)>N);
27 do
28 {printf("Input string s2:");
29 gets(s2);}
30 while(strlen(s2)>N);
31 printf("The result is:%ld\n",fun(s1,s2));
32 }
问答题假如整数数列中的数不重复,并存放在数组中。下列给定的程序中,函数proc()的功能是:删除数列中值为x的元素。n中存放的是数列中元素的个数。
请修改程序中的错误,使它能够得出正确的结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include<stdio.h>
#define M 20
int proc(int*art, int n, int x)
{
int p=0, i;
arr[n]=x;
while(x!=arr[p])
p=p+1;
if(p==n)return-1;
else
{
for(i=p; i<n; i++)
//****found****
arr[i+1]=arr[i];
return n-1;
}
}
void main()
{
int arr[M]={-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", arr[i]);
printf("/nInput x(to delete): ");
scanf("%d",
printf("Delete: %d/n", x);
n=proc(arr, n, x);
if(n==-1)
printf("***No be found!***/n/n");
else
{
printf("The data after deleted: /n");
for(i=0; i<n; i++)
printf("%5d", arr[i]);
printf("/n/n");
}
}
问答题请编写函数fun,函数的功能是求出二维数组周边元素之和,作为函数值返回。二维数组中的值在主函数中赋予。 例如:二维数组中的值为: 1 3 5 7 9 2 9 9 9 4 6 9 9 9 8 1 3 5 7 0 则函数值为61。 注意:部分源程序存在文件PROG1.C文件中。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。#include<stdio.h>#define M 4#define N 5int fun(int a[M][N]){}main(){Int aa[M][N]={{1,3,5,7,9},{2,9,9,9,4),{6,9,9,9,8},{1,3,5,7,0}}; int i,j,y;void NONO();printf("The original data is:\n"); for(i=0;i<M;i++) { for (j=0; j<N;j++)printf("%6d",aa[i][j]); printf("\n"); } y=fun(aa); printf("\nThe sum:%d\n",y); printf("\n"); NONO();}void NONO(){/*请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/ int i,j,y,k,aa[M][N]; FILE *rf,*wf; rf=fopen("in.dat","r"); wf=fopen("out.dat","W"); for(k=0;k<10;k++){ for(i=0;i<M;i++) for(j=0; j<N; j++)fscanf(rf,"%d",&aa[i][j]); y=fun(aa); fprintf(wf,"%d\n",y); } fclose(rf); fclose(wf);}
