当前位置:文档之家› 2016年北航机试习题及代码

2016年北航机试习题及代码

北航2016上机真题逆序数
题目描述
给定一个数n,将这个数的各位顺序颠倒,称为逆序数m。

例如1234的逆序数是4321。

输入
输入一个数n(0<n<1000000000),已知输入开头不包含多余的0。

输出
如果m是n的k倍(k为整数),那么输出n*k=m。

如果m不是n的整数倍,那么输出n和n的逆序数。

样例输入
1234
1089
23200
样例输出
1234 4321
1089*9=9801
23200 00232
代码:
#include<stdio.h>
int main()
{
int n,m;
while(scanf("%d",&n)!=EOF)
{
m=0;
int stack[20];
int top=-1;
int temp = n;
while(temp!=0)
{
stack[++top]=temp%10;
temp=temp/10;
}
int j;
for(j=0; j<=top; j++)
{
m=m*10+stack[j];
}
if(m>n||m==n)
{
if(m%n==0)
{
printf("%d*%d=%d\n",n,(m/n),m);
}
else
{
printf("%d ",n);
for(int k=0; k<=top; k++)
{
printf("%d",stack[k]);
}
printf("\n");
}
}
else
{
printf("%d ",n);
for(int l=0; l<=top; l++)
{
printf("%d",stack[l]);
}
printf("\n");
}
}
return 0;
}
字符串的解析
题目描述
给一个c语言的enum定义语句,输出enum中规定的各项值。

输入
输入一个c语言的enum定义语句。

输出
输出enum中规定的各项值。

样例输入
enum BOOL{true,false};
样例输出
true 0
false 1
代码:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
char str1[4],str2[100];
char *s1,*s2;
s1=str1;
s2=str2;
while(scanf("%s",s1)!=EOF)
{
if(strcmp("enum",s1)==0)
{
gets(s2);
int d1,d2=0;
for(d1=0;s2[d1]!='\0';d1++)
{
if(s2[d1]!=' ')
s2[d2++]=s2[d1];
}
s2[d2]='\0';
int i,right=0,leght=0;
for(i=0; s2[i]!='\0'; i++)
if(s2[i]=='{')break;
right=i;
for(i=0; s2[i]!='\0'; i++)
if(s2[i]=='}')break;
leght=i;
char t1[20];
char *ts1;
ts1=t1;
int j=right+1;
int num=0;
while(j<leght)
{
int k=0;
while(s2[j]!='\0'&&s2[j]!=','&&j<leght) ts1[k++]=s2[j++];
ts1[k]='\0';
char t2[20],t3[10];
char *tt2,*tt3;
tt2=t2;
tt3=t3;
int p=0;
while(ts1[p]!='\0')
{
if(ts1[p]=='=')
break;
tt2[p]=ts1[p];
p++;
}
tt2[p]='\0';
if(ts1[p]=='=')
p++;
int q=0;
while(ts1[p]!='\0')
tt3[q++]=ts1[p++];
tt3[q]='\0';
int r =0;
r = atoi(tt3);
if(t2[0]!='\0')
{
if(r!=0)
{
num=r;
printf("%s ",tt2);
printf("%d\n",num);
num++;
}
else
{
printf("%s ",tt2);
printf("%d\n",num);
num++;
}
}
j++;
}
}
}
return 0;
}。

相关主题