编程题考试做题要求:
1、按题目要求编写部分代码,不要改动已经有的代码。
2、在运行时如果遇到死循环,按Ctrl+Break键结束运行。
3、题目做完后必须要有运行结果,没有运行结果没有分。
1、请编写函数fun,函数的功能是,移动字符串中的内容,移动的规则如下,把第1到第m个字符,平移到字符串的最后,把第m+1到最后的字符移到字符串的前部。
例如,字符串中原有的内容为,ABCDEFGHIJK,m的值为3,则移动后,字符串中的内容应该是,DEFGHIJKABC。
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h>
#include <string.h>
#define N 80
void fun1(char *w) /* 本函数的功能是将字符串中字符循环左移一个位置 */
{
int i; char t;
t=w[0];
for(i=0;i<strlen(w)-1;i++)
w[i]=w[i+1];
w[strlen(w)-1]=t;
}
void fun(char *w,int m) /*可调用fun1函数左移字符 */
{
}
main()
{ char a[N]= "ABCDEFGHIJK";
int m;
printf("The original string:\n");puts(a);
printf("\n\nEnter m,");scanf("%d",&m);
fun(a,m);
printf("\nThe string after moving:\n");puts(a);
printf("\n\n");
NONO();
}
NONO()
{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */
FILE *rf,*wf ; char a[N] ; int m,i ;
rf = fopen("c:\\test\\in.dat","r") ;
wf = fopen("c:\\test\\out.dat","w") ;
for(i = 0 ; i < 10 ; i++) {
fscanf(rf,"%d %s",&m,a) ;
fun(a,m) ;
fprintf(wf,"%s\n",a) ;
}
fclose(rf) ; fclose(wf) ;
}
2、学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把指定分数范围内的学生数据放在b所指的数组中,分数范围内的学生人数由函数值返回。
例如,输入的分数是60 69,则应当把分数在60到69的学生数据进行输出,包含60分和69分的学生数据。主函数中将把60放在low中,把69放在heigh中。
注意,部分源程序在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h>
#define N 16
typedef struct
{ char num[10];
int s;
} STREC;
int fun( STREC *a,STREC *b,int l,int h )
{
}
main()
{ STREC s[N]={{"GA005",85},{"GA003",76},
{"GA002",69},{"GA004",85},{"GA001",96},
{"GA007",72},{"GA008",64},{"GA006",87},
{"GA015",85},{"GA013",94},{"GA012",64},
{"GA014",91},{"GA011",90},{"GA017",64},
{"GA018",64},{"GA016",72}};
STREC h[N],tt;FILE *out ;
int i,j,n,low,heigh,t;
printf("Enter 2 integer number low & heigh,");
scanf("%d%d",&low,&heigh);
if ( heigh< low ){ t=heigh;heigh=low;low=t; }
n=fun( s,h,low,heigh );
printf("The student's data between %d--%d,\n",low,heigh);
for(i=0;i<n; i++)
printf("%s %4d\n",h[i].num,h[i].s);
printf("\n");
out = fopen("c:\\test\\out.dat","w") ;
n=fun( s,h,80,98 );
fprintf(out,"%d\n",n);
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(h[i].s>h[j].s) {tt=h[i] ;h[i]=h[j]; h[j]=tt;}
for(i=0;i<n; i++)
fprintf(out,"%4d\n",h[i].s);
fprintf(out,"\n");
fclose(out);
}
3、已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中。请编写函数 fun,函数的功能是:找出成绩最低的学生记录,通过形参返回主函数(规定只有一个最低分)。
注意,部分源程序存在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h>
#include <string.h>
#define N 10
typedef struct ss
{ char num[10]; int s; } STU;
fun( STU a[],STU *s )
{
}
main ( )
{ STU a[N]={ {"A01",81},{"A02",89},{"A03",66},
{"A04",87},{"A05",77},{"A06",90},
{"A07",79},{"A08",61},{"A09",80},
{"A10",71} },m ;
int i;
printf("***** The original data *****\n");
for ( i=0; i< N; i++ )printf("No = %s Mark = %d\n",a[i].num,a[i].s);
fun ( a,&m );
printf ("***** THE RESULT *****\n");
printf ("The lowest,%s,%d\n",m.num,m.s);
NONO( );
}
NONO( )
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *rf,*wf ;
STU a[N],m ;
int i ;
rf = fopen("c:\\test\\in.dat","r") ;
wf = fopen("c:\\test\\out.dat","w") ;
for(i = 0 ; i < 10; i++) fscanf(rf,"%s %d",a[i].num,&a[i].s) ;
fun(a,&m) ;
fprintf (wf,"The lowest,%s,%d\n",m.num,m.s) ;
fclose(rf) ;
fclose(wf) ;
}
4、请编写一个函数fun,其功能是,将ss所指字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。
例如,若输入"abc4EFg",则应输出"aBc4EFg"。
注意,部分源程序在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h>
#include <string.h>
void fun( char *ss )
{
}
void main( void )
{
char tt[51];
printf( "\nPlease enter an character string within 50 characters:\n" );
gets( tt );
printf( "\n\nAfter changing,the string\n \"%s\"",tt );
fun(tt) ;
printf( "\nbecomes\n \"%s\"",tt );
NONO();
}
NONO()
{
/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,
输出数据,关闭文件。 */
char tt[51],ch;
FILE *rf,*wf ;
int len,i=0 ;
rf = fopen("c:\\test\\in.dat","r") ;
wf = fopen("c:\\test\\out.dat","w") ;
while(i < 10) {
fgets( tt,50,rf );
len = strlen(tt) - 1 ;
ch = tt[len] ;
if(ch == '\n' || ch == 0x1a) tt[len] = 0 ;
fun(tt);
fprintf( wf,"%s\n",tt );
i++ ;
}
fclose(rf) ;
fclose(wf) ;
}
5、请编一个函数fun,函数的功能是使实型数保留2位小数,并对第三位进行四舍五入 (规定实型数为正数)。
例如:实型数为 1234.567,则函数返回 1234.57;
实型数为 1234.564,则函数返回 1234.56。
注意,部分源程序存在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h>
float fun ( float h )
{
}
main( )
{ float a;
printf ("Enter a,"); scanf ( "%f",&a );
printf ( "The original data is," );
printf ( "%f \n\n",a );
printf ( "The result,%f\n",fun ( a ) );
NONO( );
}
NONO( )
{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,
输出数据,关闭文件。 */
int i ;
float a ;
FILE *rf,*wf ;
rf = fopen("c:\\test\\in.dat","r") ;
wf = fopen("c:\\test\\out.dat","w") ;
for(i = 0 ; i < 20 ; i++) {
fscanf(rf,"%f",&a) ;
fprintf(wf,"%f\n",fun(a)) ;
}
fclose(rf) ;
fclose(wf) ;
}
6、请编写一个函数fun,它的功能是:根据以下公式求π的值(要求满足精度0.0005,即某项小于0.0005时停止迭代):
π 1 1×2 1×2×3 1×2×3×4 1×2×…×n
─ = 1 + ─ + ─— + ──── + ────── +……+────────
2 3 3×5 3×5×7 3×5×7×9 3×5×…×(2n+1)
程序运行后,如果输入精度0.0005,则程序输出为3.14…。
注意,部分源程序存在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h>
#include <math.h>
double fun ( double eps)
{
}
main( )
{ double x;
printf("Input eps:") ;
scanf("%lf",&x); printf("\neps = %lf,PI=%lf\n",x,fun(x));
NONO();
}
NONO ( )
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *fp,*wf ;
int i ;
double x ;
fp = fopen("c:\\test\\in.dat","r") ;
wf = fopen("c:\\test\\out.dat","w") ;
for(i = 0 ; i < 10 ; i++) {
fscanf(fp,"%lf",&x) ;
fprintf(wf,"%lf\n",fun(x)) ;
}
fclose(fp) ;
fclose(wf) ;
}
7、m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人数作为函数值返回,将低于平均分的分数放在below所指的数组中。
例如,当score数组中的数据为:10、20、30、40、50、60、70、80、90时,函数返回的人数应该是4,below中的数据应为,10、20、30、40。
注意,部分源程序在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h>
#include <string.h>
int fun(int score[],int m,int below[])
{
}
main( )
{ int i,n,below[9] ;
int score[9] = {10,20,30,40,50,60,70,80,90} ;
n = fun(score,9,below) ;
printf( "\nBelow the average score are," ) ;
for (i = 0 ; i < n ; i++) printf("%d ",below[i]) ;
NONO() ;
}
NONO ( )
{/* 本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/
int i,j,n,below[10],score[10] ;
FILE *rf,*wf ;
rf = fopen("c:\\test\\in.dat","r") ;
wf = fopen("c:\\test\\out.dat","w") ;
for(i = 0 ; i < 10 ; i++) {
for(j = 0 ; j < 10 ; j++) fscanf(rf,"%d",&score[j]) ;
n = fun(score,10,below) ;
for(j = 0 ; j < n ; j++) fprintf(wf,"%d ",below[j]) ;
fprintf(wf,"\n") ;
}
fclose(rf) ;
fclose(wf) ;
}
8、假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了字符串前导的*号之外,将串中其它*号全部删除。在编写函数时,不得使用C语言提供的字符串函数。
例如,字符串中的内容为:****A*BC*DEF*G*******,删除后,字符串中的内容应当是:****ABCDEFG。
注意,部分源程序在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h>
void fun( char *a )
{
/* 以下代码仅供参考 */
int i=0,k;
while(a[i]=='*') i++;
k=i+1;
while(a[i]!='\0') /* 以下程序段实现非*字符前移 */
{
}
a[i+1]='\0';
}
main()
{ char s[81];
printf("Enter a string:\n");gets(s);
fun( s );
printf("The string after deleted:\n");puts(s);
NONO();
}
NONO()
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *in,*out ;
int i ; char s[81] ;
in = fopen("c:\\test\\in.dat","r") ;
out = fopen("c:\\test\\out.dat","w") ;
for(i = 0 ; i < 10 ; i++) {
fscanf(in,"%s",s) ;
fun(s) ;
fprintf(out,"%s\n",s) ;
}
fclose(in) ;
fclose(out) ;
}
9、假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串中的前导*号全部移到字符串的尾部。
例如,字符串中的内容为:*******A*BC*DEF*G****,移动后,字符串中的内容应当是:A*BC*DEF*G***********。在编写函数时,不得使用C语言提供的字符串函数。
注意,部分源程序在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h>
void fun( char *a )
{
/* 以下代码仅供参考 */
char *p,*q;
int n=0;
p=a;
while(*p=='*') /* 统计串头'*'个数n */
{n++; p++;}
q=a;
/* 向前复制字符串,请填写相应的语句完成其功能 */
for(;n>0;n--) /* 在串尾补n个'*' */
*q++='*';
*q='\0';
}
main()
{ char s[81],*p; int n=0;
printf("Enter a string:\n");gets(s);
fun( s );
printf("The string after moveing:\n");puts(s);
NONO();
}
NONO()
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *in,*out ;
int i ; char s[81] ;
in = fopen("c:\\test\\in.dat","r") ;
out = fopen("c:\\test\\out.dat","w") ;
for(i = 0 ; i < 10 ; i++) {
fscanf(in,"%s",s) ;
fun(s) ;
fprintf(out,"%s\n",s) ;
}
fclose(in) ;
fclose(out) ;
}
10、假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:使字符串的前导*号不得多于n个;若多于n个,则删除多余的*号; 若少于或等于n个,则什么也不做,字符串中间和尾部的*号不删除。
例如,字符串中的内容为:*******A*BC*DEF*G****,若n的值为4,删除后,字符串中的内容应当是:****A*BC*DEF*G****;若n的值为8,则字符串中的内容仍为:*******A*BC*DEF*G****。n的值在主函数中输入。 在编写函数时,不得使用C语言提供的字符串函数。
注意,部分源程序在文件PROG1.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");gets(s);
printf("Enter n,");scanf("%d",&n);
fun( s,n );
printf("The string after deleted:\n");puts(s);
NONO();
}
NONO()
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *in,*out ;
int i,n ; char s[81] ;
in = fopen("c:\\test\\in.dat","r") ;
out = fopen("c:\\test\\out.dat","w") ;
for(i = 0 ; i < 10 ; i++) {
fscanf(in,"%s",s) ;
fscanf(in,"%d",&n) ;
fun(s,n) ;
fprintf(out,"%s\n",s) ;
}
fclose(in) ;
fclose(out) ;
}
11、请编写函数fun,它的功能是:求出能整除形参x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。
例如,若 x 中的值为,35,则有 4 个数符合要求,它们是,1,5,7,35。
注意,部分源程序在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h>
void fun ( int x,int pp[],int *n )
{
}
main( )
{ int x,aa[1000],n,i ;
printf( "\nPlease enter an integer number:\n" ) ; scanf("%d",&x) ;
fun(x,aa,&n ) ;
for( i = 0 ; i < n ; i++ )
printf("%d ",aa[i]) ;
printf("\n") ;
NONO( ) ;
}
NONO ( )
{/* 本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/
int x,aa[1000],n,i,j ;
FILE *fp ;
fp = fopen("c:\\test\\out.dat","w") ;
for(j = 0 ; j < 10 ; j++) {
x = 30 + j ;
fun(x,aa,&n) ;
for(i = 0 ; i < n ; i++) fprintf(fp,"%d ",aa[i]) ;
fprintf(fp,"\n") ;
}
fclose(fp) ;
}
12、函数fun的功能是:将s所指字符串中下标为偶数同时ASCII值为奇数的字符删除,s所指串中剩余的字符形成的新串放在t所指的数组中。
例如,若s所指字符串中的内容为"ABCDEFG12345",其中字符C的ASCII码值为奇数,在数组中的下标为偶数,因此必须删除;而字符1的ASCII码值为奇数,在数组中的下标也为奇数,因此不应当删除,其它依此类推。
最后t所指的数组中的内容应是"BDF12345"。
注意,部分源程序存在文件PROG1.C中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h>
#include <string.h>
void fun(char *s,char t[])
{
}
main()
{
char s[100],t[100];
printf("\nPlease enter string S:"); scanf("%s",s);
fun(s,t);
printf("\nThe result is,%s\n",t);
NONO();
}
NONO( )
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
char s[100],t[100] ;
FILE *rf,*wf ;
int i ;
rf = fopen("c:\\test\\in.dat","r") ;
wf = fopen("c:\\test\\out.dat","w") ;
for(i = 0 ; i < 10 ; i++) {
fscanf(rf,"%s",s) ;
fun(s,t) ;
fprintf(wf,"%s\n",t) ;
}
fclose(rf) ;
fclose(wf) ;
}
13、函数fun的功能是:将a、b中的两个两位正整数合并形成一个新的整数放在c中。合并的方式是:将a中的十位和个位数依次放在变量c的百位和个位上,b中的十位和个位数依次放在变量c的十位和千位上。
例如,当a=45,b=12。调用该函数后,c=2415。
注意,部分源程序存在文件PROG1.C中。数据文件IN.DAT中的数据不得修改。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#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);
NONO();
}
NONO ( )
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *rf,*wf ;
int i,a,b ; long c ;
rf = fopen("c:\\test\\in.dat","r") ;
wf = fopen("c:\\test\\out.dat","w") ;
for(i = 0 ; i < 10 ; i++) {
fscanf(rf,"%d,%d",&a,&b) ;
fun(a,b,&c) ;
fprintf(wf,"a=%d,b=%d,c=%ld\n",a,b,c) ;
}
fclose(rf) ;
fclose(wf) ;
}
14、编写函数fun,它的功能是:求小于形参n同时能被3与7整除的所有自然数之和的平方根,并作为函数值返回。
例如若n为1000时,程序输出应为:s = 153.909064。
注意,部分源程序在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <math.h>
#include <stdio.h>
double fun( int n)
{
}
main() /* 主函数 */
{
printf("s =%f\n",fun ( 1000) );
NONO();
}
NONO ( )
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *fp,*wf ;
int i,n ;
float s;
fp = fopen("c:\\test\\in.dat","r") ;
wf = fopen("c:\\test\\out.dat","w") ;
for(i = 0 ; i < 10 ; i++) {
fscanf(fp,"%d",&n) ;
s = fun(n) ;
fprintf(wf,"%f\n",s) ;
}
fclose(fp) ;
fclose(wf) ;
}
15、请编写函数fun,函数的功能是,将M行N列的二维数组中的数据,按行的顺序依次放到一维数组中,一维数组中数据的个数存放在形参n所指的存储单元中。
例如,二维数组中的数据为:
33 33 33 33
44 44 44 44
55 55 55 55
则一维数组中的内容应是:
33 33 33 33 44 44 44 44 55 55 55 55。
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h>
void fun(int (*s)[10],int *b,int *n,int mm,int nn)
{
}
main()
{ int w[10][10] = {{33,33,33,33},
{44,44,44,44},{55,55,55,55}},i,j ;
int a[100] = {0},n = 0 ;
printf("The matrix:\n") ;
for(i = 0 ; i < 3 ; i++)
{ for(j = 0 ; j < 4 ; j++) printf("%3d",w[i][j]) ;
printf("\n") ;
}
fun(w,a,&n,3,4) ;
printf("The A array:\n") ;
for(i = 0 ; i < n ; i++) printf("%3d",a[i]);printf("\n\n") ;
NONO() ;
}
NONO()
{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。*/
FILE *rf,*wf ; int i,j,k ;
int w[10][10],a[100],n = 0,mm,nn ;
rf = fopen("c:\\test\\in.dat","r") ;
wf = fopen("c:\\test\\out.dat","w") ;
for(k = 0 ; k < 5 ; k++) {
fscanf(rf,"%d %d",&mm,&nn) ;
for(i = 0 ; i < mm ; i++)
for(j = 0 ; j < nn ; j++) fscanf(rf,"%d",&w[i][j]) ;
fun(w,a,&n,mm,nn) ;
for(i = 0 ; i < n ; i++) fprintf(wf,"%3d",a[i]) ; fprintf(wf,"\n") ;
}
fclose(rf) ; fclose(wf) ;
}
16、学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:按分数的高低排列学生的记录,高分在前。
注意,部分源程序在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h>
#define N 16
typedef struct
{ char num[10];
int s;
} STREC;
int fun( STREC a[] )
{
}
main()
{ 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}};
int i;FILE *out ;
fun( s );
printf("The data after sorted,\n");
for(i=0;i<N; i++)
{ if( (i)%4==0 )printf("\n");
printf("%s %4d ",s[i].num,s[i].s);
}
printf("\n");
out = fopen("c:\\test\\out.dat","w") ;
for(i=0;i<N; i++)
{ if( (i)%4==0 && i) fprintf(out,"\n");
fprintf(out,"%4d ",s[i].s);
}
fprintf(out,"\n");
fclose(out) ;
}
17、程序定义了N×N的二维数组,并在主函数中赋值。请编写函数fun,函数的功能是:求出数组周边元素的平均值并作为函数值返给主函数中的s。
例如:a 数组中的值为
|0 1 2 7 9|
|1 9 7 4 5|
a = |2 3 8 3 1|
|4 5 6 8 2|
|5 9 1 4 1|
则返回主程序后s的值应为,3.375。
注意,部分源程序存在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h>
#include <stdlib.h>
#define N 5
double fun ( int w[][N] )
{
}
main ( )
{ int a[N][N]={0,1,2,7,9,1,9,7,4,5,2,3,8,3,1,4,5,6,8,2,5,9,1,4,1};
int i,j;
double s ;
printf("***** The array *****\n");
for ( i =0; i<N; i++ )
{ for ( j =0; j<N; j++ )
{ printf( "%4d",a[i][j] ); }
printf("\n");
}
s = fun ( a );
printf ("***** THE RESULT *****\n");
printf( "The sum is,%lf\n",s );
NONO( );
}
NONO( )
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *rf,*wf ;
int i,j,a[5][5]; double s ;
rf = fopen("c:\\test\\in.dat","r") ;
wf = fopen("c:\\test\\out.dat","w") ;
for(i = 0 ; i < 5 ; i++)
for(j = 0 ; j < 5 ; j++) fscanf(rf,"%d ",&a[i][j]) ;
s = fun(a) ;
fprintf(wf,"%lf\n",s);
fclose(rf) ;
fclose(wf) ;
}
18、请编写函数fun,其功能是求出数组的最大元素在数组中的下标并存放在k所指的存储单元中。
例如,输入如下整数,876 675 896 101 301 401 980 431 451 777
则输出结果为,6,980
注意,部分源程序在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h>
int fun(int *s,int t,int *k)
{
}
main( )
{
int a[10]={876,675,896,101,301,401,980,431,451,777},k ;
fun(a,10,&k) ;
printf("%d,%d\n",k,a[k]) ;
NONO( ) ;
}
NONO ( )
{/* 本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/
int a[10],i,k,j ;
FILE *rf,*wf ;
rf = fopen("c:\\test\\in.dat","r") ;
wf = fopen("c:\\test\\out.dat","w") ;
for(i = 0 ; i < 10 ; i++) {
for(j = 0 ; j < 10 ; j++) fscanf(rf,"%d",&a[j]) ;
fun(a,10,&k) ;
fprintf(wf,"%d,%d\n",k,a[k]) ;
}
fclose(rf) ;
fclose(wf) ;
}
19、假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串尾部的*号全部删除,前面和中间的*号不删除。
例如,字符串中的内容为:****A*BC*DEF*G*******,删除后,字符串中的内容应当是:****A*BC*DEF*G。在编写函数时,不得使用C语言提供的字符串函数。
注意,部分源程序在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h>
#include <string.h>
void fun( char *a )
{
}
main()
{ char s[81];
printf("Enter a string:\n");gets(s);
fun( s );
printf("The string after deleted:\n");puts(s);
NONO();
}
NONO()
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *in,*out ;
int i ; char s[81] ;
in = fopen("c:\\test\\in.dat","r") ;
out = fopen("c:\\test\\out.dat","w") ;
for(i = 0 ; i < 10 ; i++) {
fscanf(in,"%s",s) ;
fun(s) ;
fprintf(out,"%s\n",s) ;
}
fclose(in) ;
fclose(out) ;
}
20、编写函数fun,函数的功能是求出小于或等于lim的所有素数并放在aa数组中,函数返回所求出的素数的个数。
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h>
#define MAX 100
int fun(int lim,int aa[MAX])
{
/* 以下代码仅供参考 */
int i,j,k=0;
/* 其中变量k用于统计素数个数 */
for(i=2;i<=lim;i++)
{
/* 以下完成判断aa数组中小于或等于lim的素数并统计个数 */
}
return k;
}
main()
{
int limit,i,sum;
int aa[MAX] ;
printf("输入一个整数");
scanf("%d",&limit);
sum=fun(limit,aa);
for(i=0 ; i < sum ; i++) {
if(i % 10 == 0 && i != 0) printf("\n") ;
printf("%5d",aa[i]) ;
}
NONO();
}
NONO()
{
/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,
输出数据,关闭文件。 */
FILE *rf,*wf ;
int limit,i,sum,aa[MAX] ;
rf = fopen("c:\\test\\in.dat","r") ;
wf = fopen("c:\\test\\out.dat","w") ;
fscanf(rf,"%d",&limit);
sum=fun(limit,aa);
for(i=0 ; i < sum ; i++) fprintf(wf,"%d\n",aa[i]) ;
fclose(rf) ;
fclose(wf) ;
}
21、请编写函数fun,函数的功能是:将大于形参m且紧靠m的k个素数存入xx所指的数组中。例如,若输入17,5,则应输出:19,23,29,31,37。
注意,部分源程序在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h>
void fun(int m,int k,int xx[])
{
/* 以下代码仅供参考 */
int i,j=1,t=m+1;
while(j<=k)
{
/* 以下完成判断素数,并存放到数组xx中 */
}
}
main()
{
int m,n,zz[1000] ;
printf( "\nPlease enter two integers:") ;
scanf("%d%d",&m,&n ) ;
fun( m,n,zz) ;
for( m = 0 ; m < n ; m++ )
printf("%d ",zz[m]) ;
printf("\n") ;
NONO( ) ;
}
NONO ( )
{/* 本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/
int m,n,zz[1000],i ;
FILE *rf,*wf ;
rf = fopen("c:\\test\\in.dat","r") ;
wf = fopen("c:\\test\\out.dat","w") ;
for(i = 0 ; i < 10 ; i++) {
fscanf(rf,"%d %d",&m,&n) ;
fun(m,n,zz) ;
for( m = 0 ; m < n ; m++ ) fprintf(wf,"%d ",zz[m]) ;
fprintf(wf,"\n") ;
}
fclose(rf) ;
fclose(wf) ;
}
22、N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。请编写函数fun,它的功能是:找出学生的最高分,由函数值返回。
注意,部分源程序在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h>
#include <stdlib.h>
#define N 8
struct slist
{ double s;
struct slist *next;
};
typedef struct slist STREC;
double fun( STREC *h )
{
}
STREC * creat( double *s)
{ STREC *h,*p,*q; int i=0;
h=p=(STREC*)malloc(sizeof(STREC));p->s=0;
while(i<N)
{ q=(STREC*)malloc(sizeof(STREC));
q->s=s[i]; i++; p->next=q; p=q;
}
p->next=0;
return h;
}
outlist( STREC *h)
{ STREC *p;
p=h->next; printf("head");
do
{ printf("->%2.0f",p->s);p=p->next;}
while(p!=0);
printf("\n\n");
}
main()
{ double s[N]={85,76,69,85,91,72,64,87},max;
STREC *h;
h=creat( s ); outlist(h);
max=fun( h );
printf("max=%6.1f\n",max);
NONO();
}
NONO()
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *in,*out ;
int i,j ; double s[N],max;
STREC *h ;
in = fopen("c:\\test\\in.dat","r") ;
out = fopen("c:\\test\\out.dat","w") ;
for(i = 0 ; i < 10 ; i++) {
for(j=0 ; j < N; j++) fscanf(in,"%lf,",&s[j]) ;
h=creat( s );
max=fun( h );
fprintf(out,"%6.1lf\n",max) ;
}
fclose(in) ;
fclose(out) ;
}
23、学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把高于等于平均分的学生数据放在b所指的数组中,高于等于平均分的学生人数通过形参n传回,平均分通过函数值返回。
注意,部分源程序在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h>
#define N 12
typedef struct
{ char num[10];
double s;
} STREC;
double fun( STREC *a,STREC *b,int *n )
{
}
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 );
printf("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("c:\\test\\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);
}
24、请编写函数 fun,函数的功能是求出二维数组周边元素之和,作为函数值返回。二维数组中的值在主函数中赋予。
例如:二维数组中的值为
1 3 5 7 9
2 9 9 9 4
6 9 9 9 8
1 3 5 7 0
则函数值为 61。
注意,部分源程序存在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h>
#define M 4
#define N 5
int fun ( int a[M][N] )
{
}
main( )
{ int aa[M][N]={{1,3,5,7,9},
{2,9,9,9,4},
{6,9,9,9,8},
{1,3,5,7,0}};
int i,j,y;
clrscr();
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 = fun ( aa );
printf( "\nThe sum,%d\n",y );
printf("\n");
NONO( );
}
NONO( )
{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,
输出数据,关闭文件。 */
int i,j,y,k,aa[M][N] ;
FILE *rf,*wf ;
rf = fopen("c:\\test\\in.dat","r") ;
wf = fopen("c:\\test\\out.dat","w") ;
for(k = 0 ; k < 10 ; k++) {
for(i = 0 ; i < M ; i++)
for(j = 0 ; j < N ; j++) fscanf(rf,"%d",&aa[i][j]) ;
y = fun ( aa );
fprintf(wf,"%d\n",y) ;
}
fclose(rf) ;
fclose(wf) ;
}
25、函数fun的功能是,将s所指字符串中除了下标为奇数、同时ASCII值也为奇数的字符之外,其余的所有字符都删除,串中剩余字符所形成的一个新串放在t所指的数组中。
例如,若s所指字符串中的内容为:"ABCDEFG12345",其中字符A的ASCII码值虽为奇数,但所在元素的下标为偶数,因此必需删除;而字符1的ASCII码值为奇数,所在数组中的下标也为奇数,因此不应当删除,其它依此类推。最后t所指的数组中的内容应是:"135"。
注意,部分源程序存在文件PROG1.C中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h>
#include <string.h>
void fun(char *s,char t[])
{
}
main()
{
char s[100],t[100];
printf("\nPlease enter string S:"); scanf("%s",s);
fun(s,t);
printf("\nThe result is,%s\n",t);
NONO();
}
NONO ( )
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
char s[100],t[100] ;
FILE *rf,*wf ;
int i ;
rf = fopen("c:\\test\\in.dat","r") ;
wf = fopen("c:\\test\\out.dat","w") ;
for(i = 0 ; i < 10 ; i++) {
fscanf(rf,"%s",s) ;
fun(s,t) ;
fprintf(wf,"%s\n",t) ;
}
fclose(rf) ;
fclose(wf) ;
}
26、编写一个函数,从num个字符串中找出最长的一个字符串,并通过形参指针max传回该串地址。(注意,主函数中用****作为结束输入的标志)
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h>
#include <string.h>
fun(char(*a)[81],int num,char **max)
{
/* 以下代码仅供参考 */
int i,k=0,len,maxlen; /* k为a数组中最长串所在元素的下标,初始为0,maxlen为其串长 */
maxlen=strlen(a[k]);
for(i=1;i<num;i++)
{
/* 以下完成查找最长串 */
}
*max=a[k];
}
main()
{
char ss[10][81],*ps;
int n,i=0;
printf("输入若干个字符串:");
gets(ss[i]);
puts(ss[i]);
while(!strcmp(ss[i],"****")==0)
{
i++;
gets(ss[i]);
puts(ss[i]);
}
n=i;
fun(ss,n,&ps);
printf("\nmax=%s\n",ps);
NONO();
}
NONO()
{
/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,
输出数据,关闭文件。 */
char ss[20][81],*ps;
int n,i=0;
FILE *rf,*wf ;
rf = fopen("c:\\test\\in.dat","r") ;
wf = fopen("c:\\test\\out.dat","w") ;
fgets(ss[i],81,rf);
while(!strncmp(ss[i],"****",4)==0)
{
i++;
fgets(ss[i],81,rf);
}
n=i;
fun(ss,n,&ps);
fprintf(wf,"%s",ps);
fclose(rf) ;
fclose(wf) ;
}
27、请编写函数fun,函数的功能是,判断字符串是否为回文?若是,函数返回1,主函数中输出,YES,否则返回0,主函数中输出NO。回文是指顺读和倒读都一样的字符串。
例如,字符串LEVEL是回文,而字符串123312就不是回文。
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h>
#define N 80
int fun(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") ;
NONO() ;
}
NONO()
{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */
FILE *rf,*wf ;
int i ; char s[N] ;
rf = fopen("c:\\test\\in.dat","r") ;
wf = fopen("c:\\test\\out.dat","w") ;
for(i = 0 ; i < 10 ; i++) {
fscanf(rf,"%s",s) ;
if(fun(s)) fprintf(wf,"%s YES\n",s) ;
else fprintf(wf,"%s NO\n",s) ;
}
fclose(rf) ; fclose(wf) ;
}
28、请编写函数fun,函数的功能是,删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。
例如,一维数组中的数据是,2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10。删除后,数组中的内容应该是,2 3 4 5 6 7 8 9 10。
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h>
#define N 80
int fun(int a[],int n)
{
}
main()
{ int a[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10,10},i,n=20;
printf("The original data,\n");
for(i=0; i<n; i++)printf("%3d",a[i]);
n=fun(a,n);
printf("\n\nThe data after deleted,\n");
for(i=0;i<n;i++)printf("%3d",a[i]); printf("\n\n");
NONO();
}
NONO()
{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */
FILE *rf,*wf; int a[N],n,i,j ;
rf = fopen("c:\\test\\in.dat","r") ;
wf = fopen("c:\\test\\out.dat","w") ;
for(i = 0 ; i < 5 ; i++) {
fscanf(rf,"%d",&n) ;
for(j = 0 ; j < n ; j++) fscanf(rf,"%d",&a[j]) ;
n = fun(a,n) ;
for(j = 0 ; j < n ; j++) fprintf(wf,"%4d",a[j]) ;
fprintf(wf,"\n") ;
}
fclose(rf) ; fclose(wf) ;
}
29、请编写一个函数fun,它的功能是:找出一维整型数组元素中最大的值和它所在的下标,最大的值和它所在的下标通过形参传回。数组元素中的值已在主函数中赋予。
主函数中x是数组名,n是x中的数据个数,max存放最大值,index存放最大值所在元素的下标。
注意,部分源程序存在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#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;
randomize() ;
for (i=0;i < n;i++) {x[i] = rand()%50; printf("%4d",x[i]) ; }
printf("\n");
fun( x,n,&max,&index);
printf("Max =%5d,Index =%4d\n",max,index );
NONO();
}
NONO ( )
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *fp,*wf ;
int i,x[20],max,index,n = 10,j ;
fp = fopen("c:\\test\\in.dat","r") ;
wf = fopen("c:\\test\\out.dat","w") ;
for(i = 0 ; i < 10 ; i++) {
for(j = 0 ; j < n ; j++) fscanf(fp,"%d,",&x[j]) ;
fun( x,n,&max,&index);
fprintf(wf,"Max=%d,Index=%d\n",max,index) ;
}
fclose(fp) ;
fclose(wf) ;
}
30、请编写函数fun,函数的功能是:统计一行字符串中单词的个数,作为函数值返回。一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格隔开,一行的开始没有空格。
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h>
#include <string.h>
#define N 80
int fun( char *s)
{
}
main()
{ char line[N]; int num=0;
printf("Enter a string,\n"); gets(line);
num=fun( line );
printf("The number of word is,%d\n\n",num);
NONO();
}
NONO()
{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */
FILE *rf,*wf ; int i,num ; char line[N],*p ;
rf = fopen("c:\\test\\in.dat","r") ;
wf = fopen("c:\\test\\out.dat","w") ;
for(i = 0 ; i < 10 ; i++) {
fgets(line,N,rf) ;
p = strchr(line,'\n') ;
if(p != NULL) *p = 0 ;
num = fun(line) ;
fprintf(wf,"%d\n",num) ;
}
fclose(rf) ; fclose(wf) ;
}
31、程序定义了N×N的二维数组,并在主函数中自动赋值。请编写函数fun,函数的功能是:使数组右上三角元素中的值乘以m 。
例如:若m的值为2,a 数组中的值为
| 1 9 7 | | 2 18 14|
a = | 2 3 8 | 则返回主程序后a数组中的值应为 | 2 6 16|
| 4 5 6 | | 4 5 12|
注意,部分源程序存在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h>
#include <stdlib.h>
#define N 5
int fun ( int a[][N],int m )
{
}
main ( )
{ int a[N][N],m,i,j;
printf("***** The array *****\n");
for ( i =0; i<N; i++ )
{ for ( j =0; j<N; j++ )
{ a[i][j] = rand()%20; printf( "%4d",a[i][j] ); }
printf("\n");
}
do m = rand()%10 ; while ( m>=3 );
printf("m = %4d\n",m);
fun ( a,m );
printf ("THE RESULT\n");
for ( i =0; i<N; i++ )
{ for ( j =0; j<N; j++ ) printf( "%4d",a[i][j] );
printf("\n");
}
NONO ( );
}
NONO( )
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *rf,*wf ;
int i,j,n,a[5][5] ;
rf = fopen("c:\\test\\in.dat","r") ;
wf = fopen("c:\\test\\out.dat","w") ;
for(i = 0 ; i < 5 ; i++)
for(j = 0 ; j < 5 ; j++)
fscanf(rf,"%d ",&a[i][j]) ;
fscanf(rf,"%d",&n) ;
fun(a,n) ;
for ( i = 0; i < 5; i++ ) {
for ( j = 0; j < 5; j++ ) fprintf(wf,"%4d",a[i][j] );
fprintf(wf,"\n");
}
fclose(rf) ;
fclose(wf) ;
}
32、请编写函数fun,函数的功能是,将M行N列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。
例如,二维数组中的数据为:
W W W W
S S S S
H H H H
则字符串中的内容应是,WSHWSHWSH。
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h>
#define M 3
#define N 4
void fun(char s[][N],char *b)
{
int i,j,n=0;
for(i=0; i < N;i++) /* 请填写相应语句完成其功能 */
{
}
b[n]='\0';
}
main()
{ char a[100],w[M][N]={{'W','W','W','W'},{'S','S','S','S'},{'H','H','H','H'}};
int i,j;
printf("The matrix:\n");
for(i=0; i<M; i++)
{ for(j=0;j<N; j++)printf("%3c",w[i][j]);
printf("\n");
}
fun(w,a);
printf("The A string:\n");puts(a);
printf("\n\n");
NONO();
}
NONO()
{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */
FILE *rf,*wf ; int i,j,k ;
char a[100],w[M][N],b ;
rf = fopen("c:\\test\\in.dat","r") ;
wf = fopen("c:\\test\\out.dat","w") ;
for(k = 0 ; k < 10 ; k++) {
for(i = 0 ; i < M ; i++) {
for(j = 0 ; j < N ; j++) fscanf(rf,"%c",&w[i][j]) ;
fscanf(rf,"%c",&b) ;
}
fun(w,a) ;
fprintf(wf,"%s\n",a) ;
}
fclose(rf) ; fclose(wf) ;
}
33、学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把分数最低的学生数据放在b所指的数组中,注意:分数最低的学生可能不止一个,函数返回分数最低的学生的人数。
注意,部分源程序在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h>
#define N 16
typedef struct
{ char num[10];
int s;
} STREC;
int fun( STREC *a,STREC *b )
{
}
main()
{ STREC s[N]={{"GA05",85},{"GA03",76},
{"GA02",69},{"GA04",85},{"GA01",91},
{"GA07",72},{"GA08",64},{"GA06",87},
{"GA015",85},{"GA013",91},{"GA012",64},
{"GA014",91},{"GA011",91},{"GA017",64},
{"GA018",64},{"GA016",72}};
STREC h[N];
int i,n;FILE *out ;
n=fun( s,h );
printf("The %d lowest score,\n",n);
for(i=0;i<n; i++)
printf("%s %4d\n",h[i].num,h[i].s);
printf("\n");
out = fopen("c:\\test\\out.dat","w") ;
fprintf(out,"%d\n",n);
for(i=0;i<n; i++)
fprintf(out,"%4d\n",h[i].s);
fclose(out);
}
34、编写函数fun,它的功能是计算下列级数和,和值由函数值返回。
例如,当n = 10,x=0.3时,函数值为1.349859。
注意,部分源程序在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h>
#include <math.h>
double fun(double x,int n)
{
}
main()
{
printf("%f\n",fun(0.3,10));
NONO();
}
NONO ( )
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *fp,*wf ;
int i,n ;
double s,x ;
fp = fopen("c:\\test\\in.dat","r") ;
wf = fopen("c:\\test\\out.dat","w") ;
for(i = 0 ; i < 10 ; i++) {
fscanf(fp,"%lf,%d",&x,&n) ;
s = fun(x,n) ;
fprintf(wf,"%f\n",s) ;
}
fclose(fp) ;
fclose(wf) ;
}
35、函数fun的功能是:将s所指字符串中ASCII值为奇数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。
例如,若s所指字符串中的内容为:"ABCDEFG12345",其中字符A的ASCII码值为奇数、…、字符1的ASCII码值也为奇数、… 都应当删除,其它依此类推。最后t所指的数组中的内容应是:"BDF24"。
注意,部分源程序存在文件PROG1.C中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h>
#include <string.h>
void fun(char *s,char t[])
{
}
main()
{
char s[100],t[100];
printf("\nPlease enter string S:"); scanf("%s",s);
fun(s,t);
printf("\nThe result is,%s\n",t);
NONO();
}
NONO ( )
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
char s[100],t[100] ;
FILE *rf,*wf ;
int i ;
rf = fopen("c:\\test\\in.dat","r") ;
wf = fopen("c:\\test\\out.dat","w") ;
for(i = 0 ; i < 10 ; i++) {
fscanf(rf,"%s",s) ;
fun(s,t) ;
fprintf(wf,"%s\n",t) ;
}
fclose(rf) ;
fclose(wf) ;
}
36、请编写一个函数fun,它的功能是:求出一个2×M整型二维数组中最大元素的值,并将此值返回调用函数。
注意,部分源程序存在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h>
#define M 4
fun (int a[][M])
{
}
main( )
{ int arr[2][M]={5,8,3,45,76,-4,12,82} ;
printf("max =%d\n",fun(arr)) ;
NONO( ) ;
}
NONO ( )
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *wf ;
int arr[][M]={5,8,3,90,76,-4,12,82} ;
wf = fopen("c:\\test\\out.dat","w") ;
fprintf(wf,"max=%d\n",fun(arr)) ;
fclose(wf) ;
}
37、请编写一个函数fun,它的功能是:将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数)。例如,若输入字符串"-1234",则函数把它转换为整数值 -1234。
注意,部分源程序存在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h>
#include <string.h>
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) ;
}
38、函数fun的功能是,将a、b中的两个两位正整数合并形成一个新的整数放在c中。合并的方式是:将a中的十位和个位数依次放在变量c的百位和个位上,b中的十位和个位数依次放在变量c的千位和十位上。
例如,当a=45,b=12。调用该函数后,c=1425。
注意,部分源程序存在文件PROG1.C中。数据文件IN.DAT中的数据不得修改。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#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);
NONO();
}
NONO ( )
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *rf,*wf ;
int i,a,b ; long c ;
rf = fopen("c:\\test\\in.dat","r") ;
wf = fopen("c:\\test\\out.dat","w") ;
for(i = 0 ; i < 10 ; i++) {
fscanf(rf,"%d,%d",&a,&b) ;
fun(a,b,&c) ;
fprintf(wf,"a=%d,b=%d,c=%ld\n",a,b,c) ;
}
fclose(rf) ;
fclose(wf) ;
}
39、请编写一个函数,函数的功能是删除字符串中的所有空格。
例如,主函数中输入"asd af aa z67",则输出为 "asdafaaz67"。
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h>
#include <ctype.h>
int fun(char *str)
{
}
main()
{
char str[81];
int n;
printf("Input a string:") ;
gets(str);
puts(str);
fun(str);
printf("*** str,%s\n",str);
NONO();
}
NONO()
{
/* 请在此函数内打开文件,输入调试数据,调用 fun 函数,
输出数据,关闭文件。 */
char str[81];
int n = 0;
FILE *rf,*wf ;
rf = fopen("c:\\test\\in.dat","r") ;
wf = fopen("c:\\test\\out.dat","w") ;
while(n < 10) {
fgets(str,80,rf);
fun(str);
fprintf(wf,"%s",str) ;
n++ ;
}
fclose(rf) ;
fclose(wf) ;
}
40、编写一个函数fun,它的功能是:实现两个字符串的连接(不使用库函数strcat),即把p2所指的字符串连接到p1所指的字符串后。
例如,分别输入下面两个字符串:
FirstString--
SecondString
程序输出:
FirstString--SecondString
注意,部分源程序在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h>
void fun(char p1[],char p2[])
{
}
main()
{ char s1[80],s2[40] ;
printf("Enter s1 and s2:\n") ;
scanf("%s%s",s1,s2) ;
printf("s1=%s\n",s1) ;
printf("s2=%s\n",s2) ;
printf("Invoke fun(s1,s2):\n") ;
fun(s1,s2) ;
printf("After invoking:\n") ;
printf("%s\n",s1) ;
NONO() ;
}
NONO ( )
{/* 本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/
int i ;
FILE *rf,*wf ;
char s1[80],s2[40] ;
rf = fopen("c:\\test\\in.dat","r") ;
wf = fopen("c:\\test\\out.dat","w") ;
for(i = 0 ; i < 10 ; i++) {
fscanf(rf,"%s",s1) ;
fscanf(rf,"%s",s2) ;
fun(s1,s2) ;
fprintf(wf,"%s\n",s1) ;
}
fclose(rf) ;
fclose(wf) ;
}
41、编写程序,实现矩阵(3行3列)的转置(即行列互换)
例如,输入下面的矩阵:
100 200 300
400 500 600
700 800 900
程序输出:
100 400 700
200 500 800
300 600 900
注意,部分源程序在文件PROG1.C中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h>
int fun(int array[3][3])
{
}
main()
{
int i,j;
int array[3][3]={{100,200,300},
{400,500,600},
{700,800,900}};
for (i=0;i<3;i++)
{ for (j=0;j<3;j++)
printf("%7d",array[i][j]);
printf("\n");
}
fun(array);
printf("Converted array:\n");
for (i=0;i<3;i++)
{ for (j=0;j<3;j++)
printf("%7d",array[i][j]);
printf("\n");
}
NONO();
}
NONO()
{
/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */
int i,j,array[3][3];
FILE *rf,*wf ;
rf = fopen("c:\\test\\in.dat","r") ;
wf = fopen("c:\\test\\out.dat","w") ;
for (i=0;i<3;i++)
for (j=0;j<3;j++)
fscanf(rf,"%d",&array[i][j]);
fun(array);
for (i=0;i<3;i++)
{ for (j=0;j<3;j++)
fprintf(wf,"%7d",array[i][j]);
fprintf(wf,"\n");
}
fclose(rf) ;
fclose(wf) ;
}
42、请编写函数fun,函数的功能是,移动一维数组中的内容; 若数组中有n个整数,要求把下标从0到p(含p,p小于等于n-1)的数组元素平移到数组的最后。
例如,一维数组中的原始内容为,1,2,3,4,5,6,7,8,9,10; p的值为3。移动后,一维数组中的内容应为,5,6,7,8,9,10,1,2,3,4。
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h>
#define N 80
void fun(int *w,int p,int n)
{
}
main()
{ int a[N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
int i,p,n=15;
printf("The original data:\n");
for(i=0; i<n; i++)printf("%3d",a[i]);
printf("\n\nEnter p,");scanf("%d",&p);
fun(a,p,n);
printf("\nThe data after moving:\n");
for(i=0; i<n; i++)printf("%3d",a[i]);
printf("\n\n");
NONO();
}
NONO()
{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */
FILE *rf,*wf ; int a[N],i,j,p,n ;
rf = fopen("c:\\test\\in.dat","r") ;
wf = fopen("c:\\test\\out.dat","w") ;
for(i = 0 ; i < 5 ; i++) {
fscanf(rf,"%d %d",&n,&p) ;
for(j = 0 ; j < n ; j++) fscanf(rf,"%d",&a[j]) ;
fun(a,p,n) ;
for(j = 0 ; j < n ; j++) fprintf(wf,"%3d",a[j]) ; fprintf(wf,"\n") ;
}
fclose(rf) ; fclose(wf) ;
}
43、请编写函数fun,函数的功能是,将放在字符串数组中的M个字符串(每串的长度不超过N),按顺序合并组成一个新的字符串。
例如,字符串数组中的M个字符串为
AAAA
BBBBBBB
CC
则合并后的字符串的内容应是,AAAABBBBBBBCC。
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h>
#define M 3
#define N 20
void fun(char a[M][N],char *b)
{
/* 以下代码仅供参考 */
int i; *b=0;
}
main()
{ char w[M][N]={"AAAA","BBBBBBB","CC"},a[100];
int i ;
printf("The string:\n");
for(i=0; i<M; i++)puts(w[i]);
printf("\n");
fun(w,a);
printf("The A string:\n");
printf("%s",a);printf("\n\n");
NONO();
}
NONO()
{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */
FILE *rf,*wf ;
char w[M][N],a[100] ; int i ;
rf = fopen("c:\\test\\in.dat","r") ;
wf = fopen("c:\\test\\out.dat","w") ;
for(i = 0 ; i < 10 ; i++) {
fscanf(rf,"%s %s %s",w[0],w[1],w[2]) ;
fun(w,a) ;
fprintf(wf,"%s\n",a) ;
}
fclose(rf) ; fclose(wf) ;
}
44、函数fun的功能是:将a、b中的两个两位正整数合并形成一个新的整数放在c中。合并的方式是:将a中的十位和个位数依次放在变量c的十位和千位上,b中的十位和个位数依次放在变量c的个位和百位上。
例如,当a=45,b=12。调用该函数后,c=5241。
注意,部分源程序存在文件PROG1.C中。数据文件IN.DAT中的数据不得修改。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#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);
NONO();
}
NONO ( )
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *rf,*wf ;
int i,a,b ; long c ;
rf = fopen("c:\\test\\in.dat","r") ;
wf = fopen("c:\\test\\out.dat","w") ;
for(i = 0 ; i < 10 ; i++) {
fscanf(rf,"%d,%d",&a,&b) ;
fun(a,b,&c) ;
fprintf(wf,"a=%d,b=%d,c=%ld\n",a,b,c) ;
}
fclose(rf) ;
fclose(wf) ;
}
45、假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:只删除字符串前导和尾部的*号,串中字母之间的*号都不删除。形参n给出了字符串的长度,形参h给出了字符串中前导*号的个数,形参e给出了字符串中最后*号的个数。在编写函数时,不得使用C语言提供的字符串函数。
例如,字符串中的内容为:****A*BC*DEF*G*******,删除后,字符串中的内容应当是:A*BC*DEF*G。
注意,部分源程序在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h>
void fun( char *a,int n,int h,int e )
{
}
main()
{ char s[81],*t,*f; int m=0,tn=0,fn=0;
printf("Enter a string:\n");gets(s);
t=f=s;
while(*t){t++;m++;}
t--;
while(*t=='*'){t--;tn++;}
while(*f=='*'){f++;fn++;}
fun( s,m,fn,tn );
printf("The string after deleted:\n");puts(s);
NONO();
}
NONO()
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *in,*out ;
int i ; char s[81],*t,*f ;
int m=0,tn=0,fn=0;
in = fopen("c:\\test\\in.dat","r") ;
out = fopen("c:\\test\\out.dat","w") ;
for(i = 0 ; i < 10 ; i++) {
fscanf(in,"%s",s) ;
t=f=s;
m=0; tn=0; fn=0;
while(*t){t++;m++;}
t--;
while(*t=='*'){t--;tn++;}
while(*f=='*'){f++;fn++;}
fun(s,m,fn,tn);
fprintf(out,"%s\n",s) ;
}
fclose(in) ;
fclose(out) ;
}
46、函数fun的功能是:将a、b中的两个两位正整数合并形成一个新的整数放在c中。合并的方式是:将a中的十位和个位数依次放在变量c的千位和十位上,b中的十位和个位数依次放在变量c的个位和百位上。
例如,当a=45,b=12。调用该函数后,c=4251。
注意,部分源程序存在文件PROG1.C中。数据文件IN.DAT中的数据不得修改。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#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);
NONO();
}
NONO ( )
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *rf,*wf ;
int i,a,b ; long c ;
rf = fopen("c:\\test\\in.dat","r") ;
wf = fopen("c:\\test\\out.dat","w") ;
for(i = 0 ; i < 10 ; i++) {
fscanf(rf,"%d,%d",&a,&b) ;
fun(a,b,&c) ;
fprintf(wf,"a=%d,b=%d,c=%ld\n",a,b,c) ;
}
fclose(rf) ;
fclose(wf) ;
}
47、请编写函数fun,函数的功能是:统计各年龄段的人数。N个年龄通过调用随机函数获得,并放在主函数的age数组中;要求函数把0至9岁年龄段的人数放在d[0]中,把10至19岁年龄段的人数放在d[1]中,把20至29岁年龄段的人数放在d[2]中,其余依此类推,把100岁 (含100)以上年龄的人数都放在d[10]中。结果在主函数中输出。
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h>
#define N 50
#define M 11
void fun( int *a,int *b)
{
}
double rnd()
{ static t=29,c=217,m=1024,r=0;
r=(r*t+c)%m; return((double)r/m);
}
main()
{ int age[N],i,d[M];
for(i=0; i<N;i++)age[i]=(int)(115*rnd());
printf("The original data,\n");
for(i=0;i<N;i++) printf((i+1)%10==0?"%4d\n":"%4d",age[i]);
printf("\n\n");
fun( age,d);
for(i=0;i<10;i++)printf("%4d---%4d,%4d\n",i*10,i*10+9,d[i]);
printf(" Over 100,%4d\n",d[10]);
NONO(d);
}
NONO(int d[M])
{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */
FILE *wf ; int i ;
wf = fopen("c:\\test\\out.dat","w") ;
for(i = 0 ; i < 10 ; i++) fprintf(wf,"%4d---%4d,%4d\n",i*10,i*10+9,d[i]) ;
fprintf(wf," Over 100,%4d\n",d[10]) ;
fclose(wf) ;
}
48、编写函数fun,它的功能是:计算并输出下列级数和:
1 1 1
S = ── + ── + … + ───
1×2 2×3 n(n+1)
例如,当n = 10时,函数值为:0.909091。
注意,部分源程序在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h>
double fun( int n )
{
}
main() /* 主函数 */
{
printf("%f\n",fun(10));
NONO();
}
NONO ( )
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *fp,*wf ;
int i,n ;
double s ;
fp = fopen("c:\\test\\in.dat","r") ;
wf = fopen("c:\\test\\out.dat","w") ;
for(i = 0 ; i < 10 ; i++) {
fscanf(fp,"%d",&n) ;
s = fun(n) ;
fprintf(wf,"%f\n",s) ;
}
fclose(fp) ;
fclose(wf) ;
}
49、编写函数fun,其功能是:根据以下公式求P的值,结果由函数值带回。m与n为两个正整数且要求m > n。
m!
P = ───
n!(m-n)!
例如:m=12,n=8时,运行结果为495.000000。
注意,部分源程序在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h>
float fun(int m,int n)
{
}
main() /* 主函数 */
{
printf("P=%f\n",fun (12,8));
NONO();
}
NONO ( )
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *fp,*wf ;
int i,m,n ;
float s;
fp = fopen("c:\\test\\in.dat","r") ;
wf = fopen("c:\\test\\out.dat","w") ;
for(i = 0 ; i < 10 ; i++) {
fscanf(fp,"%d,%d",&m,&n) ;
s = fun(m,n) ;
fprintf(wf,"%f\n",s) ;
}
fclose(fp) ;
fclose(wf) ;
}
50、请编写函数fun,函数的功能是,将M行N列的二维数组中的数据,按列的顺序依次放到一维数组中。
例如,二维数组中的数据为:
33 33 33 33
44 44 44 44
55 55 55 55
则一维数组中的内容应是:
33 44 55 33 44 55 33 44 55 33 44 55。
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h>
void fun(int s[][10],int b[],int *n,int mm,int nn)
{
/* 以下代码仅供参考 */
int i,j,np=0; /* np用作b数组下标 */
*n=np;
}
main()
{ int w[10][10]={{33,33,33,33},{44,44,44,44},{55,55,55,55}},i,j;
int a[100]={0},n=0;
printf("The matrix:\n");
for(i=0; i<3; i++)
{ for(j=0;j<4; j++)printf("%3d",w[i][j]);
printf("\n");
}
fun(w,a,&n,3,4);
printf("The A array:\n");
for(i=0;i<n;i++)printf("%3d",a[i]);printf("\n\n");
NONO();
}
NONO()
{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */
FILE *rf,*wf ; int i,j,k ;
int w[10][10],a[100],n = 0,mm,nn ;
rf = fopen("c:\\test\\in.dat","r") ;
wf = fopen("c:\\test\\out.dat","w") ;
for(k = 0 ; k < 5 ; k++) {
fscanf(rf,"%d %d",&mm,&nn) ;
for(i = 0 ; i < mm ; i++)
for(j = 0 ; j < nn ; j++) fscanf(rf,"%d",&w[i][j]) ;
fun(w,a,&n,mm,nn) ;
for(i = 0 ; i < n ; i++) fprintf(wf,"%3d",a[i]) ; fprintf(wf,"\n") ;
}
fclose(rf) ; fclose(wf) ;
}