问答题下列给定程序中函数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); }
问答题程序通过定义学生结构体变量,存储了学生的学号、姓名和三门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是从形参filename所指的文件中读入学生数据,并按照学号从小到大排序后,再用二进制方式把排序后的学生数据输出到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)
{FILE*fp;int i,j;
STU s[N],t ;
/*********found*********/
fp=fopen(filename,
【1】
)j
fread(s,sizeof(STU),N,fp);
fclose(fp);
for(i=0;i<N一1;i++)
for(j=i+1;j<N;j++)
/*********found*********/
if(s[i].sno
【2】
s[j].sno)
{t=s[i]; s[i]=s[j];
s[j]=t;}
fp=fopen(filename,"wb");
/*********found*********/
【3】
(s,sizeof(STU),N,fp);
fclose(fp);
}
main()
{STU t[N]={{ 10005,"ZhangSan",95,80,88},{10003,"LiSi",85,70,78},{10002,"CaoKai",75,60,88},{10004,"FangFang",90,82,87},{10001,"MaChao",91,92,77}},ss[N];
int i,j;FILE* fp;
fp=fopen("student.dat","wb");
fwrite(t,sizeof(STU),5,fp);
fclose(fp);
printf("\n\nThe original data
:\n\n');
for(j=0;j<N;j++)
{printf("\nNo:%id Name:%一8s
Scores:",t[J].sno,t[j].name);
for(i=0;i<3;i++)
printf("%6.2 f",t[j].score[i]);
printf("\n");
}
fun("student.dat");
printf("\n\nThe data after sorting:\n\n");
fp=fopen("student.dat","rb");
fread(ss,sizeof(STU),5,fp);
fclose(fp);
for(j=0;j<N;j++)
{printf("\nNo:%ld Name:%-8s Scores:",ss[j].sno,ss[j].name);
for(i=0;i<3;i++)
printf("%6.2 f",ss[j].scoEe[i]);
printf("\n");
}
}
问答题请编写一个函数,函数的功能是删除字符串中的所有空格。例如,主函数中输入”asd afaa z67”,则输出为”asdafaaz67”。
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
#include
void fun(char *str)
{
}
main ()
{
char str[81];void NONO ();
printf("Input a string:");
gets(str);
puts(str);
fun(str);
printf ("*** str: %s/n",str);
NONO();
}
void NONO ()
{
/*请在此函数内打开文件,输入调试数据,
调用fun函数,输出数据,关闭文件。*/
char str[81];
int n = 0;
FILE *rf, *wf ;
rf = fopen("in.dat","r");
wf = fopen("out.dat","w");
while(n < 10) {
fgets(str, 80, rf);
fun (str);
fprintf(wf, "%s", str);
n++ ;
}
fclose(rf);
fclose(wf);
}
问答题给定程序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=l;
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所指的存储单元中。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include
#include
#define N 8
typedef struct list
{ int data;
struct list *next;
} SLIST;
SLIST *creatlist(int *a);
void outlist(SLIST *);
void fun(SLIST *h, int *n)
{SLIST *p;
/**********found********** /
【1】=0;
p=h->next;
while(p)
{ (*n)++;
/**********found**********/
p=p->【2】;
}
}
main ()
{SLIST *head;
int
a[N]={12,87,45,32,91,16,20,
48},num;
head=creatlist(a);
outlist(head);
/****** ****found**********/
fun (【3】,
printf("/nnumber=%d/n",num);
}
SLIST *creatlist(int a[])
{SLIST *h,*p,*q; int i;
h=p=(SLIST*)malloc(sizeof(SLIST));
for(i=0; idata=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");
}
}
问答题下列给定程序中,函数fun的功能是:将s所指字符串中最后一次出现的与t1所指字符串相同的子串替换成t2所指字符串,所形成的新串放在w所指的数组中。要求t1和t2所指字符串的长度相同。
例如,当S所指字符串中的内容为“abcdabfabc”,t1所指子串中的内容为“ab”,t2所指子串中的内容为“99”时,结果在w所指的数组中的内容应为“abcdabf99c”。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include<conio.h>
#include<stdio.h>
#include<string.h>
void fun(char*s,char*t1,char*t2,char*w)
{
char*p,*r,*a;
strcpy(w,s);
/********found********/
while(w)
{
P=w;
r=t1;
while(*r)
/********found********/
if(*r==*p)
{
r++;
p++;
}
else
{
break;
}
if(*r=="/0")
a=w;
w++;
}
r=t2;
while(*r)
{
*a=*r;
a++;
r++;
}
}
main()
{
char s[100],t1[100],t2[100],w[100];
printf("/nPlease enter string s:");
scanf("%s",s);
printf("/nPlease enter substring t1:");
scanf("%s",t1);
printf("/nPlease enter substring t2:");
scanf("%s",t2);
if(strlen(t1)==strlen(t2))
{
fun(s,t1,t2,w);
printf("/nThe result is:%s/n",w);
}
else
{
printf("/nError;strlen(t1)!=strlen(t2)/n");
}
}
问答题程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是重写形参filename所指文件中最后一个学生的数据,即用新的学生数据覆盖该学生原来的数据,其他学生的数据不变。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include
#define N 5
typedef struct student {
long sno;
char name[10];
float score[3];
} STU;
void fun(char *filename, STU n)
{FILE *fp;
/********* found**********/
fp = fopen(【1】, "rb+");
/********* found**********/
fseek(【2】,
-(long)sizeof(STU), SEEK_END);
/********** found**********/
fwrite(
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,68},
ss[N];
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");
for (j=0; j
问答题假定输入的字符串中只包含字母和*号。请编写函数proc(),它的功能是:只删除字符串前导和尾部的*号,串中字母之间的*号都不删除。形参m给出了字符串的长度,形参h给出了字符串中前导*号的个数,形参e给出了字符串中最后*号的个数。在编写函数时,不得使用c语言提供的字符串函数。 例如,若字符串中的内容为****a*bc*def*g*******,删除后,字符串中的内容则应当是a*bc*def*g。 注意:部分源程序已给出。 请勿改动主函数main和其他函数中的任何内容。 试题程序: #include<stdio.h> #include<conio.h> void proc(char*a, int m, int h, int e) void main() char s[81], *t, *f; int m=0, tn=0, fn=0; printf("Enter a string: /n"); gets(s); t=f=s; while(*t) t++; m++; ) //m为字符串的长度 t--; //指针t指向字符串尾部 while(*t=='*') t--; tn++; //指针t指向最后一个字母,tn统计尾部'*'的个数 while(*f=='*') f++; fn++; //指针f指向第一个字母,tn统计前导'*'的个数 proc(s, m, fn, tn); printf("The string after deleted: /n"); puts(s); )
问答题给定程序中,函数fun的功能是:
在3×4的矩阵中找出在行上最大、在列上最小的那个元素,若没有符合条件的元素则输出相应信息。
例如,有下列矩阵:
1 2 13 4
7 8 10 6
3 5 9 7
程序执行结果为:find:a[2][2]=9
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:部分源程序在文件BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
试题程序:
#inclucte < st c < 10.h >
#define M 3
#define N 4
void fun(int(*a)[N])
{int i=0,j,find=0,rmax,c,k;
while((i < M)&&(!find))
{Emax=a[i][0];c=0;
for(j=1;j < N;j++)
if(Emax < a[i][j]){
/*********found*********/
rmax=a[i][j]; c=
【1】
;}
find=1;k=0;
while(k < M&&find){
/*********found*********/
if(k!=i&&a[k][C] < =Emax)
find=
【2】
;
k++;
}
if(find)
printf("find:a[%d][%d]
=%d/n",i,c,a[i][c]);
/*********found*********/
【3】
;
)
if(!find)
printf("not found!/n");
}
main()
{int x[M][N],i,j;
printf("Enter number for
array:、n");
for(i=0;i < M;i++)
for(j=0;j < N;j++)
scanf("%d",&x[i][j]);
printf("The array:/n");
for(i=0;i < M;i++)
{for(j=0;j < N;j++)
printf("%3 d",x[i][j]);
printf("/n/n");
}
fun(x);
}
问答题假定输入的字符串中只包含字母和*号。请编写函数fun,其功能是:除了尾部的*号之外,将字符中其他的*号全部删除。形参p已指向字符串中最后的一个字母。在编写函数时,不得使用C语言提供的字符串函数。 例如,字符串中的内容为“****A*BC*DEF*G*******”,删除后,字符串中的内容应当是“ABCDEFG*******”。 注意:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容。仅在函数fun的花括号中填入你编写的若干语句。 试题程序: #include<stdio.h> void fun(char*a,char*p) void main() char s[81],*t; printf("Enter a string:/n"); gets(s); t=s; while(*t) t++; t--;/*指针t指向字符串尾部*/ while(*t=='*') t--;/*指针t指向最后一个字母*/ fun(s,t); printf("The string after deleted:/n"); puts(s);
问答题给定程序中,函数fun的功能是:判断形参s所指字符串是否是“回文”(Palindrome),若是,函数返回值为1;不是,函数返回值为0。“回文”是正读和反读都一样的字符串(不区分大小写字母)。 例如,LEVEL和Level是“回文”,而LEVLEV不是。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构!1 #include <stdio.h>2 #include<string.h>3 #include<ctype.h>4 int fun(char *s)5 { char *1p,*rp;6 /**********found**********/7 1p=__1__;8 rp=s+strlen(s)-1;9 while((toupper(*1p)==toupper(*rp))&&(1p<rp)){10 /**********found**********/11 1p++;rp__2__;}12 /**********found**********/13 { if(1p<rp) __3__;14 else return 1;15 }16 main()17 { char s[81];18 printf(''Enter a string:'');scanf(''%s'',s);19 if(fun(s))printf(''\n\''%s\''is a Palindrome.\n\n'',s);20 else printf(''\n\''%s\''isn't a Palindrome.\n\n'',s);21 }