问答题下列给定程序中,函数fun的功能是:比较两个字符串,将长的字符串的首地址作为函数值返回。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件MODI1.C中,不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#include<conio.h>#include<stclio.h>/*********found*********/double fun(char*s,char*t){ int s1=0,t1=0; char*ss,*tt; ss=s; tt=t; while(*ss) { s1++;/*********found*********/ (*ss)++; } while(*tt) { t1++;/*********found*********/ (*tt)++; } if(t1>s1) return t; else return s; } void main() { char a[80],b[80]; printf("\nEnter a string:"); gets(a); printf("\nEnter a string again:"); gets(b); printf("\nThe longer is:\n\ n%S\n",fun(a,b));}
问答题给定程序中,函数fun的功能是将带头结点的单向链表结点数据域中的数据从小到大排序。即若原链表结点数据域从头至尾的数据为:10、4、2、8、6,排序后链表结点数据域从头至尾的数据为:2、4、6、8、10。
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:部分源程序在文件BLANK1.C中。不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdio.h>
#include<stdlib.h>
#define N 6
typedef struct node{
int data;
struct node*next,
}NODE;
void fun(NODE*h)
{NODE*P,*q;int t;
/*********found*********/
p=
【1】
;
while(p){
/*********found*********/
q=
【2】
;
while(q){
/*********found*********/
if(p->data
【3】
q->data)
{ t=P->data;
p->data=q->data;
q->data=t;}
q=q->next;
}
p=p->next;
}
}
NODE*creatlist(int a[])
{ NODE*h,*p,*q;int i,
h=(NODE*)malloc(sizeof(NODE));
h->next=NULL;
for(i=0;i<N;i++)
{q=(NODE*)malloc(sizeof(NODE));
q->data=a[i];
q->next=NULL;
if(h->next==NULL)
h->next=p=q;
else{P->next=q;p=q;}
}
return h;
}
void outlist(NODE*h)
{NODE*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");
}
}
main()
{NODE*head;
int a[N]={0,10,4,2,8,6};
head=creatliSt(a);
printf("\nThe original list:\n");
outlist(head);
fun(head);
printf("\nThe list after sorting:\n");
outlist(head);
}
问答题函数fun的功能是:将a、b两个两位正整数合并成一个新的整数放在c中。合并的方式是:将a中的十位和个位数依次放在变量c的百位和个位上,b中的十位和个位数依次放在变量c的干位和十位上。
例如,当a=45,b=12,调用该函数后c=1425。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
#include<conio.h>
#include<stdio.h>
void fun(int a,int b,long*c)
{
}
main()
{
int a,b;
long c;
printf("Input a,b:");
scanf("%d%d",&a,&b);
fun(a,b,&c);
printf("The result is:%ld/n",c);
}
问答题请编写一个函数proc(),它的功能是:将str所指字符串中所有下标为奇数位置的字母转换为大写(若该位置上不是字母,则不转换)。
例如,若输入ab7g88BJ,则应输出aB7G88BJ。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。
试题程序:
#include<stdlih.h>
#include<conio.h>
#include<stdio.h>
#include<string.h>
void proc(char*str)
{
}
void main()
{
char tt[81];
system("CLS");
printf("/nPlease enter an string within 80 characters:/n");
gets(tt);
printf("/n/nAfter changing, the string/n %s", tt);
proc(tt);
printf("/nbecomes/n%s/n", tt);
}
问答题请编写函数proc(),其功能是:将str所指字符串中除了下标为奇数、同时ASCII值为偶数的字符外,其余的全部删除,串中剩余字符所形成的一个新串放在t所指的数组中。
例如,若str所指字符串中的内容为edB2A4Dsdg,其中字符A的ASCII码值为奇数,因此应当删除;其中字符B的ASCII码值为偶数,但在数组中的下标为偶数,因此也应当删除;而字符2的ASCII码值为偶数,所在数组中的下标为奇数,因此不应当删除。依此类推,最后t所指的数组中的内容应是d24。
注意:部分源程序给m如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。
试题程序:
#include<stdlib.h>
#include<conio.h>
#include<stdio.h>
#include<string.h>
void proc(char*str,char t[])
{
}
void main()
{
char str[100], t[100];
system("CLS");
printf("/nPlease enter string S:");
scanf("%s", str);
proc(str, t);
printf("/nThe result is: %s/n", t);
}
问答题给定程序中已建立一个带有头结点的单向链表,链表中的各结点按结点数据域中的数据递增有序链接。函数fun的功能是:把形参x的值放入一个新结点并插入到链表中,插入后各结点数据域的值仍保持递增有序。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!
给定源程序:
#include
#include
#define N 8
typedef struct list
{ int data;
struct list *next;
} SLIST;
void fun( SLIST *h, int x)
{ SLIST *p, *q, *s;
s=(SLIST *)malloc(sizeof(SLIST));
/**********found**********/
s->data=___1___;
q=h;
p=h->next;
while(p!=NULL
p=p->next;
}
s->next=p;
/**********found**********/
q->next=___3___;
}
SLIST *creatlist(int *a)
{ SLIST *h,*p,*q; int i;
h=p=(SLIST *)malloc(sizeof(SLIST));
for(i=0; 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 x;
int a[N]={11,12,15,18,19,22,25,29};
head=creatlist(a);
printf("/nThe list before inserting:/n"); outlist(head);
printf("/nEnter a number : "); scanf("%d",
fun(head,x);
printf("/nThe list after inserting:/n"); outlist(head);
}
问答题给定程序MODI1.C中函数 fun 的功能是:计算并输出high以内最大的10个素数之和。high的值由主函数传给fun函数。
若high的值为: 100, 则函数的值为: 732。
请改正程序中的错误,使程序能输出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
给定源程序:
#include
#include
int fun( int high )
{ int sum = 0, n=0, j, yes;
/************found************/
while ((high >= 2)
for (j=2; j<=high/2; j++ )
if (high % j ==0 ){
/************found************/
yes=0; break
}
if (yes) { sum +=high; n++; }
high--;
}
return sum ;
}
main ( )
{
printf("%d/n", fun (100));
}
问答题请编写一个函数fun,它的功能是:求出1到m之间(含m)能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。例如,若传送给m的值为50,则程序输出:
7 11 14 21 22 28 33 35 42 44 49
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
给定源程序:
#include<stdio.h>
#define M 100
void fun(int m,int*a,int*n)
{
}
main()
{int aa[M],n,k;
fun(50,aa,
for(k=0;k<n;k++)
if((k+1)%20==0)printf("/n");
else printf("%4d",aa[k]);
printf("/n");
}
问答题给定程序中,函数fun的功能是:将自然数1~10以及它们的平方根写到名为myfile3.txt的文本文件中,然后再顺序读出显示在屏幕上。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!
给定源程序:
#include
#include
int fun(char *fname )
{ FILE *fp; int i,n; float x;
if((fp=fopen(fname, "w"))==NULL) return 0;
for(i=1;i<=10;i++)
/**********found**********/
fprintf(___1___,"%d %f/n",i,sqrt((double)i));
printf("/nSucceed!!/n");
/**********found**********/
___2___;
printf("/nThe data in file :/n");
/**********found**********/
if((fp=fopen(___3___,"r"))==NULL)
return 0;
fscanf(fp,"%d%f",
while(!feof(fp))
{ printf("%d %f/n",n,x); fscanf(fp,"%d%f", }
fclose(fp);
return 1;
}
main()
{ char fname[]="myfile3.txt";
fun(fname);
}
问答题给定程序中,函数fun的功能是:有N×N矩阵,根据给定的m(m<=)值,将每行元素中的值均右移m个位置,左边置为0。例如,N=3,m=2,有下列矩阵 1 2 3 4 5 6 7 8 9 程序执行结果为 0 0 l 0 0 4 0 0 7 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构!1 #include<stdio.h>2 #define N 43 void fun(int(*t)[N],int m)4 { int i,j;5 /**********found**********/6 for(i=0;i<N;__1__ )7 { for(j=N-1-m;j>=0;j--)8 /**********found**********/9 t[i][j+__2___]=t[i][j];10 /**********found**********/11 for(j=0;j<__3__;j++)12 t[i][j]=0;13 }1415 main()16 {int t[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10},i, j, m;17 printf(''\nThe original array:\n'');18 for(i=0; i<N; i++)19 { for(j=0;j<N;j++)20 printf(''%2d'',t[i][j]);21 printf(''\n'');22 }23 printf(''Input m(m<=%d) :'',N);scanf(''%d'',25 printf(''\nThe result is:\n'');26 for(2=0;i<N;i++)27 { for(j=0;j<N;j++)28 printf(''%2d'',t[i][j]);29 printf(''\n'');30 }31 }
问答题编写函数void fun(char*tt,int PP[]),统计在tt所指的字符串中“a”到“z”26个小写字母各自出现的次数,并依次放在PP所指的数组中。
例如,当输入字符串“abcdefgabcdeabc”后,程序的输出结果应该是:
3 3 3 2 2 1 1 0000000000000000000
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
#include<sfdio.h>
#include<string.h>
void fun(char*tt,int pp[])
{
}
main()
{
char aa[1000];
int bb[26],k;
printf("/nPlease enter a char string:");
scanf("%s",aa);
funiaa,bb);
for(k=0;k<26;k++)
printf("%d",bb[k]);
printf("/n");
}
问答题请编写函数fun,其功能是:找出2×M整型二维数组中最大元素的值,并将此值返回调用函数。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。试题程序:#define M 4#include<stdio.h>int fun(int a[][M]){}void main(){ int arr[2][M]={5,8,3,45,76,一4,12,82); printf("max=%d\n",fun(arr));}
问答题假定输入的字符串中只包含字母和*号。请编写函数proc(),它的功能是:将字符串中的前导*号全部删除,中间和后面的*号不删除。
例如,若字符串中的内容为****a*bc*def*g****,删除后,字符串中的内容则应当是a*bc*def*g****。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。
试题程序:
#include<stdio.h>
#include<conio.h>
void proc(char*str)
{
}
void main()
{
char str[81];
printf("Enter a string:/n");
gets(str);
proc(str);
printf("The string after deleted:/n");
puts(str);}
问答题给定程序MODI1.C中函数fun的功能是:按顺序给s所指数组中的元素赋予从2开始的偶数,然后再按顺序对每五个元素求一个平均值,并将这些值依次存放在w所指的数组中。若s所指数组中元素的个数不是5的倍数,多余部分忽略不计。
例如,s所指数组有14个元素,则只对前10个元素进行处理,不对最后的4个元素求平均值。
请改正程序中的错误,使它能得出正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
#include
#define SIZE 20
fun(double *s, double *w)
{ int k,i; double sum;
for(k=2,i=0;i
问答题给定程序中,函数fun的作用是:不断从终端读入整数,由变量a统计大于0的个数,用变量c来统计小于0的个数,当输入0时结束输入,并通过形参pa和pb把统计的数据传回主函数进行输出。请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。注意:源程序存放在BLANK1.C中。不得增行或删行,也不得更改程序的结构!试题程序:#include<stdio.h>void fun(int*px,int*py){/**********found**********/int【1】;scanf("%d",&k);/**********found**********/while【2】{if(k>0)a++;if(k<0)b++;/**********found**********/【3】;*px=a;*py=b;}main(){intx,y;fun(&x,&y);printf("x=%d y=%d\n",x,y);}
问答题请编写函数fun,其功能是分别统计形参t所指二维数组中字母A和C的个数。注意:部分源程序存在PROG1.C中,请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include<stdio.h>#include<stdlib.h>#define M14void NONO();void fun(char(*t)[M],int*a,int*c){}void get(char(*s)[M]){int i,j;for(i=0;i<M;i++){for(j=0;J<M;j++){s[i][j]=65+rand()%12;printf("%c",s[i][j]);}printf("\n");}}main(){char a[M][M];int x,y;get(a);fun(a,&x,&y);printf("A=%d C=%d\n",x,y);NONO();}void NONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*fp,*wf;int i,j,x,y;char a[M][M];fp=fopen("c:\test\in.dat","r");wf=fopen("c:\test\out.dat","w");for(i=0;i<M;i++){for(j=0;j<M;j++){fscanf(fp,"%c",&a[i][j]);}}fun(a,&x,&y);fprintf(wf,"A=%d\n",X);fprintf(wf,"C=%d\n",y);felose(fp);felose(wf);
问答题(补充每对/**/A间的程序段,完成题目的要求)
问答题给定程序MODI1.C中函数fun的功能是:将长整型数中每一位上为奇数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。
例如,当s中的数为87653142时,t中的数为7531。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
给定源程序:
#include <stdio.h>
void fun(long s,long *t)
{ int d;
long sl=1;
/************found************/
t=0;
while(s>0)
{ d=s%10;
/************found************/
if(d%2==0)
{ *t=d*sl+*t;
sl*=10;
}
s/=10;
}
}
main()
{ long s,t;
printf("/nPlease enter s:");scanf("%ld",
fun(s,
printf("The result is:%ld/n",t);
}
问答题规定输入的字符串中只包含字母和*号。编写函数fun,其功能是:删除字符串中所有的*号。编写函数时,不得使用C语言提供的字符串函数。 例如,字符串中的内容为“****A*BC*DEF*G*******”,删除后,字符串中的内容应当是“ABCDEFG”。 注意:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 试题程序: #include<stdio.h> void fun(char*a) voidmain() char s[81]; printf("Enter a string:/n"); gets(s); fun(s); printf("The string after delete&/n"); puts(s);
问答题下列给定程序中,函数fun的功能是:把形参a所指数组中的最小值放在元素a[0]中,接着把a所指数组中的最大值放在a[1]元素中;再把a所指数组元素中的次小值放在a[2]中,把a所指数组元素中的次大值放在a[3],依此类推。
例如,若a所指数组中的数据最初排列为:9,1,4,2,3,6,5,8,7;则按规则移动后,数据排列为:1,9,2,8,3,7,4,6,5。形参n中存放a所指数组中数据的个数。
规定fun函数中的max存放当前所找的最大值,px存放当前所找最大值的下标。
请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。
注意:部分源程序给出如下。
不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdio.h>
#define N 9
void fun(int a[],int n)
{ int i,j,max,min,px,pn,;
for(i=0;i<n-1;i+=2)
{
/*********found*********/
max=min=
【1】
;
px=pn=i;
for(j=i+1;j<n;j++) {
/*********found*********/
if(max<
【2】
)
{max=a[j];px=j;)
/*********found*********/
if(min>
【3】
)
{ min=a[j];pn=j;}
}
if(pn!=i)
{t=a[i];a[i]=rain;a[pn]=t;
if(px==i)px=pn;
}
if(px!=i+1)
{ t=a[i+1],a[i+1]=max;
a[px]=t;)
}
}
void main()
( int b[N]={9,1,4,2,3,6,5,8,7),i;
printf("\nThe original data:\n");
for(i=0;i<N;i++)
printf("%4 d",b[i]);
printf("\n");
fun(b,N);
printf("\nThe data aftermoving:\n");
for(i=0;i<N;i++)
printf("%4 d",b[i]);
printf("\n");
}
