填空题 给定程序中,函数fun的功能是用函数指针指向要调用的函数,并进行调用。规定在第二空处使fa指向函数f1,在第三空处使fb指向函数f2。当调用正确时,程序输出:
x1=5.000000,x2=3.000000,x1*x1+x1*x2=40.000000
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
double f1(double x)
{ return x*x;}
double f2(double x,double y)
{ return x,y;}
double fun(double a,double b)
{
/**********found**********/
______ (*f)();
double r1,r2;
/**********found**********/
f=______; /* point fountion f1 */
r1=f(a);
/**********found**********/
f=______; /* point fountion f2 */
r2=(*f)(a,b);
return r1+r2;
}
main()
{ double x1=5,x2=3,r;
r=fun(x1,x2);
printf('\nx1=%f,x2=%f,x1*x1+x1*x2=%f\n',x1,x2,r)
}
填空题 给定程序中,函数fun的功能是:判定形参a所指的N×N(规定N为奇数)的矩阵是否是“幻方”,若是,则函数返回值为1;若不是,则函数返回值为0。“幻方”的判定条件是:矩阵每行、每列、主对角线及反对角线上元素之和都相等。
例如,以下3×3的矩阵就是一个“幻方”:
4 9 2
3 5 7
8 1 6
请在程序的下划线处填入正确的内容,使程序得出正确的结果。
注意:部分源程序给出如下。
不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdio.h>
#define N 3
int fun(int(*a)[N])
(int i,j,m1,m2,row,colum;
m1=m2=0;
for(i=0;i<N;i++)
(j=N-i-1;m1+=a[i][i];
m2+=a[i][j];}
if(m1!=m2)return 0;
for(i=0;i<N;i++){
/**********found**********/
row=colum=______;
for(j=0;j<N;j++)
(row+=a[i][j];colurn+=a[j][i];}
/**********found**********/
if((row!=colum)______(row!=m1))
return 0;
}
/**********found**********/
return______;
}
main()
{int x[N][N],i,j;
printf('Enter number for array:\n');
for(i=0;i<N;i++)
for(j=0;j<N;j++)
scanf('%d',x[i][j]);
printf('Array:\n');
for(i=0;i<N;i++)
{for(j=0;j<N;j++)
printf('%3d',x[i][j]);
printf('\n');
}
if(fun(x))printf('The Array is a magic square.\n');
else printf('The Array isn't a magic square\n');
}
填空题下列给定程序中,函数fun的功能是计算下式直到,并将计算结果作为函数值返回。例如,若形参e的值为1e-3,函数的返回值为2.985678。请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。注意:部分源程序给出如下。不得增行或删行,也不得更改程序的结构!试题程序:#include<stdio.h>doublefun(doublee){inti;doubles,x;/*********found*********/s=0;i=______;x=1.0;while(x>e){/*********found*********/______;/*********found*********/x=(2.0*i-1)/((______)*(2.0*i));s=s+x;}returns;}main(){doublee=1e-3;printf('\nTheresultis:%f\n',fun(e));}
填空题 给定程序中,函数fun的功能是:调用随机函数产生20个互不相同的整数放在形参a所指数组中(此数组在主函数中已置0)。
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:不得增行或删行,也不得更改程序的结构!
试题程序:
#include <stdlib.h>
#include <stdio.h>
#define N 20
void fun(int *a)
{int i,x,n=0;
x=rand()% 20;
/*********found*********/
while(n<______)
{for(i=0;i<n;i++)
/*********found*********/
if(x==a[i])
______;
/*********found*********/
if(i==______)
{a[n]=x;n++;}
x=rand()% 20;
}
}
main()
{int x[N]={0},i;
fun(x);
printf('The result : \n');
for(i=0;i<N;i++)
{printf('% 4d',x[i]);
if((i+1)% 5==0)printf('\n');
}
printf('\n\n');
}
填空题 给定程序中,函数fun的功能是:计算出带有头结点的单向链表中各结点数据域中值之和作为函数值返回。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
#include<stdio.h>
#include<stdlib.h>
#define N 8
typedef struct list
{int data;
struct list *next;
}SLIST;
SLIST*creatlist(int*);
void outlist(SLIST*);
int fun(SLIST*h)
{SLIST *p;int s=0;
p=h->next;
while(p)
{
/**********found**********/
s+=P->______;
/**********found**********/
p=p->______;
}
return s;
}
main()
{SLIST*head;
int a[N]={12,87,45,32,91,16,20,48};
head=creatlist(a);outlist(head);
/**********found**********/
printf('\nsum=%d\n',fun(______));
}
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('->%dtt,p->data);p=p->next;}
while(p!=NULL);
printf('->End\n');
}
}
填空题 给定程序中,函数fun的功能是将形参给定的字符串、整数、浮点数写到文本文件中,再用字符方式从此文本文件中逐个读入并显示在终端屏幕上。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
不得增行或删行,也不得更改程序的结构!
给定源程序:
#include<stdio.h>
void fun(char*s,int a,double f)
{
/**********found**********/
______fp;
char ch;
fp=fopen('file1.txt','w');
fprintf(fp,'%s %d %f\n',s,a,f);
felose(fp);
fp=fopen('file1.txt','r');
printf('\nThe result:\n\n');
ch=fgetc(fp);
/**********found**********/
while(!feof(______)){
/**********found**********/
putchar(______);ch=fgetc(fp);}
putchar('\n');
fclose(fp);
}
main()
{char a[10]='Hello!';int b=12345;
double c=98.76;
fun(a,b,c);
}
填空题 下列给定程序中,函数fun的功能是:在形参s所指字符串中寻找与参数c相同的字符,并在其后插入一个与之相同的字符,若找不到相同的字符则不做任何处理。
例如,若s所指字符串为“baacda”,c中的字符为a,执行后s所指字符串为“baaaacdaa”。
请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。
注意:部分源程序给出如下。
不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdio.h>
void fun(char *s, char c)
{ int i,j,n;
/*********found*********/
for(i=0; s[i]! =______; i++)
if(s[i]==c)
{
/*********found*********/
n=______;
while(s[i+1+n]!='\0')
n++;
for(j=i+n+1; j>i;
j--)
s[j+1]=s[j];
/*********found*********/
s[j+1]=______;
i=i+1;
}
}
main()
{ char s[80]='baacda', c;
printf('\nThe string: %s\n',s);
printf('\nInput a character: ');
scanf('%c',c);
fun(s,c);
printf('\nThe result is: %s\n',s);
}
填空题给定程序中,函数fun的功能是计算下式:直到,并把计算结果作为函数值返回。例如,若形参e的值为1e-3,函数的返回值2.985678。请在程序的下划线处填入正确的内容,并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.c中,不得增行或删行,也不得更改程序的结构!给定源程序如下:#includestdio.hdoublefun(doublee){inti;doubles,x;/**********found**********/s=0;i=__1__;x=1.0;while(xe){/**********found**********/__2__;/**********found**********/x=(2.0*i-1)/((__3__)*(2.0*i));s=s+x;}returns;}main(){doublee=1e-3;printf('\nTheresultis:%f\n',fun(e));}
填空题 给定程序中已建立一个带有头结点的单向链表,链表中的各结点按数据域递增有序链接。函数fun的功能是:删除链表中数据域值相同的结点,使之只保留一个。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include<stdio.h>
#inolude<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(______);
/**********found**********/
q=p->______;
}
else
{p=q;
/**********found**********/
q=q->______;
}
}
}
}
STIST *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('\nThe 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('\nThe list before deleting:\n'); outlist(head);
fun(head);
printf('\nThe list after deleting:\n'); outlist(head);
}
填空题
给定程序中函数fun的功能:计算出形参s所指字符串中包含的单词个数,作为函数值返回。为便于统计,规定各单词之间用空格隔开,字符串中只有字母与空格。
例如,形参s所指的字符串为:This is a C language program,函数的返回值为6。
请在程序的下划线处填入正确的内容,并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.c中。不得增行或删行,也不得更改程序的结构!
给定源程序如下:
#include stdio.h
int fun(char *s)
{ int n=0, flag=0;
while(*s!='\0')
{ if(*s!=' ' flag==0) {
/**********found**********/
______; flag=1;}
/**********found**********/
if (*s==' ') flag=______;
/**********found**********/
______;
}
return n;
}
main()
{ char str[81]; int n;
printf('\nEnter a line text:\n'); gets(str);
n=fun(str);
printf('\nThere are %d words in this text.\n\n',n);
}
填空题
给定程序中函数fun的功能:把形参s所指字符串中最右边的n个字符复制到形参t所指字符数组中,形成一个新串。若s所指字符串的长度小于n,则将整个字符串复制到形参t所指字符数组中。
例如,形参s所指的字符串为abcdefgh,n的值为5,程序运行后,t所指字符数组中的字符串应为defgh。
请在程序的下划线处填入正确的内容,并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.c中。不得增行或删行,也不得更改程序的结构!
给定源程序如下:
#include stdio.h
#include string.h
#define N 80
void fun(char *s, int n, char *t)
{ int len,i,j=0;
len=strlen(s);
/**********found**********/
if(n=len) strcpy(__1__);
else {
/**********found**********/
for(i=len-n; i=len-1; i++) t[j++]= __2__ ;
/**********found**********/
t[j]= __3__ ;
}
}
main()
{ char s[N],t[N]; int n;
printf('Enter a string: ');gets(s);
printf( 'Enter n:'); scanf('%d',n);
fun(s,n,t);
printf('The string t : '); puts(t);
}
填空题 下列给定程序中,函数fun的功能是进行数字字符转换。若形参ch中是数字字符‘0’~‘9’,则将‘0’转换成‘9’,‘1’转换成‘8’,‘2’转换成‘7’,…,‘9’转换成‘0’;若是其他字符则保持不变;并将转换后的结果作为函数值返回。
请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。
注意:部分源程序给出如下。
不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdio.h>
/********found********/
______ fun(char ch)
{
/********found********/
if (ch>='0' ______)
/********found********/
return'9'-(ch-______);
return ch;
}
main()
{ char c1, c2;
printf(' \nThe result : \n');
c1='2'; c2 = fun(c1);
printf('c1=%c c2=% c\n',c1, c2);
c1='8'; c2 = fun(c1);
printf('c1=%c c2=% c\n', c1, c2);
c1='a'; c2=fun(c1);
printf('c1=%c c2=% c\n', c1, c2);
}
填空题 给定程序中,函数fun的功能是:在形参ss所指字符串数组中,将所有串长超过k的字符串中右边的字符删除,只保留左边的k个字符。ss所指字符串数组中共有N个字符串,且串长小于M。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
不得增行或删行,也不得更改程序的结构!
给定源程序:
#include<stdio.h>
#include<string.h>
#define N 5
#define M 10
/**********found**********/
void fun(char(*ss)______,int k)
{int i=0;
/**********found**********/
while(i<______){
/**********found**********/
ss[i][k]=______;i++;}
}
main()
{char x[N][M]={'Create','Modify','Sort','skip','Delete'};
int i;
printf('\nThe original string\n\n');
for(i=0;i<N;i++)puts(x[i]);printf('\n');
fun(x,4);
printf('\nThe string after deleted:\n\n');
for(i=0;i<N;i++)puts(x[i]);printf('\n');
}
填空题 给定程序中,函数fun的功能是:将形参s所指字符串中的数字字符转换成对应的数值,计算出这些数值的累加和作为函数值返回。
例如,形参s所指的字符串为:abs5def126jkm8,程序执行后的输出结果为:22。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
不得增行或删行,也不得更改程序的结构!
给定源程序:
#include<stdio.h>
#include<string.h>
#include<ctype.h>
int fun(char*s)
{int sum=0;
while(*s){
/**********found**********/
if(isdigit(*s))sum+=*s-______;
/**********found**********/
______;
}
/**********found**********/
return______;
}
main()
{char s[81];int n;
printf('\nEnter a string:\n\n');gets(s);
n=fun(s);
printf('\nThe result is: %d\n\n',n);
}
填空题 下列给定程序中,函数fun的功能是:在带头结点的单向链表中,查找数据域中值为ch的结点。找到后通过函数值返回该结点在链表中所处的顺序号;若不存在值为ch的结点,函数返回0值。
请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。
注意:部分源程序给出如下。
不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdio.h>
#include<stdlib.h>
#define N 8
typedef struct list
{ int data;
struct list *next;
} SLIST;
SLIST * creatlist(char *);
void outlist(SLIST *);
int fun (SLIST *h, char ch)
{ SLIST * p; int n=0;
p=h->next;
/*********found*********/
while(p!=______)
{ n++;
/*********found*********/
if(p->data==ch)
return ______;
else p=p->next;
}
return 0;
}
main()
{ SLIST *head; int k; char ch;
char a[N]={'m','p','g','a','w','x','r','d'};
head=treatlist(a);
outlist(head);
printf('Enter a letter:');
scanf('%c',ch);
/*********found*********/
k=fun(______);
if (k==0)
printf('\nNot found!\n');
else
printf ('The sequence number is : %d\n',k);
}
SLIST * creatlist(char *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('\nThe list is NULL!\n');
else
{ printf('\nHead');
do
{ printf('->%c',
p->data); p=p->next;}
while(p!=NULL);
printf('->End\n');
}
}
填空题下列给定程序中,函数fun的功能是:计算如下公式直至,并且把计算结果作为函数值返回。例如,若形参e的值为le-3,则函数返回值为0.551690。请在下划线处填入正确的内容,使程序得出正确的结果。注意:部分源程序给出如下。不得增行或删行,也不得更改程序的结构!试题程序:#include<stdio.h>doublefun(doublee){inti,k;doubles,t,x;s=0;k=1;i=2;/********found********/x=______/4;/********found********/while(x______e){s=s+k*x;k=k*(-1);t=2*i;/********found********/x=______/(t*t);i++;}returns;}main(){doublee=le-3;printf('\nTheresultis:%f\n',fun(e));}
填空题 给定程序中,函数fun的功能是:对形参s所指字符串中下标为奇数的字符按ASCII码大小递增排序,并将排序后下标为奇数的字符取出,存入形参p所指字符数组中,形成一个新串。
例如,形参s所指的字符串为:baawrskjghzlicda,执行后p所指字符数组中的字符串应为:aachjlsw。
请在程序的下划线处填入正确的内容,使程序得出正确的结果。
不得增行或删行,也不得更改程序的结构!
给定源程序:
#include <stdio.h>
void fun(char *s, char *p)
{ int i,j,n,x,t;
n=0;
for(i=0; s[i]!='\0'; i++)n++;
for(i=1; i<n-2; i=i+2){
/**********found**********/
______;
/**********found**********/
for(j=______+2;j<n;j=j+2)
if(s[t]>s[j])t=j;
if(t!=i)
{x=s[i]; s[i]=s[t]; s[t]=x;}
}
for(i=1,j=0;i<n;i=i+2,j++) p[j]=s[i];
/**********found**********/
p[j]=______;
}
main()
{ char s[80]='baawrskjghzlicda',p[50];
printf('\nThe original string is:%s\n',s);
fun(s,p);
printf('\nThe result is:%s\n',p);
}
填空题
给定程序中函数fun的功能:将形参指针n所指变量中各位上为偶数的数去除,剩余的数按原来从高位到低位的顺序组成一个新的数,并通过形参指针n传回所指变量。
例如,输入一个数27638496,新的数为739。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.c中。不得增行或删行,也不得更改程序的结构!
给定源程序如下:
#include stdio.h
void fun(unsigned long *n)
{ unsigned long x=0, i; int t;
i=1;
while(*n)
/**********found**********/
{ t=*n % __1__;
/**********found**********/
if(t%2!= __2__)
{ x=x+t*i; i=i*10; }
*n =*n /10;
}
/**********found**********/
*n=__3__;
}
main()
{ unsigned long n=-1;
while(n99999999||n0)
{ printf('Please input(0n100000000): '); scanf('%ld',n); }
fun(n);
printf('\nThe result is: %ld\n',n);
}
填空题 给定程序的功能是:从键盘输入若干行文本(每行不超过80个字符),写到文件myfile4.txt中,用-1(独立一行)作为字符串输入结束的标志。然后将文件的内容读出显示在屏幕上。文件的读写分别由自定义函数ReadText和WriteText实现。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
不得增行或删行,也不得更改程序的结构!
给定源程序:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
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!!\n');exit(0);}
ReadText(fp);
fclose(fp);
}
/**********found**********/
void WriteText(FILE______)
{char str[81];
printf('\nEnter string with-1 to end:\n');
gets(str);
while(strcmp(str,'-1')!=0){
/**********found**********/
fputs(______,fw);fputs('\n',fw);
gets(str);
}
}
void ReadText(FILE*fr)
{char str[81];
printf('\nRead file and output to screen:\n');
fgets(str,81,fr);
while(!feof(fr)){
/**********found**********/
printf('%s',______);
fgets(str,81,fr);
}
}
填空题 给定程序的功能是:调用函数fun将指定源文件中的内容复制到指定的目标文件中,复制成功时函数返回值为1,失败时返回值为0。在复制的过程中,把复制的内容输出到终端屏幕。主函数中源文件名放在变量sfname中,目标文件名放在变量tfname中。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
#include<stdio.h>
#include<stdlib.h>
int fun(char*source,char*target)
{FILE*fs,*ft;char ch;
/**********found**********/
if((fs=fopen(source,______))==NULL)
return 0;
if((ft=fopen(target,'w'))==NULL)
return 0;
printf('\nThe data in file:\n');
ch=fgetc(fs);
/**********found**********/
while(!feof(______))
{putchar(ch);
/**********found**********/
fputc(ch,______);
ch=fgetc(fs);
}
fclose(fs);fclose(ft);
printf('\n\n');
return 1;
}
main()
{char sfname[20]='myfilel',tfname[20]='myfile2';
FILE*myf;int i;char c;
myf=fopen(sfname,'w');
pfintf('\nThe original data:\n');
for(i=1;i<30;i++){c='A'+rand()%25;fprintf(myf,'%c',c);printf('%c',c);}
fclose(myf);printf('\n\n');
if(fun(sfname,tfname))printf('Succeed!');
else printff'Fail!');
}