华科00年计算机考研复试机试

【1】输入n

y1=1!+3!+...m!(m是小于等于n的最大奇数)

  y2=2!+4!+...p!(p是小于等于n的最大偶数)

参考代码:

#include<stdio.h> int main(){ __int64 a[100],y1,y2;//存放阶乘; int i,n,p,m; while(scanf("%d",&n)!=EOF){ if(n%2==0){ m=n-1; p=n; } else{ p=n-1; m=n; } a[1]=1; for(i=2;i<100;i++){ a[i]=a[i-1]*i; } y1=0; y2=0; //printf("m=%d,p=%d/n",m,p); i=1; while(i<=m){ y1+=a[i]; i+=2; } i=2; while(i<=p){ y2+=a[i]; i+=2; } printf("y1=%I64d,y2=%I64d/n",y1,y2); } }

数据测试:

华科00年计算机考研复试机试_第1张图片

 

【2】输入一个5×5的矩阵,判断是否对称。

参考代码:

#include<stdio.h> int main(){ int a[6][6],i,j,flag; flag=1;//标记矩阵是否对称; for(i=1;i<=5;i++){ for(j=1;j<=5;j++){ scanf("%d",&a[i][j]); } } for(i=2;i<=5;i++){ for(j=1;j<i;j++){ if(a[i][j]!=a[j][i]){ flag=0; } } } if(flag==1){ printf("YES/n"); } else{ printf("NO/n"); } }

 

数据测试:

 华科00年计算机考研复试机试_第2张图片

 

【3】建立一个升序链表并遍历。

这道题我搞了半天,第25行的while里面的条件表达式&&前后两个条件写反了,结果就输入2个数据之后程序便停止运行!这种错误真是难发现啊。。。找同学帮忙查出来的。愁死了,复试机试在即,得加强练习啊!

参考代码:

 #include<stdio.h> #include<stdlib.h> typedef struct node{//链表结点数据结构定义; int data; struct node *next; }LNode,*LinkList; void insert_node(LinkList &L,int a){//向单链表中插入结点,并保持升序; LinkList t,temp,p; t=(LinkList)malloc(sizeof(LNode));//新建结点; t->data=a; t->next=NULL; if(L==NULL){//是第一个结点; L=t; } else{ temp=L; p=L; if(a<=temp->data){//结点插在表头; t->next=temp; L=t; } else{ while(temp!=NULL&&temp->data<a){//向后移动; //while(temp->data<a&&temp!=NULL){//向后移动; p=temp;//p指向前驱; temp=temp->next; } t->next=p->next;//插入结点; p->next=t; } } //printf("***/n"); } void print(LinkList L){//遍历链表; LinkList temp; if(L!=NULL){ temp=L; while(temp!=NULL){ printf("%d ",temp->data); temp=temp->next; } printf("/n"); } } int main(){ int a; LinkList L; L=NULL; printf("输入链表各结点值,以10000结束!/n"); while(scanf("%d",&a)!=EOF){ if(a==10000){ break; } insert_node(L,a); } print(L); }

 

数据测试:

华科00年计算机考研复试机试_第3张图片

你可能感兴趣的:(数据结构,struct,测试,null,insert)