问答题给定程序MODI1.C中函数fun()的功能是:用冒泡法对6个字符串按由小到大的顺序进行排序。 请改正程序中的错误,使它能得出正确的结果。 #include<stdio.h> #include<string.h> #define MAXLINE 20 fun(char *pstr[6]) int i,j; char *p; for(i=0;i<5;i++) /**********found**********/ for(j=i+1,j<6,j++) if(strcmp(*(pstr+i),*(pstr+j))>0) p=*(pstr+i); /**********found**********/ *(pstr+i)=pstr+j; *(pstr+j)=p; main() int i; char *pstr[6],str[6][MAXLINE]; for(i=0;i<6;i++)pstr[i]=str[i]; printf("/nEnter 6 string(1 string at each line):/n"); for(i=0;i<6;i++)scanf("%s",pstr[i]); fun(pstr); printf("The strings after sorting:/n"); for(i=0;i<6;i++)printf("%s/n",pstr[i]);
问答题学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun(),该函数的功能是:把高于等于平均分的学生数据放在b所指的数组中,低于平均分的学生数据放在c所指的数组中,高于等于平均分的学生人数通过形参n传回,低于平均分的学生人数通过形参m传回,平均分通过函数值返回。 注意:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: #include <stdio.h> #define N 12 typedef struct char num[10]; double s; STREC; double fun(STREC *a,STREC *b,STREC *c,int *n,int *m) main() STREC s[N]="GA05",65,"GA03",86, "GA02",76,"GA04",95,"GA01",93, "GA07",78,"GA08",68,"GA06",88, "GA09",60,"GA11",54,"GA12",56, "GA10",98; STREC h[N],l[N],t; FILE *out; int i,j,m,n; double ave; ave=fun(s,h,l,&n,&m); printf("The %d student data which is higher than %7.3f:/n",n,ave); for(i=0;i<n;i++) printf("%s %4.lf/n",h[i].num, h[i].s); printf("/n"); printf("The %d Student data which iS lower than%7.3f:/n",m,ave); for(i=0;i<m;i++) printf("%s %4.1f/n",l[i].num, l[i].s); printf("/n"); out=fopen("out26.dat", "w"); fprintf(out, "%d/n %7.3f/n",n,ave); for(i=0;i<n-1;i++) for(j=i+1;i<n;j++) if(h[i].s<h[j].s) t=h[i];h[i]=h[i];h[j]=t; /*分数从现到低排列*/ for(i=0;i<n; i++) fprintf(out,"%4.1f/n",h[i].s); fprintf(out,"%d/n %7.3f/n",m,ave); for(i=0;i<m-1;i++) for(j=i+1;i<m;j++) if(l[i].s<l[j].s) t=l[i];l[i]=l[j];l[j]=t; /*分数从高到低排列*/ for(i=0;i<m;i++) fprintf(out,"%4.1f/n",l[i].s); fclose(out);
问答题下列给定程序中,函数fun()的功能是:按顺序给s所指数组中的元素赋予从2开始的偶数,然后再按顺序对每5个元素求一个平均值,并将这些值依次存放在w所指的数组中。若s所指数组中元素的个数不是5的倍数,多余部分忽略不计。例如,s所指数组有14个元素,则只对前10个元素进行处理,不对最后的4个元素求平均值。 请改正函数fun()中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include <stdio.h> #define SIZE 20 fun (double *s, double *w) int k, i; double sum; for(k=2, i=0; i<SIZE; i++) s [i]=k; k+=2; sum=0.0; for(k=0, i=0; i<SIZE;i++) sum+=s[i]; /*************found**************/ if(i+1%5==0) w[k]=sum/5; Sum=0; k++; return k; main() double a[SIZE],b[SIZE/5]; int i, k; k=fun(a/b); printf ("The original data:/n"); for(i=0;i<SIZE;i++) if(i%5==0)printf("/n"); printf("%4.0f"/a[i]); printf"/n/nThe result:/n"); for(i=0; i<k; i++) printf("%6.2f",b[i]); printf("/n/n");
问答题请编写函数proc(),该函数的功能是:计算并输出例如,若主函数从键盘给n输入10后,则输出为S=104.478749。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:#include<math.h>#include<stdio.h>doubleproc(intn){}voidmain(){intn;doubleS;printf("/n/nInputn:");scanf("%d",S=proc(n);printf("/n/nS=%f/n/n",S);}
问答题综合应用
请编写函数fun :在形参指针所指的4个整数中找出最大值和最小值,最大的放在a中,最小的放在d中。
注意:部分源程序存在PROG1.C中,请勿改动主函数main和其他函数中的任何
内容,仅在函数fun的花括号中填入所编写的若干语句。
#include
void NONO();
void fun(int *a, int *b, int *c, int *d)
{
}
main()
{ int a, b, c, d;
printf("请输入4个整数: "); scanf("%d%d%d%d",
printf("原始顺序: %d,%d,%d,%d/n", a, b, c, d);
fun(
printf("处理后: %d,%d,%d,%d/n", a, b, c, d);
NONO();
}
void NONO()
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *fp, *wf ;
int i, a, b, c, d ;
fp = fopen("in.dat","r") ;
wf = fopen("out.dat","w") ;
for( i=0; i<5; i++ )
{
fscanf(fp, "%d %d %d %d",
fun(
fprintf(wf, "a=%d,d=%d/n", a, d);
}
fclose(fp) ;
fclose(wf) ;
}
问答题给定程序中,函数fun的功能是将带头结点的单向链表逆置,即若原链表中从头至尾结点数据域依次为2、4、6、8、10,逆置后,从头至尾结点数据域依次为10、8、6、4、2。
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:部分源程序给出如下。
不得增行或删行,也不得更改程序的结构!
试题程序:
#include < stdio.h >
#include < stdlib.h >
#define N 5
typedef struct node{
int data;
struct node*next;
}NODE;
void fun(NODE*h)
{ NODE *P, *q, *r;
/*********found*********/
p=h一 >
【1】
;
/*********found*********/
if(p==
【2】
)return;
q=p一 >next;
p一 >next =NULL;
while(q)
{r=q一 >next;q一 >next=p;
/*********found*********/
p=q; q=
【3】
;
}
h一 >next=P;
}
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
{printi("/nttead");
do
fprintf("一 >%d",p一 >data);
p=p一 >next;)
while(P!=NULL);
printf("一 >End/n");
}
}
main ()
{ NODE *head;
int a[N] = {2,4,6,8 , 10 } ;
head = creatlist (a) ;
printf ( "/ nThe original
outlist (head) ;
fun (head) ;
printf ( "/nThe list after inverting :/n");
outlist (head) ;
}
问答题请编写函数fun,函数的功能是:判断字符串是否为回文?若是,函数返回1,主函数中输出:YES,否则返回0,主函数中输出NO。回文是指顺读和倒读都一样的字符串。
例如,字符串LEVEL是回文,而字符串123312就不是回文。
请勿改动主函数main和其它函数巾的任何内容,仅在函数fun的花括号巾填入你编写的若干语句。
给定源程序:
#include<stdio.h>
#include<string.h>
#define N 80
intfun(char*str)
{
}
main()
{char s[N];
printf("Enter a string:");gets(s);
printf("/n/n");puts(s);
if(fun(s))printf("YES/n");
else printf("NO/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
fun(int t[][N],int n)
{
int i,sum;
/*********found*********/
【1】
;
for(i=0;i < n ; i++)
/*********found*********/
sum+=
【2】
;
for(i=0;i < n;i++)
/*********found*********/
sum+:t[i][n—i一
【3】
];
return sum;
}
main()
{
int i,j,t:[][N]=={21,2,13,24,25,16,47,38,29,11,32,54,42,21,3,10);
printf("/nThe orifinal 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的功能是根据形参i的值返回某个函数的值。当调用正确时, 程序输出:
x1=5.000000, x2=3.000000, x1*x1+x1*x2=40.000000
请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!
给定源程序:
#include
double f1(double x)
{ return x*x; }
double f2(double x, double y)
{ return x*y; }
__1__ fun(int i, double x, double y)
{ if (i==1)
return __2__(x);
else
return __3__(x, y);
}
main()
{ double x1=5, x2=3, r;
r = fun(1, x1, x2);
r += fun(2, x1, x2);
printf("\nx1=%f, x2=%f, x1*x1+x1*x2=%f\n\n",x1, x2, r);
}
问答题学生的记录由学号和成绩组成,M名学生的数据已在主函数中放入结构体数组S中,请编写函数proc(),它的功能是:函数返回指定学号的学生数据,指定的序号在主函数中输入。若没找到指定的学号,在结构体变量中给学号置空串,给成绩置-1,作为函数值返回(用于字符串比较的函数是strcmp)。 注意:部分源程序已给出。 请勿改动主函数main和其他函数中的任何内容。 试题程序: #include<string.h> #include<stdio.h> #include<stdlib.h> 世define M 16 typedef struct char num[10]; int s; STREC; STREC proc(STREC a, char *b) void main() STREC stu[M]="GA005", 85, "GA003", 76, "GA002", 69, "GA004", 85, ("GA001", 91, "GA007", 72, "GA008", 64, "GA006", 87, "GA015", 85, "GA013", 91, "GA012", 64, "GA014", 91, "GA011", 77, "GA017", 64 "GA018", 64, "GA016", 72; STREC h; char m[10]; int i; printf("The original data: n"); for(i=0; i<M; i++) if(i%4==0) printf("/n"); //每行输出4个学生记录 printf("%s %3d", stu[i]. num, stu[i]. s); printf("/n/nEnter the number: "); gets(m); h=proc(stu, m); printf("The data: "); printf("/n%s %4d/n", h.num, h.s); printf("n");
问答题程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。函数fun的功能是对形参b所指结构体变量中的数据进行修改,最后在主函数中输出修改后的数据。
例如:b所指变量t中的学号、姓名、和三门课的成绩依次是:10002、"ZhangQi"、93、85、87,修改后输出t中的数据应为:10004、"LiJie"、93、85、87。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在
下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
#include <string.h>
struct student {
long sno;
char name[10];
float score[3];
};
void fun(struct student *b)
{
/**********found**********/
b______=10004;
/**********found**********/
strcpy(b______,"LiJie");
}
main()
{ struct student t={10002,"ZhangQi",93,85,87};
int i;
printf("/n/nThe original data:/n");
printf("/nNo:%ld Name:%s/nScores:",t.sno,t.name);
for(i=0;i<3;i++) printf("%6.2f",t.score[i]);
printf("/n");
/**********found**********/
fun(______);
printf("/nThe data after modified:/n");
printf("/nNo:%ld Name:%s/nScores:",t.sno,t.name);
for(i=0;i<3;i++) printf("%6.2f",t.score[i]);
printf("/n");
}
问答题
假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:使字符串中尾部的*号不得多于n个;若多于n个,则删除多余的*号;若少于或等于n个,则什么也不做,字符串中间和前面的*号不删除。
例如,字符串中的内容为:****A*BC*DEF*G*******,若n的值为4,删除后,字符串中的内容应当是:****A*BC*DEF*G****;若n的值为7,则字符串中的内容仍为:****A*BC*DEF*G*******。n的值在主函数中输入。在编写函数时,不得使用C语言提供的字符串函数。
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include<stdio.h>
void fun(char *a, int n)
{
}
main()
{char s[81]; int n;
void NONO();
printf("Enter a string:/n"); gets(s);
printf("Enter n:"); scanf("%d",
fun(s, n);
printf("The string after deleted:/n"); puts(s);
NONO();
}
void NONO()
{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *in, *out;
int i, n; char s[81];
in=fopen("in.dat", "r");
out=fopen("out.dat", "w");
for(i=0; i<10; i++) {
fscanf(in, "%s", s);
fscanf(in, "%d",
fun(s, n);
fprintf(out, "%s/n", s);
}
fclose(in);
fclose(out);
}
问答题给定程序MODI1.C中函数fun的功能是:从低位开始取出长整型变量S中偶数位上的数,依次构成一个新数放在t中。高位仍在高位,低位仍在低位。 例如,当s中的数为:7654321时,t中的数为:642。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!1 #include<stdio.h>2 /*********found*********/3 void fun(long s,long t)4 { long s1=10;5 s/=10;6 *t=s%10;7 /*********found*********/8 while(s<0)9 { s=s/100;10 *t=s%10 *s1+*t;11 s1=s1 * 10;12 }13 }14 main()15 {long s,t;16 printf(''\nPlease enter s:''); scanf(''%1d'',&s);17 fun(s,&t);18 printf(''The result is:%1d\n'',t);19 }
问答题
请编写一个函数fun,它的功能是:将ss所指字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。
例如,若输入"abc4EFg",则应输出"aBc4EFg"。
注意:部分源程序存在文件PROG1.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include<stdio.h>
#include<string.h>
void fun(char *ss)
{
}
main()
{char tt[81];
void NONO();
printf("/nPlease enter an string within 80 characters:/n"); gets(tt);
printf("/n/nAfter changing, the string/n"%s" ", tt);
fun(tt);
printf("/nbecomes/n"%s"/n", tt);
NONO();
}
VOid NONO()
{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *fp, *wf;
char tt[81];
int i;
fp=fopen("in.dat", "r");
wf=fopen("out.dat", "w");
for(i=0; i<10; i++) {
fscanf(fp, "%s", tt);
fun(tt);
fprintf(wf, "%s/n", tt);
}
fclose(fp);
fclose(wf);
}
问答题给定程序MODI1.C是建立一个带头结点的单向链表,并用随机函数为各结点赋值。函数fun的功能是将单向链表结点(不包括头结点)数据域为偶数的值累加起来,并且作为函数值返回。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include
#include
typedef struct aa
{ int data;struct aa*next;}NODE;
int fun(NODE*h)
{ int sum=0;
NODE*p;
/**********found**********/
p=h;
while(P)
{ if(P->data%2==0)
sum+=p->data;
/***********found**********/
p=h->next;
}
return sum;
}
NODE*creatlink(int n)
{NODE*h,*p,*s;
int i;
h=p=(NODE*)malloc(sizeof(NODE));
for(i=1;idata=rand()%16;
s->next=p->next;
P->next=s;
p=p->next;
}
P->next=NULL;
return h;
}
outlink(NODE*h,FILE*pf)
{NODE*p;
p=h->next;
fprintf(pf,”/n/nTHE LIST:/n/n
HEAD”);
while(P)
{ fprintf(pf,"->%d",p->data);
p=p->next;)
fprintf(pf,"/n");
}
outresult(int s,FILE*pf)
{ fprintf(pf,”/nThe SLIm of even
numbers : %d/n¨,s);}
main()
{NODE*head;int evirl;
head=creatlink(12);
head->data=,9 0 0 0;
outlink(head,stdout);
even=fun(head);
printf("/nTh.e result:/n");
outresult(even, stdout);
}
问答题请编写一个函数fun,它的功能是:将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数)。例如,若输入字符串"-1234",则函数把它转换为整数值 -1234。函数fun中给出的语句仅供参考。
注意: 部分源程序存在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容, 仅在函数fun的花括号中填入你编写的若干语句。
给定源程序:
#include
#include
long fun ( char *p)
{int i, len, t; /* len为串长,t为正负标识 */
long x=0;
len=strlen(p);
if(p[0]=='-')
{ t=-1; len--; p++; }
else t=1;
/* 以下完成数字字符串转换为一个数字 */
return x*t;
}
main() /* 主函数 */
{ char s[6];
long n;
printf("Enter a string:\n") ;
gets(s);
n = fun(s);
printf("%ld\n",n);
NONO ( );
}
NONO ( )
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *fp, *wf ;
int i ;
char s[20] ;
long n ;
fp = fopen("c:\\test\\in.dat","r") ;
wf = fopen("c:\\test\\out.dat","w") ;
for(i = 0 ; i < 10 ; i++) {
fscanf(fp, "%s", s) ;
n = fun(s);
fprintf(wf, "%ld\n", n) ;
}
fclose(fp) ;
fclose(wf) ;
}
问答题请编写函数fun,对长度为7个字符的字符串,除首、尾字符外,将其余5个字符按ASCH码降序排列。 例如,原来的字符串为:CEAedca,排序后输出为:CedcEAa。 注意:部分源程序在文件PROG1.C中。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。1 #include<stdio.h>2 #include<ctype.h>3 #include<string.h>4 void fun(char *s,int num)5 {67 }8 NONO()9 {10 /*请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/11 char s[10];12 FILE *rf,*wf ;13 int i=0;14 rf=fopen(''in.dat'',''r'');15 wf=fopen(''out.dat'',''w'');16 while(i<10) {17 fgets(s,10,rf);18 s[7]=0 ;19 fun(s,7);20 fprintf(wf,''%s\n'',s);21 i++;22 }23 fclose(rf);24 fclose(wf);25 }26 main()27 {28 char s[10];29 printf(''输入7个字符的字符串:'');30 gets(s);31 fun(s,7);32 printf(''\n%s'',s);33 NONO();34 }
问答题请编写程序,输入一行字符(用回车结束),输出每个字符以及与之对应的ASCII代码值,每行输出三对。
问答题请编写函数fun(),该函数的功能是:将s所指字符串中 ASCII值为偶数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。 例如,若s所指字符串中的内容为ABCDEFGl2345,其中字符B的ASCⅡ码值为偶数、…、字符2的ASCⅡ码值为偶数、…,都应当删除,其他依次类推。最后t所指的数组中的内容应是ACEGl35。 注定:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序; #include <stdio. h> #include<string.h> #include<conio. h> void fun(char *s, char t[]) main ( ) char s[100],t [100]; clrscr (); printf (,/nPlease enter string S: "); scanf ("%s", s); fun(s,t); printf ("/nThe result is :%s/n",t);
问答题学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:按分数的高低排列学生的记录,高分在前。 注意:部分源程序在文件PROG1.C文件中。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。1 #include<stdio.h>2 #define N 163 typedef struct4 { char num[10];5 int s;6 } STREC;7 void fun(STREC a[])8 {9 }10 main()11 {STREC s[N]={''GA005'',85},{''GA003'',76},{''GA002'',69},{''GA004'',85},{''GA001”,91},{''GA007'',72},{''GA008'',64},{''GA006'',87},{''GA015'',85},{''GA013'',91},{''GA012'',64},{''GA014'',91},{''GA011'',66},{''GA017'',64},{''GA018'',64},{''GA016'',72}};12 int i;FILE *out;;13 fun(s);14 print;f(''The data after sorted:\n'');15 for(i=0; i<N;i++)16 { if((i)%4==0)printf(''\n'');17 printf(''%s%4d'',s[i].num,s[i].s);18 }19 printf(''\n'');20 out=fopen(''out.dat'',''w'');21 for(i=0;i<N;i++)22 {if((i)%4==0 && i) fprintf(out,''\n'');23 fprintf(out,''%4d'',s[i].s);}24 fprintf(out,''\n'');25 fclose(out);}