南信2018-2020年822真题答案(随手笔记)

做真题时,顺便记下了答案,懒得验证正确与否,我们对对答案吧,有问题的地方请指教。对了 真题链接在这儿南信822历年真题

2020年822真题答案

选择题

  1. B
  2. C
  3. D
  4. C
  5. C
  6. D
  7. D
  8. AC
  9. C
  10. A
  11. B

填空题

  1. ASCLL码
  2. 字符串
  3. 字母 下划线
  4. 8字节
  5. NULL

程序填空题

  1. 接收键盘输入,直到回车为止,若有连续一个以上的空格只输出一个空格
 #include <stdio.h>
 int main()
 {
   
   
    char cx, front='\0';
	while((cx=getchar())!='\n')
	{
   
   
		if(cx!=' ') putchar(cx);
		if(cx==' ')
			if(front!=cx)
				putchar(cx);
		front=cx;
	}
    return 0;
 }
  1. 一个二维矩阵,输出周边元素的和
#include <stdio.h>
#define N 3
int main()
{
   
   
	int a[N][N];
	int i,j,sum=0;
	for(i=0;i<N;i++)
		for(j=0;j<N;j++)
			scanf("%d",&a[i][j]);
	printf("矩阵:\n");
	for(i=0;i<N;i++)
	{
   
   
		for(j=0;j<N;j++)
			printf("%4d",a[i][j]);
		putchar(10);		
	}
	for(i=0;i<N;i++)
		for(j=0;j<N;j++)
			if(i==0 || j==0 || i==N-1 || j==N-1)
				sum+=a[i][j];		
	printf("\n矩阵周边和为:%d\n",sum);
    return 0;
}

  1. 找三个数中的中间数
#include <stdio.h>
int main()
{
   
   
	int a,b,c,t;
	scanf("%d %d %d",&a,&b,&c);
	if(a>b){
   
   t=a;a=b;b=t;}
	if(a>c){
   
   t=a;a=c;c=t;}
	if(b>c){
   
   t=b;b=c;c=t;}
	printf("中间数为:%d\n",b);
	return 0;
}

编程题

  1. 求回文数
#include <stdio.h>
int main()
{
   
   
	long a,n,m=0;
	int i;
	scanf("%ld",&a);
	n=a;
	while(n)
	{
   
   
		i=n%10;
		m=m*10+i;
		n/=10;
	}
	if(m==a)
		printf("%ld是回文数!\n",a);
	else 
		printf("%ld不是回文数\n",a);
	return 0;
}

  1. 从母串中查找子串的个数
#include <stdio.h>
#include <string.h>
int count(char [],char []);
int main()
{
   
   
	char a[80],b[10];
	int k;
	gets(a);
	gets(b);
	k=count(a,b);
	if(k==0)
		printf("没有找到!\n");
	else
		printf("%d\n",k);
	return 0;
}
int count(char s[],char t[])
{
   
   
	int i,j,k,m=0;
	for(i=0;s[i]!='\0';i++)
	{
   
   
		k=0;
		for(j=i;s[j]==t[k]&&k<strlen(t);j++)
			k++;
		if(t[k]=='\0')
			m++;
	}
	return m;
}

  1. 从结构体中输入8个学生的数据,学生数据包括学号和成绩,编写函数,将高于平均分的学生数据放到一个新的数组中存储,函数返回学生的平均成绩,高于平均分的学生人数通过形参n返回
#include <stdio.h>
#include <string.h>
#define N 8
typedef struct Student
{
   
   
	char num[6];
	float score;
}STU;
void input(STU [],int);
void output(STU [],int);
float avg(STU [],STU [],int,int *);
int main()
{
   
   
	STU stu[N],newstu[N];
	int n=0;
	float aver;
	input(stu,N);
	putchar(10);
	output(stu,N);
	aver=avg(stu,newstu,N,&n);
	printf("\n高于平均分的人有:\n");
	output(newstu,n);
	return 0;
}
void input(STU s[],int n)
{
   
   
	int i;
	for(i=0;i<n;i++)
		scanf("%s %f",s[i].num,&s[i].score);
}
void output(STU s[],int n)
{
   
   
	int i;
	for(i=0;i<n;i++)
	{
   
   
		printf("%8s %7.2f\n",s[i].num,s[i].score);
		
	}
}
float avg(STU s[],STU newstu[],int m,int *n)
{
   
   
	int i,j=0;
	float sum=0,avg;
	for(i=0;i<m;i++)
		sum+=s[i].score;
	avg=sum/N;
	for(i=0;i<m;i++)
		if(s[i].score>avg)
		{
   
   
			strcpy(newstu[j].num,s[i].num);
			newstu[j].score=s[i].score;
			j++;
			*n=*n+1;
		}
	return avg;
}

2019年822真题答案

选择题

  1. D
  2. D
  3. C
  4. D
  5. A
  6. D
  7. C
  8. C

填空

  1. 1
  2. 26
  3. sqrt(fabs(a-b))/3*(a+b)
  4. sqrt((xx+yy)/(a+b))
  5. 全局变量 局部变量 静态动量 动态动量
  6. 嵌套 递归
  7. 8
  8. 12

程序阅读

  1. 只有一题 同2020年 略

编程题

  1. 同2020年,字符串中 母串找子串 这里给出核心部分
int count(char *str,char *substr)
{
   
   
	int i,j,k,num=0;
	for(i=0;i<strlen(str);i++)
		for(j=i,k=0;str[j]==substr[k];j++,k++)
		    if(substr[k+1]=='\0'){
   
   
			    num++;
                break;
            }
	return num;
}
  1. 设计一个程序,让一个数组7849846倒叙输出
#include <stdio.h>
#define N 7
int main()
{
   
   
    int a[N];
    int i;
    for(i=0;i<N;i++)
        scanf("%d",&a[i]);
    for(i=N-1;i>=0;i--)
        printf("%d",a[i]);

}
  1. 10个同学有姓名 编号 三课成绩 设计一个函数返回成绩最好的同学的姓名,并输出三科成绩平均分
    书上原题 略

2018年822真题答案

选择题

  1. B
  2. C
  3. A
  4. C
  5. D
  6. C
  7. B
  8. C
  9. C
  10. B
  11. A
  12. B
  13. B
  14. B
  15. D
  16. B
  17. C
  18. A
  19. AC
  20. A

程序填空

  1. 函数
  2. 0
  3. 本层
  4. 2
  5. do-while
  6. a+6
  7. 常量值 地址值
  8. 文本文件 二进制文件

程序阅读题

  1. 2 1

  2. 123.1415926

  3. 1 2 4 8

  4. 9

  5. a=10,b=10

    a=10,b=20

  6. 4

  7. 7
    5

  8. 1 1 2 3
    5 8 13 21
    34 55 89 144

程序填空

  1. (1) int,int
    (2) product(a,b)
    (2) return mul

  2. (1) i/100
    (2) i/10%10
    (3) i%10

  3. (7) p=p*n
  4. (8) n%i==0
    (9) a[j++]=i
  5. (10) (struct Node*)malloc(sizeof(struct Node))
    (11) q=q->next
    (12) head

  6. (13) i=0
    (14) k%i0 && k%20
    (15) j-1

编程题

脖子好痛不想写了,编程题答案看下面大佬的吧,不想重复了
点击查看南信822编程题及答案

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章