[NEFU锐格C语言]2021大一下阶段一模拟
锐格模拟考,参考代码。
太久没写C了,手挺生的,有的实现绕了远路,写的比较烂,仅供参考。
题号大家应该都不一样吧,就直接放代码了,自己对照看吧。
顺便:五一会把下面这个博客更新完整,各位大佬可以关注收藏一波。
【NEFU锐格】C语言大一下板子 & Debug (更新中)
同时会把这个博客汇总到目录博客当中
代码
考点:字符串匹配(超复杂的手动if呵呵呵,试图掩盖忘记库函数的事实)
#include<stdio.h>
#include<string.h>
#include<stdbool.h>
char s[105];
int main()
{
while(gets(s))
{
int len=strlen(s);
bool flag=1;
for(int i=0;i+7<len&&flag;i++)
{
if(s[i]=='G'&&s[i+1]=='O'&&s[i+2]=='O'&&s[i+3]=='D'&&s[i+4]=='L'&&s[i+5]=='U'&&s[i+6]=='C'&&s[i+7]=='K')
{
puts("Yes!");
flag=0;
}
}
if(flag)puts("No!");
}
return 0;
}
考点:二维数组修改,找规律(对于同一直线,横纵坐标和/差为定值,这个结论建议记住)
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int g[25][25];
int main()
{
int n;
while(~scanf("%d",&n))
{
memset(g,0,sizeof g);
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
scanf("%d",&g[i][j]);
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(i-j>0)g[i][j]+=g[j][i];
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
if(i-j<0)printf("0");
else printf("%d",g[i][j]);
if(j!=n)printf(" ");
if(j==n)puts("");
}
}
return 0;
}
考点:strlen库函数使用
#include<stdio.h>
#include<string.h>
#include<stdbool.h>
char s[55];
int main()
{
int n;scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%s",s);
if(strlen(s)>5)printf("%s\n",s);
}
return 0;
}
考点:函数调用字符串数组+修改(不过这玩意没要求一定要指针啥的,反手一个全局变量然后直接printf也可以吧)
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void swap(char* s,int n)
{
char tmp[105];
int cnt=0;
int len=strlen(s);
//[n,len-1][0,n-1]
for(int i=n;i<len;i++)tmp[cnt++]=s[i];
for(int i=0;i<n;i++)tmp[cnt++]=s[i];
for(int i=0;i<cnt;i++)s[i]=tmp[i];
}
int main()
{
char s[105];
int n;
while(~scanf(" %s %d ",s,&n))
{
swap(s,n);
printf("%s\n",s);
}
return 0;
}
考点:字符串排序+动态开辟,典中典题,建议把实验四代码背下来。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void sort(char **pp,int n)
{
char tmp[105];
for(int i=0;i<n;i++)
for(int j=i+1;j<n;j++)
if(strcmp(pp[i],pp[j])>0)
{
strcpy(tmp,pp[i]);
strcpy(pp[i],pp[j]);
strcpy(pp[j],tmp);
}
}
int main()
{
int n;
char *cp[105];
char in[105];
while(~scanf("%d ",&n))
{
for(int i=0;i<n;i++)
{
gets(in);
int len=strlen(in);
cp[i]=(char *)malloc(len*sizeof(char *)+1);
strcpy(cp[i],in);
}
sort(cp,n);
for(int i=0;i<n;i++)
printf("%s\n",cp[i]);
}
return 0;
}
考点:二维数组多关键字排序,题目没说清楚,不过样例表现出,先排数字再排位置,多关键字排序嘛。
#include <stdio.h>
#include <stdlib.h>
//start
void sort(int a[100][2],int n)
{
int tmp;
for(int i=0;i<n;i++)
for(int j=i+1;j<n;j++)
{
if(a[i][0]>a[j][0])
{
tmp=a[i][0];
a[i][0]=a[j][0];
a[j][0]=tmp;
tmp=a[i][1];
a[i][1]=a[j][1];
a[j][1]=tmp;
}
else if(a[i][0]==a[j][0])
{
if(a[i][1]>a[j][1])
{
tmp=a[i][1];
a[i][1]=a[j][1];
a[j][1]=tmp;
}
}
}
}
//end
int main()
{
int a[100][2];
int n,i,j;
while(scanf("%d",&n)>0)
{
for(i=0;i<n;i++)
{
a[i][1]=i+1;
scanf("%d",&a[i][0]) ;
}
sort(a,n);
for(i=0;i<n;i++)
{
for(j=0;j<2;j++)
{
printf("%3d",a[i][j]);
}
printf("\n");
}
}
return 0;
}
last
祝各位五一假期愉快。