问答题
请编写函数fun,它的功能是:求出ss所指字符串中指定字符的个数,并返回此值。
例如,若输入字符串:123412132,输入字符为:1,则输出:3。
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include<stdio.h>
#include<string.h>
#define M 81
int fun(char *ss, char c)
{
}
main()
{ char a[M], ch;
void NONO();
printf("/nPlease enter a string:"); gets(a);
printf("/nPlease 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);
fscanf(rf, "%s", b);
ch=*b;
fprintf(wf, "%c=%d/n", ch, fun(a, ch));
}
fclose(rf);
fclose(wf);
}
问答题函数fun的功能是:将s所指字符串中下标为偶数同时ASCII值为奇数的字符删除,s所指串中剩余的字符形成的新串放在t所指的数组中。
例如,若s所指字符串中的内容为"ABCDEFG12345",其中字符C的ASCII码值为奇数,在数组中的下标为偶数, 因此必须删除;而字符1的ASCII码值为奇数,在数组中的下标也为奇数,因此不应当删除,其它依此类推。
最后t所指的数组中的内容应是"BDF12345"。
注意: 部分源程序存在文件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();
}
问答题三个整数a、b、c,由键盘输入,输出其中最大的一个数。
问答题函数fun的功能是:将s所指字符串中除了下标为奇数、同时ASCII值也为奇数的字符之外,其余的所有字符都删除,串中剩余字符所形成的一个新串放在t所指的数组中。
例如,若s所指字符串中的内容为:“ABCDEFG12345”,其中字符A的ASCII码值虽为奇数,但所在元素的下标为偶数,因此必需删除;而字符1的ASCII码值为奇数,所在数组中的下标也为奇数,因此不应当删除,其它依此类推。最后t所指的数组中的内容应是:“135”。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
给定源程序:
#include<stdio.h>
#include<string.h>
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);
}
问答题下列给定程序中,函数fun的功能是:求两个非零正整数的最大公约数,并作为函数值返回。 请改正程序中的错误,使它能得出正确结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! 试题程序: #include<stdio.h> int fun(int a, int b) int r, t; if(a<b) t=a; b=a; a=t; /******************found*******************/ r=a%b; while(r!=0) a=b; b=r; r=a%b; /******************found*******************/ return(a); void main() int num1, num2, a; printf("Input num1 num2:"); scanf("%d%d", &num1, &num2); printf("num1=%d num2=%d/n/n", num1, num2); a=fun(num1, num2); printf("The maximun common divisor is%d/n/n",a);
问答题给定程序MODI1.C中fun函数的功能是:求出以下分数序列的前n项之和。和值通过函数值返回main函数。例如,若n=5,则应输出:8.391667。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!1#include<stdio.h>2/**********found**********/3fun(intn)4{inta=2,b=1,c,k;5doubles=0.0;6for(k=1;k<=n;k++)7{s=s+1.0*a/b;8/**********found**********/9c=a;a+=b;b+=c;10}11return(s);}12main()13{intn=5;14printf(''\nThevalueoffunctionis:%1f\n'',fun(n));15}
问答题函数fun的功能是将s所指字符串中下标为偶数同时ASCII值为奇数的字符删除,s所指串中剩余的字符形成的新串放在t所指的数组中。
例如,若s所指字符串中的内容为“ABCDEFG12345”,其中,字符C的ASCII码值为奇数,在数组中的下标为偶数,因此必须删除;而字符1的ASCII码值为奇数,在数组中的下标也为奇数,因此不应当删除,其他依此类推。最后t所指的数组中的内容应是“BDF12345”。
注意:部分源程序存在文件PROG1.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入编写的若干语句。
给定源程序如下。
#include<stdio.h>
#include<string.h>
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);
}
问答题请编写函数fun(),其功能是:计算并输出下列多项式值。
S=(1+1/2)+(1/3+1/4)+…+(1/(2n-1)+l/2n)
例如,若主函数从键盘给n输入12后,则输出为 S=3.775958。
n的值要求大于1但不大于100。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include<stdio.h>
double fun(int n)
{
}
main()
{
int n;
double s;
printf("/nlnput n:");
scanf("%d",&n);
s=fun(n);
printf("/ns=%f/n",s);
}
问答题函数fun的功能是:把形参a所指数组中的奇数按原顺序依次存放到a[0]、a[1]、a[2]、……中,把偶数从数组中删除,奇数个数通过函数值返回。例如:
若a所指数组中的数据最初排列为:9、1、4、2、3、6、5、8、7,删除偶数后a所指数组中的数据为:9、1、3、5、7,返回值为5。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在
下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include<stdio.h>
#define N 9
int fun(int a[], int n)
{ int i, j;
j=0;
for(i=0; i<n; i++)
/**********found**********/
if(a[i]%2==______)
{
/**********found**********/
a[j]=a[i]; ______;
}
/**********found**********/
return ______;
}
main()
{int b[N]={9,1,4,2,3,6,5,8,7), i, n;
printf("/nThe original data:/n");
for(i=0; i<N; i++) printf("%4d", b[i]);
printf("/n");
n=fun(b, N);
printf("/nThe number of odd:%d/n", n);
printf("/nThe odd number:/n");
for(i=0; i<n; i++)printf("%4d", b[i]);
printf("/n");
}
问答题下列给定程序中,函数fun的功能是:实现两个变量值的交换,规定不允许增加语句和表达式。 例如,变量a中的值原为8,b中的值原为3,程序运行后a中的值为3,b中的值为8。 请改正程序中的错误,使它得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! 试题程序: #include<stdlib.h> #include<conio.h> #include<stdio.h> int fun(int*x,int Y) int f; /*******found********/ t=x;x=y; /********found********/ return(y); void main() int a=3,b=8; system("CLS"); printf("%d%d/n",a,b); b=fun( printf("%d%d/n",a,b);
问答题程序通过定义学生结构体变量,存储了学生的学号、姓名和三门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是从形参filename所指的文件中读入学生数据,并按照学号从小到大排序后,再用二进制方式把排序后的学生数据输出到filename所指的文件中,覆盖原来的文件内容。 请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。 注意:不得增行或删行,也不得更改程序的结构! 试题程序:nclude<stdio.h>#define N 5typedef struct student{ long sno; char name[10]; float score[3];}STU;void fun(char*filename){ FILE*fp;int i,j; STU s[N],t;/******found ******/fp=fopen(filename,___1___);fread(s,sizeof(STU),N,fp); felose(fp); for(i=0;i<N一1;i++) for(j=i+1;j<N;j++) if(s[i].sno___2___s[j].sno) { t=s[i];s[i]=8[j];s[j]=t; } fp=fopen(filename,“wb”);/*****found*****/ ___3___(s,sizeof(STU),N,fp); fclose(fp);}main(){STU[N]={“10005,”ZhangSan”,95,80,88}{10003,“LiSi”,85,70,78},{10002,“CaoKai”,75,60,88},{10004,“FangFang”,90,82,87},{10001,“NaChao”,91,92,77}},ss[N];int i,j;FILE*fp;fp=fopen(“student.dat”,“wb”);fwrite(t,sizeof(STU),5,fp);felose(fp);prinff(“\nThe original data:\n”);for(j=0;j<N;j++){ prinff(“\nNo:%ld Name:%一8sScores:“,t[j].sno,t[j].name); for(i=0;i<3;i++) printf(“%6.2f”,t[J]。score[i]); printf(“\n”); } fun(“student.dat”); prinff(“\nThe data after sorting:\n”); fp=fopen(“student.dat”,”rb”); fread(ss,sizeof(STU),5,fp); fclose(fp); for(j=0;j<N;j++) { prinff(“\nNo:%ld Name;%一8sScores:“,ss[j].sno,ssrj].name); for(i=0;i<3;i++) prinff(“%6.2f”,8s[j].score[i]); printf(“\n”); }}
问答题下列给定程序中,函数proc()的功能是找出100~m(m不大于1000)之间百位数字加十位数字等于个位数字的所有整数,把这些整数放在s所指的数组中,个数作为函数值返回。
请修改程序中的错误,使它能得到正确结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include<stdio.h>
#define M 1000
int proc(int*s, int n)
{
int i, j, k, a, b, c;
j=0;
for(i=100; i<n; i++)
{
//****found****
k=n;
a=k%10;
k/=10;
b=k%10;
c=k/10;
if(a==b+c)
//****found****
s[j]=i;
}
return j;
}
void main()
{
int a[M], m, num=0, i;
do
{
printf("/nEnter m(<=1000):");
scanf("%d",
}
while(m>1000);
num=proc(a, m);
printf("/n/nThe result: /n");
for(i=0; i<num; i++)
printf("%5d", a[i]);
printf("/n/n");
}
问答题给定程序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 2l 45 38
第5组数为:18 5 8中值为:8替换后的数列为:6 6 7 18
18 18 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
8 21 45
38
第8组数为:2l 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 1 0
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,4 5,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的功能是:在有n个元素的结构体数组std中,查找有不及格科目的学生,找到后输出学生的学号;函数的返回值是有不及格科目的学生人数。
例如,主函数中给出了4名学生的数据,则程序运行的结果为:
学号:N1002 学号:N1006
共有2位学生有不及格科目
请在程序的下划线处填入正确的内容,并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!
#include
typedef struct
{ char num [ 8];
double score [2];
***********fond***********/
}____(1)____;
int fun(STU std[ ],int n)
{ int i,k=0;
if ( std [i] .score [0]<60 ____(2)____ std [i]
score [1]<60)
{ k++; printf("学号:%s",std[i] .num);}
/**********found**********/
return____(3)____ ;
}
main()
{STU std[4]={"N1001",76.5,82.0,"N1002”,53.5,73.0,"N1005",80.5,66.0,"N1006",
81.0,56.0];
printf "'/n共有%d位学生有不及格科曰/n",fun (std,4) );
}
问答题某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出,请编写函数fun,其功能是:求出该学生的平均分,并放入记录的ave成员中。 例如,学生的成绩是:85.5,76,69.5,85,91,72,64.5,87.5,则他的平均分应为78875。 注意:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun部位中填入你编写的若干语句。 试题程序: #include<stdio.h> #define N 8 typedef struct Char num[10]; double s[N]; double ave; STREC; void fun(STREC*a) void main() STREC S=("GA005",85.5,76,69.5,85,91,72,64.5,87.5); int i; fun( printf("The%s'S student data:/n",snum); for(i=0;i<N;i++) printf("%4.1f/n",s.s[il); printf("/nave=%7.3f/n",s.ave);
问答题printf("%5d ",aa[i]);
问答题用筛选法可得到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[10000], 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+=【l】)a[j] = 0; i++; /**********found**********/while (【2】==0)i++; }printf("/nThe prime number between 2 to %d/n", n) ; for (i=2; i<=n; i++)/********** found********** /if (a[i] !=【3】){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); }
问答题
函数fun的功能是:将a、b中的两个两位正整数合并形成一个新的整数放在c中。合并的方式是:将a中的十位和个位数依次放在变量c的千位和十位上,b中的十位和个位数依次放在变量c的个位和百位上。
例如,当a=45,b=12。调用该函数后,c=4251。
注意:部分源程序存在文件PROG1.C中。数据文件IN.DAT中的数据不得修改。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h>
void fun(int a,int b,long *c)
{
}
void NONO()
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *rf,*wf;
int i,a,b;long c;
rf=fopen("in.dat","r");
wf=fopen("out.dat","w");
for(i=0;i<10;i++) {
fscanf(rf,"%d,%d",
fun(a,b,
fprintf(wf,"a=%d,b=%d,c=%ld/n",a,b,c);
}
fclose(rf);
fclose(wf);
}
main()
{ int a,b;long c;void NONO();
printf("Input a,b:");
scanf("%d%d",
fun(a,b,
printf("The result is:%ld/n",c);
NONO();
}
问答题程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是重写形参filename所指文件中最后一个学生的数据,即用新的学生数据覆盖该学生原来的数据,其他学生的数据不变。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构!1 #include<stdio.h>2 #define N 53 typedef struct student{4 long sno;5 char name[10];6 float score[3];7 } STU;8 void fun(char *filename,STU n)9 {FILE*fp;10 /**********found**********/11 fp=fopen(__1__,''rb+'');12 /**********found**********/13 fseek(__2__,-(long)sizeof(STU),SEEK_END);14 /**********found**********/15 fwrite(&n, sizeof(STU), 1,__3__);16 fclose(fp);17 }18 main()19 { 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}};20 STU n={10006,''ZhaoSi'',55,70,68},ss[N];21 int i,j;FILE *fp;22 fp=fopen(''student.dat'',''wb'');23 fwrite(t,sizeof(STU),N,fp);24 fclose(fp);25 fp=fopen(''student.dat'',''rb'');26 fread(ss,sizeof(STU),N,fp);27 fclose(fp);28 printf(''\nThe original data:\n\n'');29 for(j=0;j<N;j++)30 { printf(''\nNo:%1d Name:%-8s Scores:'',ss[j].sno,ss[j].name);31 for(i=0;i<3;i++) printf(''%6.2f'',ss[j].score[i]);32 printf(''\n'');33 }34 fun(''student.dat'',n);35 printf(''\nThe data after modifing:\n\n'');36 fp=fopen(''student.dat'',''rb'');37 fread(ss,sizeof(STU),N,fp);38 fclose(fp);39 for(j=0;j<N;j++)40 { printf(''\nNo:%1d Name:%-8s Scores:'',ss[j].sno,ss[j].name);41 for(i=0;i<3;i++)printf(''%6.2f'',ss[j].score[i]);42 printf(''\n'');43 }44 }
问答题人员的记录由编号和出生年、月、日组成,N名人员的数据已在主函数中存人结构体数组std中。函数fun的功能是:找出指定出生年份的人员,将其数据放在形参k所指的数组中,由主函数输出,同时由函数值返回满足指定条件的人数。请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。注意:部分源程序给出如下。不得增行或删行,也不得更改程序的结构!试题程序:
