全国青少年软件编程等级考试C语言经典程序题10道八

全国青少年软件编程等级考试C语言经典程序题10道八

【程序71】

题目:编写input()和output()函数输入,输出5个学生的数据记录。

1.程序分析:

2.程序源代码:

#define N 5

struct student

{ char num[6];

 char name[8];

 int score[4];

} stu[N];

input(stu)

struct student stu[];

{ int i,j;

 for(i=0;i<N;i++)

 { printf(“n please input %d of %dn”,i+1,N);

printf(“num: “);

scanf(“%s”,stu[i].num);

printf(“name: “);

scanf(“%s”,stu[i].name);

for(j=0;j<3;j++)

{ printf(“score %d.”,j+1);

scanf(“%d”,&stu[i].score[j]);

}

printf(“n”);

 }

}

print(stu)

struct student stu[];

{ int i,j;

printf(“nNo. Name Sco1 Sco2 Sco3n”);

for(i=0;i<N;i++)

{ printf(“%-6s%-10s”,stu[i].num,stu[i].name);

 for(j=0;j<3;j++)

printf(“%-8d”,stu[i].score[j]);

 printf(“n”);

}

}

main()

{

 input();

 print();

}

==============================================================

【程序72】

题目:创建一个链表。

1.程序分析:

2.程序源代码:

/*creat a list*/

#include “stdlib.h”

#include “stdio.h”

struct list

{ int data;

struct list *next;

};

typedef struct list node;

typedef node *link;

void main()

{ link ptr,head;

int num,i;

ptr=(link)malloc(sizeof(node));

ptr=head;

printf(“please input 5 numbers==>n”);

for(i=0;i<=4;i++)

{

 scanf(“%d”,&num);

 ptr->data=num;

 ptr->next=(link)malloc(sizeof(node));

 if(i==4) ptr->next=NULL;

 else ptr=ptr->next;

}

ptr=head;

while(ptr!=NULL)

{ printf(“The value is ==>%dn”,ptr->data);

 ptr=ptr->next;

}

}

==============================================================

【程序73】

题目:反向输出一个链表。

1.程序分析:

2.程序源代码:

/*reverse output a list*/

#include “stdlib.h”

#include “stdio.h”

struct list

{ int data;

 struct list *next;

};

typedef struct list node;

typedef node *link;

void main()

{ link ptr,head,tail; 

 int num,i;

 tail=(link)malloc(sizeof(node));

 tail->next=NULL;

 ptr=tail;

 printf(“nplease input 5 data==>n”);

 for(i=0;i<=4;i++)

 {

scanf(“%d”,&num);

ptr->data=num;

head=(link)malloc(sizeof(node));

head->next=ptr;

ptr=head;

 }

ptr=ptr->next;

while(ptr!=NULL)

{ printf(“The value is ==>%dn”,ptr->data);

 ptr=ptr->next;

}}

==============================================================

【程序74】

题目:连接两个链表。

1.程序分析:

2.程序源代码:

#include “stdlib.h”

#include “stdio.h”

struct list

{ int data;

struct list *next;

};

typedef struct list node;

typedef node *link;

link delete_node(link pointer,link tmp)

{if (tmp==NULL) /*delete first node*/

 return pointer->next;

else

{ if(tmp->next->next==NULL)/*delete last node*/

tmp->next=NULL;

 else /*delete the other node*/

tmp->next=tmp->next->next;

 return pointer;

}

}

void selection_sort(link pointer,int num)

{ link tmp,btmp;

 int i,min;

 for(i=0;i<num;i++)

 {

 tmp=pointer;

 min=tmp->data;

 btmp=NULL;

 while(tmp->next)

 { if(min>tmp->next->data)

 {min=tmp->next->data;

btmp=tmp;

 }

 tmp=tmp->next;

 }

printf(“40: %dn”,min);

pointer=delete_node(pointer,btmp);

}

}

link create_list(int array[],int num)

{ link tmp1,tmp2,pointer;

int i;

pointer=(link)malloc(sizeof(node));

pointer->data=array[0];

tmp1=pointer;

for(i=1;i<num;i++)

{ tmp2=(link)malloc(sizeof(node));

 tmp2->next=NULL;

 tmp2->data=array[i];

 tmp1->next=tmp2;

 tmp1=tmp1->next;

}

return pointer;

}

link concatenate(link pointer1,link pointer2)

{ link tmp;

tmp=pointer1;

while(tmp->next)

 tmp=tmp->next;

tmp->next=pointer2;

return pointer1;

}

void main(void)

{ int arr1[]={3,12,8,9,11};

 link ptr;

 ptr=create_list(arr1,5);

 selection_sort(ptr,5);

}

==============================================================

【程序75】

题目:放松一下,算一道简单的题目。

1.程序分析:

2.程序源代码:

main()

{

int i,n;

for(i=1;i<5;i++)

{ n=0;

 if(i!=1)

 n=n+1;

 if(i==3)

 n=n+1;

 if(i==4)

 n=n+1;

 if(i!=4)

 n=n+1;

 if(n==3)

printf(“zhu hao shi de shi:%c”,64+i);

 }

}

==============================================================

【程序76】

题目:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+…+1/n,当输入n为奇数时,调用函数

1/1+1/3+…+1/n(利用指针函数)

1.程序分析:

2.程序源代码:

main()

#include “stdio.h”

main()

{

float peven(),podd(),dcall();

float sum;

int n;

while (1)

{

 scanf(“%d”,&n);

 if(n>1)

break;

}

if(n%2==0)

{

 printf(“Even=”);

 sum=dcall(peven,n);

}

else

{

 printf(“Odd=”);

 sum=dcall(podd,n);

}

printf(“%f”,sum);

}

float peven(int n)

{

float s;

int i;

s=1;

for(i=2;i<=n;i+=2)

 s+=1/(float)i;

return(s);

}

float podd(n)

int n;

{

float s;

int i;

s=0;

for(i=1;i<=n;i+=2)

 s+=1/(float)i;

return(s);

}

float dcall(fp,n)

float (*fp)();

int n;

{

float s;

s=(*fp)(n);

return(s);

}

==============================================================

【程序77】

题目:填空练习(指向指针的指针)

1.程序分析:

2.程序源代码:

main()

{ char *s[]={“man”,”woman”,”girl”,”boy”,”sister”};

char **q;

int k;

for(k=0;k<5;k++)

{ ;/*这里填写什么语句*/

 printf(“%sn”,*q);

}

}

==============================================================

【程序78】

题目:找到年龄最大的人,并输出。请找出程序中有什么问题。

1.程序分析:

2.程序源代码:

#define N 4

#include “stdio.h”

static struct man

{ char name[20];

int age;

} person[N]={“li”,18,”wang”,19,”zhang”,20,”sun”,22};

main()

{struct man *q,*p;

int i,m=0;

p=person;

for (i=0;i<N;i++)

{if(m<p->age)

 q=p++;

 m=q->age;}

printf(“%s,%d”,(*q).name,(*q).age);

}

==============================================================

【程序79】

题目:字符串排序。

1.程序分析:

2.程序源代码:

main()

{

char *str1[20],*str2[20],*str3[20];

char swap();

printf(“please input three stringsn”);

scanf(“%s”,str1);

scanf(“%s”,str2);

scanf(“%s”,str3);

if(strcmp(str1,str2)>0) swap(str1,str2);

if(strcmp(str1,str3)>0) swap(str1,str3);

if(strcmp(str2,str3)>0) swap(str2,str3);

printf(“after being sortedn”);

printf(“%sn%sn%sn”,str1,str2,str3);

}

char swap(p1,p2)

char *p1,*p2;

{

char *p[20];

strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p);

}

==============================================================

【程序80】

题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只

猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了

一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,

问海滩上原来最少有多少个桃子?

1.程序分析:

2.程序源代码:

main()

{int i,m,j,k,count;

for(i=4;i<10000;i+=4)

{ count=0;

m=i;

for(k=0;k<5;k++)

{

 j=i/4*5+1;

 i=j;

 if(j%4==0)

count++;

 else

break;

}

 i=m;

 if(count==4)

 {printf(“%dn”,count);

break;}

}

}

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年7月1日
下一篇 2019年7月1日

相关推荐