北航2007年計算機複試上機
第一題、從輸入的字串中,統計空格,回車,TAB出現的次數
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(){
int i=0;
int len,space_count=0,enter_count=0,tab_count=0;
char buf[1024];
char s;
while(s=getchar()!=0){
buf[i] = s;
i++;
}
buf[i] = '\0';
len = strlen(buf);
for(i=0;i<len;i++){
if(buf[i] == ' ')
space_count++;
if(buf[i] == '\n')
enter_count++;
if(buf[i] == '\t')
tab_count++;
}
printf("%d %d %d",space_count,enter_count,tab_count);
return 0;
}
第二題、將兩個升序字串合併成一個升序字串,相同的字母,出現一次。
#include<stdio.h>
#include<string.h>
int cmp(const void * a,const void * b){
return *(char *)a - *(char*)b;
}
void merge(char str1[],char str2[]){
int len1 = strlen(str1);
int len2 = strlen(str2);
int i;
char s[100];
for(i=len;i<len1+len2;i++){
str1[i] = str2[i-len];
}
qsort(str1,len1+len2,sizeof(str1[0]),cmp);
for(i=0;i<len1+len2;i++){
if(str1[i] == str1[i-1]){
continue;
}else
s[i] = str1[i];
}
}
第三題、多項式相加
#include<stdio.h>
#include<malloc.h>
typedef struct polynomial{
int factor; //係數
int indice;
struct polynomial *next;
}*LinkList,polynomial;
void CreateLink(LinkList &L,int n){
LinkList p,s;
int i;
L = (LinkList)malloc(sizeof(polynomial));
L ->next = NULL;
p = L;
for(i=0;i<n;i++){
s = (LinkList)malloc(sizeof(polynomial));
printf("依次輸入多項式係數和指數:");
scanf("%d%d",&s->factor,&s->indice);
s->next = NULL;
p->next = s;
p = s;
}
}
void AddList(LinkList List1,LinkList List2,LinkList &L){
LinkList p1,p2,list,s;
L = (LinkList)malloc(sizeof(polynomial));
L-> next = NULL;
list = L;
p1 = List1->next;
p2 = List2->next;
while(p1 && p2){
if(p1 -> indice < p2 ->indice){
s = p1->next;
list->next = p1;
list = p1;
list->next = NULL;
p1 = s;
}
else if(p1->indice == p2->indice){
p1->factor = p1->factor + p2->factor;
if(p1->factor!=0){
list->next = p1;
s = p1->next;
list = p1;
list->next = NULL;
p1 = s;
p2 = p2->next;
}else{
p1 = p1->next;
p2 = p2->next;
}
}
else{
s = p2->next;
list->next = p2;
list = p2;
list->next = NULL;
p2 = s;
}
}
if(p1 != NULL) list->next = p1;
if(p2 != NULL) list->next = p2;
}
void VisitList(LinkList L){
LinkList p;
p = L->next;
if(p == NULL){
printf("0\n");
}
while(p){
printf("%dX^%d",p->factor,p->indice);
p = p->next;
if(p != NULL)
printf("+");
}
printf("\n");
}
int main(){
LinkList p1,p2,sump;
CreateLink(p1,3);
CreateLink(p2,4);
AddList(p1,p2,sump);
VisitList(sump);
free(p1);
free(p2);
free(sump);
return 0;
}