我是靠谱客的博主 诚心茉莉,最近开发中收集的这篇文章主要介绍[NEFU C语言大一下期末 OJ模拟] 参考答案[NEFU C语言大一下期末 OJ模拟] 参考答案,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

[NEFU C语言大一下期末 OJ模拟] 参考答案

计算极值

指针水题
在这里插入图片描述

#include <stdio.h>
#include <stdlib.h>
int js(int *p,int *x,int *y,int n)
{
   //start
    int *i;
    *x=*p;
    for(i=p;i<p+n;i++)
    	if(*i>*x)*x=*i;
    	
    *y=*p;
    for(i=p;i<p+n;i++)
    	if(*i<*y)*y=*i;
    return 0;
   //end
}
int main()
{ int data[100];
  int n,i,max=-1e9,min=1e9;
  while(scanf("%d",&n)!=-1)
  {
      for(i=0;i<n;i++)
      scanf("%d",&data[i]);
      js(data,&max,&min,n);
      printf("%d %dn",max,min);
  }
    return 0;
}

求n个学生的平均成绩并输出

结构体水题
在这里插入图片描述

在这里插入图片描述

#include<stdlib.h>
#include<stdio.h>

typedef struct stu{
	int s_no;
	float s_score;
}stu;
stu a[105];
int main(){
	int n;
	while(~scanf("%d",&n)){
		double ave=0;
		for(int i=1;i<=n;i++){
			scanf("%d %f",&a[i].s_no,&a[i].s_score);
			ave+=a[i].s_score;
		}
		ave/=n;
		for(int i=1;i<=n;i++){
			if(a[i].s_score>ave)
			printf("%8d %.1fn",a[i].s_no,a[i].s_score);
		}
	}
	return 0;
}

截取子串

在这里插入图片描述

字符串指针和strcpy的使用

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void subString(char *olds,char *news, int n){
	strcpy(news,olds+n);
}

int main(){
	char *olds,*news;
	olds=(char*)malloc(100*sizeof(char));
	news=(char*)malloc(100*sizeof(char));
	int n;
	while(~scanf(" %s %d",olds,&n)){
		
		subString(olds,news,n);
		printf("%sn",news);
	}
}

图像模糊处理

基础二维数组处理操作
唯一可能卡你的点可能是舍入到最接近的整数。​
做一个四舍五入即可

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define N 105
int g[N][N],ans[N][N];
int n,m;
int main(){
	while(~scanf("%d %d",&n,&m)){
		for(int i=1;i<=n;i++)
			for(int j=1;j<=m;j++)
			{
				scanf("%d",&g[i][j]);
				ans[i][j]=g[i][j];
			}
		for(int i=2;i<n;i++)
			for(int j=2;j<m;j++)
			{
				double ave=0;
				ave=g[i][j]+g[i-1][j]+g[i+1][j]+g[i][j-1]+g[i][j+1];
				ave/=5;
				ans[i][j]=(int)(ave+0.5);
			}
		for(int i=1;i<=n;i++)
		{
			for(int j=1;j<=m;j++){
				printf("%d ",ans[i][j]);
			}
			puts("");
		}
	}
}

链表合并

在这里插入图片描述

emm感觉考试应该不会到这个难度,以后学数据结构貌似可以直接用类似归并排序的玩意。
主要是去重,链表去重比较麻烦,所以拿数组模拟了一下。

给几个测试数据吧(不一定全,也不一定要达到这个要求)
主要测负数和组内重复

2 2
-1 -1
-1 -1
3 4
-1 0 2 
2 4 2
#include <stdio.h>
#include <stdlib.h>
struct e_set
{
   int data;
   struct e_set *next;
};
struct e_set * AB_Union( struct e_set *p,struct e_set * q)
{
  //start 
  	int a[50],c[50];
  	int cnta=0,cntc=0;
	e_set *i,*pre,*ans,*tmp;
	ans=(struct e_set*)calloc(1,sizeof(struct e_set));
    ans->next=NULL;
	i=p->next;
	/*链表输入数组*/
	while(i!=NULL){
		a[++cnta]=i->data;
		i=i->next;
	}
	i=q->next;
	while(i!=NULL){
		a[++cnta]=i->data;
		i=i->next;
	}
	/*数组去重*/
	for(int i=1;i<=cnta;i++){
		int flag=1;
		for(int j=1;j<=cntc;j++){
			if(a[i]==c[j]){
				flag=0;
				break;
			}
		}
		if(flag)c[++cntc]=a[i];
	}
	/*数组输入链表*/
	for(int i=1;i<=cntc;i++)
    {
        tmp=(struct e_set*)calloc(1,sizeof(struct e_set));
        tmp->data=c[i];
        tmp->next=ans->next;
        ans->next=tmp;
    }
  	return ans;
 //end 
}
void L_sort(struct e_set * L)
{
    struct e_set *p,*q,*s;
    int temp;
    for(p=L->next; p->next!=NULL; p=p->next)
    {
        s=p;
        for(q=p->next;q!=NULL; q=q->next)
        {
            if(q->data<s->data)
            {
                s=q;
            }
        }
        if(s!=p)
        {
            temp=p->data;
            p->data=s->data;
            s->data=temp;
        }
    }
}
void output(struct e_set * p)
{
    if(p!=NULL)
        p=p->next;
      while(p!=NULL)
      {
       printf("%3d",p->data);
       p=p->next;
      }
     printf("n"); 
}
int main()
{
    int n,m,i;
    struct e_set *p,*A,*B;
    while(scanf("%d%d",&m,&n)!=EOF)
    {
      A=(struct e_set*)calloc(1,sizeof(struct e_set));
      A->next=NULL;
      for(i=0;i<m;i++)
      {
        p=(struct e_set*)calloc(1,sizeof(struct e_set));
        scanf("%d",&p->data);
        p->next=A->next;
        A->next=p;
      }
      B=(struct e_set*)calloc(1,sizeof(struct e_set));
      B->next=NULL;
      for(i=0;i<n;i++)
      {
        p=(struct e_set*)calloc(1,sizeof(struct e_set));
        scanf("%d",&p->data);
        p->next=B->next;
        B->next=p;
      }
      p=AB_Union(A,B);
      L_sort(p);
      output(p);
    }
         return 0;
}

最后

以上就是诚心茉莉为你收集整理的[NEFU C语言大一下期末 OJ模拟] 参考答案[NEFU C语言大一下期末 OJ模拟] 参考答案的全部内容,希望文章能够帮你解决[NEFU C语言大一下期末 OJ模拟] 参考答案[NEFU C语言大一下期末 OJ模拟] 参考答案所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(35)

评论列表共有 0 条评论

立即
投稿
返回
顶部