填空题 给定程序中,函数fun的功能是:在带有头结点的单向链表中,查找数据域中值为ch的结点。找到后通过函数值返回该结点在链表中所处的顺序号;若不存在值为ch的结点,函数返回0值。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#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=creatlist(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的功能是:在形参SS所指字符串数组中,查找含有形参substr所指子串的所有字符串并输出,若没找到则输出相应信息。ss所指字符串数组中共有N个字符串,且串长小于M。程序中库函数strstr(s1,s2)的功能是在s1串中查找s2子串,若没有,函数值为NULL,若有,为非NULL。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
不得增行或删行,也不得更改程序的结构!
给定源程序:
#include<stdio.h>
#include<string.h>
#define N 5
#define M 15
void fun(char(*ss)[M],char*substr)
{int i,find=0;
/***********found***********/
for(i=0;i<______;i++)
/***********found***********/
if(strstr(ss[i],______)!=NULL)
{find=1;puts(ss[i]);printf('\n');}
/***********found***********/
if(find==______)
printf('\nDon't found!\n');
}
main()
{char x[N][M]={'BASIC','C langwage','Java','QBASIC','Access'},str[M];
int i;
printf('\nThe original string\n\n');
for(i=0;i<N;i++)puts(x[i]);printf('\n');
printf('\nEnter a string for search:');
gets(str);
fun(x,str);
}
填空题 给定程序中,函数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('\nlnput a character:');
scanf('%c',c);
fun(s,c);
printf('\nThe result is:%s\n',s);
}
填空题 请补充main()函数,该函数的功能是:计算每个学生成绩的平均分,并把结果保存在数组aver中。
例如,当score[N][M]={{83.5, 82, 86, 65, 67}, {80, 91.5, 84, 99, 95}, {90.5, 95, 86, 95, 97}}时,3个学生的平均分为76.7 89.9 92.7。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在main()函数的横线上填入所编写的若干表达式或语句。
试题程序:
#include<stdlib.h>
#include<stdio.h>
#define N 3
#define M 5
void main()
{
int i, j;
static float score[N][M]={{83.5, 82, 86, 65, 67}, {80, 91.5, 84, 99, 95}, {90.5, 95,86, 95, 97}};
float aver[N];
system('CLS');
for(i=0; i<N; i++)
______;
for(i=0; i<N; i++)
{
for(j=0; j<M; j++)
______;
aver[i]/=M;
}
for(i=0; i
printf('\nstudent%d\taverage=%5.1f, i+1, aver[i]);
}
填空题 给定程序中,函数fun的功能是:将自然数1~10以及它们的平方根写到名为myfile3.txt的文本文件中,然后再顺序读出显示在屏幕上。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
不得增行或删行,也不得更改程序的结构!
给定源程序:
#include<math.h>
#include<stdio.h>
intfun(char*fname)
{FILE*fp;int i,n;float x;
if((fp=fopen fname,”w'))==NULL)return ();
for(i=1;i<=10;i++)
/**********found**********/
fprintf(______,'%d %f\n',i,sqrt((double)i));
printf('\nSucceed!!\n');
/**********found**********/
______;
printf('\nThe data in file:\n');
/**********found**********/
if((fp=fopen(______,'r'))==NULL)
return 0:
fscanf(fp,'%d%f',n,x);
while(!feof(fp))
{printf('%d%f\n',n,x);
fscanf(fp,'%d%f',n,x);}
fclose(fp);
return 1;
}
main()
{char fname[]='myfile3.txt';
fun(fname);
}
填空题 给定程序中,函数fun的功能是计算x所指数组中N个数的平均值(规定所有数均为正数),平均值通过形参返回主函数,将小于平均值且最接近平均值的数作为函数值返回,在主函数中输出。
例如,有10个正数:46 30 32 40 6 17 45 15 48 26,平均值为30.500000。主函数中输出m=30。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
给定源程序如下。
#include <stdlib.h>
#include <stdio.h>
#define N 10
double fun(double x[],double*av)
{ int i,j;double d,s;
s=0;
for(i=0;i<N;i++)s=s+x[i];
/***********found*********/
______=s/N;
d=32767;
for(i=0;i<N;j++)
if(x[i]<*av*av-x[i]<=d){
/*********found***********/
d=*av-x[1];j=______;}
/*********found********/
return______;
}
main()
{ int i;
double x[N]={46,30,32,40,6,17,45,15,48,26};
double av,m;
for(i=0;i<N;i++)printf('%4.0f',x[i]);
printf('\n');
m=fun(x,av);
printf('\nThe average is:%f\n',av);
printf('m=%5.0f',m);
printf('\n');
}
填空题 请补充main()函数,该函数的功能是:输入两个正整数num1和num2,求这两个数的最大公约数和最小公倍数。
例如,若输入的两个正整数为12、4,则它们的最大公约数为4,最小公倍数为12。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在main()函数的横线上填入所编写的若干表达式或语句。
试题程序:
#include<stdlib.h>
#include<stdio.h>
void main()
{
int a, b, num1, num2, t;
system('CLS');
printf('\nInput two numbers: \n');
scanf('%d, %d', num1, num2);
if(num1<num2)
{
a=num2;
b=num1;
}
else
{
a=num1;
b=num2;
}
while(______)
{
t=______
a=b;
b=t;
}
printf('greatest common divisor:
%d\n', a);
printf('least common multiple:
%d\n', ______);
}
填空题 下列给定程序中,函数fun的功能是:计算N×N矩阵的主对角线元素和反向对角线元素之和,并作为函数值返回。要求先累加主对角线元素中的值,再累加反向对角线元素中的值。
例如,若N=3,有下列矩阵:
1 2 3
4 5 6
7 8 9
首先累加1、5、9,然后累加3、5、7,函数返回值为30。
请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。
注意:部分源程序给出如下。
不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdio.h>
#define N 4
fint un(int t[][N],int n)
{
int i,sum;
/*****************found*****************/
______;
for(i=0;i<n;i++)
/*****************found*****************/
sum+=______;
for(i=0;i<n;i++)
/*****************found*****************/
sum+=t[i][n-i-______;
return sum;
}
main()
{
int t[][N]={21,2,13,24,25,16,47,38,29,11,32,54,42,21,3,10}i,j;
printf('\nThe original data:\n');
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
printf('%4d',t[i][j]);
printf('\n');}
printf('The result is:%d',fun(t,N));
}
填空题 str是一个由数字和字母字符组成的字符串,由变量num传入字符串长度。请补充函数proc(),该函数的功能是:把字符串str中的数字字符转换成数字并存放到整型数组bb中,函数返回数组bb的长度。
例如,str='abc123de45fg67',结果为:1234567。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的横线上填入所编写的若干表达式或语句。
试题程序:
# include <stdio.h>
# define M 80
int bb[M];
int proc(char str[],int bb[],int num)
{
int i,n=0;
for(i=0;i<num;i++)
{
if(______)
{
bb[n]=______;
n++;
}
}
return ______;
}
void main()
{
char str[M];
int num=0,n,i;
printf('Enter a string:\n');
gets(str);
while(str[num])
num++;
n=proc(str,bb,num);
printf('\nbb=');
for(i=0;i<n;i++)
printf('%d',bb[i]);
}
填空题 给定程序中,函数fun的功能是:在形参SS所指字符串数组中,查找含有形参substr所指子串的所有字符串并输出,若没找到则输出相应信息。ss所指字符串数组中共有N个字符串,且串长小于M。程序中库函数strstr(s1,s2)的功能是在s1串中查找s2子串,若没有,函数值为NULL,若有,为非NULL。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
不得增行或删行,也不得更改程序的结构!
给定源程序:
#include<stdio.h>
#include<string.h>
#define N 5
#define M 15
void fun(char(*ss)[M],char*substr)
{int i,find=0;
/***********found***********/
for(i=0;i<______;i++)
/***********found***********/
if(strstr(ss[i],______)!=NULL)
{find=1;puts(ss[i]);printf('\n');}
/***********found***********/
if(find==______)
printf('\nDon't found!\n');
}
main()
{char x[N][M]={'BASIC','C langwage','Java','QBASIC','Access'},str[M];
int i;
printf('\nThe original string\n\n');
for(i=0;i<N;i++)puts(x[i]);printf('\n');
printf('\nEnter a string for search:');
gets(str);
fun(x,str);
}
填空题 给定程序中,函数fun的功能是:对形参ss所指字符串数组中的M个字符串按长度由短到长进行排序。ss所指字符串数组中共有M个字符串,且串长<N。
请在程序的下划线处填入正确的内容,使程序得出正确的结果。
不得增行或删行,也不得更改程序的结构!
给定源程序:
#include <stdio.h>
#include <string.h>
#define M 5
#define N 20
void fun(char (*ss)[N])
{ int i,j,k,n[M]; char t[N];
for(i=0; i<M; i++) n[i]=strlen(ss[i]);
for(i=0; i<M-1; i++)
{ k=i;
/**********found**********/
for(j=______;j<M;j++)
/**********found**********/
if(n[k]>n[j])______;
if(k!=i)
{ strcpy(t,ss[i]);
strcpy(ss[i],ss[k]);
/**********found**********/
strcpy(ss[k],______);
n[k]=n[i];
}
}
}
main()
{ char ss[M][N]={'shanghai','guangzhou','beijin g','tianjing','cchongqing'};
int i;
printf('\nThe original strings are:\n');
for(i=0; i<M;i++)printf('%s\n',ss[i]);
printf('\n');
fun(ss);
printf('\nThe result:\n');
for(i=0; i<M; i++) printf('%s\n',ss[i]);
}
填空题 给定程序中,函数fun的功能是:判断形参s所指字符串是否是”回文”(Palindrome),若是,函数返回值为1;不是,函数返回值为0。”回文”是正读和反读都一样的字符串(不区分大小写字母)。
例如,LEVEL和Level是”回文”,而LEVLEV不是”回文”。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在下的BLANK1. C中。不得增行或删行,也不得更改程序的结构!
#include <stdio, h>
#include <string. h>
#include <ctype. h>
int fun(char *s)
{char *lp, *rp;
/**********found**********/
lp=______;
rp=s+strlen(s)-1;
while((toupper(*lp)==toupper
(*rp)) (lp<rp)) {
/**********found**********/
lp++; rp ______;}
/**********found***********/
if(lp<rp) ______;
else return 1;
}
main( )
{ char s[81];
printf('Enter a string:'); scanf
('%s', s);
if(fun(s)) printf('\n\'%s\' is a
Palndrome.\n\n', s);
else printf('\n\'96s\' isn't a
Palindrome.\n\n', 8);
}
填空题 给定程序中,函数fun的功能是建立一个N×N的矩阵。矩阵元素的构成规律是:最外层元素的值全部为1;从外向内第2层元素的值全部为2:第3层元素的值全部为3,…依次类推。例如,若N=5,生成的矩阵为:
1 1 1 1 1
1 2 2 2 1
1 2 3 2 1
1 2 2 2 1
1 1 1 1 1
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
#define N 7
/**********found**********/
void fun(int(*a)______)
{int i, j, k, m;
if(N%2==0) m=N/2;
else m=N/2+1;
for(i=0; i<m; i++) {
/**********found**********/
for(j=______; j<N-i; j++)
a[i][j]=a[N-i-1][j]=i+1;
for(k=i+1; k<N-i; k++)
/**********found**********/
a[k][i]=a[k][N-i-1]=______;
}
}
main()
{int x [N][N]={0}, i, j;
fun(x);
printf('\nThe result is:\n');
for(i=0; i<N; i++)
{ for(j=0; j<N; j++) printf('%3d', x[i][j]);
printf('\n');
}
}
填空题
函数fun的功能:从形参a、b、c中找出中间的那个数,作为函数值返回。
例如,当a=3,b=5,c=4时,中数为4。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在文件BLANK1.c中。不得增行或删行,也不得更改程序的结构!
给定源程序如下:
#include stdio.h
int fun(int a, int b, int c)
{
int t;
/**********found**********/
t = (ab) ? (bc? b :(ac?c:___1___)) : ((ac)?___2___ : ((bc)?c:___3___));
return t;
}
main()
{ int a1=3, a2=5, a3=4, r;
r = fun(a1, a2, a3);
printf('\nThe middle number is : %d\n', r);
}
填空题 下列给定程序的功能是:调用函数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)
return0;
if((ft=fopen(target, 'w'))==NULL)
return0;
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]='myfile1',tfname[20]='myfile2';
FILE *myf;int i;char c;
myf=fopen(sfname,'w');
printf('\nThe original data :\n');
for(i=1;i<30; i++)
{c='A'+rand()%25;
fprintf(myf,'%c');printf('%c',c);}
fclose(myf);printf('\n\n');
if (fun(sfname, tfname))
printf('Succeed!');
else printf('Fail!');
}
改错题
给定程序MODI1.c中函数fun的功能:将p所指字符串中的所有字符复制到b中,要求每复制三个字符之后插入一个空格。
例如,在调用fun函数之前给a输入字符串ABCDEFGHIJK,调用函数之后,字符数组b中的内容则为ABC DEF GHI JK。
请改正程序中的错误,使它能得出正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
给定源程序如下:
#include stdio.h
void fun(char *p, char *b)
{ int i, k=0;
while(*p)
{ i=1;
while( i=3 *p ) {
/**********found**********/
b[k]=p;
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');
}
改错题
给定程序MODI1.c中函数fun的功能:从低位开始取出长整型变量s中偶数位上的数,依次构成一个新数放在t中。高位仍在高位,低位仍在低位。
例如,当s中的数为7654321时,t中的数为642。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
给定源程序如下:
#include stdio.h
/************found************/
void fun (long s, long t)
{ long sl=10;
s /= 10;
*t = s % 10;
/************found************/
while ( s 0)
{ s = s/100;
*t = s%10*sl + *t;
sl = sl * 10;
}
}
main()
{ long s, t;
printf('\nPlease enter s:'); scanf('%ld', s);
fun(s, t);
printf('The result is: %ld\n', t);
}
改错题
给定程序MODI1.c中函数fun的功能:从3个红球、5个白球、6个黑球中任意取出8个球,作为一组进行输出。在每组中,可以没有黑球,但必须有红球和白球。组合数作为函数值返回。正确的组合数应该是15。在程序中,i的值代表红球数,j的值代表白球数,k的值代表黑球数。
请改正函数fun中指定位置的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
给定源程序如下:
#include stdio.h
int fun()
{ int i,j,k,sum=0;
printf('\nThe result :\n\n');
/**************found**************/
for(i=0; i=3; i++)
{ for(j=1; j=5; j++)
{ k=8-i-j;
/**************found**************/
if(K=0 K=6)
{ sum=sum+1;
printf('red:%4d white:%4d black:%4d\n',i,j,k);
}
}
}
return sum;
}
main()
{ int sum;
sum=fun();
printf('sum =%4d\n\n',sum);
}
改错题 给定程序的功能是:读入一个英文文本行,将其中每个单词的第一个字母改成大写,然后输出此文本行(这里的“单词”是指由空格隔开的字符串)。
例如,若输入:I am a student to take the examination.,
则应输出:I Am A Student To Take The Examination.。
请改正程序中的错误,使程序能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
给定源程序:
#include<etype.h>
#include<string.h>
/**********found**********/
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的功能是:判断ch中的字符是否与str所指串中的某个字符相同;若相同,什么也不做,若不同,则将其插在串的最后。
请改正程序中的错误,使它能进行正确的操作。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
给定源程序:
#include <stdio.h>
#include <string.h>
/**********found**********/
void fun(char str, char ch)
{ while(*str*str!=ch)str++;
/**********found**********/
if (*sfr==ch)
{str[0]=ch;
/**********found**********/
str[1]='0';
}
}
main()
{ char s[81],c;
printf('\nPlease enter a string:\n'); gets(s);
printf ('\n Please enter the character to search: ');
c=getchar();
fun(s,c);
printf('\nThe result is%s\n', s);
}