问答题下列给定程序中,函数fun的功能是:将一个由八进制数字字符组成的字符串转换成十进制整数。规定输入的字符串最多只能包含S位八进制数字字符。
例如,若输入77777,则输出32767。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int fun(char*p)
{
int n;
/********found********/
n=*p-"o";
p++;
while(*p!=0)
{
/********found********/
n=n*8+*p-"o";
p++;
}
return n;
}
main()
{
char s[6];
int i;
int n;
printf("Enter a string(octal digits):");
gets(s);
if(strlen(s)>5)
{
printf("Error;string too longer!/n/n");
exit(0);
}
for(i=0;s[i];i++)
if(s[i]<"0"||s[i]>"7")
{
printf("Error;%c not is octal digits!/n/n",s[i]);
exit(0);
}
printf("The originl string:");
puts(s);
n=fun(s);
printf("/n%s is convered to intege number:%d/n/n",s,n);
}
问答题给定程序MODI1.C中,函数fun的功能是:判断输入的任何一个正整数n,是否等于某个连续正整数序列之和。若是,则输出所有可能的序列,否则输出“不能分解”。
例如:当输入100时,输出:100=9+10+11+12+13+14+15+16
100=18+19+20+21+22
请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include<stdio.h>
void fun(int n)
{int j,b,c,m,flag=0;
for(b=1;b<=n/2;b++){
/**********found**********/
n=m;
c=b;
while(m!=0
for(j=b;j<c-1;j++)printf("%d+",j);
printf("%d/n",j);
flag=1;
}
}
if(flag==0)
printf("不能分解/n");
}
main()
{int n;
printf("请输入一个整数:");scanf("%d",
fun(n);
}
问答题给定程序中,函数fun的功能是:
判定形参a所指的NxN(规定N为奇数)的矩阵是否是”幻方”,若是,函数返回值为1;若不是,函数返回值为0。”幻方”的判定条件是:矩阵每行、每列、主对角线及反对角线上元素之和都相等。
例如,以下3×3的矩阵就是一个”幻方”:
4 9 2
3 5 7
8 1 6
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:部分源程序在文件BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
试题程序:
#include
#define N 3 int fun(int(*a)[N]) {int i , j , m1 , m2 , row , colum; m1=m2=0; for(i=0;i【1】 ; for(j=0;j < N;j++) {row+=a[i][j]; colum += a[ j ] [i] ; /*********found*********/ if ((row! =colum) 【2】 (row! =m1) return 0; } /*********found*********/ return【3】; } main() int x[N] [N],i,j ; printf ( " Enter number for arrav:/n”); for(i=0;i < N;i++) for(j=0;j < N;j++) scanf("%d",&x[i][j]); printf ( "Array: /n") for(i=0 j i < N; i++) {for(j=0;j < N;j++) printf ("% 3d",x[ i] [ j ] ); printf ("/n") ; if (fun (x)) printf ( " The Array is a magic square. /n"); else printf ("The Array isn't a magic square./n") ; }
问答题给定程序MODI1.C中的函数Creatlink的功能是创建带头结点的单向链表,并为各结点数据域赋0到m-1的值。 请改正函数Creatlink中指定部位的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!1 #include<stdio.h>2 #include<stdlib.h>3 typedef struct aa4 { int data;5 struct aa *next;6 } NODE;7 NODE *Creatlink(int n,int m)8 {NODE * h=NULL,*p,*s;9 int i;10 /**********found**********/11 p=(NODE)malloc(sizeof(NODE));12 h=p;13 { p->next=NULL;14 for(i=1;i<=n;i++)15 {s=(NODE *)malloc(sizeof(NODE));16 s->data=rand()%m; s->next=p->next;17 p->next=s;p=p->next;18 }19 /**********found**********/20 return p;21 }22 outlink(NODE *h)23 { NODE *p;24 p=h->next;25 printf(''\nXnTHE LIST:\n\n HEAD'');26 while(p)27 { printf(''->%d'',p->data);28 p=p->next;29 }30 printf(''\n'');}31 main()32 { NODE *head;33 head=Creatlink(8,22);34 outlink(head);}
问答题请编写函数fun,其功能是:计算并输出3到n之间(含3和n)所有素数的平方根之和。 例如,在主函数中从键盘给n输入100后,输出为:sum=148.874270。 注意:要求n的值大于2但不大于100。部分源程序给出如下。清勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 [试题源程序] #include<math.h> #include<stdio.h> double fun(int n) main() int n; double sum; printf("/n/nInput n:"); scanf("%d",&n); sum=fun(n); printf("/n/nsum=%f/n/n",sum);
问答题请编写函数proc(),函数的功能是求出二维数组周边元素之和,作为函数值返回。二维数组中的值在主函数中赋予。
例如,若二维数组中的值为:
0 1 2 3 4
5 9 7 4 5
4 3 8 3 6
3 5 6 8 7
则函数值为59。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。
试题程序:
#include<stdlib.h>
#include<conio.h>
#include<stdio.h>
#define M 4
#define N 5
int proc(int a[M][N])
{
}
void main()
{
int aa[M][N]={{0, 1, 2, 3, 4}, {5, 9, 7, 4, 5},
{4, 3, 8, 3, 6}, {3, 5, 6, 8, 7}};
int i, j, y;
system("CLS");
printf("The original data is: /n");
for(i=0; i<M; i++)
{for(j=0; j<N; j++)
printf("%6d", aa[i][j]);
printf("n");
}
y=proc(aa);
printf("/nThe sun: %d/n", y);
printf("n");
}
问答题编写函数fun,其功能是:将两个两位数的正整数a、b合并成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的十位和干位上,b数的十位和个位数依次放在c数的百位和个位上。
例如,当a=45,b=12时,调用该函数后,c=5142。
注意
:部分源程序给出如下。数据文件INDAT中的数据不得修改。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入编写的若干语句。
试题程序:
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
void fun(int a ,int b,long *c)
{
}
void main()
{
int a,b;
long c;
system("CLS");
printf("Input a,b:");
scanf("%d%d",
fun(a,b,
printf("The result is:%ld/n",c);
}
问答题给定程序MODI1.C的功能是:读入一个整数k(2≤k≤10000),打印它的所有质因子(即所有为素数的因子)。
例如,若输入整数:2310,则应输出:2、3、5、7、11。
请改正程序中的语法错误,使程序能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
给定源程序:
#include
/************found************/
IsPrime ( int n );
{ int i, m;
m = 1;
for ( i = 2; i < n; i++ )
/************found************/
if !( n%i )
{ m = 0; break ; }
return ( m );
}
main( )
{ int j, k;
printf( "/nPlease enter an integer number between 2 and 10000: " ); scanf( "%d",
printf( "/n/nThe prime factor(s) of %d is( are ):", k );
for( j = 2; j <= k; j++ )
if( ( !( k%j ) )
printf("/n");
}
问答题编程题
下列程序定义了N×N的二维数组,并在主函数中自动赋值。请编写函数fun(int a[][N]),该函数的功能是:使数组右上半三角元素中的值全部置成0。例如a数组中的值为
a=4 5 6
1 7 9
3 2 6,
则返回主程序后a数组中的值应为
0 0 0
1 0 0
3 2 0
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include
#include
#include
#define N 5
int fun (int a[][N])
{
}
main()
{
int a[N][N],i,j;
clrscr();
printf("*****The array*****/n");
for(i=0;i
问答题给定程序MODI1.C中 fun 函数的功能是: 根据形参m,计算如下公式的值。
1 1 1 1
t = 1 + ----- +----- + ----- + ……+ -----
2 3 4 m
例如,若输入 5,则应输出 2.283333。
请改正程序中的错误或在下划线处填上适当的内容并把下划线删除, 使它能计算出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
给定源程序:
#include
double fun( int m )
{
double t = 1.0;
int i;
for( i = 2; i <= m; i++ )
/**********found**********/
t += 1.0/k;
/**********found**********/
________
}
main()
{
int m;
printf( "/nPlease enter 1 integer number:" );
scanf( "%d",
printf( "/nThe result is %lf/n", fun( m ) );
}
问答题学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把高于等于平均分的学生数据放在b所指的数组中,高于等于平均分的学生人数通过形参n传回,平均分通过函数值返回。 注意:部分源程序在文件PROG1.C中。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 文件PROG1.C内容如下: #include<stdio.h> #define N 12 typedef struet char Hum[10]; double s; STREC; double fun(STREC *a,STREC *b,int *n) void main( ) STREC s[N]="GA05",85,"GA03",76,"GA02",69,"GA04",85, "GA01",91,"GA07",72,"GA08",64,"GA06",87, "GA09",60, "GA11",79,"GA12",73,"GA10",90; STREC h[N],t; FILE *out; int i,j,n; double ave; ave=fun(s,h,&n); printtf("The%d student data which is higher than%7.3f: /n",n,ave); for(i=0;i<n;i++)printf("%s%4.1f/n",h[i].num,h[i].s); printf("/n"); out=fopen("out.dat","w"); fprintf(out,"%d/n%7.3f/n",n,ave); for(i=0;i<n-1;i++) for(j=i+1;j<n;j++) if(h[i].s<h[j].s)t=h[i];h[i]=h[j];h[j]=t; for(i=0;i<n;i++)fprintf(out,"%4.1f/n",h[i].s); fclose(out);
问答题下列给定程序中,函数fun的功能是:从形参ss所指字符串数组中,删除所有串长超过k的字符串,函数返回剩余字符串的个数。SS所指字符串数组中共有N个字符串,且串长小于M。
请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。
注意:部分源程序给出如下。
不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdio.h>
#include<string.h>
#define N 5
#define M 10
int fun(char(*ss)[M],int k)
{int i,j=0,len;
/*********found*********/
for(i=0;i<
【1】
;i++)
{len=strlen(ss[i]);
/*********found*********/
if(len<=
【2】
)
/*********found*********/
strcpy(ss[j++],
【3】
);
}
return j;
}
void main()
{ char x[N][M]={"Beijing","Shanghai","Tianjin","Nanjing","Wuhan");
int i,f;
printf("\nThe original string\n\n");
for(i=0;i<N;i++)puts(x[i]);
printf("\n");
f=fun(x,7);
printf("The string witch length is less than or equal to7:\n");
for(i=0;i<f;i++)puts(x[i]);
printf("\n");
}
问答题下列给定程序中,函数fun的功能是:从形参ss所指字符串数组中,删除所有串长超过k的字符串,函数返回剩余字符串的个数。SS所指字符串数组中共有N个字符串,且串长小于M。
请在程序的下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。
注意:部分源程序在文件BLANK1.C中。不得增行或删行,也不得更改程序的结构!
#include
#include #define N 5 #define M 10 int fun(char(*ss)[M],int k) {int i,j=0,len; /**********found**********/ for(i=0;i<【1】;i++) {len=strlen(ss[i]); /**********found**********/ if(1en<=【2】) /**********found**********/ strcpy(ss[j++],【3】); } return j; } main() {char x[N][M]={''Beijing'',''Chongqing'',''Tianjin'',''Nanjing'',''Guangzhou''}; int j,f; printf(''\nThe original string\n\n); for(i=0;i<N;i++) puts(x[i]); printf(''\n''); f=fun(x,7); printf(''The string witch length is less than or equal to 7:\n''); for(i=0;i<f;i++)puts(x[i]); printf(''\n''); }
问答题请编写一个函数void fun(char *tt,int pp[]),统计在tt所指字符串中“'a'"到“'z'”26个小写字母各自出现的次数,并依次放在pp所指数组中。
例如,当输入字符串:abcdefgabcdeabc后,程序的输出结果应该是:
3 3 3 2 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
#include
void fun(char *tt,int pp[])
{
}
main()
{char aa[1000] ;
int bb [26], k;
void NONO ();
printf( "/nPlease enter a char
string:"); scanf( "%s", aa);
fun (aa, bb);
for (k=0; k<26; k++) printf
("%d",bb[k]);
printf(”/n”);
NONO ();
}
void NONO ()
(/*本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/
char aa[1000] ;
int bb[26], k,i ;
FILE *rf,*wf ;
rf = fopen("in.dat","r");
wf=fopen ("out.dat","w");
for(i = 0 ; i < 10 ; i++) {
fscanf (rf, ¨%s", aa);
fun (aa, bb);
for (k'=0;k<26;k++) fprintf
(wf, "%d",bb [k]);
fprintf (wf, "/n");
}
fclose (rf);
fclose (wf);
}
问答题假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:使字符串的前导*号不得多于n个;若多于n个,则删除多余的*号;若少于或等于n个,则什么也不做,字符串中间和尾部的*号不删除。函数fun中给出的语句仅供参考。
例如,字符串中的内容为:*******A*BC*DEF*G****,若n的值为4,删除后,字符串中的内容应当是:****A*BC*DEF*G****;若n的值为8,则字符串中的内容仍为:*******A*BC*DEF*G****。n的值在主函数中输入。在编写函数时,不得使用C语言提供的字符串函数。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
给定源程序:
#include<stdio.h>
void fun(char*a,int n)
{
/*以下代码仅供参考*/
int i=0,j,k=0;
while(a[k]=="*")k++;/*k为统计*字符个数*/
if(k>n)
{
i=n;j=k;
/*以下完成将下标为k至串尾的字符前移k-n个位置*/
}
}
main()
{char s[81];int n;
printf("Enter a string:/n");getg(s);
printf("Enter n:");seanf("%d,
fun(s,n);
printf("The string after deleted:/n");puts(s);
}
问答题请编写一个函数fun,它的功能是:比较两个字符串的长度,(不得调用C语言提供的求字符串长度的函数),函数返回较长的字符串。若两个字符串长度相同,则返回第一个字符串。 例如,输入beijing<CR>shanghai<CR>(<CR>为回车键),函数将返回shanghai。 注意:部分源程序存在文件PROG1.C中。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。1 #include<stdio.h>2 char *fun(char *s,char *t)3 {4 }5 main()6 { char a[20],b[20];7 void NONO();8 printf(''Input:1th string:'');9 gets(a);10 printf(''Input 2th string :'');11 gets(b);12 printf(''%s\n'',fun(a,b));13 NONO();14 }15 void NONO()16 {/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */17 FILE *fp,*wf;18 int i;19 char a[20],b[20];20 fp=fopen(''in.dat'',''r'');21 wf=fopen(''out''.dat'',''w'');22 for(i=0;i<10;i++){23 fscanf(fp,''%s%s'',a,b);24 fprintf(wf,''%s\n'',fun(a,b));25 }26 fclose(fp);28 fclose(wf); }
问答题请编写一个函数fun(),其功能是找出一维整型数组元素中最大的值和它所在的下标,并将它们通过形参传回。数组元素中的值已在主函数中赋予。 在主函数中,x是数组名,n是x中的数据个数,max存放最大值,index存放最大值所在元素的下标。 #include<stdlib.h> #include<stdio.h> void fun(int a[],int n,int *max,int *d) main() int i,x[20],max,index,n=10;void NONO(); for(i=0;i<n;i++)x[i]=rand()%50;printf("%4d",x[i]);) printf("/n"); fun(x,n, printf("Max=%5d,Index=%4d/n",max,index); NONO();
问答题给定程序中,函数fun的功能是:把形参s所指字符串中下标为奇数的字符右移到下一个奇数位置,最右边被移出字符串的字符绕回放到第一个奇数位置,下标为偶数的字符不动(注:字符串的长度大于等于2)。例如,形参s所指的字符串为:abcdefgh,执行结果为:ahcbedgf。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!
给定源程序:
#include
void fun(char *s)
{ int i, n, k; char c;
n=0;
for(i=0; s[i]!='/0'; i++) n++;
/**********found**********/
if(n%2==0) k=n-___1___ ;
else k=n-2;
/**********found**********/
c=___2___ ;
for(i=k-2; i>=1; i=i-2) s[i+2]=s[i];
/**********found**********/
s[1]=___3___ ;
}
main()
{ char s[80]="abcdefgh";
printf("/nThe original string is : %s/n",s);
fun(s);
printf("/nThe result is : %s/n",s);
}
问答题请编写函数fun,该函数的功能是:统计一行字符串中单词的个数,作为函数值返回。字符串在主函数中输入,规定所有单词由小写字母组成,单词之间有若干个空格隔开,一行的开始没有空格。 注意:部分源程序在文件PROG1.C中。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序:#include < string.h >#include < stdio.h >#define N 80int fun (char*s) { }void main () { FILE *wf; char line[ N] ; intt num =0: printf "Enter a string:/n ") ; gets (line) ; num = fun (line) ; printf ( " The number of word wf = fopen ("out.dat", "w") , fprintf (wf, "% d", fun ( " a big fclose (wf) ;/*********found*********/}
问答题
给定程序MODI1.C中fun函数的功能是:求
s=aa…aa-…-aaa-aa-a
(此处aa…aa表示n个a,a和n的值在1至9之间)
例如a=3,n=6,则以上表达式为:
s=333333-33333-3333-333-33-3
其值是:296298
a和n是fun函数的形参,表达式的值作为函数值传回main函数。
请改正程序中的错误,使它能计算出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include<stdio.h>
long fun(int a, int n)
{int j;
/**********found**********/
long s=0, t=1;
for(j=0; j<n; j++)
t=t*10+a;
s=t;
for(j=1; j<n; j++) {
/**********found**********/
t=t%10;
s=s-t;
}
return(s);
}
main()
{int a, n;
printf("inPlease enter a and n:");
scanf("%d%d",
printf("The value of function is:%ld/n", fun(a, n));
}
