问答题函数fun的功能是:根据所给的年、月、日,计算出该日是这一年的第几天,并作为函数值返回。其中函数isleap用来判别某一年是否为闰年。
例如,若输入:2008 5 1,则程序输出:2008年5月1日是该年的第122天。
请在程序的下划线处填入正确的内容,并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include
int isle'ap (int year)
{ int leap;
leap= (yearo04==0 && yearool00!=0 ||
yearo0400==0) ;
return____ (1)____;
}
int fun (int year,int monthr int day)
{int table [13] ={ 0,31,28,31,30,31,
30,31,31,30,31,30,31};
int days=0,i;
for(i=1; i2)
days=days+____ (3)____;
return days;
}
main()
{int year,monthf day,days;
printf("请输入年、月、日:");
scanf("%d%d%d",&year,&month,&day);
days=fun(year,month,day);
printf("%d年%d月%d日是该年的第%d天
/n",year,month,day,days);
}
问答题给定程序MODI1.C中函数fun的功能是:从n(形参)个学生的成绩中统计出低于平均分的学生人数,此人数由函数值返回,平均分存放在形参aver所指的存储单元中。 例如,若输入8名学生的成绩:80.5 60 72 90.5 98 51.5 88 64 则低于平均分的学生人数为:4(平均分为:75.5625)。 请改正程序中的错误,使它能统计出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!1 #include<stdio.h>2 #define N 203 int fun(float *s,int n,float* aver)4 { float ave,t=0.0;5 int count=0,k,i;6 for(k=0;k<n ; k++)7 /**********found**********/8 t=s[k];9 ave= t/n;10 for(i=0;i<n;i++)11 if (s[i]<ave) count++ ;12 /**********found**********/13 *aver=Ave ;14 return count ;15 }16 main()17 { float s[30],aver;18 int m,i;19 printf (''\nPlease enter m:'');scanf(''%d'',&m);20 printf(''\nPlease enter %d mark:\n'', m);21 for(i=0;i<m;i++)scanf(''%f'',s+i);22 printf(''\nThe number of students:%d\n'',fun(s,m,&aver));23 printf(''Ave=%f\n'',aver);24 }
问答题给定程序MODI1.C中函数fun的功能是: 对N名学生的学习成绩,按从高到低的顺序找出前m(m≤10)名学生来, 并将这些学生数据存放在一个动态分配的连续存储区中, 此存储区的首地址作为函数值返回。
请改正函数fun中指定部位的错误, 使它能得出正确的结果。
注意: 不要改动main函数, 不得增行或删行, 也不得更改程序的结构!
给定源程序:
#include
#include
#include
#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=(STU *)calloc(sizeof(STU),m)
for(i=0; i
for(k=0; k
{ for(i=j=0; i
if(b[i].s > b[j].s) j=i;
/**********found**********/
t(k)=b(j);
b[j].s=0;
}
return t;
}
outresult(STU a[], FILE *pf)
{ int i;
for(i=0; i
fprintf(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;
printf("***** The Original data *****/n");
outresult(a, stdout);
printf("/nGive the number of the students who have better score: ");
scanf("%d",
while( m>10 )
{ printf("/nGive the number of the students who have better score: ");
scanf("%d",
}
pOrder=fun(a,m);
printf("***** THE RESULT *****/n");
printf("The top :/n");
for(i=0; i
printf(" %s %d/n",pOrder[i].num , pOrder[i].s);
free(pOrder);
}
问答题在主函数中从键盘输入若干个数放入数组中,用0结束输入并放在最后一个元素中。下列给定程序中,函数fun的功能是:计算数组元素中所有值为正数的平均值(不包括0)。例如,数组中元素的值依次为:39、一47、21、2、一8、15、0,则程序的运行结果为19.250000。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#include<conio.h>#include<stdio.h>double fun(int x[]){/*********found*********/ int slim=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; printf("\nPlease enter some clat a(end with 0):"); do { scanf("%d",&x[i]); }while(x[i++]!=0); printf("%lf\n",fun(x));}
问答题用筛选法可得到2~n(n
int fun(int n)
{ int a[10000],i,j,count=0;
for (i=2; i<=n; i++) a[i] = i;
i=2;
while (i
问答题请编写函数fun,其功能是:计算并输出给定10个数的方差。其中:例如,给定的10个数为95.0、89.0、76.0、65.0、88.0、72.0、85.0、81.0、90.0、56.0,则输出为S=11.730729。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。试题程序:#include<math.h>#include<stdio.h>doublefun(doublex[10]){}voidmain(){doubles,x[10]={95.0,89.0,76.0,65.0,88.0,72.0,85.0,81.0,90.0,56.0};inti;printf("/nTheoriginaldatais:/n");for(i=0;i<10;i++)printf("%6.1f",x[i]);printf("/n/n");s=fun(x);printf("S=%f/n/n",s);}
问答题下列给定程序中已建立了一个带头结点的单向链表,链表中的各结点按数据域递增有序链接。函数fun的功能是:删除链表中数据域值相同的结点,使之只保留一个。 请在下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。 注意:不得增行或删行,也不得更改程序的结构! 试题程序: #include<stdio.h> #include<stdlib.h> #define N 8 typedef struct list {int data; struct list*next; }SLIST; void fun(SLIST *h) { SLIST *p,*q; p=h一>next; if(p!=NULL) { q=p一>next; while(q!=NULL) {if(p一>data==q一>data) {p一>next=q一>next; /******found******/ free(【1】); /******found******/ q=p一>【2】; }else {p=q; /******found******/ q=q一>【3】;} } } } } SLIST *creatlist(int *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("The list is NULL!\n"); else {printf("\nHead"); do{ printf("一>%d",p一>data); p=p一>next; }while(p!=NULL); printf("一>End\n"); } } main() { SLIST *head; int a[N]={1,2,2,3,4,4,4,5}; head=creatlist(a); printf("The list before deleting:\n"); outlist(head); fun(head); printf("The list after deleting:n"); outlist(head); }
问答题请编写一个函数,用来删除字符串中的所有空格。
例如,输入asd af aa z67,则输出为asdafaaz67。
注意:请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
#include<stdio.h>
#include<ctype.h>
#include<conio.h>
#include<stdlib.h>
void fun(char*str)
{
}
main()
{
char str[81];
char Msg[]="Input a string:";
int n;
FILE*out;
printf(Msg);
gets(str);
puts(str);
fun(str);
printf("***str:%s/n",str);
/******************/
out=fopen("out.dat","w");
fun(Msg);
fprintf(out,"%s",Msg);
fclose(out);
/******************/
}
问答题下列给定程序的功能是:从键盘输入若干行字符串(每行不超过80个字符),写入文件myfile4.txt中,用#作字符串输入结束的标志,然后将文件的内容显示在屏幕上。文件的读写分别由函数ReadText和WriteText实现。
请在程序的下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。
注意:部分源程序在文件BLANK1.C中。不得增行或删行,也不得更改程序的结构!
#include
#include #include void WriteText(FILE*); void ReadText(FILE*); main() {FILE*fp; if((fp=fopen(''myfile4.txt'',''W''))==NULL) {printf(''open fail!\n'');exit(0);} WriteText(fp); fclose(fp); if((fp=fopen(''myfile4.txt'',''r''))==NULL) {printf(''open fail!1\n'');exit(0);} ReadText(fp); fclose(fp); } /**********found**********/ void WfiteText(FILE【1】) {char str[81]; printf(''\nEnter string with #to end:\n''); gets(str); while(strcmp(str,''#1'')!=0){ /**********found**********/ fputs(【2】,tw);fputs(''\n'',fw); gets(str); } } void ReadText(FILE*fr) {char str[81]; printf(''Read file and output to screen:\n''); fgets(str,81,fr); while(!feof(fr){ /**********found**********/ printf(''%s'',【3】); fgets(str,81,fr); } }
问答题请编写函数proc(),该函数的功能是:移动一维数组中的内容,若数组中有n个整数,要求把下标从p到n-1(p≤n-1)的数组元素平移到数组的前面。
例如,一维数组中的原始内容为1,2,3,4,5,6,7,8,9,10,11,12,13,14,p的值为4。移动后,一维数组中的内容应为5,6,7,8,9,10,11,12,13,14,1,2,3,4。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。
试题程序:
#include<stdio.h>
#define M 80
void proc(int*w,int p,int n)
}
void main()
int arr[M]={1,2,3,4,5,6,7,8,9,10,11,12,13,14};
int i,p,n=14;
printf("The original data:/n");
for(i=0;i<n;i++)
printf("%3d",arr[i]);
printf("/n/nEnter p:");
scanf("%d",
proc(arr,p,n);
printf("/nThe data after moving:/n");
for(i=0;i<n;i++)
printf("%3d",arr[i]);
printf("/n/n");
问答题下列给定程序中函数fun()的功能是:求两个非零正整数的最大公约数,并作为函数值返回。
例如,若num1和num2分别为49和21,则输出的最大公约数为7;若num1和num2分别为27和81,则输出的最大公约数为27。
请改正程序中的错误,使它能得出正确结果。 注意:不得增行或删行,也不得更改程序的结构。
试题程序 #include
<stdio.h> int fun(int a, int b) { /* * * *
*found* * * * * / int r; t; if(a <
b) { /* * * * *found* * * * * / t=a; a=b;
b=t } r=a % b; / * * * *
*found* * * * * / while(r !=0); { a=b; b=r;
r=a% b; } return b;
} main() { int a, b
printf("请输入两个非0正数整数:/n"); scanf("% d% d", }
问答题下列给定程序中,函数proc()的功能是:统计字符串sub在字符串str中出现的次数。例如,若字符串为bestwishesto you,子字符串为st,则应输出2。
请修改程序中的错误,使它能得出正确的结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include<stdio.h>
proc(char*str, char*sub)
{
int i, j, k, num=0;
//****{ound****
for(i=0, str[i], i++)
for(j=i, k=0; sub[k]==str[j]; k++, j++)
if(sub[k+1]=="/0")
{ num++;
break;
}
return num;
}
void main()
{
char str[80], sub[80];
printf("Input a string:");
gets(str);
printf("Input a sbustring:");
gets(sub);
printf("%d/n", proc(str, sub));
}
问答题下列给定程序中函数fun()的功能是:求出以下数列的前n项之和,和值通过函数值返回。
1,2,3,4,5,6,... 例如,若n=5,则应输出15。
请改正程序中的错误,使其得出正确的结果。 不得增行或删行,也不得更改程序的结构!
试题程序 #include
<stdlib.h> #include <stdio.h> /* * * *found* *
* * / int fun(int n); { /* * * *found* * * *
/ int i /* * * *found* * * * /
sum=0; for(i=1; i<=n; i++) { /* * *
*found* * * * / sum=sum+i; }
return sum; }
问答题给定程序中,函数fun的功能是:
将a所指3×5矩阵中第k列的元素左移到第0列,第k列以后的每列元素行依次左移,原来左边的各列依次绕到右边。
例如,有下列矩阵:
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
若k为2,程序执行结果为
3 4 5 1 2
3 4 5 1 2
3 4 5 1 2
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:部分源程序在文件BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
试题程序:
#1F1clude < stdio.h >
#define M 3
#define N 5
void fun(int(* a)[N],int k)
(int i,j,p,temp;
/*********found*********/
for(p=1;p< =
【1】
;p++)
for(i=0;i < M;i++)
{temp=a[i][0];
/*********found*********/
for(j=0; j <
【2】
;j++)
a[i][j]_a[i][j+1];
/*********found*********/
a[i][N一1]=
【3】
;
}
}
main()
{int x[M][N]={{1,2,3,4,5),
{1,2,3,4,5),{1,2,3,4,5)),i,j;
printf("The array before moving:/n/n");
for(i=0; i < M;i++)
{for(j=0;j < N;j++)
printf("%3 d",x[i][j]);
printf("/n");
}
fun(x,2);
printf("The array after moving:/n/n");
for(i=0;i < M;i++)
{for(j=0;j < N;j++)
prLntf("%3d",x[i][j]);
printf("/n");
}
}
问答题下列程序中,函数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;SLIm=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”); printti("%4.of",a[i]); } printf("/n/nThe result:/n"); for(i=0 j i < kj i++) printf("%6.2f",b[i]); printf("/n/n"); }
问答题给定程序MODI1.C中,函数fun的功能是:判断输入的任何一个正整数n,是否等于某个连续正整数序列之和。若是,则输出所有可能的序列,否则输出“不能分解”。例如:当输入100时,输出:100=9+10+11+12+13+14+15+16 100=18+19+20+21+22请改正函数fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include<stdio.h>void fun(int n){ int j,b,c,m,flag=0; for(b=1;b<=n/2;b++){/*********found*********/ n=m; c=b; while(m!=0&&m>=C){/*********found*********/ m=m-c;c++ }/*********found*********/ if(m!=0) {printf("%d=",n); for(j=b,j<c一1;j++) printf("%d+",j); printf("%d\n",j); flag=1; } }if(flag=0)printf("不能分解\n");}main(){ int n; printf("请输入一个整数:"); scanf("%d",&n); fun(n);}
问答题下列给定程序的功能是:读入一个英文文本行,将其中每个单词的第一个字母改成大写,然后输出此文本行(这里”单词”是指由空格隔开的字符串)。例如,若输入"I am a student to takethe examination",则应输出"I Am A Student To TakeThe Examination"。请改正程序中的错误,使程序能得出正确的结果。注意:部分源程序在文件MODI1.C中,不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:1 #include<stdlib.h>2 #include<string.h>3 #include<conio.h>4 #include<ctype.h>5 #include<stdio.h>6 #include<string.h>7 /*********found*********/8 void upfst(char P)9 {10 int k=0;11 for(;*P;P++)12 if(k)13 {14 if(*P=='')15 k=0;16 }17 else18 {19 if(*P!='')20 {21 k=1;22 *P=toupper(*P);23 }24 }25 }26 void main()27 {28 char chrstr[81]j29 System("CLS");30 printf("\nPlease enter an English text;lihe:");31 gets(chrstr);32 printf("\nBofore changing:\n%s",chrstr);33 upfst(chrstr);34 printf("\nAfter changing:\n%s\n",chrstr);35 }
问答题给定程序MODI1.C中函数fun的功能是:求出两个非零正整数的最大公约数,并作为函数值返回。
例如,若给num1和num2分别输入49和21,则输出的最大公约数为7;若给num1和num2分别输入27和81,则输出的最大公约数为27。
请改正程序中的错误,使它能得出正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
给定源程序:
#include
int fun(int a,int b)
{ int r,t;
if(a
/************found************/
t=a; b=a; a=t;
}
r=a%b;
while(r!=0)
{ a=b; b=r; r=a%b; }
/************found************/
return(a);
}
main()
{ int num1, num2,a;
printf("Input num1 num2: "); scanf("%d%d",
printf("num1= %d num2= %d/n/n",num1,num2);
a=fun(num1,num2);
printf("The maximun common divisor is %d/n/n",a);
}
问答题下列给定程序中,函数fun的功能是:输出M×M整数方阵,然后求两条对角线上元素之和,并作为函数值返回。 请改正程序中的错误,使它能得出正确的结果。 注意:不得增行或删行,也不得更改程序的结构! 试题程序:#include<stdio.h>#define M 5/******found******/int fun(int n,int xx[][]){ int i,j,sum=0; printf(“\nTne%d x%d martrix\n”,M,M); for(i=0;i<M;i++) { for(j=0;j<M;j++)/******found******/ prinff(“%f”,XX[i][j]); prinff(“\n”); } for(i=0;i<rl;i++) 8am+=xx[i][i]+XX[i][n—i一1]; return(sum);}main(){int aa[M][M]={{1,2,3,4,5},{4,3,2,1,0},{6,7,8,9,0l,{9,8,7,6,5},{3,4,5,6,7}};printf(“\nThe sum of all elements On 2 ai.gn.is is%d.”,fun(1Vl,aa));}
问答题下列给定程序中,函数fun的功能是:在形参ss所指字符串数组中查找与形参t所指字符串相同的串,找到后返回该串在字符串数组中的位置(即下标值),若未找到则返回一1。ss所指字符串数组中共有N个内容不同的字符串,且串长小于M。请在程序的下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。注意:部分源程序在文件BLANK1.c中。不得增行或删行,也不得更改程序的结构! #include<stdio.h> #include<string.h> #define N 5 #define M 8 int fun(char(*ss)[M],char*t) { int i; /*********found*********/ for(i=0;i<一[1 1;i++) /*********found*********/ if(strcmp(SS[i],t)==0)return一[2]; retum一1; } main() {char ch[N][M]:{“if”,“while”,“switch”,“int”,“for”},t[M]; int n,i; printf(“\nThe original string\n\n”); for(i=0;i<N;i++)puts(ch[i]); printf(“\n”); printf(“\nEnter a string for search:”);gets(t); 13=fun(eh,t); /***********found***********/ if(n==[3])prinff(“\nDon't found!\n”); else printf(“\nThe position is%d.\n”,n); }
