问答题给定程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的学号、姓名和3门课的成绩。函数fun的功能是将该学生的各科成绩都乘以一个系数a。
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:部分源程序给出如下。
不得增行或删行,也不得更改程序的结构!
试题程序:
#include < stdio.h >
typedef struct
{ int num;
char name[9];
float score[3];
}STU;
void show(STU tt)
{ int.i;
print.f("%d%s:",tt.num,
tt.name);
for(i=0;i < 3;i++)
print:f("%5.1f" ,tt.score[i]);
print:f("/n");
}
/*********found*********/
void modify(
【1】
*ss,float a)
{ int i;
for(i=0;i < 3;i++)
/*********found*********/
ss一 >
【2】
*=a;
}
main()
{ STU std={1,"Zhanghua",76.
5,78.0,82.0};
float:a;
print:f("/nThe original num
bet and name and scores:/n");
show(std);
print:f("knlnput a number:");
scanf("%f",&a);
/*********found*********/
modify(
【3】
,a);
printf ("/nA result of modif
ying:/n");
show(std);
}
问答题给定程序MODI1.C的功能是:读入一个整数k(2≤k≤10000),打印它的所有质因子(即所有为素数的因子)。例如,若输入整数2310,则应输出2、3、5、7、11。 #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; printf("/nPlease enter an integer number between 2 and 10000:");scanf("%d", printf("/n/nThe prime factor(s)of%d is(are):",k); for(j=2;J<=k;j++) if((!(k%j)) printf("/n");
问答题给定程序MODI1.C中函数fun的功能是:计算正整数num的各位上的数字之积。
例如,若输入:252,则输出应该是:20。若输入:202,则输出应该是:0。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include
long fun (long num)
{
/************found************/
long k;
do
{ k*=num%10 ;
/************ found************/
num/=10 ;
} while(num);
return (k);
)
main ()
{ long n ;
printf ("/nPlease enter a number:")
scanf("%ld",
printf("/n%ld/n",fun(n)); }
问答题函数fun()的功能是:交换主函数中两个变量的值。例如,若变量a中的值原为8,b中的值为3,程序运行后a中的值为3,b中的值为8。 #include<stdio.h> /**********found**********/ void fun(int x,int y) int t; /**********found**********/ t=x;x=y;y=t; main() int a,b; a=8;b=3; fun( printf("%d,%d/n",a,b);
问答题下列给定程序中,函数proc()的功能是:先从键盘上输入一个3行3列的矩阵的各个元素的值,然后输出主对角线元素之和。
例如:输入1 2 3 4 5 6 7 8 9,则矩阵为
1 2 3
4 5 6
7 8 9
输出为Sum=15。
请修改函数proc()中的错误,使它能得出正确的结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include<stdio.h>
void proc()
{
int arr[3][3], sum;
int i, j;
//****found****
sum=1;
printf("please input 3*3 array: /n");
for(i=0; i<3; i++)
{
for(j=0; j<3; j++)
//****found****
scanf("%d", arr[i][j]);
}
for(i=0; i<3; i++)
sum=sum+arr[i][i];
printf("Sum=%d/n", sum);
}
void main()
{
proc();
}
问答题编写函数fun,它的功能是:求小于形参n同时能被3与7整除的所有自然数之和的平方根,并作为函数值返回。
例如,若n为1000时,程序输出应为:s=153.909064。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
#include<math.h>
#include<stdio.h>
double fun(int n)
{
}
main()/*主函数*/
{
printf("s=%f/n",fun(1000));
}
问答题下列给定程序中,函数fun的功能是:从低位开始依次取出长整型变量s中偶数位上的数,构成一个新数放在t中。高位仍在高位,低位仍在低位。
例如,当s中的数为7654321时,t中的数为642。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdio.h>
/********found********/
void fun(long s,long t)
(long s1=10;
s/=10;
*t=s%10;
/********found********/
while(s<0)
{s=s/100;
*t=s%10*s1+*t;
s1=s1 *10;
}
}
main()
{long s,t;
printf("/nPlease enter s:");scanf("%ld",&s);
fun(s,&t);
printf("The result is:%ld/n",t);
}
问答题学生的记录由学号和成绩组成,M名学生的数据已在主函数中放入结构体数组s中,请编写函数proc(),它的功能是:函数返回指定学号的学生数据,指定的序号在主函数中输入。若没找到指定的学号,在结构体变量中给学号置空串,给成绩置-1,作为函数值返回(用于字符串比较的函数是strcmp)。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。
试题程序:
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
#define M 16
typedef struct
{char num[10];
int s;
}
STREC;
STREC proc(STREC*a, char*b)
{
}
void main()
{
STREC stu[M]={{"GA005", 85}, {"GA003", 76},
{"GA002", 69}, {"GA004", 85}, {"GA001", 91},
{"GA007", 72}, {"GA008", 64}, {"GA006", 87},
{"GA015", 85}, {"GA013", 91}, {"GA012", 64},
{"GA014", 91}, {"GA011", 77}, {"GA017", 64},
{"GA018", 64}, {"GA016", 72}};
STREC h;
char m[10];
int i;
printf("The original data: /n");
for(i=0; i<M; i++)
{ if(i%4==0)
printf("/n");
//每行输出4个学生记录
printf("%s%3d", stu[i].num, stu[i].s);
}
printf("/n/nEnter the number: ");
gets(m);
h=proc(stu, m);
printf("The data: ");
printf("/n%s%4d/n", h.num, h.s);
printf("/n");
}
问答题请编写函数fun(),它的功能是:实现两个字符串的连接(不使用库函数strcat()),即把p2所指的字符串连接到p1所指的字符串后。 例如,分别输入下面两个字符串: FirstString-- SecondString 则程序输出: FirstString--SecondString [注意] 部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 [试题源程序] #include<stdio.h> #include<conio.h> void fun(char p1[], char p2[]) main() char s1[80], s2[40]; clrscr(); printf("Enter s1 and s2:/n"); scanf("%s%s", s1, s2); printf("s1=%s/n", s1); printf("s2=%s/n", s2); printf("Invoke fun(s1, s2):/n"); fun(s1, s2); printf("After invoking:/n"); printf("%s/n", s1);
问答题学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构件数组s中,请编写函数fun(),它的功能是:把分数最高的学生数据放在h所指的数组中。注意:分数高的学生可能不只一个,函数返回分数最高学生的人数。 注意:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: #include <stdio.h> #define N 16 typedef struct char num[10]; int s; STREC; int fun(STREC *a,STREC *b) main () STREC s [N] = "GA005", 85 , "GA003", 76 , "GA002", 69 , "GA004", 85 , "GA001", 91 , "GA007", 72, "GA008", 64, "GA006", 87, "GA015", 85), ( "GA013", 91 , "GA012", 64 , "GA014", 91 ), "GA011", 66, "GA017", 64 , "GA018", 64 , "GA016", 72 ; STREC h[N]; int i, n; FILE *out; n=fun(s,h); printf("The %d highest score :/n",n); for (i=0; i<n; i++) printf("%s %4d/n ",h[i].num, h[i].s); /*输出最高分学生的学号和成绩* / printf("/n"); out=fopen("out45.dat", "w"); fprintf(out, "%d/n",n); for(i=0; i<n; i++) fprintf(out, "%4d/n ",h[i].s); fclose(out);
问答题函数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");