问答题请编写函数proc(),其功能是:计算并输出下列多项式值。
S=(1+1/2)+(1/3+1/4)+…+(1/(2n-1)+1/2n)
例如,若主函数从键盘给n输入100后,则输出为S=5.878031。
n的值要求大于1但不大于100。
注意:部分源程序给出如下。
请勿改动主函数main()和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。
试题程序:
#include<stdio.h>
double proc(int n)
{
}
void main()
{
int n;
double sum;
printf("/nInput n:");
scanf("%d",
sum=proc(n);
printf("/ns=%f/n",sum);
}
问答题请编写函数fun,函数的功能是:将M行N列的二维数组中的数据,按列的顺序依次放到一维数组中。 例如,二维数组中的数据为: 33 33 33 33 44 44 44 44 55 55 55 55 则一维数组中的内容应是: 33 44 55 33 44 55 33 44 55 33 44 55。 注意:部分源程序在文件PROGl.C中。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。1 #include<stdio.h>2 void fun(int s[][10],int b[],int*n,int mm,int nn)3 {4 }5 main()6 {int w[10][10]={{33,33,33,33},{44,44,44,44},{55,55,55,55}},i,j;7 int a[100]=(0),n=0;void NONO();8 printf(''The matrix:\n'');9 for(i=0; i<3;i++)10 {for(j=0;j<4;j++) printf(''%3d'',w[i][j]);11 printf(''\n'');}12 fun(w,a,&n,3,4);13 printf(''The A array:\n'');14 for(i=0;i<n;i++) printf(''%3d'',a[i]);printf(''\n\n'');15 NONO();}16 void NONO()17 {/*请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。 */18 FILE *rf,*wf;int i,j,k;19 int w[10][10],a[100],n=0,mm,nn;20 rf=fopen(''in.dat'',''r'');21 wf=fopen(''out.dat'',''w'');22 for(k=0;k<5;k++){23 fscanf(rf,''%d%d'', j<nn ; j++) fscanf(rf,''%d'',&w[i][j]);26 fun(w,a,&n,mm,nn);27 for(i=0;i<n;i++) fprintf(wf,''%3d'',a[i]); fprintf(wf,''\n'');28 }29 fclose(rf);fclose(wf);}
问答题下列给定程序中,函数fun的功能是:把形参a所指数组中的最小值放在元素a[0]中,接着把a所指数组中的最大值放在a[1]元素中;再把a所指数组元素中的次小值放在a[2]中,把a所指数组元素中的次大值放在a[3],依此类推。
例如,若a所指数组中的数据最初排列为:9,1, 4,2,3,6,5,8,7;则按规则移动后,数据排列为:1,9, 2,8,3,7,4,6,5。形参n中存放a所指数组中数据的个数。
规定fun函数中的max存放当前所找的最大值,px存放当前所找最大值的下标。
请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。
注意:部分源程序给出如下。
不得增行或删行,也不得更改程序的结构!
试题程序:
#include < stdio.h >
#define N 9
void fun(int a[],int n)
{int i l J r max t min f px f pn,t;
for(i=0;i < n一1;i+=2)
{
/*********found*********/
max=min=
【1】
;
px=pn=i;
for(j=i+1;j < n;j++) {
/*********found*********/
if(max <
【2】
)
{max=a[j];px=j;)
/*********found*********/
if(min >
【3】
)
{min=a[j];pn=j;)
}
if(pn!=i)
(t=a[i];a[i]一min;a[pn]=t;
if(px==i)px=pn;
}
if(px!=i+1)
( t=a[i+1];a[i+1]=max;
a[px]=t;)
}
}
void main()
{ int b[N]=(9,1,4,2,3,6,5,8,7},i,
printf("/nThe original data:
/n"),
for(i=0;i < N;i++)
printf("%4 d",b[i]);
printf("/n");
fun(b,N);
printf("/nThe data after
moving:/n");
for(i=0;i < N;i++)
printti("%4 d",b[i]);
printi("/n");
}
问答题给定程序MODI1.C中函数fun的功能是:计算正整数num的各位上的数字之积。例如,若输入:252,则输出应该是:20。若输入:202,则输出应该是:0。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:
问答题学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun(),它的功能是:函数返回指定成绩的学生数据,指定的成绩在主函数中输入。若没找到指定的成绩,在结构体变量中给学号置空串,给成绩置-1,作为函数值返回。 注意:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: #include<stdio.h> #include<stdlib.h> #define N 16 typedef struct char num[l0]; int s; STREC; STREC fun(STREC *a,int b) main() STREC s[N)="GA005",76,"GA003",89, "GA002",64,"GA004",75,"GA001",88, "GA007",65,"CA008",96,"GA006",69, "GA015",85,"GA013",78,"GA012",62, "GA014",60,"GA011",73,"GA017",72, "GA018",98,"GA016",94; STREC h; int m; int i,n; FILE *out; printf("The original data:/n"); for(i=0;i<N;i++) if(i%4==0) printf("/n"); /*每行输出4个学生记录*/ printf("%s%3d",s[i].num,s[i].s); printf("/n/nEnter the score:"); scanf("%d",&m); h=fun(s,m); printf("The data:"); printf("/n%s %4d/n",h.mum,h.s); printf("/n"); out=fopen("out24.dat","w"); h=fun(s,85); fprintf(out,"%s %4d/n",h.num,h.s); fclose(out);
问答题下列给定程序中,函数fun的功能是:首先把b所指字符串中的字符按逆序存放,然后将a所指字符串中的字符和b所指字符串中的字符,按排列的顺序交叉合并到c所指数组中,过长的剩余字符接在c所指的数组的尾部。例如,当a所指字符串中的内容为“abc.defg”,b所指字符串中的内容为“1234”时,c所指数组中的内容应为“a4b3c2dlefg”;而当a所指字符串中的内容为“1234”,b所指字符串的内容为“abcdefg”时,c所指数组中的内容应该为“1g2f3e4dcba”。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! 试题程序:#include<stdio.h>#include<string.h>void fun(char*a,char*b,char*c){ int i,j;char ch; i=0;j=strlen(b)一1;/******found******/ while(i>j) { ch=b[i];b[i]=b[j];b[j]=eh; 1++;]一一; } while(*a‖*b) {/******found******/ If(*a) { *c= *a;c++;a++;} if($b) {* c=*b;c++;b++;} } *c=0:}main(){char sl[100],s2[100],t[200];prinff(“\nEnter sl string:”);scanf(“%S”,s1);prinff(“\nEnter s2 string:”);scanf(“%s”,s2);fun(s1,s2,t);printf(“\nThe result is:%s\n”,t);}
问答题已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中。请编写函数fun(),该函数的功能是:找出成绩最低的学生记录,通过形参返回主函数(规定只有一个最低分)。己给出函数的首部,请完成该函数。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include<stdio. h>
#include<string. h>
#include<aonio .h>
#define N 10
typedef struct ss
{ char num[10];
iht s;
} STU;
fun(STU ail, STU *s)
{
}
main()
{
STU a[N]={ {"A01",81}, {"A02",89},
{ "A03", 66 }, { "A04", 87 }, { "A05", 77 },
{ "A06", 90 }, { "A07", 79}, { "A08", 61 },
{ "A09", 80 ), { "Al 0", 71 } }, m;
int i;
clrscr 0;
printf ("*****The original data*****");
for (i=0; i<N; i++)
printf ("No=%s Mark=%d/n", ail] .num,
a[i] .s);
fun (a,
printf ("*****THE RESULT*****/n");
printf ("The lowest :%s, %d/n",m.num,
m.s);
}
问答题给定程序MODI1.C中fun函数的功能是:求
S=aa"' aa —…—aaa — aa —a
(此处aa "'aa表示n个a,a和n的值在1至9之间)
例如 a=3,n=6,则以上表达式为:
S= 333333 — 33333 — 3333 — 333 — 33 —3
其值是:296298
a和n是fun函数的形参,表达式的值作为函数值传回main函数。
请改正程序中的错误,使它能计算出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include
long fun (int a,int n)
{ int j ;
/*********found**********/
long s = 0,t = 1 ;
t = t * 10 + a ;
s=t;
for(j=1;j
问答题编写函数fun,其功能是:求ss所指字符串中指定字符的个数,并返回此值。例如,若输入字符串“123412132”,输入字符为''3'',则输出''2''。注意:部分源程序在文件PROG1.C中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。#lnclude<stdio.h>#include<string.h>#define M 81int fun(char*ss,char c){{void main(){char a[M],ch;void NONO();printf(''knPlease enter a string:'');gets(a);printf(''\Please enter a char:'');ch=getchar();printf(''\nThe number of the char is:%d\n'',fun(a,ch));NONO();}void NONO(){/*本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/int i;FILE*rf,*wf;char a[M],b[M],ch;rf=fopen(''in.dat'',''r'');wf=fopen(''out.dat'',''w'');for(i=0;i<10;i++){fscanf(rf,''%s'',a);fcanf(rf,''%s'',b);ch=*b:fprintf(wf,''%c=%d\n'',ch,fun(a,ch));}fclose(rf);fclose(wf);}
问答题编写函数fun,其功能是:根据以下公式求π的值(要求精度0.0005,即某项小于0.0005时停止迭代)。程序运行后,若输入精度0.0005,则程序应输出为3.14…。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。试题程序:#include<stdio.h>#include<conio.h>#include<math.h>doublefun(doubleeps){}voidmain(){doublex;printf("Inputeps:");scanf("%lf",&x);printf("/neps=%lf,PI=%lf/n",X,fun(x));}
问答题请编写函数fun,其功能是将形参s所指字符串放入形参a所指的字符数组中,使a中存放同样的字符串。说明:不得使用系统提供的字符串函数。
注意:请勿改动主函数main和其他函数中的任何内容,仅在函数fun指定的部位填入所编写的若干语句。
试题程序:
#include<stdio.h>
#define N 20
void NONO();
void fun(char*a,char*s)
{
}
main()
{char s1[N],*s2="abcdefghijk";
fun(s1,s2);
printf("%s/n",s1);
printf("%s/n",s2);
NONO();
}
void NONO()
{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/
FILE*fp,*wf;
int i;
char s1[256],s2[256];
fp=fopen("in.dat","r");
wf=fopen("out.dat","w");
for(i=0;i<10;i++){
fgets(s2,255,fp);
fun(s1,s2);
fprintf(wf,"%s",s1);
}
fclose(fp);
fclose(wf);
}
问答题
给定函数MODI1.C中函数fun的功能是:将一个由八进制数字字符组成的字符串转换为与其面值相等的十进制整数。规定输入的字符串最多只能包含5位八进制数字字符。
例如,若输入:77777,则输出将是:32767。
请改正程序中的错误,使它能得出正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
in fun(char *p)
{ int n;
/**********found**********/
n=*p-"o";
p++;
while(*p!=0) {
/**********found**********/
n=n*8+*p-"0";
p++;
}
return n;
}
main()
{ char s[6]; int i; int n;
printf("Enter a string(Ocatal digits):"); gets(s);
if(strlen(s)>5){ printf("Error: String too longer!/n/n"); exit(0);}
for(i=0; s[i]; i++)
if(s[i]<"0"||s[i])>"7")
{ printf("Error:%c not is ocatal digits!/n/n", s[i]); exit(0);}
printf("The original string:"); puts(s);
n=fun(s);
printf("/n%s is convered to integer number:%d/n/n", s, n);
}
问答题下列给定程序中,函数fun的功能是:将N×N矩阵主对角线元素的值与反向对角线对应位置上元素的值进行交换。 例如,若N=3,有下列矩阵: 1 2 3 …… 4 5 6 …… 7 8 9 交换后为: 3 2 1 …… 4 5 6 …… 9 8 7 请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。 注意:部分源程序给出如下。 不得增行或删行,也不得更改程序的结构! 试题程序: #lnclude<stdio.h> #define N 4 /********found********/ void fun(int (1) ,int n) inf i,s; /********found********/ for( (2) ;i++) (s=t[i][i]; t[i][j]=f[i][n-i-1]; /********found********/ f[i][n-i-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 o riginal array:/n); for(i=0;i<N;i++) (for(j=0;j<N;j++) printf("%d"t[i][j]); printf("/n"); fun(t,N); printf("/nThe result is:/n"); for(i=0;i<N;i++) (for(j=0;j<N;j++) printf("%d't[i][j]); printf"/n");
问答题下列给定程序中,函数fun的功能是:先将s所指字符串中的字符按逆序存放到t所指字符串中,然后把s所指串中的字符按正序连接到t所指串之后。
例如,当s所指的字符串为“ABCDE”时,t所指的字符串应为“EDCBAABCDE”。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdlib.h>
#include<conio.h>
#include<stdio.h>
#include<string.h>
void fun(char *s,char *t)
{
/********found********/
int i;
s1=strlen(s);
for(i=0;i<s1;i++)
/********found********/
t[i]=s[s1-i];
for(i=0;i<s1;i++)
t[s1+i]=s[i];
t[2*s1]="/0";
}
main()
{
char s[100],t[100];
system("CLS");
printf("/nPlease enter string s:");
scanf("%s",s);
fun(s,t);
printf("The result is:%s/n",t);
}
问答题给定程序MODI1.C中,fun函数的功能是:在任意给定的N个正整数中,从左到右依次逐个取三个数作为一组,按值大小找出该组数的中值,用该中值替换与该组数对应的原三个数中的中间位置的数。处理后原数列中首尾2个数不变。处理后数列在主函数中输出。例如,有10个正整数如下:
初始数列为:6 5 7 23 18 5 8 21 45 38
第1组数为:6 5 7中值为:6替换后的数列为:
6 6 7
23 18 5 8 21 45 38
第2组数为:5 7 23 中值为:7替换后的数列为:6
6 7 23
18 5 8 21 45 38
第3组数为:7 23 18中值为:18替换后的数列为:6 6
7 18 18
5 8 21 45 38
第4组数为:23 18 5 中值为:18替换后的数列为:6 6 7
18 18 5
8 21 45 38
第5组数为:18 5 8 中值为:8替换后的数列为:6 6 7 18
18 8 8
21 45 38
第6组数为:5 8 21 中值为:8替换后的数列为:6 6 7 18 18
8 8 21
45 38
第7组数为:8 21 45中值为:21替换后的数列为:6 6 7 18 18
8 21 45
38
第8组数为:21 45 38 中值为:38替换后的数列为:6 6 7 18 18 8 8
21 38 38
最终结果为:6 6 7 18 18 8 8 21 38 38
请改正程序中指定部位的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdio.h>
#define N 10
int findmid(int a,int b,int c)
{ int t;
t=(a>b)? (b>c?b:(a>c?c:a)):((a>c)?a:((b>c)?c:b));
/*********found*********/
return b;
}
void fun(int x[])
{int i,a,b,c,t[N];
/*********found*********/
for(i=0;i<N;i++)t[i]=x[i]
for(i=0;i<N-2;i++)
{a=t[i];b=t[i+1];c=t[i+2];
/*********found*********/
t[i+1]=findmid(a,b,c);
}
}
main()
{int i,x[N]={6,5,7,2 3,18,5,8,21,45,38);
for(i=0;i<N;i++)
printf("%d",x[i]);
printf("\n");
fun(x);
for(i=0;i<N;i++)
printf("%d",x[i]);
printf("\n");
}
问答题给定程序中,函数fun的功能是:将带头结点的单向链表结点数据域中的数据从小到大排序。即若原链表结点数据域从头至尾的数据为10、4、2、8、6,排序后链表结点数据域从头至尾的数据为2、4、6、8、10。
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:部分源程序给出如下。
不得增行或删行,也不得更改程序的结构!
试题程序:
#include < stdio.h >
#include < stdlib.h >
#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){
/*********found*********/
q=
【1】
;
/*********found*********/
while(
【2】
)
{if(p一 >data >q一 >data)
{t=p一 >data;
p一 >data=q一 >data;
q一 >data=t;)
q=q一 >next;
}
/*********found*********/
p=
【3】
;
}
}
NODE*creatlist(int a[])
{ NODE*h,*p,*q;int i;
h=NULL;
for(i=0;i < N;i++)
{ q=(NODE*)malloc(sizeof
(NODE));
q一 >data=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 f"/nThe list after
inverting:/n");
outlist(head);
}
问答题编写函数fun(),它的功能是:求出1~1000之内能被7或11整除、但不能同时被7和11整除的所有整数并将它们放在a所指的数组中,通过n返回这些数的个数。 注意:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 [试题源程序] #include<conio.h> #include <stdio.h> void fun(int*a,int*n) main() int aa[1000],n,k; clrscr(); fun(aa,&n); for(k=0;k<n;k++) if(k+1)%10==0) printf("%5d",aa[k]); printf("/n"); else printf("%5d",aa[i]);
问答题程序通过定义学生结构体变量,
存储了学生的学号、姓名和三门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是重写形参filename所指文件中最后一个学生的数据,即用新的学生数据覆盖该学生原来的数据,其他学生的数据不变。
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:部分源程序在文件BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
试题程序:
#include < stdio.h >
#define N 5
typedef struct student {
long sno;
char name [ 10 ] ;
float score [ 3 ] ;
} STU;
void fun (char * filename, STU n)
{ FILE * fp;
fp = fopen (
【1】
, "rb + ");
fseek (
【2】
, 一 (long) sizeof
(STU) , SEEK_END) ;
/*********found*********/
fwrite (&n, sizeof (STU) , 1,
【3】
) ;
fclose (fp) ;
}
main ()
{ STU t[N] = { {10001,"MaChao",91, 92, 77 }, {10002," CaoKai",75, 60, 88 },
{10003, " LiSi", 85,70, 78}, {10004,"FangFang", 90,82, 87},
{10005, " ZhangSan ",95, 80, 88} };
STU n = {10006, "ZhaoSi", 55, 70,
int i,j; FILE * fp;
fp = fopen("student.dat","wb");
fwrite (t, sizeof (STU) , N, fp) ;
fclose ( fp) ;
fp = fopen ("student.dat", "rb");
fread (ss, sizeof (STU) , N, fp) ;
fclose ( fp);
printf ("/nThe original data :/n/n") ;
{ printf ("/nNo: %ld Name: % 一8s
scores: ",ss[j ] .sno, ss[j] .name) ;
printf ("% 6.2f ", ss[j] .score[i]) ;
printf "/n") ;
}
fun ("student.dat", n) ;
printf ( " / nThe data after modifing:/n/n");
fp = fopen ("student.dat", "rb");
fread (ss, sizeof (STU) , N, fp);
fclose ( fp) ;
{ printf("/nNo: % ld Name: % 一8s
Scores: ",ss[j ] .sno, ss[ j ] .name) ;
printf ("% 6.2f ", ss[ j ] .score[i]) ;
printf ("/n") ;
}
}
问答题下列给定程序是建立一个带头节点的单向链表,并用随机函数为各节点赋值。函数fun的功能是将单向链表节点(不包括头节点)数据域为偶数的值累加起来,并且作为函数值返回。请改正函数fun中的错误,使它能得出正确的结果。注意:部分源程序在文件MODI1.C中,不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:
问答题给定程序中,函数fun的功能是:有NxN矩阵,以主对角线为对称线,对称元素相加并将结果存放在左下三角元素中,右上三角元素置为0。
例如,若N=3,有下列矩阵:
1 2 3
计算结果为
1 0 0
4 5 6 6 5 0
7 8 9 10 14 9
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include
#define N 4
void fun (int (*t)____1____)
{ int i,j;
{
____3____ =0;
}
}
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(j=0; j
