Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1730122
  • 博文数量: 358
  • 博客积分: 2180
  • 博客等级: 大尉
  • 技术积分: 1810
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-17 13:47
文章分类

全部博文(358)

文章存档

2016年(17)

2015年(55)

2014年(9)

2013年(67)

2012年(181)

2011年(29)

分类: C/C++

2011-10-14 21:10:35

【程序61】 
题目:打印出杨辉三角形(要求打印出10行如下图)    
1.程序分析: 
       1 
      1  1 
      1  2  1 
      1  3  3  1 
      1  4  6  4  1 
      1  5  10 10 5  1   
2.程序源代码: 
main() 
{int i,j; 
int a[10][10]; 
printf("\n"); 
for(i=0;i<10;i++) 
 {a[i][0]=1; 
 a[i][i]=1;} 
for(i=2;i<10;i++) 
 for(j=1;j a[i][j]=a[i-1][j-1]+a[i-1][j]; 
for(i=0;i<10;i++) 
 {for(j=0;j<=i;j++) 
 printf("%5d",a[i][j]); 
 printf("\n"); 
 } 

============================================================== 
【程序62】 
题目:学习putpixel画点。 
1.程序分析:             
2.程序源代码: 
#include "stdio.h" 
#include "graphics.h" 
main() 

int i,j,driver=VGA,mode=VGAHI; 
initgraph(&driver,&mode,""); 
setbkcolor(YELLOW); 
for(i=50;i<=230;i+=20) 
 for(j=50;j<=230;j++) 
 putpixel(i,j,1); 
for(j=50;j<=230;j+=20) 
 for(i=50;i<=230;i++) 
 putpixel(i,j,1); 

============================================================== 
【程序63】 
题目:画椭圆ellipse    
1.程序分析: 
2.程序源代码: 
#include "stdio.h" 
#include "graphics.h" 
#include "conio.h" 
main() 

int x=360,y=160,driver=VGA,mode=VGAHI; 
int num=20,i; 
int top,bottom; 
initgraph(&driver,&mode,""); 
top=y-30; 
bottom=y-30; 
for(i=0;i
ellipse(250,250,0,360,top,bottom); 
top-=5; 
bottom+=5; 

getch(); 

============================================================== 
【程序64】 
题目:利用ellipse and rectangle 画图。 
1.程序分析: 
2.程序源代码: 
#include "stdio.h" 
#include "graphics.h" 
#include "conio.h" 
main() 

int driver=VGA,mode=VGAHI; 
int i,num=15,top=50; 
int left=20,right=50; 
initgraph(&driver,&mode,""); 
for(i=0;i
ellipse(250,250,0,360,right,left); 
ellipse(250,250,0,360,20,top); 
rectangle(20-2*i,20-2*i,10*(i+2),10*(i+2)); 
right+=5; 
left+=5; 
top+=10; 

getch(); 

============================================================== 
【程序65】 
题目:一个最优美的图案。    
1.程序分析: 
2.程序源代码: 
#include "graphics.h" 
#include "math.h" 
#include "dos.h" 
#include "conio.h" 
#include "stdlib.h" 
#include "stdio.h" 
#include "stdarg.h" 
#define MAXPTS 15 
#define PI 3.1415926 
struct PTS { 
int x,y; 
}; 
double AspectRatio=0.85; 
void LineToDemo(void) 

struct viewporttype vp; 
struct PTS points[MAXPTS]; 
int i, j, h, w, xcenter, ycenter; 
int radius, angle, step; 
double rads; 
printf(" MoveTo / LineTo Demonstration" ); 
getviewsettings( &vp ); 
h = vp.bottom - vp.top; 
w = vp.right - vp.left; 
xcenter = w / 2; /* Determine the center of circle */ 
ycenter = h / 2; 
radius = (h - 30) / (AspectRatio * 2); 
step = 360 / MAXPTS; /* Determine # of increments */ 
angle = 0; /* Begin at zero degrees */ 
for( i=0 ; irads = (double)angle * PI / 180.0; /* Convert angle to radians */ 
points[i].x = xcenter + (int)( cos(rads) * radius ); 
points[i].y = ycenter - (int)( sin(rads) * radius * AspectRatio ); 
angle += step; /* Move to next increment */ 

circle( xcenter, ycenter, radius ); /* Draw bounding circle */ 
for( i=0 ; ifor( j=i ; jmoveto(points[i].x, points[i].y); /* Move to beginning of cord */ 
lineto(points[j].x, points[j].y); /* Draw the cord */ 
} } } 
main() 
{int driver,mode; 
driver=CGA;mode=CGAC0; 
initgraph(&driver,&mode,""); 
setcolor(3); 
setbkcolor(GREEN); 
LineToDemo();} 
============================================================== 
【程序66】 
题目:输入3个数a,b,c,按大小顺序输出。    
1.程序分析:利用指针方法。 
2.程序源代码: 
/*pointer*/ 
main() 

int n1,n2,n3; 
int *pointer1,*pointer2,*pointer3; 
printf("please input 3 number:n1,n2,n3:"); 
scanf("%d,%d,%d",&n1,&n2,&n3); 
pointer1=&n1; 
pointer2=&n2; 
pointer3=&n3; 
if(n1>n2) swap(pointer1,pointer2); 
if(n1>n3) swap(pointer1,pointer3); 
if(n2>n3) swap(pointer2,pointer3); 
printf("the sorted numbers are:%d,%d,%d\n",n1,n2,n3); 

swap(p1,p2) 
int *p1,*p2; 
{int p; 
p=*p1;*p1=*p2;*p2=p; 

============================================================== 
【程序67】 
题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。 
1.程序分析:谭浩强的书中答案有问题。       
2.程序源代码: 
main() 

int number[10]; 
input(number); 
max_min(number); 
output(number); 

input(number) 
int number[10]; 
{int i; 
for(i=0;i<9;i++) 
 scanf("%d,",&number[i]); 
 scanf("%d",&number[9]); 

max_min(array) 
int array[10]; 
{int *max,*min,k,l; 
int *p,*arr_end; 
arr_end=array+10; 
max=min=array; 
for(p=array+1;p if(*p>*max) max=p; 
 else if(*p<*min) min=p; 
 k=*max; 
 l=*min; 
 *p=array[0];array[0]=l;l=*p; 
 *p=array[9];array[9]=k;k=*p; 
 return; 

output(array) 
int array[10]; 
{ int *p; 
for(p=array;p printf("%d,",*p); 
printf("%d\n",array[9]); 

============================================================== 
【程序68】 
题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数 
1.程序分析: 
2.程序源代码: 
main() 

int number[20],n,m,i; 
printf("the total numbers is:"); 
scanf("%d",&n); 
printf("back m:"); 
scanf("%d",&m); 
for(i=0;i scanf("%d,",&number[i]); 
scanf("%d",&number[n-1]); 
move(number,n,m); 
for(i=0;i printf("%d,",number[i]); 
printf("%d",number[n-1]); 

move(array,n,m) 
int n,m,array[20]; 

int *p,array_end; 
array_end=*(array+n-1); 
for(p=array+n-1;p>array;p--) 
 *p=*(p-1); 
 *array=array_end; 
 m--; 
 if(m>0) move(array,n,m); 

============================================================== 
【程序69】 
题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出 
   圈子,问最后留下的是原来第几号的那位。 
1. 程序分析: 
2.程序源代码: 
#define nmax 50 
main() 

int i,k,m,n,num[nmax],*p; 
printf("please input the total of numbers:"); 
scanf("%d",&n); 
p=num; 
for(i=0;i *(p+i)=i+1; 
 i=0; 
 k=0; 
 m=0; 
 while(m { 
 if(*(p+i)!=0) k++; 
 if(k==3) 
 { *(p+i)=0; 
 k=0; 
 m++; 
 } 
i++; 
if(i==n) i=0; 

while(*p==0) p++; 
printf("%d is left\n",*p); 

============================================================== 
【程序70】 
题目:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。    
1.程序分析: 
2.程序源代码: 
main() 

int len; 
char *str[20]; 
printf("please input a string:\n"); 
scanf("%s",str); 
len=length(str); 
printf("the string has %d characters.",len); 

length(p) 
char *p; 

int n; 
n=0; 
while(*p!='\0') 

 n++; 
 p++; 

return n; 
}
【程序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 { printf("\n please input %d of %d\n",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 Sco3\n"); 
for(i=0;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 ==>%d\n",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 ==>%d\n",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 { 
 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: %d\n",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{ 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("%s\n",*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{if(mage) 
 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 strings\n"); 
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 sorted\n"); 
printf("%s\n%s\n%s\n",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("%d\n",count); 
  break;} 

}

阅读(1067) | 评论(0) | 转发(0) |
0

上一篇:C语言经典源码2

下一篇:C语言经典源码4

给主人留下些什么吧!~~