填空题 甲、乙、丙、丁4人同时开始放鞭炮,甲每隔t1秒放一次,乙每隔t2秒放一次,丙每隔t3秒放一次,丁每隔t4秒放一次,每人各放n次。函数fun的功能是根据形参炸响,只算一次响声,第一次响声是在第0秒。
例如,若t1=7,t2=5,t3=6,t4=4,n=10,则总共可听到28次鞭炮声。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:部分源程序给出如下。
不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdio.h>
/**********found**********/
#define OK(i, t, n((______%t==0)(i/t<n))
int fun(int t1, int t2, int t3, int t4, int n)
{int count, t, maxt=t1;
if(maxt<t2)maxt=t2;
if(maxt<t3)maxt=t3;
if(maxt<t4)maxt=t4;
count=1; /*给count赋初值*/
/**********found**********/
for(t=1; t<maxt*(n-1); ______)
{
if(OK(t, t1, n)||OK(t, t2, n)||OK(t, t3, n)||OK(t, t4, n))
count++;
}
/**********found**********/
return______;
}
main()
{int t1=7, t2=5, t3=6, t4=4, n=10, r;
r=fun(t1, t2, t3, t4, n);
printf('The sound:%d\n', r);
}
填空题 给定程序中,函数fun的功能是:对形参ss所指字符串数组中的M个字符串按长度由短到长进行排序。ss所指字符串数组中共有M个字符串,且串长<N。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#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', 'beijing', '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的功能是:把形参a所指数组中的奇数按原顺序依次存放到a[0]、a[1]、a[2]...中,把偶数从数组中删除,奇数个数通过函数值返回。
例如,若a所指数组中的数据最初排列为:9,1,4,2,3,6,5,8,7,删除偶数后a所指数组中的数据为:9,1,3,5,7,返回值为5。
请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。
注意:部分源程序给出如下。
不得增行或删行,也不得更改程序的结构!
试题程序:
#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');
}
填空题 请补充函数proc(),该函数的功能是:删除字符数组中小于指定字符的字符,指定字符从键盘输入,结果仍保存在原数组中。
例如,输入“abcdefghij”,指定字符为“f”,则结果输出“fghij”。
注意:部分源程序如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的横线上填入所编写的若干表达式或语句。
试题程序:
#include<stdlib.h>
#include<stdio.h>
#define M 80
void proc(char str[],char ch)
{
int i=0,j=0;
while(str[i])
{
if(str[i]<ch)
______;
else
{
______;
i++;
}
}
______;
}
void main()
{
char str[N],ch;
system('CLS');
printf('\n Input a string:\n');
gets(str);
printf('\n***original string***\n');
puts(str);
printf('\n Input a charactor:\n');
scanf('%c',ch);
proc(str,ch);
printf('\n***new string***\n');
puts(str);
}
填空题 下列给定程序中,函数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));
}
填空题 给定程序中,函数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的功能是:计算形参x所指数组中N个数的平均值(规定所有数均为正数),将所指数组中大于平均值的数据移至数组的前部,小于等于平均值的数据移至x所指数组的后部,平均值作为函数值返回,在主函数中输出平均值和移动后的数据。
例如,有10个正数:46、30、32、40、6、17、45、15、48、26,平均值为30.500000。
移动后的输出为:46、32、40、45、48、30、6、17、15、26。
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:不得增行或删行,也不得更改程序的结构!
试题程序:
#include <stdlib.h>
#include <stdio.h>
#define N 10
double fun(double * x)
{int i, j; double s,av,y[N];
s=0;
for(i=0;i<N;i++)s=s+x[i];
/*********found*********/
av=______;
for(i=j=0;i<N;i++)
if(x[i]>av){
/*********found*********/
y[______]=x[i];
x[i]=-1;}
for(i=0;i<N;i++)
/*********found*********/
if(x[i]!=______)y[j++]=x[i];
for(i=0;i<N;i++)x[i]=y[i];
return av;
}
main()
{int i;double x[N];
for(i=0;i<N;i++)
{x[i]=rand()% 50;
printf('% 4.0f',x[i]);}
printf('\n');
printf('\nThe average is: % f\n',fun(x));
printf('\nThe result :\n',fun(x));
for(i=0;i<N;i++)
printf('% 5.0f',x[i]);
printf('\n');
}
填空题 请补充函数proc(),其功能是:计算并输出给定10个数的方差。
例如,给定的10个数为12.0,9.0,26.0,5.0,6.0,31.0,9.0,3.0,8.0,18.0,输出为s=8.877500。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的横线上填入所编写的若干表达式或语句。
试题程序:
#include<stdio.h>
#include<math.h>
double proc(double x[10])
{
int i;
double avg=0.0;
double sum=0.0;
double abs=0.0;
double sd;
for(i-0; i<10; i++)
______;
avg=sum/10;
for(i=0; i<10; i++)
______;
sd=______;
return sd;
}
void main()
{
double s, str[10]={12.0, 9.0, 26.0, 5.0, 6.0, 31.0, 9.0, 3.0, 8.0, 18.0};
int i;
printf('\nThe original data is: \n');
for(i=0; i<10; i++)
printf('%6.1f', str[i]);
printf('\n\n');
s=proc(str);
printf('s=%f\n\n', s);
}
填空题
给定程序中函数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的功能是:有N×N矩阵,将矩阵的外围元素顺时针旋转。操作顺序是:首先将第一行元素的值存入临时数组r,然后使第一列成为第一行,最后一行成为第一列,最后一列成为最后一行,临时数组中的元素成为最后一列。
例如,若N=3,有下列矩阵:
1 2 3
4 5 6
7 8 9
计算结果为:
7 4 1
8 5 2
9 6 3
请在程序的下划线处填入正确的内容,使程序得出正确的结果。
不得增行或删行,也不得更改程序的结构!
给定源程序:
#include <stdio.h>
#define N 4
void fun (int (*t)[N])
{ int j,r[N];
for(j=0; j<N; j++) r[j]=t[0][j];
for(j=0; j<N; j++)
/**********found**********/
t[0][N-j-1]=t[j][______];
for(j=0;j<N;j++)
t[j][0]=t[N-1][j];
/**********found**********/
for(j=N-1;j>=0;______)
t[N-1][N-1-j]=t[j][N-1];
for(j=N-1; j>=0; j--)
/**********found**********/
t[j][N-1]=r[______];
}
main()
{ int t[][N]={21,12,13,24,25,16,47,3 8,29,11,32,54,42,21,33710},1,j;
printf('\nThe original array:\n');
for(i=0;i<N;i++)
{ for=(j=0;j<N;j++)printf('%2d',t[i][j]);
printf('\n');
}
fun(t);
printf('\nThe, result is:\n');
for(i=0;i<N;i++)
{ for(j=0; j<N; j++) printf('%2d',t[i][j]);
printf('\n');
}
}
填空题 给定程序中,函数fun的功能是:求出形参ss所指字符串数组中最长字符串的长度,其余字符串左边用字符*补齐,使其与最长的字符串等长。字符串数组中共有M个字符串,且串长<N。
请在程序的下划线处填入正确的内容,使程序得出正确的结果。
不得增行或删行,也不得更改程序的结构!
给定源程序:
#include <stdio.h>
#include <string.h>
#define M 5
#define N 20
void fun(char (*ss)[N])
{ int i,j,k=0, n,m,len;
for(i=0;i<M;i++)
{ len=strlen(ss[i]);
if(i==0) n=len;
if(len>n){
/**********found**********/
n=len;______=i;
}
}
for(i=0;i<M;i++)
if(i!=k)
{m=n;
len=strlen(ss[i]);
/**********found**********/
for(j=______; j>=0; j--)
ss[i][m--]=s[i][j];
for(j=0; j<n-len; j++)
/**********found**********/
______='*';
}
}
main()
{ char ss[M][N]=('shanghai','guangzhou','beijing','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]);
}
改错题
给定程序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函数的功能是:根据形参m,计算下列公式的值。
t=1+1/2+1/3+1/4+…+1/m
例如,若输入S,则应输出2.283333。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdlib.h>
#include<conio.h>
#include<stdio.h>
double fun(int m)
{
double t=1.0;
int i;
for(i=2; i<=m; i++)
/**********found**********/
t+=1.0/k;
/**********found**********/
return i;
}
void main()
{
int m;
system('CLS');
printf('\nPlease enter linteger number:');
scanf('%d', m);
printf('\nThe result is%lf\n', fun(m));
}
改错题 数列中,第一项为3,后一项都比前一项的值增5。下列给定程序中,函数fun的功能是:计算前n(4<n<50)项的累计和。在累加过程中把那些被4除后余2的当前累加值放入数组中,符合此条件的累加值的个数作为函数值返回。
例如,当n的值为20时,该数列为3、8、13、18、23、28、…、93、98,符合此条件的累加值应为42、126、366、570、1010。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include<stdio.h>
#define N 20
int fun(int n, int *a)
{
/**********found**********/
int i, j, k, sum;
sum=0;
for(k=3, i=0; i<n; i++, k+=5)
{
sum=sum+k;
/**********found**********/
if(sum%4=2)
a[j++]=sum;
}
/**********found**********/
return j;
}
void main()
{
int a[N], d, n, i;
printf('\nEnter n(4<=n<=50):');
scanf('%d', n);
d=fun(n, a);
printf('\n\nThe result:\n');
for(i=0; i<d; i++)
printf('%6d', a[i]);
printf('\n\n');
}
