编写函数int fun(int lim, int aa[MAX]),该函数的功能是求出小于或等于lim的所有素数并放在aa数组中,该函数返回所求出的素数的个数。
#include <stdio.h>
#include <math.h>
#define MAX 81
int fun ( int lim, int aa[ ] ) ;
int main ( )
{
int lim;
int i, num;
int aa[ MAX] ;
scanf ( "%d" , & lim) ;
num= fun ( lim, aa) ;
for ( i= 0 ; i< num; i++ )
printf ( "%3d" , aa[ i] ) ;
return 0 ;
}
int fun ( int lim, int aa[ ] )
{
int i, j, k= 0 ;
for ( i= 2 ; i<= lim; i++ )
{
for ( j= 2 ; j< i; j++ )
if ( i% j== 0 ) break ;
if ( j>= i)
aa[ k++ ] = i;
}
return k;
}
编写函数fun,函数的功能是:求出二维数组周边元素之和,作为函数值返回。二维数组中的值在主函数中赋予。
#include <stdio.h>
#define N 3
int fun ( int a[ ] [ N] ) ;
int main ( )
{
int i, j, sum;
int a[ N] [ N] ;
for ( i= 0 ; i< N; i++ )
for ( j= 0 ; j< N; j++ )
scanf ( "%d" , & a[ i] [ j] ) ;
sum= fun ( a) ;
printf ( "二维数组周边元素和:%d" , sum) ;
return 0 ;
}
int fun ( int a[ ] [ N] )
{
int i, j, sum= 0 ;
for ( i= 0 ; i< N; i++ )
for ( j= 0 ; j< N; j++ )
if ( i== 0 || i== N- 1 || j== N- 1 || j== 0 )
sum+ = a[ i] [ j] ;
return sum;
}
请编写一个函数fun,它的功能是:求出1到m(含m)之内能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。
#include <stdio.h>
#define N 81
int fun ( int m, int a[ ] ) ;
int main ( )
{
int m, a[ N] ;
int i, num;
scanf ( "%d" , & m) ;
num= fun ( m, a) ;
printf ( "可被7或11整除个数:%d\n" , num) ;
for ( i= 0 ; i< num; i++ )
printf ( "%6d" , a[ i] ) ;
return 0 ;
}
int fun ( int m, int a[ ] )
{
int i, k= 0 ;
for ( i= 1 ; i<= m; i++ )
if ( i% 7 == 0 || i% 11 == 0 )
a[ k++ ] = i;
return k;
}
请编写一个函数fun,它的功能是:将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转为整数的函数)。
#include <stdio.h>
#define N 81
int fun ( char a[ ] ) ;
int main ( )
{
char s[ N] ;
int num;
gets ( s) ;
num= fun ( s) ;
printf ( "%s转换为整数为:%d\n" , s, num) ;
return 0 ;
}
int fun ( char a[ ] )
{
int i, s= 0 ;
for ( i= 0 ; a[ i] != '\0' ; i++ )
s= s* 10 + a[ i] - '0' ;
return s;
}
请编写一个函数void fun(char ss[]),其功能是:将字符串ss中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。
#include <stdio.h>
#define N 81
void fun ( char ss[ ] ) ;
int main ( )
{
char ss[ N] ;
gets ( ss) ;
fun ( ss) ;
printf ( "%s" , ss) ;
return 0 ;
}
void fun ( char ss[ ] )
{
int i;
for ( i= 0 ; ss[ i] != '\0' ; i++ )
if ( i% 2 == 1 && ( ss[ i] >= 'a' && ss[ i] <= 'z' ) )
ss[ i] = ss[ i] - 32 ;
ss[ i] = '\0' ;
}
编写一个函数fun,它的功能是:实现两个字符串的连接(不使用库函数strcat),即把p2所指的字符串连接到p1所指的字符串后。
#include <stdio.h>
#define N 81
void fun ( char a[ ] , char b[ ] ) ;
int main ( )
{
char a[ N] , b[ N] ;
gets ( a) ;
gets ( b) ;
fun ( a, b) ;
puts ( a) ;
return 0 ;
}
void fun ( char a[ ] , char b[ ] )
{
int i= 0 , k;
while ( a[ i] != '\0' ) i++ ;
k= i;
for ( i= 0 ; b[ i] != '\0' ; i++ )
a[ k++ ] = b[ i] ;
a[ k] = '\0' ;
}
请编写函数fun,其功能是:将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过k传回。
#include <stdio.h>
#define N 80
int fun ( int lim, int xx[ ] ) ;
int main ( )
{
int lim, xx[ N] ;
int i, num;
scanf ( "%d" , & lim) ;
num= fun ( lim, xx) ;
printf ( "1-%d之间的非素数个数为%d\n" , lim, num) ;
printf ( "素数个数有%d个,素数如下:\n" , lim- num) ;
for ( i= 0 ; i< lim- num; i++ )
printf ( "%6d" , xx[ i] ) ;
return 0 ;
}
int fun ( int lim, int xx[ ] )
{
int i, j, k= 0 ;
for ( i= 2 ; i<= lim; i++ )
{
for ( j= 2 ; j< i; j++ )
if ( i% j== 0 ) break ;
if ( j>= i)
xx[ k++ ] = i;
}
return lim- k;
}
请编写一个函数 void fun(char tt[],int pp[]),统计在tt字符串中"a"到"z"26个字母各自出现的次数,并依次放在pp所指数组中。
#include <stdio.h>
#define N 81
void fun ( char tt[ ] , int pp[ ] ) ;
int main ( )
{
char tt[ N] ;
int i, pp[ N] ;
gets ( tt) ;
fun ( tt, pp) ;
for ( i= 0 ; i< 26 ; i++ )
printf ( "%6d" , pp[ i] ) ;
}
void fun ( char tt[ ] , int pp[ ] )
{
int i;
for ( i= 0 ; i< 26 ; i++ )
pp[ i] = 0 ;
i= 0 ;
for ( ; tt[ i] != '\0' ; i++ )
if ( tt[ i] >= 'a' && tt[ i] <= 'z' )
pp[ tt[ i] - 'a' ] ++ ;
}
请编写函数fun,该函数的功能是:判断字符串是否为回文,若是则函数返回1,主函数中输出"YES",否则返回0,主函数中输出"NO"。
#include <stdio.h>
#include <string.h>
#define N 81
int fun ( char s[ ] ) ;
int main ( )
{
char s[ N] ;
int flag;
gets ( s) ;
flag= fun ( s) ;
if ( flag)
printf ( "YES\n" ) ;
else
printf ( "NO\n" ) ;
return 0 ;
}
int fun ( char s[ ] )
{
int i= 0 , len;
len= strlen ( s) ;
while ( s[ i] != 0 )
{
if ( s[ i] != s[ len- i- 1 ] )
return 0 ;
i++ ;
}
return 1 ;
}
请编写函数fun,该函数的功能是:统计一行字符串中单词的个数,作为函数值返回。一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间有若干个空格隔开,一行的开始没有空格。
#include <stdio.h>
#define N 81
int fun ( char s[ ] ) ;
int main ( )
{
char s[ N] ;
int num;
gets ( s) ;
num= fun ( s) ;
printf ( "单词有%d个\n" , num) ;
return 0 ;
}
int fun ( char s[ ] )
{
int i, word= 0 , num= 0 ;
char ch;
for ( i= 0 ; ( ch= s[ i] ) != '\0' ; i++ )
{
if ( ch== ' ' ) word= 0 ;
else if ( word== 0 )
{
word= 1 ;
num++ ;
}
}
return num;
}
假定输入的字符串中只包含字母和号。请编写函数fun,它的功能是:除了字符串前导的 号之外,将串中其他*号全部删除。
#include <stdio.h>
#define N 81
void fun ( char * s) ;
int main ( )
{
char s[ N] ;
gets ( s) ;
fun ( s) ;
printf ( "%s" , s) ;
return 0 ;
}
void fun ( char * s)
{
char * p;
while ( * s== '*' ) s++ ;
p= s;
while ( * p)
{
if ( * p!= '*' )
* s++ = * p;
p++ ;
}
* s= '\0' ;
}
假定输入的字符串中只包含字母和号。请编写函数fun,它的功能是:将字符串中的前导 号全部删除,中间和后面的*号不删除。
#include <stdio.h>
#define N 81
void fun ( char * s) ;
int main ( )
{
char s[ N] ;
gets ( s) ;
fun ( s) ;
printf ( "%s" , s) ;
return 0 ;
}
void fun ( char * s)
{
char * p= s;
while ( * p== '*' ) p++ ;
while ( * p)
{
* s++ = * p;
p++ ;
}
* s= '\0' ;
}
请编一个函数fun(char *s),该函数的功能是把字符串中的内容逆置。
#include <stdio.h>
#include <string.h>
#define N 81
void fun ( char s[ ] ) ;
int main ( )
{
char s[ N] ;
gets ( s) ;
fun ( s) ;
printf ( "%s" , s) ;
return 0 ;
}
void fun ( char s[ ] )
{
int i, len, m;
char temp;
len= strlen ( s) ;
i= 0 ; m= len- 1 ;
while ( i<= ( ( m+ 1 ) / 2 ) )
{
temp= s[ i] ;
s[ i] = s[ m] ;
s[ m] = temp;
i++ ; m-- ;
}
}
请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位依次放在c数的千位和十位上,b数的十位和个位依次放在c数的百位和个位上。*c=(a/10)*1000+(b/10)*100+(a%10)*10+b%10;
#include <stdio.h>
#include <stdlib.h>
int fun ( int a, int b) ;
int main ( )
{
int a, b, c;
scanf ( "%d%d" , & a, & b) ;
if ( a< 10 || a>= 100 || b< 10 || b>= 100 )
{
printf ( "输入错误\n" ) ;
exit ( 0 ) ;
}
c= fun ( a, b) ;
printf ( "%d" , c) ;
}
int fun ( int a, int b)
{
int c;
c= ( a/ 10 ) * 1000 + ( b/ 10 ) * 100 + ( a% 10 ) * 10 + b% 10 ;
return c;
}
下列给定的程序中,函数fun的功能是:用选择法对数组中的n个元素按从小到大的顺序进行排序。
#include <stdio.h>
#define N 10
void sort ( int a[ ] , int n) ;
int main ( )
{
int a[ N] ;
int i;
for ( i= 0 ; i< N; i++ )
scanf ( "%d" , & a[ i] ) ;
sort ( a, N) ;
for ( i= 0 ; i< N; i++ )
printf ( "%6d" , a[ i] ) ;
return 0 ;
}
void sort ( int a[ ] , int n)
{
int i, j, min, temp;
for ( i= 0 ; i< n- 1 ; i++ )
{
min= i;
for ( j= i+ 1 ; j< n; j++ )
if ( a[ min] > a[ j] )
min= j;
if ( min!= i)
{
temp= a[ min] ;
a[ min] = a[ i] ;
a[ i] = temp;
}
}
}
学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,该函数的功能是:把高于等于平均分的学生数据放在b所指的数组中,高于等于平均分的学生人数通过形参n传回,平均分通过函数值返回。
#include <stdio.h>
#define N 3
struct student
{
int num;
float score;
} ;
int fun ( struct student s[ ] , struct student b[ ] ) ;
int main ( )
{
struct student s[ N] , b[ N] ;
int i, num;
for ( i= 0 ; i< N; i++ )
scanf ( "%d%f" , & s[ i] . num, & s[ i] . score) ;
num= fun ( s, b) ;
printf ( "高于平均分人数有%d位学生,学生基本信息如下:\n" , num) ;
for ( i= 0 ; i< num; i++ )
printf ( "%8d%8.2f\n" , b[ i] . num, b[ i] . score) ;
return 0 ;
}
int fun ( struct student s[ ] , struct student b[ ] )
{
float aver= 0 ;
int i, k= 0 ;
for ( i= 0 ; i< N; i++ )
aver+ = s[ i] . score;
aver= aver/ N;
printf ( "平均分:%.2f\n" , aver) ;
for ( i= 0 ; i< N; i++ )
if ( s[ i] . score>= aver)
b[ k++ ] = s[ i] ;
return k;
}
学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把指定分数范围内的学生数据放在b所指的数组中,分数范围内的学生人数由函数值返回。
#include <stdio.h>
#define N 3
struct student
{
int num;
float score;
} ;
int fun ( struct student s[ ] , struct student b[ ] , float m, float n) ;
int main ( )
{
struct student s[ N] , b[ N] ;
int i, num;
float m, n;
for ( i= 0 ; i< N; i++ )
scanf ( "%d%f" , & s[ i] . num, & s[ i] . score) ;
do
{
printf ( "请输入分数范围:[m,n]" ) ;
scanf ( "%f%f" , & m, & n) ;
} while ( m>= n) ;
num= fun ( s, b, m, n) ;
printf ( "在[%.2f,%.2f]范围的学生有%d位,具体信息:\n" , m, n, num) ;
for ( i= 0 ; i< num; i++ )
printf ( "%8d%8.2f\n" , b[ i] . num, b[ i] . score) ;
return 0 ;
}
int fun ( struct student s[ ] , struct student b[ ] , float m, float n)
{
int i, k= 0 ;
for ( i= 0 ; i< N; i++ )
if ( s[ i] . score>= m&& s[ i] . score<= n)
b[ k++ ] = s[ i] ;
return k;
}
已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中。请编写函数fun,该函数的功能是:找出成绩最低的学生记录,通过形参返回主函数(规定只有一个最低分)。已给出函数的首部,请完成该函数。
#include <stdio.h>
#define N 3
struct student
{
int num;
float score;
} ;
void fun ( struct student a[ ] , struct student * s) ;
int main ( )
{
struct student a[ N] , minst;
int i;
for ( i= 0 ; i< N; i++ )
scanf ( "%d%f" , & a[ i] . num, & a[ i] . score) ;
fun ( a, & minst) ;
printf ( "最低分学生记录:%8d%8.2f\n" , minst. num, minst. score) ;
return 0 ;
}
void fun ( struct student a[ ] , struct student * s)
{
int i;
struct student p;
p. score= a[ 0 ] . score;
for ( i= 0 ; i< N; i++ )
if ( p. score> a[ i] . score)
p= a[ i] ;
* s= p;
}
. 学生的记录由学生和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,其功能是:把分数最低的学生数据放在h所指的数组中。注意:分数最低的学生可能不止一个,函数返回分数最低的学生的人数。
#include <stdio.h>
#define N 3
struct student
{
int num;
float score;
} ;
int fun ( struct student s[ ] , struct student h[ ] ) ;
int main ( )
{
struct student s[ N] , h[ N] ;
int i, num;
for ( i= 0 ; i< N; i++ )
scanf ( "%d%f" , & s[ i] . num, & s[ i] . score) ;
num= fun ( s, h) ;
printf ( "最低分学生人数有%d位,具体信息如下:\n" , num) ;
for ( i= 0 ; i< num; i++ )
printf ( "%8d%8.2f\n" , h[ i] . num, h[ i] . score) ;
return 0 ;
}
int fun ( struct student s[ ] , struct student h[ ] )
{
float min;
int i, k= 0 ;
min= s[ 0 ] . score;
for ( i= 0 ; i< N; i++ )
if ( min> s[ i] . score)
min= s[ i] . score;
for ( i= 0 ; i< N; i++ )
if ( min== s[ i] . score)
h[ k++ ] = s[ i] ;
return k;
}
学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把低于平均分的学生数据放在b所指的数组中,低于平均分的学生人数通过形参n传回,平均分通过函数值返回。
#include <stdio.h>
#define N 3
struct student
{
int num;
float score;
} ;
float fun ( struct student s[ ] , struct student b[ ] , int * n) ;
int main ( )
{
struct student s[ N] , b[ N] ;
int i, num;
float aver;
for ( i= 0 ; i< N; i++ )
scanf ( "%d%f" , & s[ i] . num, & s[ i] . score) ;
aver= fun ( s, b, & num) ;
printf ( "平均分:%.2f,低于平均分人数%d个,学生具体信息如下:\n" , aver, num) ;
for ( i= 0 ; i< num; i++ )
printf ( "%8d%8.2f\n" , b[ i] . num, b[ i] . score) ;
return 0 ;
}
float fun ( struct student s[ ] , struct student b[ ] , int * n)
{
int i, k= 0 ;
float aver;
for ( i= 0 ; i< N; i++ )
aver+ = s[ i] . score;
aver= aver/ N;
for ( i= 0 ; i< N; i++ )
if ( s[ i] . score< aver)
b[ k++ ] = s[ i] ;
* n= k;
return aver;
}
学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:按分数的高低排列学生的记录,高分在前。
#include <stdio.h>
#define N 3
struct student
{
int num;
float score;
} ;
void fun ( struct student s[ ] ) ;
int main ( )
{
struct student s[ N] ;
int i;
for ( i= 0 ; i< N; i++ )
scanf ( "%d%f" , & s[ i] . num, & s[ i] . score) ;
fun ( s) ;
printf ( "学生记录按高低排列如下:\n" ) ;
for ( i= 0 ; i< N; i++ )
printf ( "%8d%8.2f\n" , s[ i] . num, s[ i] . score) ;
return 0 ;
}
void fun ( struct student s[ ] )
{
int i, j;
struct student temp;
for ( i= 0 ; i< N- 1 ; i++ )
{
for ( j= 0 ; j< N- 1 - i; j++ )
if ( s[ j] . score< s[ j+ 1 ] . score)
{
temp= s[ j] ;
s[ j] = s[ j+ 1 ] ;
s[ j+ 1 ] = temp;
}
}
}
学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把分数最高的学生数据放在h所指的数组中。注意:分数高的学生可能不只一个,函数返回分数最高学生的人数。
#include <stdio.h>
#define N 3
struct student
{
int num;
float score;
} ;
int fun ( struct student s[ ] , struct student h[ ] ) ;
int main ( )
{
struct student s[ N] , h[ N] ;
int i, num;
for ( i= 0 ; i< N; i++ )
scanf ( "%d%f" , & s[ i] . num, & s[ i] . score) ;
num= fun ( s, h) ;
printf ( "最高分学生人数有%d位,具体信息如下:\n" , num) ;
for ( i= 0 ; i< num; i++ )
printf ( "%8d%8.2f\n" , h[ i] . num, h[ i] . score) ;
return 0 ;
}
int fun ( struct student s[ ] , struct student h[ ] )
{
float max;
int i, k= 0 ;
max= s[ 0 ] . score;
for ( i= 0 ; i< N; i++ )
if ( max< s[ i] . score)
max= s[ i] . score;
for ( i= 0 ; i< N; i++ )
if ( max== s[ i] . score)
h[ k++ ] = s[ i] ;
return k;
}