做真题时,顺便记下了答案,懒得验证正确与否,我们对对答案吧,有问题的地方请指教。对了 真题链接在这儿南信822历年真题
2020年822真题答案
选择题
- B
- C
- D
- C
- C
- D
- D
- AC
- C
- A
- B
填空题
- ASCLL码
- 字符串
- 字母 下划线
- 8字节
- NULL
程序填空题
- 接收键盘输入,直到回车为止,若有连续一个以上的空格只输出一个空格
#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;
}
- 一个二维矩阵,输出周边元素的和
#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;
}
- 找三个数中的中间数
#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;
}
编程题
- 求回文数
#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;
}
- 从母串中查找子串的个数
#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;
}
- 从结构体中输入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真题答案
选择题
- D
- D
- C
- D
- A
- D
- C
- C
填空
- 1
- 26
- sqrt(fabs(a-b))/3*(a+b)
- sqrt((xx+yy)/(a+b))
- 全局变量 局部变量 静态动量 动态动量
- 嵌套 递归
- 8
- 12
程序阅读
- 只有一题 同2020年 略
编程题
- 同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;
}
- 设计一个程序,让一个数组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]);
}
- 10个同学有姓名 编号 三课成绩 设计一个函数返回成绩最好的同学的姓名,并输出三科成绩平均分
(书上原题 略)
2018年822真题答案
选择题
- B
- C
- A
- C
- D
- C
- B
- C
- C
- B
- A
- B
- B
- B
- D
- B
- C
- A
- AC
- A
程序填空
- 函数
- 0
- 本层
- 2
- do-while
- a+6
- 常量值 地址值
- 文本文件 二进制文件
程序阅读题
-
2 1
-
123.1415926
-
1 2 4 8
-
9
-
a=10,b=10
a=10,b=20
-
4
-
7
5 -
1 1 2 3
5 8 13 21
34 55 89 144
程序填空
- (1) int,int
(2) product(a,b)
(2) return mul - (1) i/100
(2) i/10%10
(3) i%10 - (7) p=p*n
- (8) n%i==0
(9) a[j++]=i - (10) (struct Node*)malloc(sizeof(struct Node))
(11) q=q->next
(12) head - (13) i=0
(14) k%i0 && k%20
(15) j-1
编程题
脖子好痛不想写了,编程题答案看下面大佬的吧,不想重复了
点击查看南信822编程题及答案