【NEFU大一下C语言阶段一考试】参考代码
挺水的,貌似比模拟考简单亿点点。
考试过程稍有不顺,万恶的360浏览器加载慢的一批,打完一题才发现那题有代码框架(大雾),devc标准没开for内部定义,又重写了一波
考试题目样例有一点点纰漏不过还好,影响不大。
大概实际花费25分钟左右?光速溜出回去洗澡干饭。
题目
随缘开的题目顺序随意啦
A.电子屏数字显示
题意
显示器
因为只有0和1,发现1的里面有20个0,那么5*5地依次统计01的个数即可。虽然看起来很长但是实际上都是复制粘贴,写起来很快。
代码
#include <stdio.h>
#include <stdlib.h>
char zero[5][6] = {
"11111",
"10001",
"10001",
"10001",
"11111" };
char one[5][6] = {
"00001",
"00001",
"00001",
"00001",
"00001" };
void getres(char (*disp)[26], char res[])
{
//start
int i=0,j=0,cnt=0,len=0;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(disp[i][j]=='0')cnt++;//统计0的个数
if(cnt==20)res[len++]='1';//20个0就是1
else res[len++]='0';
cnt=0;//重置
for(i=0;i<5;i++)
for(j=5;j<10;j++)
if(disp[i][j]=='0')cnt++;
if(cnt==20)res[len++]='1';
else res[len++]='0';
cnt=0;
for(i=0;i<5;i++)
for(j=10;j<15;j++)
if(disp[i][j]=='0')cnt++;
if(cnt==20)res[len++]='1';
else res[len++]='0';
cnt=0;
for(i=0;i<5;i++)
for(j=15;j<20;j++)
if(disp[i][j]=='0')cnt++;
if(cnt==20)res[len++]='1';
else res[len++]='0';
cnt=0;
for(i=0;i<5;i++)
for(j=20;j<25;j++)
if(disp[i][j]=='0')cnt++;
if(cnt==20)res[len++]='1';
else res[len++]='0';
cnt=0;
//end
}
int main()
{
char disp[5][26];
char res[6] = {
0};
int i ;
for(i = 0; i < 5;i++)
scanf("%s",disp[i]);
getres(disp, res);
printf("%s",res);
return 0;
}
B.停车场计数
题意
停车场停车
二维数组一维输入,输入n*m然后统计1的个数即可
代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int m,n;
while(~scanf("%d%d",&m,&n))
{
int i,cnt=0;
for(i=0;i<m*n;i++),
{
int x;scanf("%d",&x);
if(x==1)cnt++;
}
printf("%d %d %d\n",n*m,cnt,n*m-cnt);
}
return 0;
}
C.候选人排序
题意
经典字符串排序,甚至不用动态开辟,懒得讲了。唯一需要注意的地方是给的参数是
样例有误,表现为asf变成sf了
void candInput(char (*p)[20],int n)
代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void candInput(char (*p)[20],int n)
{
int i;
for(i=0;i<n;i++)
{
gets(p[i]);
}
}
void candSort(char (*p)[20],int n)
{
//start
char tmp[105];
int i,j;
for(i=0;i<n;i++)
for(j=i;j<n;j++)
if(strcmp(p[i],p[j])>0)
{
strcpy(tmp,p[i]);
strcpy(p[i],p[j]);
strcpy(p[j],tmp);
}
//end
}
void candOutput(char (*p)[20],int n)
{
int i;
for(i=0;i<n;i++)
printf("%s\n",p[i]);
}
int main()
{
int n;
scanf("%d ",&n);
char cand[100][20];
candInput(cand,n);
candSort(cand,n);
candOutput(cand,n);
return 0;
}
D.计算表达式的值
题意
给字符串然后做加减法,刚开始以为要来个表达式求值+高精度,心想这波完蛋了,仔细一看是水题,1000以内,不是1000位以内!
代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char str[11] = {
0};
char *val[2];
char op ;
int res = 0,i=0 ;
scanf("%s",str);
//start
int a=0,b=0;
for(i=0;str[i];i++)
{
if(str[i]>='0'&&str[i]<='9')a=a*10+str[i]-'0';//记录第一个数
else if(str[i]=='+'||str[i]=='-')//读到运算符记录并跳出
{
op=str[i];
break;
}
}
i++;//i移动到运算符后1位
for(;str[i];i++)b=b*10+str[i]-'0'; //接着读取第2个数
if(op=='+')res=a+b;
else res=a-b;
//end
printf("%d\n",res);
return 0;
}
E.标识符的辨别
题意
标识符
给了一堆没用的玩意,考函数调用,只要isChar就行了,怀疑数据太水hh
代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int isChar(char ch)
{
return ch>='a'&& ch<='z'||ch>='A'&& ch<='Z';
}
int isChar_Digit(char ch)
{
return ch>='a'&& ch<='z'|| ch>='A'&& ch<='Z'|| ch>='0'&& ch<='9';
}
int isId(char *s)
{
//start
if(isChar(s[0]))return 1;
else return 0;
//end
}
int main()
{
char s[100];
while(scanf("%s",s)!=EOF)
{
if(isId(s))
printf("%s is ID!\n",s);
else
printf("%s is not ID!\n",s);
}
return 0;
}
转载:https://blog.csdn.net/qq_39354847/article/details/116492577
查看评论