南信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編程題及答案

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