填空题下列给定程序中,函数fun的功能是计算下式:直到,并将计算结果作为函数值返回。例如,若形参e的值为le-3,函数的返回值为2985678。请在下划线处填入正确的内容,使程序得出正确的结果。注意:部分源程序给出如下。不得增行或删行,也不得更改程序的结构!试题程序:#include<stdio.h>doublefun(doublee){inti;doubles,x;/********found********/s=0;i=______;x=1.0;while(x>e){/********found********/______;/********found********/x=(20*i-1)/______;s=s+x;}returns;}main()(doublee=le-3;printf('\nTheresultis:%f\n',fun(e));}
填空题 给定程序中,函数fun的功能是:将形参指针所指结构体数组中的三个元素按num成员进行升序排列。
请在程序的下划线处填入正确的内容,使程序得出正确的结果。
不得增行或删行,也不得更改程序的结构!
给定源程序:
#include <stdio.h>
typedef struct
{ int num;
char name[10];
}PERSON;
/**********found**********/
void fun(PERSON______)
{
/**********found**********/
______ temp;
if(std[0].num>std[1].num)
{ temp=std[0]; std[0]=std[1]; std[1]=temp;}
if(std[0].num>std[2].num)
{ temp=std[0]; std[0]=std[2]; std[2]=temp;}
if(std[1].num>std[2].num)
{ temp=std[1]; std[1]=std[2]; std[2]=temp;}
}
main()
{ PERSON std[]={ 5,'Zhanghu',2,'WangLi', 6,'LinMin'};
int i;
/**********found**********/
fun(______);
printf('\nThe result is:\n');
for(i=0;i<3;i++)
printf('%d,%s\n',std[i].num,std[i].name);
}
填空题 给定程序中,函数fun的功能是:将形参s所指字符串中所有ASCII码值小于97的字符存入形参t所指字符数组中,形成一个新串,并统计出符合条件的字符个数作为函数值返回。
例如,形参s所指的字符串为:Abc@1x56*,程序执行后t所指字符数组中的字符串应为:A@156*。
注意:不得增行或删行,也不得更改程序的结构!
试题程序:
#include <stdio.h>
int fun(char *s,char *t)
{int n=0;
while(*s)
{if(* s<97){
/*********found*********/
*(t+n)=______;n++;}
/*********found*********/
______;
}
*(t+n)=0;
/*********found*********/
return ______;
main()
{char s[81],t[81];int n;
printf('\nEnter a string:\n');
gets(s);
n=fun(s,t);
printf('\nThere are % d letter which ASCII code is less than 97:% s\n',n,t);
}
填空题
给定程序中函数fun的功能:将形参n中,各位上为偶数的数取出,并按原来从高位到低位相反的顺序组成一个新的数,并作为函数值返回。
例如,输入一个整数27638496,函数返回值为64862。
请在程序的下划线处填入正确的内容,并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.c中。不得增行或删行,也不得更改程序的结构!
给定源程序如下:
#include stdio.h
unsigned long fun(unsigned long n)
{ unsigned long x=0; int t;
while(n)
{ t=n%10;
/**********found**********/
if(t%2==__1__)
/**********found**********/
x=__2__+t;
/**********found**********/
n=__3__;
}
return x;
}
main()
{ unsigned long n=-1;
while(n99999999||n0)
{ printf('Please input(0n100000000): '); scanf('%ld',n); }
printf('\nThe result is: %ld\n',fun(n));
}
填空题 请补充函数proc(),该函数的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。
例如,若一维数组中的数据是:1 1 2 2 2 3 4 4 5 5 6 6 6 7 7 8 10 10。
删除后,数组中的内容应该是:1 2 3 4 5 6 7 8 10。
注意:部分源程序如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的横线上填入所编写的若干表达式或语句。
试题程序:
#include<stdio.h>
#define M 80
int proc(int arr[],int n)
{
int i,t,j=0;
t=arr[0];
for(i=1;i<n;i++)
if(______)
;
else
{
______;
t=arr[i];
}
arr[j++]=t;
return j;
}
void main()
{
int arr[M]={1,1,2,2,2,3,4,4,5,5,6,6,6,
7,7,8,10,10},i,n=18;
printf('The original data:\n');
for(i=0;i<n;i++)
printf('%4d',arr[i]);
n=proc(arr,n);
printf('\n\nThe data after deleted;
\n');
for(i=0;i<n;i++)
printf('%4d',arr[i]);
printf('\n');
}
填空题
用筛选法可得到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 (in) {
/**********found**********/
for (j=a[i]*2; j=n; j+=___1___)
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所指数组中的偶数按原顺序依次存放到a[0]、a[1]、a[2]…中,把奇数从数组中删除,偶数的个数通过函数值返回。
例如,若a所指数组中的数据最初排列为:9、1、4、2、3、6、5、8、7,删除奇数后,a所指数组中的数据为:4、2、6、8,返回值为4。
请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。
注意:部分源程序给出如下。
不得增行或删行,也不得更改程序的结构!
试题程序:
#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(______==0) {
/*********found*********/
______ = a[i]; j++;
}
/*********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 even:%d\n', n);
printf ('\nThe even :\n');
for (i=0; i<n; i++)
printf('%4d', b[i]);
printf('\n');
}
改错题
给定程序MODI1.c中函数fun的功能:将s所指字符串的正序和反序进行连接,形成一个新串放在t所指的数组中。
例如,当s所指字符串为“ABCD”时,则t所指字符串中的内容应为“ABCDDCBA”。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
给定源程序如下:
#include stdio.h
#include string.h
/************found************/
void fun (char s, char t)
{
int i, d;
d = strlen(s);
for (i = 0; id; i++) t[i] = s[i];
for (i = 0; id; i++) t[d+i] = s[d-1-i];
/************found************/
t[2*d-1] = '\0';
}
main()
{
char s[100], t[100];
printf('\nPlease enter string S:'); scanf('%s', s);
fun(s, t);
printf('\nThe result is: %s\n', t);
}
改错题 给定程序中的函数Creatlink的功能是创建带头结点的单向链表,并为各结点数据域赋0到m-1的值。
请改正函数Creatlink中指定部位的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
给定源程序:
#include<stdio.h>
#include<stdlib.h>
typedef struct aa
{int data;
struct aa*next;
}NODE;
NODE*Creatlink(int n,int m)
{NODE*h=NULL,*p,*s;
int i;
/**********found**********/
p=(NODE)malloc(sizeof(NODE));
h=p;
p->next=NULL;
for(i=1;i<=n;i++)
{s=(NODE*)malloc(sizeof(NODE));
s->data=rand()%m; s->next=p->next;
p->next=s; p=p->next;
}
/**********found**********/
return p;
}
void outlink(NODE*h)
{NODE*p;
p=h->next;
printf('\n\nTHE LIST:\n\n HEAD');
while(p)
{printf('->%d',p->data);
p=p->next;
}
printf('\n');
}
main()
{NODE*head;
head=Creatlink(8,22);
outlink(head);
}
改错题 下列给定程序的功能是:读入一个英文文本行,将其中每个单词的第一个字母改成大写,然后输出此文本行(这里的“单词”是指由空格隔开的字符串)。例如,若输入“I am a student to takethe examination”,则应输出“I Am A Student To Take The Examination”。
请改正程序中的错误,使程序能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include <ctype.h>
#include <string.h>
#include<stdio.h>
/**********found**********/
void upfst(char p)
{int k=0;
for(;*p;p++)
if(k)
{
if(*p=='')
k=0;
}
else
{
if(*p!='')
{
k=1;
*p=toupper(*p);
}
}
}
main()
{char chrstr[81];
printf('\nPlease enter an English text line:');
gets(chrstr);
printf('\n\nBefore changing:\n%s',chrstr);
upfst(chrstr);
printf('\nAfter changing:\n%s\n',chrstr);
}
改错题下列给定程序中函数fun的功能是:计算并输出下列级数的前N项和SN,直到SN+1的值大于q为止,q的值通过形参传入。例如,若q的值为50.0,则函数值应为49.394948。请改正程序中的错误,使程序能输出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include<stdio.h>double,fun(doubleq){intn;doubles,t;n=2;s=2.0;while(s<=q){t=s;/**********found**********/s=s+(n+1)/n;n++;}printf('n=%d\n',n);/**********found**********/returns;}main(){printf('%f\n',fun(50));}
改错题 下列给定程序中,函数proc()的功能是:从字符串str中,删除所有大写字母'F'。
请修改程序中的错误,使它能得到正确结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include<stdio.h>
void proc(char*str)
{
int i, j;
//****found****
for(i=j=0; str[i]!='0'; i++)
if(str[i]!='F')
//****found****
str[j]=str[i];
str[j]='\0';
}
void main()
{
char str[80];
printf('\nEnter a string: ');
gets(str);
printf('The original string: ');
puts(str);
proc(str);
printf('The string after deleted: ');
puts(str);
printf('\n\n'); }
改错题 给定程序中函数fun的功能是:求出s所指字符串中最后一次出现的t所指子字符串的地址,通过函数值返回,在主函数中输出从此地址开始的字符串;若未找到,则函数值为NULL。
例如,当字符串中的内容为:“abcdabfabcdx”,t中的内容为:“ab”时,输出结果应是:abcdx。当字符串中的内容为:“abcdabfabcdx”,t中的内容为:“abd”时,则程序输出未找到信息:not be found!。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
给定源程序:
#include <stdio.h>
#include <string.h>
char *fun (char *s, char *t)
{
char *p,*r,*a;
/**********found**********/
a=Null;
while(*s)
{ p=s;r=t;
while(*r)
/**********found**********/
if(r==p)
{ r++;p++;}
else break;
if(*r=='\0')a=s;
s++;
}
return a;
}
main()
{
char s[100],t[100],*p;
printf('\nPlease enter string S:');
scanf('%s',s);
printf('\nPlease enter substring t:');
scanf('%s',t);
p=fun(s,t);
if(p)printf('\nThe resultis:%s\n',p);
else printf('\nNot found !\n');
}
改错题 给定程序中函数fun的功能是:从低位开始取出长整型变量s中奇数位上的数,依次构成一个新数放在t中。高位仍在高位,低位仍在低位。
例如,当s中的数为:7654321时,t中的数为:7531。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
给定源程序:
#include<stdio.h>
/**********found**********/
void fun(long s,long t)
{long sl=10;
*t=s%10;
while(s>0)
{s=s/100;
*t=s%10*sl+*t;
/**********found**********/
sl=sl*100;
}
}
main()
{long s,t;
printf('\nPlease enter s:');scanf('%ld',s);
fun(s,t);
printf('The result is:%ld\n',t);
}
活动设计题请编写一个函数fun,它的功能是根据以下公式求π的值(要求满足精度0.0005,即某项小于0.0005时停止迭代):程序运行后,如果输入精度0.0005,则程序输为3.14…。注意:部分源程序存放在文件PROG1.c中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入编写的若干语句。给定源程序如下:#includestdio.h#includemath.hdoublefun(doubleeps){}main(){doublex;voidNONO();printf('Inputeps:');scanf('%lf',x);printf('\neps=%lf,PI=%lf\n',x,fun(x));NONO();}voidNONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*fp,*wf;inti;doublex;fp=fopen('..\\in.dat','r');wf=fopen('..\\out.dat','w');for(i=0;i10;i++){fscanf(fp,'%lf',x);fprintf(wf,'%lf\n',fun(x));}fclose(fp);fclose(wf);}
活动设计题 请编写函数fun,函数的功能是查找x在s所指数组中下标的位置,并作为函数值返回,若x不存在,则返回-1。
注意:请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
#include <stdio.h>
#include <stdlib.h>
#define N 15
void NONO();
int fun (int *s,int x)
{
}
main()
{int a[N]={29,13,5,22,10,9,3,18,22,25,14,15,2,7,27},i,x,index;
printf('a数组中的数据:\n');
for(i=0;i<N;i++)
printf('%4d',a[i]);
printf('\n');
printf('给x输入待查找的数:');
scanf('%d',x);
index=fun(a,x);
printf('index=%d\n',index);
NONO();
}
void NONO()
{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/
FILE *fp,*wf;
int i,j,a[10],x,index;
fp=fopen('in.dat','r');
wf=fopen('out.dat','w');
for(i=0;i<10;i++){
for(j=0;j<10;j++){
fscanf(fp,'%d',a[j]);
}
fscanf(fp,'%d',x);
index=fun(a,x);
fprintf(wf,'%d\n',index);
}
fclose(fp);
fclose(wf);
}
活动设计题
请编写函数fun,它的功能是计算并返回n(包括n)以内能被5或9整除的所有自然数的倒数之和。
例如,在主函数中从键盘给n输入20后,输出为s=0.583333。
注意:要求n的值不大于1000部分源程序存放在文件PROG1.c中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入编写的若干语句。
给定源程序如下:
#include stdio.h
double fun(int n)
{
}
main()
{ int n; double s;
void NONO( );
printf('\nInput n: '); scanf('%d',n);
s=fun(n);
printf('\n\ns=%f\n',s);
NONO();
}
void NONO()
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *rf, *wf ; int n, i ; double s ;
rf = fopen('..\\in.dat','r') ;
wf = fopen('..\\out.dat','w') ;
for(i = 0 ; i 10 ; i++) {
fscanf(rf, '%d', n) ;
s = fun(n) ;
fprintf(wf, '%lf\n', s) ;
}
fclose(rf) ; fclose(wf) ;
}
活动设计题 函数fun的功能是:将s所指字符串中下标为偶数的字符删除,串中剩余字符形成的新串放在t所指数组中。
例如,当s所指字符串中的内容为:“ABCDEFGHIJK”,在t所指数组中的内容应是:“BDFHJ”。
请勿改动主函数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,其功能是:移动一维数组中的内容,若数组中有n个整数,要求把下标从0~p(含p,p小于等于n-1)的数组元素平移到数组的最后。
例如,一维数组中的原始内容为:1、2、3、4、5、6、7、8、9、10;p的值为3。移动后,一维数组中的内容应为:5、6、7、8、9、10、1、2、3、4。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
#include<stdio.h>
#define N 80
void fun(int *w,int p,int n)
{
}
main()
{int a[N]={1,2,3,4,5,6,7,8,9,10,11,12, 13,14,15};
int i,p,n=15;
printf('The original data:\n');
for(i=0;i<n;i++)
printf('%3d',a[i]);
printf('\n\nEnter p:');
scanf('%d',p);
fun(a,p,n);
printf('\nThe data after moving:\n');
for(i:0;i=n;i++)
printf('%3d',a[i]);
printf('\n\n');
}
活动设计题
请编写函数fun,它的功能是:计算并输出n(包括n)以内能被5或9整除的所有自然数的倒数之和。
例如,在主函数中从键盘给n输入20后,输出为:s=0.583333。
注意:要求n的值不大于100。
部分源程序在文件PROG1.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include<stdio.h>
double fun(int n)
{
}
NONO()
{/*请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。 */
FILE *rf, *wf; int n, i; double s;
rf=fopen('in.dat', 'r');
wf=fopen('out.dat', 'w');
for(i=0; i<10; i++) {
fscanf(rf, '%d', n);
s=fun(n);
fprintf(wf, '%lf\n', s);
}
fclose(rf); fclose(wf);
}
main()
{int n; double s;
printf('\nInput n: '); scanf('%d', n);
s=fun(n);
printf('\n\ns=%f\n', s);
NONO();
}