千里暮云平

常用链接

统计

最新评论

学c++一段时间了,开博第一天,附上C的二分法的源码和带参数宏的使用代码

#include <stdio.h>
#include <string.h>
void main()
{
 int search(int [],int);
 int num,result;
 int a[15]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
 printf("请输入要查找的元素:\n");
 scanf("%d",&num);
 result = search(a,num);
if(result == -999)
 printf("该元素不存在。\n");
else
 printf("该元素在第%d位置。\n",result);
}
int search(int b[],int n)
{
 int low=0,high=14,mid;
 while(low<=high)
 {
  mid = (low + high)/2;
  if(n<b[mid])
   high = mid - 1;
  else if(n>b[mid])
   low = mid + 1;
  else
   return mid;
 }
 return -999;
}

 


#include <stdio.h>
#define swap(a,b,k) k=a;a=b;b=k;
void main()
{
 int x,y,k;
 printf("请输入要交换的两个值:\n");
 scanf("%d%d",&x,&y);
 printf("交换后,值为:\n");
 swap(x,y,k);
 printf("%d,%d\n",x,y);

 

 #include <stdio.h>
#define divide(a,b) a%b
void main()
{
 int x,y,k; 
 printf("请输入两个相除的数:\n");
 scanf("%d%d",&x,&y);
 printf("相除后,余数的值为:\n");
 k=divide(x,y);
 printf("%d\n",k);
}

#include <stdio.h>
#include <math.h>
#define area(s,a,b,c) sqrt(s*(s-a)*(s-b)*(s-c));
void main()
{
 float x,y,k;
 float s,are;
 printf("请输入三角形的三条边:\n");
 scanf("%f%f%f",&x,&y,&k);
 printf("面积为:\n");
 s = 0.5*(x+y+k);
 are=area(s,x,y,k);
 printf("%5.2f\n",are);
}
 



#include <stdio.h>
#include <math.h>
#define LEAPYEAR(y) y%4
void main()
{
 int y;
scanf("%d",&y);
if(LEAPYEAR(y)) printf("%d is a not leap year\n",y);
else printf("%d is a leap year\n",y);
}






#include <stdio.h>
void main()
{
 int a,b,c,*p1,*p2,*p3;
 int temp;
    printf("请输入3个整数:\n");
 scanf("%d%d%d",&a,&b,&c);
    p1 = &a; p2 = &b ; p3 = &c;
 if(*p1>*p2)
 {  
  temp = *p1 ;
  *p1 = *p2;
  *p2 = temp;
 }
 if (*p1>*p3)
 {
  temp = *p1 ;
  *p1 = *p3;
  *p3 = temp;
 }
 if (*p2>*p3)
 {
  temp = *p2 ;
  *p2 = *p3;
  *p3 = temp;
 }
 printf("排序后的数为:%d,%d,%d\n",*p1,*p2,*p3);

}









#include <stdio.h>
#define MAX 20
void main()
{
 char str1[MAX],str2[MAX],str3[MAX];
 char *s1=str1,*s2=str2,*s3=str3;
 char *temp;
    printf("Please enter tree strings divided by Enter:\n");
 scanf("%s%s%s",s1,s2,s3);  //不在使用换行符,多此一举

 printf("after sorting:\n");

 if(*s1>*s2)
 {    
  temp = s1;
  s1 = s2;
  s2 = temp;
 }
 if(*s1>*s3)
 {    
  temp = s1;
  s1 = s3;
  s3 = temp;
 }
 if(*s2>*s3)
 {    
  temp = s2;
  s2 = s3;
  s3 = temp;
 }
 printf("these strings are :\n%s\n%s\n%s\n\n",s1,s2,s3);
}







#include <stdio.h>
void main()
{
 int arr[10];
 void input(int *,int );
 void handling(int *,int );
 void display(int *,int );
 input(arr,10);
 handling(arr,10);
 display(arr,10);

}
void input(int *p,int n)
{
 int *po = p;
    printf("请输入10个整数:\n");
 for(;p<po+n;p++)
  scanf("%d",p);
}
void handling(int *p,int n)
{
 int *po = p,min=*po,max=*po;
 for(po=p+1;po<p+n;po++)
 {
  if(min > *po)
   min = *po;
 }
 for(po=p+1;po<p+n;po++)
 {
  if(max < *po)
   max = *po;
 }
 
 for(po = p;po<p+n;po++)
 {
  if(*po == min)
  {
   *po = max;
  }

 }
  for(po = p+1;po<p+n;po++)
 {
  if(*po == max)
   *po = min;
 }
  
}
void display(int *p,int n)
{
 int *po = p;
    printf("10个整数为:\n");
 for(;p<po+n;p++)
  printf("%d ",*p);
}


#include <stdio.h>
void main()
{
 bool move(int *p,int m);
 int a[10]={1,2,3,4,5,6,7,8,9,10},m,isT;
 printf("请输入要移动前面的几个数:\n");
 scanf("%d",&m);
    isT = move(a,m);
 if(isT)
 {
  for(int i=0;i<10;i++)
   printf("%d ",*(a+i));
 }
}
bool move(int *p,int m)
{
 int *po = p,n = 10-m;
 int a[10];
 for(int i=n;i<10;i++)
 {
  *(a+i)=*(po+i);
 }
 for(i=9;i>=m;i--)
 {
  *(po+i)=*(po+i-m);
 }
 for(i=0;i<m;i++)
 {
        *(po+i)=*(a+i+n);
 }
 return true;
}








#include <stdio.h>
void main()
{
 int length(char *str);
 int len;
 char *pstr = "abc";
    len = length(pstr);
 printf("字符串的长度为:%d\n",len);
}

int length(char *str)
{
 int count = 0;
 while(*str!='\0')
 {
  count++;
  str++;
 }
 return count;
}













#include <stdio.h>
struct
{
 int year;
 int month;
 int day;
}date;
void main()
{
 int days;
 printf("Input year,month,day:");
    scanf("%d%d%d",&date.year,&date.month,&date.day);
 switch(date.month)
 {
 case 1: days = date.day; break;
 case 2: days = 31+date.day; break;
 case 3: days = 59+date.day; break;
 case 4: days=date.day+90; break;
    case 5: days=date.day+120; break;
    case 6: days=date.day+31; break;
    case 7: days=date.day+181; break;
    case 8: days=date.day+212; break;
    case 9: days=date.day+243; break;
    case 10: days=date.day+273; break;
    case 11: days=date.day+304; break;
    case 12: days=date.day+334; break;
 }
 if((date.year%400==0)&&(date.year%4==0)&&date.month>=3)
  days+=1;
 printf("你所输入的日期是这一年的%d天。",days);
}







#include <stdio.h>
struct student
{
 int num;
 char name[10];
 int score[3];
}stu[3];
void main()
{
 printf("请输入学生信息:\n");
 for(int i=0;i<3;i++)
  scanf("%d%s%d%d%d",&stu[i].num,&stu[i].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);
 printf("打印学生信息:\n");
 for( i=0;i<3;i++)
  printf("学生%d的信息是:%d\t%s\t%d %d %d\n",i,stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2]);

}


#include <stdio.h>
struct student
{
 int num;
 char name[10];
 int score[3];
}stu[3];
void main()
{
 void input(struct student []);
 input(stu);
 printf("打印学生信息:\n");
 for(int i=0;i<3;i++)
  printf("学生%d的信息是:%d\t%s\t%d %d %d\n",i,stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2]);

}
void input(struct student stu[])
{
 printf("请输入学生信息:\n");
  for(int i=0;i<3;i++)
  scanf("%d%s%d%d%d",&stu[i].num,&stu[i].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);
}


#define NEWSIZE 1000//定义初始空间大小
char newbuf[NEWSIZE];//先在内存中定义一块区域供使用
char *newp=newbuf;//定义字符指针变量newp,并令其指向刚才定义的区域开始位置
char *new(int n)//定义函数new,其返回值为一字符指针
{
if(newp+n<=newbuf+NEWSIZE)//判断所开辟区域大小在先前定义的范围内
{
newp=newp+n;//使new到new+n范围内的内存空间供程序使用
return newp-n;//返回newp-n,即newbuf位置,newbuf到newbuf+n区域即已开辟成功
}
else
return NULL;//若要开辟的空间过大,则返回NULL
}



//通过while循环一行行取,读到文件末尾就是NULL了 ----读取整个文件
#include <stdio.h>

void main( void )
{
FILE *stream;
char line[100];

if( (stream = fopen( "file.txt", "r" )) != NULL )
{
while( fgets( line, 100, stream ) != NULL)
printf( "%s", line);
fclose( stream );
}
}


提问:茉莉花、太阳花、玫瑰花哪一朵花最没力?
回答:茉莉花。
原因:好一朵美丽(没力)的茉莉花。

提问:猩猩最讨厌什么线?
回答:平行线。
原因:平行线没有相交(香蕉)。

提问:橡皮、老虎皮、狮子皮哪一个最不好?
回答:橡皮。
原因:橡皮擦(橡皮差)。
提问:布和纸怕什么?
回答:布怕一万,纸怕万一。
原因:不(布)怕一万,只(纸)怕万一。

提问:铅笔姓什么?
回答:萧。
原因:削(萧)铅笔。

提问:麒麟到了北极会变成什么?
回答:冰淇凌。
原因:冰淇凌(冰麒麟)。

提问:哪位历史人物最欠扁?
回答:苏武。
原因:苏武牧羊北海边(被海扁)。

提问:从1到9哪个数字最勤劳,哪个数字最懒惰?
回答:1懒惰;2勤劳。
原因:一(1)不做二(2)不休。

提问:怎样使麻雀安静下来?
回答:压它一下。
原因:鸦雀无声(压雀无声)。

posted on 2010-02-02 20:22 Adam 阅读(157) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理