21 、请编写函数fun ,该函数的功能是:将M行N列的二维数组中的字符数据 ,按列的顺序依次放到一个字符串中 。
例如,若二维数组中的数据为
W W W W
S S S S
H H H H
则字符串中的内容应是:WSHWSHWSHWSH 。
注意:请勿改动main函数和其他函数中的任何内容 ,仅在函数fun的花括号中填入所编写的若干语句。
void fun(char (*s)[N],char *b)
{
int i,j,k=0;
for (i=0;i<N;i++)
for (j=0;j<M;j++)
b[k++]=s[j][i];
b[k]=\0;
}
参考程序
22 、已知学生的记录由学号和学习成绩构成 ,N名学生的数据已存入a结构体数组中 。请编写函数fun ,该函数的功能是:找出成绩最高的学生记录 ,通过形参返回主函数(规定只有一个最高分) 。已给出函数的首部 ,请完成该函数 。
注意:请勿改动主函数main和其他函数中的任何内容 ,仅在函数fun的花括号中填入你编写的若干语句 。
#include<stdio.h>
#define N 10
typedef struct ss /*定义结构体*/
{ char num[10];
int s;
} STU;
fun(STU a[], STU *s)
{
}
int 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*****");
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 top :%s, %d\n",m.num,m.s);
return 0;
}
fun(STU a[], STU *s)
{
STU m;
m=a[0];
int i;
for (i=1;i<N;i++)
if (m.s<a[i].s) m=a[i];
*s=m;
}
参考程序
23 、请编写函数fun ,其功能是:计算并输出3~n之间所有素数的平方根之和 。
例如 ,若主函数从键盘给n输入100后 ,则输出为sum=148.874270 。
注意:n的值要大于2但不大于100 。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句 。
#include <stdio.h>
#include <math.h>
double fun(int n)
{
}
int main()
{
int n;
double sum;
printf("Input n=");
scanf("%d",&n);
sum=fun(n);
printf("\nsum=%f\n",sum);
return 0;
}
double fun(int n)
{
int i,j;
double s=0;
for (i=3;i<=n;i+=2)
{
for (j=3;j<=sqrt(i);j+=2)
if (i%j==0) break;
if (j>sqrt(i)) s+=sqrt(i);
}
return s;
}
参考程序
24 、请编写函数
fun ,该函数的功能是:判断字符串是否为回文 ,若是,则函数返回1 ,主函数中输出"YES" ,否则返回0,主函数中输出"NO" 。回文是指顺读和倒读都一样的字符串。
例如 ,字符串LEVEL是回文 ,而字符串
123312就不是回文 。
注意:请勿改动主函数main和其他函数中的任何内容 ,仅在函数
fun的花括号中填入你编写的若干语句 。
#include <stdio.h>
#define N 80
int fun(char *str)
{
}
int main()
{
char s[N];
int i;
printf("Enter a string : ");
gets(s);
printf("\n");
puts(s);
if(fun(s))
printf("YES\n");
else
printf("NO\n");
return 0;
}
int fun(char *str)
{
int i,j;
for (i=0;str[i]!=\0;i++) ;
j=i-1;
i=0;
while (i<j)
{
if (str[i]!=str[j]) break;
i++; j--;
}
if (i<j) return 0;
else return 1;
}
参考程序
25 、请编写函数
fun ,对长度为7个字符的字符串 ,除首 、尾字符外 ,将其余5个字符按ASCII码降序排列。例如 ,原来的字符串为"CEAedca" ,排序后输出为"CedcEAa" 。注意:请勿改动主函数main和其他函数中的任何内容 ,仅在函数fun的花括号中填入你编写的若干语句 。
#include <stdio.h>
#include <string.h>
void fun(char *s,int num)
{
}
int main()
{
char s[10];
printf("输入7个字符的字符串:");
gets(s);
fun(s,7);
printf("\n%s",s);
return 0;
}
void fun(char *s,int num)
{
int i,j;
for (i=1;i<num-2;i++)
for (j=1;j<num-1-i;j++)
if (s[j]<s[j+1])
{
char t;
t=s[j]; s[j]=s[j+1]; s[j+1]=t;
}
}
参考程序
26 、请编写函数fun,其功能是:将一组得分中 ,去掉一个最高分和一个最低分 ,然后求平均值,并通过函数返回。函数形参a指向存放得分的数组 ,形参n中存放得分个数(n>2) 。
例如 ,若输入9.9 8.5 7.6 8.5 9.3 9.5 8.9 7.8 8.6 8.4十个得分,则输出结果为:8.687500 。注意:请勿改动主函数main和其他函数中的任何内容 ,仅在函数fun的花括号中填入所编写的若干语句 。
#include <stdio.h>
double fun(double a[ ],int n)
{
}
int main()
{ double b[10], r;
int i;
printf("输入10个数放入b数组中 : ");
for (i=0; i<10; i++)
scanf("%lf",&b[i]);
printf("输入的10个数是 : ");
for (i=0; i<10; i++)
printf("%4.1f ",b[i]);
printf("\n");
r=fun(b,10);
printf("去掉最高分和最低分后的平均分 : %f\n", r );
return 0;
}
double fun(double a[ ],int n)
{
double sum,max,min;
int i;
sum=max=min=a[0];
for (i=1;i<n;i++)
{
sum+=a[i];
if (max<a[i]) max=a[i];
if (min>a[i]) min=a[i];
}
return (sum-max-min)/(n-2);
}
参考程序
27 、请编写一个函数void fun(int m,int k,int xx[]) ,该函数的功能是:将大于整数m且紧靠m的k个素数存入数组xx传回 。
例如:若输入17 5 则应输出:19 ,23 ,29 ,31 ,37 。
注意:请勿改动主函数main和其他函数中的任何内容 ,仅在函数fun的花括号中填入所编写的若干语句 。
#include <stdio.h>
void fun(int m,int k,int xx[])
{
}
int main()
{
int m,n,xx[1000];
printf("\nPlease enter two integers:");
scanf("%d%d",&m,&n);
fun(m,n,xx);
for(m=0;m<n;m++)
printf("%d ",xx[m]);
printf("\n");
return 0;
}
void fun(int m,int k,int xx[])
{
int i,j,s=0;
for(i=m+1;k>0;i++)
{
for(j=2;j<i;j++)
if (i%j==0) break;
if(i==j) { xx[s++]=i; k--;}
}
}
参考程序
28 、请编写函数void fun(char *s) ,它的功能是:把 s 字符串中的所有字母改写成该字母的下一个字母 ,字母z改写成字母a 。要求大写字母仍为大写字母,小写字母仍为小写字母 ,其它字符不做改变 。
例如:s 字符串中原有的内容为:Mn.123Zxy ,则调用该函数后,结果为:No.123Ayz 。
注意:请勿改动主函数main和其他函数中的任何内容 ,仅在函数fun的花括号中填入所编写的若干语句。
#include <stdio.h>
#define N 81
void fun(char *s)
{
}
int main( )
{
char a[N];
printf("Enter a string : ");
gets(a);
printf("The original string is : ");
puts(a);
fun(a);
printf("The string after modified : ");
puts (a);
return 0;
}
void fun(char *s)
{
while(*s)
if (*s==z||*s==Z) {*s-=25; s++;}
else if (*s>=a&&*s<=y) {*s+=1;s++;}
else if (*s>=A&&*s<=Y) {*s+=1;s++;}
else s++;
}
参考程序
29、编写函数int fun(int t) ,它的功能是:求Fibonacci数列中大于t的最小的一个数,结果由函数返回 。其中Fibonacci数列F(n)的定义为:
F(0)=0,F(1)=1
F(n)=F(n-1)+F(n-2)
例如:当t=1000时 ,函数值为:1597 。
注意:请勿改动主函数main和其他函数中的任何内容 ,仅在函数fun的花括号中填入所编写的若干语句。
#include <stdio.h>
int fun(int t)
{
}
int main()
{
int n;
n=1000;
printf("n=%d,f=%d\n",n,fun(n));
return 0;
}
int fun(int t)
{
int f0=0,f1=1,fn;
fn=f0+f1;
while (fn<=t)
{
f0=f1;
f1=fn;
fn=f0+f1;
}
return fn;
}
参考程序
30 、已知结构数组sell中存有10个产品销售记录 ,每个产品销售记录由产品代码dm(字符型4位) ,产品名称mc(字符型10位) ,单价dj(整型) ,数量sl(整型) ,金额je(长整型)五部分组成 。其中:金额=单价*数量计算得出 。请编制函数fun() ,其功能是:按产品名称从小到大进行排列 ,若产品名称相等,则按金额从小到大进行排列 ,最终排列结果仍存入结构数组sell中。
#include <stdio.h>
#include <string.h>
typedef struct{
char dm[5]; /*产品代码*/
char mc[11]; /*产品名称*/
int dj; /*单价*/
int sl; /*数量*/
long je; /*金额*/
}PRO;
void fun(PRO sell[])
{
}
int main()
{
PRO sell[10]={{"1001","电视机",1000,8},{"1001","电视机",1000,5},
{"1002","洗衣机",850,4},{"1002","洗衣机",850,3},
{"1003","电冰箱",1000,8},{"1003","电冰箱",1000,5},
{"1001","电视机",1250,4},{"1004","空调",2180,5},
{"1002","洗衣机",816,3},{"1001","电视机",1440,5}};
int i;
for (i=0;i<10;i++)
sell[i].je=sell[i].dj*sell[i].sl;
fun(sell);
for(i=0;i<10;i++)
printf("%5s %11s %4d %5d %5ld\n",sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);
return 0;
}
void fun(PRO sell[])
{
int i,j;
PRO xy;
for(i=0;i<9;i++)
for(j=i+1;j<10;j++)
if(strcmp(sell[i].mc,sell[j].mc)>0||strcmp(sell[i].mc,sell[j].mc)==0&&sell[i].je>sell[j].je)
{ xy=sell[i]; sell[i]=sell[j]; sell[j]=xy; }
}
参考程序
声明:本站所有文章 ,如无特殊说明或标注,均为本站原创发布 。任何个人或组织 ,在未征得本站同意时 ,禁止复制 、盗用、采集 、发布本站内容到任何网站 、书籍等各类媒体平台 。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理 。