⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 100个经典c语言程序.txt

📁 100个经典C语言程序.txt 您要是跟我一样在学C 就把这些都做一遍吧
💻 TXT
📖 第 1 页 / 共 5 页
字号:
============================================================== 
【程序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<num;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<num;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 ; i<MAXPTS ; ++i ){ /* Determine circle intercepts */ 
rads = (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 */ 
 
 
  
 作者: tao2320  2006-3-15 23:36   回复此发言    
 
--------------------------------------------------------------------------------
 
13 回复:100个经典C语言程序,大家可以进来看看。  
 for( i=0 ; i<MAXPTS ; ++i ){ /* Draw the cords to the circle */ 
for( j=i ; j<MAXPTS ; ++j ){ /* For each remaining intersect */ 
moveto(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<arr_end;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<array+9;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<n-1;i++) 
 scanf("%d,",&number[i]); 
scanf("%d",&number[n-1]); 
move(number,n,m); 
for(i=0;i<n-1;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<n;i++) 
 *(p+i)=i+1; 
 i=0; 
 k=0; 
 m=0; 
 while(m<n-1) 
 { 
 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; 
}  
 
  
 作者: tao2320  2006-3-15 23:36   回复此发言    
 
--------------------------------------------------------------------------------
 
14 回复:100个经典C语言程序,大家可以进来看看。  
 经典c程序100例==71--80 
【程序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 %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<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 ==>%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<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: %d\n",min); 
 
 
  
 作者: tao2320  2006-3-15 23:37   回复此发言    
 
--------------------------------------------------------------------------------
 
15 回复:100个经典C语言程序,大家可以进来看看。  
 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; 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -