当前位置: 首页 > news >正文

程序设计题(25-32)

第二十五题

题目

请编写函数fun,其功能是:在一个含有11个四位数的数组中,统计出这些数的奇数、偶数个数,然后计算出个数多的那些数的算数平均值并由函数返回,个数通过yy传回。

例如,若11个数据为:1101, 1202, 1303, 1404, 1505, 2611, 2712, 2813, 2914, 3202, 4222

则输出: yy=6, pjz=2609. 33

#include <stdio.h> 
#pragma warning (disable:4996)
#define N 11
double fun( int xx[], int *yy )
{}main()
{int yy, xx[N]={1101,1202,1303,1404,1505,2611,2712,2813,2914,3202,4222};double pjz ;void NONO();pjz = fun( xx, &yy );printf("yy=%d, pjz=%.2lf\n", yy, pjz);NONO();
}void NONO()
{
/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */int i, j, xx[N], yy;double pjz;FILE *rf, *wf ;rf = fopen("in.dat","r") ;wf = fopen("out.dat","w") ;for(i=0; i<10; i++) {for(j=0; j<N; j++) fscanf(rf, "%d ", &xx[j]);pjz = fun( xx, &yy );fprintf(wf, "%d, %.2lf\n", yy, pjz);}fclose(rf) ;fclose(wf) ;
}

解析

double fun( int xx[], int *yy )
{int i,j=0,k=0;double xx1=0.0,xx2=0.0;for(i=0;i<N;i++){if(xx[i]%2==0){xx1+=xx[i];j++;}else{xx2+=xx[i];k++;}}if(j>k){*yy=j;return xx1/j;}else{*yy=k;return xx2/k;}
}

分析

第二十六题

题目

请编写函数fun,其功能是:统计出x所指数组中偶数的个数,通过函数值返回主函数;

并计算出偶数的平均值放到形参ave所指的存储单元中。

例如:当数组内容为: 12,5,9,8, 23, 4, 7, 21时,

输出结果应该是: n=3, ave=8. 000000

#include <stdio.h>
#pragma warning (disable:4996)
#define N 8
int fun(int x[],double *ave)
{}main()
{  int x[N]={ 12,5,9,8,23,4,7,21 }, n;double ave;void NONO();n=fun(x,&ave);printf("n=%d,ave=%lf\n",n,ave);NONO();
}
void NONO ()
{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */FILE *in, *out ;int i,j, x[N], n ;double ave;in = fopen("in.dat","r") ;out = fopen("out.dat","w") ;for(i = 0 ; i < 10 ; i++) {for(j=0 ; j < N; j++) fscanf(in, "%d,", &x[j]) ;n=fun(x,&ave);fprintf(out, "n=%d,ave=%lf\n",n,ave);}fclose(in) ;fclose(out) ;
}

解析

int fun(int x[],double *ave)
{int i,j=0;double sum=0.0;for(i=0;i<N;i++){if(x[i]%2==0){sum+=x[i];j++;}}*ave=sum/j;return j;
}

分析

第二十七题

题目

请编写函数fun,函数的功能是:将M行N列的二维数组中的字符数据按列的顺序依次放到一个字符串中。

例如,二维数组中的数据为:

w w w w

s s s s

H H H H

则字符串中的内容应是:WSHWSHWSHWSH。

#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;void NONO ();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();getchar();
}
void NONO ()
{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */FILE *rf, *wf ; int i,j,k ;char a[100],w[M][N], b ;rf = fopen("in.dat","r") ;wf = fopen("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) ;
}

解析

void  fun(char  s[][N], char *b)
{int i,j,n=0;for(i=0; i < N;i++)  /* 请填写相应语句完成其功能 */for(j=0;j < M;j++)b[n++]=s[j][i];b[n]='\0';
}

分析

第二十八题

题目

请编写函数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。

#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;void NONO ();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();getchar();
}
void NONO ()
{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */FILE *rf, *wf; int a[N], n, i, j ;rf = fopen("in.dat","r") ;wf = fopen("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) ;
}

解析

int  fun(int  a[], int  n)
{int i=0,j=1;for(i=0;i<N;i++)if(a[i]!=a[i+1])a[j++]=a[i+1];return j;
}

分析

数组中的删除,就是指数据覆盖,让后一个覆盖前一个,不要想着让元素消失

第二十九题

题目

函数fun的功能是:将s所指字符串中除了下标为奇数、同时ASCII值也为奇数的字符之外,其余的所有字符都删除,串中剩余字符所形成的一个新串放在t所指的数组中。

例如,若s所指字符串中的内容为: "ABCDEFG12345",其中字符A的ASCII码值虽为奇数,但所在元素的下标为偶数,因此必需删除;而字符1的ASCII码值为奇数,所在数组中的下标也为奇数,因此不应当删除,其它依此类推。最后t所指的数组中的内容应是:"135"。

#include <stdio.h>
#include <string.h>void fun(char *s, char t[])
{}main()
{char   s[100], t[100];void NONO ();printf("\nPlease enter string S:"); scanf("%s", s);fun(s, t);printf("\nThe result is: %s\n", t);NONO();getchar();
}void NONO ()
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */char s[100], t[100] ;FILE *rf, *wf ;int i ;rf = fopen("in.dat","r") ;wf = fopen("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) ;
}

解析

void fun(char *s, char t[])
{int i,j=0;for(i=0;i<strlen(s);i++)if(i%2==1&&s[i]%2==1)t[j++]=s[i];
}

分析

第三十题

题目

请编写函数fun,函数的功能是:将放在字符串数组中的M个字符串(每串的长度不超过N),按顺序合并组成一个新的字符串。

例如,字符串数组中的M个字符串为:

AAAA

BBBBBBB

CC

则合并后的字符串的内容应是: AAAABBBBBBBCC。

提示: strcat (a, b)的功能是将字符串b复制到字符串a的串尾上,成为一个新串。

#include <stdio.h>
#include <string.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 ;void NONO ();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();getchar();
}
void NONO ()
{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */FILE *rf, *wf ;char w[M][N], a[100] ; int i ;rf = fopen("in.dat","r") ;wf = fopen("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) ;
}

解析

void  fun(char  a[M][N], char  *b)
{/* 以下代码仅供参考 */int i; *b=0;for (int i = 0; i < M; i++) strcat(b, a[i]);
}

分析

我只能说一句厉害

第三十一题

题目

N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。请编写函数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;void NONO ();STREC  *h;h=creat( s );   outlist(h);max=fun( h );printf("max=%6.1f\n",max);NONO();getchar();
}
void NONO ()
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */FILE *in, *out ;int i,j ; double  s[N],max;STREC *h ;in = fopen("in.dat","r") ;out = fopen("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) ;
}

解析

double  fun( STREC *h  )
{double temp=0.0;STREC *p;p=h;while(p){if(p->s>temp)temp=p->s;p=p->next;}return temp;
}

分析

第三十二题

题目

#include <stdio.h>
#pragma warning (disable:4996)
double fun(int  n)
{}
main()
{ int  n;    double  s;void NONO( );printf("\nInput n:  ");  scanf("%d",&n);s=fun(n);printf("\n\ns=%f\n\n",s);NONO();
}
void NONO()
{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */FILE *rf, *wf ; int n, i ; double s ;rf = fopen("in.dat","r") ;wf = fopen("out.dat","w") ;for(i = 0 ; i < 10 ; i++) {fscanf(rf, "%d", &n) ;s = fun(n) ;fprintf(wf, "%lf\n", s) ;}fclose(rf) ; fclose(wf) ;
}

解析

double fun(int  n)
{int i;double sum=0.0,t=1.0;for(i=1;i<=n;i++){t*=i;sum+=1/t;}return sum;
}

分析


http://www.mrgr.cn/news/28520.html

相关文章:

  • Cellebrite VS IOS18Rebooting
  • 领夹麦克风哪个品牌好,手机领夹麦克风哪个牌子好,选购推荐
  • 排序算法 -插入排序
  • 安卓aab包的安装教程,附带adb环境的配置
  • .NET中通过C#实现Excel与DataTable的数据互转
  • 网站小程序app怎么查有没有备案?
  • iptables部署使用
  • VMware Avi Load Balancer 30.2.2 发布下载,新增功能概览
  • PostgreSQL的startup进程
  • python list的小细节
  • 【Python】高效图像处理库:pyvips
  • PHP 中传值与传引用的区别
  • Vite打包zip并改名为md5sum哈希案例
  • 用Docker 安装Nacos
  • 30款免费好用的工具,打工人必备!
  • MySQL_数据类型简介
  • 杂谈之20xx还能XXXX吗?
  • Protobuf.js 深入全面讲解教程
  • Docker部署ddns-go教程(包含完整的配置过程)
  • 深度学习自编码器 - 随机编码器和解码器篇
  • 上海餐饮数据分析与可视化
  • FastGPT一站式解决方案[2-应用篇]:轻松实现RAG-智能问答系统,AI工作流、核心模块讲解
  • Java 每日一刊(第9期):数组
  • 淘客返利系统的异步任务处理与调度
  • 【C++】基础知识 笔记
  • WPF入门教学四 WPF控件概述