Chinaunix首页 | 论坛 | 博客
  • 博客访问: 288725
  • 博文数量: 134
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 118
  • 用 户 组: 普通用户
  • 注册时间: 2013-08-01 14:02
文章分类

全部博文(134)

文章存档

2015年(2)

2014年(4)

2013年(128)

分类: C/C++

2013-08-01 14:13:23

原文地址:函数 _0213 作者:丫叩酱


点击(此处)折叠或打开

  1. 1.#无返回值的函数的定义与调用
  2. #include <stdio.h>

  3. void print(void)
  4. {
  5.     printf("hello!\n");
  6. }
  7. int main(int argc, const char *argv[])
  8. {
  9.     print();
  10.     return 0;
  11. }
  12. 2.#有返回值的函数的定于与调用
  13. #include <stdio.h>

  14. int add(int a,int b)
  15. {
  16.     int c;
  17.     c=a+b;
  18.     return c;
  19. }
  20. int main(int argc, const char *argv[])
  21. {
  22.     int c;
  23.     c=add(1,2);
  24.     printf("c=%d\n",c);
  25.     return 0;
  26. }
  27. 3.#函数调用与函数名的使用,函数名是指向函数入口地址的指针变量
  28. #include <stdio.h>

  29. int print(void)
  30. {
  31.     return 2;
  32. }
  33. int main(int argc, const char *argv[])
  34. {
  35.     printf("%d\n",print());
  36.     printf("%d\n",print);
  37.     return 0;
  38. }
  39. 4.#函数的递归调用
  40. #include <stdio.h>

  41. int sum(int n)
  42. {
  43.     if(n==0)
  44.         return 0;
  45.     else
  46.         return n+sum(n-1);
  47. }
  48. int main(int argc, const char *argv[])
  49. {
  50.     int s;
  51.     s=sum(10);
  52.     printf("sum=%d\n",s);
  53.     return 0;
  54. }
  55. 5.#定义一个函数,实现是否是素数的调用
  56. #include <stdio.h>

  57. int is_prime(int n)
  58. {
  59.     int i;
  60.     if(n==0||n==1)
  61.         return 0;
  62.     else
  63.     {
  64.         for (i = 2; i < n-1; i++)
  65.         {
  66.             if(n%i==0)
  67.                 return 0;

  68.         }
  69.         return 1;
  70.     }
  71. }
  72. int is_prime2(int n)
  73. {
  74.     int i, k;
  75.    
  76.     k = sqrt(n);
  77.     for(i = 2; i <= k; i++)
  78.     {
  79.         if((n % i) == 0)
  80.         {
  81.             break;
  82.         }
  83.     }
  84.     return (i >= k+1)? 1: 0;
  85. }
  86. int main(int argc, const char *argv[])
  87. {
  88.     int num;
  89.     printf("num=");
  90.     scanf("%d",&num);
  91.     printf("%d is %s a prime.\n",num,is_prime(num)?"":"not");
  92.     return 0;
  93. }
  94. 6.#定义一个函数,实现能否构成三角形的判断
  95. #include <stdio.h>
  96. int is_trigon(int a,int b,int c)
  97. {
  98.     if((a<b+c)&&(b<a+c)&&(c<a+b))
  99.         return 1;
  100.     else
  101.         return 0;
  102. }
  103. int main(int argc, const char *argv[])
  104. {
  105.     int a,b,c;
  106.     printf("enter 3 numbers(by a space):");
  107.     scanf("%d %d %d",&a,&b,&c);
  108.     printf("%d %d %d can %s make a trigon\n",a,b,c,is_trigon(a,b,c)?"":"not");
  109.     return 0;
  110. }
  111. 7.#输入3个人的年龄,输出谁的年龄最大
  112. #include <stdio.h>

  113. int max(int a[])
  114. {
  115.     int m;
  116.     m=a[0]>a[1]?0:1;
  117.     m=a[m]>a[2]?m:2;
  118.     return m;
  119. }
  120. int main(int argc, const char *argv[])
  121. {
  122.     char name[3][10];
  123.     int ag[3];
  124.     int i;
  125.     for (i = 0; i < 3; i++)
  126.     {
  127.         printf("%d:",i+1);
  128.         scanf("%s %d",name[i],&ag[i]);
  129.     }
  130.     printf("%s is the max %d\n",name[max(ag)],ag[max(ag)]);
  131.     return 0;
  132. }
  133. 8.#
  134. #include <stdio.h>

  135. int nn(int n)
  136. {
  137.     if(n==0)
  138.         return 1;
  139.     else
  140.         return n*nn(n-1);
  141. }
  142. int main(int argc, const char *argv[])
  143. {
  144.     int num;
  145.     printf("num=");
  146.     scanf("%d",&num);
  147.     printf("%d!=%d\n",num,nn(num));
  148.     return 0;
  149. }
  150. 9.#全局变量初始化时,只能是常量赋值
  151. #include <stdio.h>
  152. int h=10;
  153. int m=10+1;
  154. int main(int argc, const char *argv[])
  155. {
  156.     printf("m=%d\n",m);
  157.     return 0;
  158. }
  159. 10.#定义一个函数,实现两个数的交换
  160. #include <stdio.h>

  161. void swap(int *a,int *b)
  162. {
  163.     int t;
  164.     t=*a;
  165.     *a=*b;
  166.     *b=t;
  167. }
  168. int main(int argc, const char *argv[])
  169. {
  170.     int a,b;
  171.     printf("enter 2 numbers(by a space):");
  172.     scanf("%d %d",&a,&b);
  173.     swap(&a,&b);
  174.     printf("After swap:%d %d\n",a,b);
  175.     return 0;
  176. }
  177. 11.#数组名传递参数时,变成了指向数组首地址的指针,失去了数组的属性
  178. #include <stdio.h>

  179. void swap(int a[])
  180. {
  181.     printf("%d\n",sizeof(a));
  182. }
  183. int main(int argc, const char *argv[])
  184. {
  185.     int arr[10]={0};
  186.     printf("%d\n",sizeof(arr));
  187.     swap(arr);
  188.     return 0;
  189. }
  190. 12.#定义一个函数,实现将字符串的大写字母改成小写字母,将小写改为大写
  191. #include <stdio.h>

  192. void function(char s[])
  193. {
  194.     for(;*s!='\0';s++)
  195.     {
  196.         if((*s>=65)&&(*s<=90))
  197.         {
  198.             *s+=32;
  199.             continue;
  200.         }
  201.         if((*s>=97)&&(*s<=122))
  202.         {
  203.             *s-=32;
  204.             continue;
  205.         }
  206.     }
  207. }
  208. int main(int argc, const char *argv[])
  209. {
  210.     char str[30]="HELLO world!";
  211.     printf("str=%s\n",str);
  212.     function(str);
  213.     printf("str=%s\n",str);
  214.     return 0;
  215. }
  216. 13.#编写函数,使得函数返回下列值,函数原型int func(int a[], int n)
  217.       a)数组中的最大元素
  218.       b)数组a中所有元素的平均值
  219.       c)数组a中所有偶数的数量
  220. #include <stdio.h>
  221. int maxi(int a[],int n)
  222. {
  223.     int m=0,mi=0,i;
  224.     for (i = 0; i < n; i++)
  225.     {
  226.         if(a[i]>m)
  227.         {
  228.             m=a[i];
  229.             mi=i;
  230.         }
  231.     }
  232.     return mi;
  233. }

  234. float average(int a[],int n)
  235. {
  236.     float sum=0.0; //也可int sum=0,再把sum强制转换为float型,再运算sum/n;
  237.     int i;
  238.     for (i = 0; i < n; i++)
  239.     {
  240.         sum+=a[i];
  241.     }
  242.     return sum/n;
  243. }

  244. int evern(int a[],int n)
  245. {
  246.     int i,en=0;
  247.     for (i = 0; i < n; i++)
  248.     {
  249.         if(a[i]%2==0)
  250.             en++;
  251.     }
  252.     return en;
  253. }
  254. int main(int argc, const char *argv[])
  255. {
  256.     int n,i;
  257.     printf("n=");
  258.     scanf("%d",&n);
  259.     int arr[n];
  260.     srand(time(NULL));
  261.     for (i = 0; i < n; i++)
  262.     {
  263.         arr[i]=rand()%101;
  264.         printf("%4d",arr[i]);
  265.     }
  266.     printf("\n");
  267.     printf("the max one:a[%d]=%d\n",maxi(arr,n),arr[maxi(arr,n)]);
  268.     printf("the average:avg=%f\n",average(arr,n));
  269.     printf("the ever number(s):%d\n",evern(arr,n));

  270.     return 0;
  271. }
  272. 14.#编写一个函数,输入一个4位数,要求输出4个数字字符,但每两个数字间空一个空格,如:输入1990,应输出:“1 9 9 0”
  273. #include <stdio.h>
  274. 方法1:
  275. void func(int n)
  276. {
  277.     int a[4],i=0;
  278.     while(i<4)
  279.     {
  280.         a[i++]=n%10;
  281.     }
  282.     for (i =3; i >=0 ; i++)
  283.     {
  284.         printf("%d ",a[i]);
  285.     }
  286.     printf("\b\n");
  287. }

  288. 方法2:
  289. void func(int n)
  290. {
  291.     int i;
  292.     int str[7];
  293.     for (i = 6; i >= 0; i--)
  294.     {
  295.         if(i%2==0)
  296.         {
  297.             str[i]=n%10+48;
  298.             n/=10;
  299.         }
  300.         else
  301.             str[i]=32;
  302.     }
  303.     for (i = 0; i < 7; i++)
  304.     {
  305.         printf("%c",str[i]);
  306.     }
  307.     printf("\n");
  308. }
  309. int main(int argc, const char *argv[])
  310. {
  311.     int num;
  312.     printf("num=");
  313.     scanf("%d",&num);
  314.     printf("str=");
  315.     func(num);
  316.     return 0;
  317. }
  318. 15.#实现一函数,输入一个十进制数,打印它的二进制形式
  319.     方法1:用堆栈实现,如下
  320.     方法2:用递归实现
  321. #include <stdio.h>

  322. void binary(int n)
  323. {
  324.     int i,a[32]={0};
  325.     for (i = 31; i >= 0; i--)
  326.     {
  327.         a[i]=n%2;
  328.         n/=2;
  329.     }
  330.     printf("binary :");
  331.     for (i = 0; i < 31; i++)
  332.     {
  333.         if(i%8==0)
  334.             printf(" ");
  335.         printf("%d",a[i]);
  336.     }
  337.     printf("\n");
  338.     
  339. }

  340. 方法2:
  341. void binary(int n)
  342. {
  343.     if(n/2)
  344.         binary(n/2);
  345.     printf("%d",n%2);
  346. }

  347. int main(int argc, const char *argv[])
  348. {
  349.     int num;
  350.     printf("decimal:");
  351.     scanf("%d",&num);
  352.     binary(num);
  353.     return 0;
  354. }
  355. 16.#实现一年,输入月,日,计算出该日是该年的第几天
  356. #include <stdio.h>
  357. int dayth(int y,int m,int d)
  358. {
  359.     int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
  360.     int i,dth=0,flag=0;
  361.     if(((y%100!=0)&&(y%4==0))||(y%400==0))
  362.         flag=1;
  363.     a[2]+=flag;
  364.     for (i = 0; i < m; i++)
  365.     {
  366.         dth+=a[i];
  367.     }
  368.     return dth+d;
  369. }

  370. int main(int argc, const char *argv[])
  371. {
  372.     int m,d,y;
  373.     printf("m/d/y=");
  374.     scanf("%d/%d/%d",&m,&d,&y);
  375.     printf("%d/%d is the %dth day in the %d year\n",m,d,dayth(y,m,d),y);
  376.     return 0;
  377. }
  378. 17.#实现字符串的连接,如:连接“hello”和“world”,成为:“helloworld”
  379. #include <stdio.h>

  380. void link(char str1[],char str2[])
  381. {
  382.     int i,j=0;
  383.     for(i=0;str1[i]!='\0';i++)
  384.     {}
  385.     while(str2[j]!='\0')
  386.     {
  387.         str1[i++]=str2[j];
  388.         j++;
  389.     }
  390.     str1[i]='\0';
  391.     printf("%s\n",str1);
  392.     
  393. }
  394. int main(int argc, const char *argv[])
  395. {
  396.     char str1[50];
  397.     char str2[50];
  398.     printf("str1=");
  399.     scanf("%s",str1);
  400.     //fgets(str1,32,stdin);
  401.     printf("str2=");
  402.     scanf("%s",str2);
  403.     //fgets(str2,32,stdin);
  404.     link(str1,str2);
  405.     return 0;
  406. }

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

上一篇:指针基础 _0214

下一篇:数组 _0211

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