编程论坛
400万+工程师在用
华为|鸿蒙开发者日
直播报名
400万+工程师在用
华为|鸿蒙开发者日
直播报名

电子发烧友网工程师

17年用户 16436经验值
擅长:可编程逻辑 MEMS/传感技术 测量仪表 模拟技术 控制/MCU RF/无线
私信 关注

经典c程序100例(41-70)

2008-10-14 13:09

<p><font face="Verdana">经典c程序100例(41-60)<br/></font></p>
<p><font face="Verdana"><strong>程序41】<br/>题目:学习static定义静态变量的用法 </strong>  <br/>1.程序分析:<br/>2.程序源代码:<br/>#include "stdio.h"<br/>#include "conio.h"<br/>vaRFunc()<br/>{<br/>int var=0;<br/>static int static_var=0;<br/>printf("\40:var equal %d \n",var);<br/>printf("\40:static var equal %d \n",static_var);<br/>printf("\n");<br/>var++;<br/>static_var++;<br/>}<br/>void main()<br/>{<br/>int i;<br/>for(i=0;i&lt;3;i++)<br/>varfunc();<br/>getch();<br/>}<br/><span class="STYLE13">==============================================================<br/><strong>【程序42】</strong></span><strong> <br/>题目:学习使用auto定义变量的用法</strong><br/>1.程序分析:      <br/>2.程序源代码:<br/>#include "stdio.h"<br/>#include "conio.h"<br/>main()<br/>{<br/>int i,num;<br/>num=2;<br/>for(i=0;i&lt;3;i++)<br/>{<br/>printf("\40: The num equal %d \n",num);<br/>num++;<br/>{<br/>auto int num=1;<br/>printf("\40: The internal block num equal %d \n",num);<br/>num++;<br/>}<br/>}<br/>getch();<br/>}<br/><span class="STYLE13">==============================================================<br/><strong>【程序43】</strong></span><br/><strong>题目:学习使用static的另一用法。</strong>   <br/>1.程序分析:<br/>2.程序源代码:<br/>#include "stdio.h"<br/>#include "conio.h"<br/>main()<br/>{<br/>int i,num;<br/>num=2;<br/>for(i=0;i&lt;3;i++)<br/>{<br/>printf("\40: The num equal %d \n",num);<br/>num++;<br/>{<br/>static int num=1;<br/>printf("\40:The internal block num equal %d\n",num);<br/>num++;<br/>}<br/>}<br/>getch();<br/>}<br/><span class="STYLE13">==============================================================<br/><strong>【程序44】</strong></span><br/><strong>题目:学习使用external的用法。</strong><br/>1.程序分析:<br/>2.程序源代码:<br/>#include "stdio.h"<br/>#include "conio.h"<br/>int a,b,c;<br/>void add()<br/>{<br/>int a;<br/>a=3;<br/>c=a+b;<br/>}<br/>void main()<br/>{<br/>a=b=4;<br/>add();<br/>printf("The value of c is equal to %d\n",c);<br/>getch();<br/>}<br/><span class="STYLE13">==============================================================<br/><strong>【程序45】</strong></span><br/><strong>题目:学习使用register定义变量的方法。</strong><br/>1.程序分析:<br/>2.程序源代码:<br/>#include "stdio.h"<br/>#include "conio.h"<br/>void main()<br/>{<br/>register int i;<br/>int tmp=0;<br/>for(i=1;i&lt;=100;i++)<br/>tmp+=i;<br/>printf("The sum is %d\n",tmp);<br/>getch();<br/>}<br/></font></p><font face="Verdana">
<p class="STYLE23"><strong><span class="STYLE13">【程序46】</span><br/>题目:宏#define命令练习(1)  </strong> <br/>1.程序分析:<br/>2.程序源代码:<br/>#include "stdio.h"<br/>#include "conio.h"<br/>#define TRUE 1<br/>#define FALSE 0<br/>#define SQ(x) (x)*(x)<br/>void main()<br/>{<br/>int num;<br/>int again=1;<br/>printf("\40: Program will stop IF input value less than 50.\n");<br/>while(again)<br/>{<br/>printf("\40:Please input number==&gt;");<br/>scanf("%d",&amp;num);<br/>printf("\40:The square for this number is %d \n",SQ(num));<br/>if(num&gt;=50)<br/>again=TRUE;<br/>else<br/>again=FALSE;<br/>}<br/>getch();<br/>}<br/><span class="STYLE13">==============================================================<br/><strong>【程序47】</strong></span><br/><strong>题目:宏#define命令练习(2)</strong><br/>1.程序分析:            <br/>2.程序源代码:<br/>#include "stdio.h"<br/>#include "conio.h"<br/>/*宏定义中允许包含两道衣裳命令的情形,此时必须在最右边加上"\"*/<br/>#define exchange(a,b) { \<br/>int t;\<br/>t=a;\<br/>a=b;\<br/>b=t;\<br/>}<br/>void main(void)<br/>{<br/>int x=10;<br/>int y=20;<br/>printf("x=%d; y=%d\n",x,y);<br/>exchange(x,y);<br/>printf("x=%d; y=%d\n",x,y);<br/>getch();<br/>}<br/><span class="STYLE13">==============================================================<br/><strong>【程序48】</strong></span><br/><strong>题目:宏#define命令练习(3) </strong>  <br/>1.程序分析:<br/>2.程序源代码:<br/>#define LAG &gt;<br/>#define SMA &lt;<br/>#define EQ ==<br/>#include "stdio.h"<br/>#include "conio.h"<br/>void main()<br/>{<br/>int i=10;<br/>int j=20;<br/>if(i LAG j)<br/>printf("\40: %d larger than %d \n",i,j);<br/>else if(i EQ j)<br/>printf("\40: %d equal to %d \n",i,j);<br/>else if(i SMA j)<br/>printf("\40:%d smaller than %d \n",i,j);<br/>else<br/>printf("\40: No such value.\n");<br/>getch();<br/>}<br/><strong><span class="STYLE13">==============================================================<br/>【程序49】</span><br/>题目:#if #ifdef和#ifndef的综合应用。</strong><br/>1. 程序分析: <br/>2.程序源代码:<br/>#include "stdio.h"<br/>#include "conio.h"<br/>#define MAX<br/>#define MAXIMUM(x,y) (x&gt;y)?x:y<br/>#define MINIMUM(x,y) (x&gt;y)?y:x<br/>void main()<br/>{<br/>int a=10,b=20;<br/>#ifdef MAX<br/>printf("\40: The larger one is %d\n",MAXIMUM(a,b));<br/>#else<br/>printf("\40: The lower one is %d\n",MINIMUM(a,b));<br/>#endif<br/>#ifndef MIN<br/>printf("\40: The lower one is %d\n",MINIMUM(a,b));<br/>#else<br/>printf("\40: The larger one is %d\n",MAXIMUM(a,b));<br/>#endif<br/>#undef MAX<br/>#ifdef MAX<br/>printf("\40: The larger one is %d\n",MAXIMUM(a,b));<br/>#else<br/>printf("\40: The lower one is %d\n",MINIMUM(a,b));<br/>#endif<br/>#define MIN<br/>#ifndef MIN<br/>printf("\40: The lower one is %d\n",MINIMUM(a,b));<br/>#else<br/>printf("\40: The larger one is %d\n",MAXIMUM(a,b));<br/>#endif<br/>getch();<br/>}<br/><span class="STYLE13">==============================================================<br/><strong>【程序50】</strong></span><br/><strong>题目:#include 的应用练习  </strong> <br/>1.程序分析:<br/>2.程序源代码:<br/>test.h 文件如下:<br/>#define LAG &gt;<br/>#define SMA &lt;<br/>#define EQ ==</p>
<p class="STYLE23">主文件如下:<br/>#include "test.h" /*一个新文件50.c,包含test.h*/<br/>#include "stdio.h"<br/>#include "conio.h"<br/>void main()<br/>{<br/>int i=10;<br/>int j=20;<br/>if(i LAG j)<br/>printf("\40: %d larger than %d \n",i,j);<br/>else if(i EQ j)<br/>printf("\40: %d equal to %d \n",i,j);<br/>else if(i SMA j)<br/>printf("\40:%d smaller than %d \n",i,j);<br/>else<br/>printf("\40: No such value.\n");<br/>getch();<br/>}</p>
<p><br/>&nbsp;</p>
<p><span class="STYLE23"><strong><span class="STYLE13">【程序51】</span><br/>题目:学习使用按位与 &amp; 。</strong>   <br/>1.程序分析:0&amp;0=0; 0&amp;1=0; 1&amp;0=0; 1&amp;1=1<br/>2.程序源代码:<br/>#include "stdio.h"<br/>main()<br/>{<br/>int a,b;<br/>a=077;<br/>b=a&amp;3;<br/>printf("\40: The a &amp; b(decimal) is %d \n",b);<br/>b&amp;=7;<br/>printf("\40: The a &amp; b(decimal) is %d \n",b);<br/>}<br/><span class="STYLE13">==============================================================<br/><strong>【程序52】</strong></span><br/><strong>题目:学习使用按位或 | </strong>。<br/>1.程序分析:0|0=0; 0|1=1; 1|0=1; 1|1=1            <br/>2.程序源代码:<br/>#include "stdio.h"<br/>main()<br/>{<br/>int a,b;<br/>a=077;<br/>b=a|3;<br/>printf("\40: The a &amp; b(decimal) is %d \n",b);<br/>b|=7;<br/>printf("\40: The a &amp; b(decimal) is %d \n",b);<br/>}<br/><span class="STYLE13">==============================================================<br/><strong>【程序53】</strong></span><br/><strong>题目:学习使用按位异或 ^ 。 </strong>  <br/>1.程序分析:0^0=0; 0^1=1; 1^0=1; 1^1=0<br/>2.程序源代码:<br/>#include "stdio.h"<br/>main()<br/>{<br/>int a,b;<br/>a=077;<br/>b=a^3;<br/>printf("\40: The a &amp; b(decimal) is %d \n",b);<br/>b^=7;<br/>printf("\40: The a &amp; b(decimal) is %d \n",b);<br/>}<br/><span class="STYLE13">==============================================================<br/><strong>【程序54】</strong></span><br/><strong>题目:取一个整数a从右端开始的4~7位。<br/></strong>程序分析:可以这样考虑: <br/>(1)先使a右移4位。<br/>(2)设置一个低4位全为1,其余全为0的数。可用~(~0&lt;&lt;4)<br/>(3)将上面二者进行&amp;运算。<br/>2.程序源代码:<br/>main()<br/>{<br/>unsigned a,b,c,d;<br/>scanf("%o",&amp;a);<br/>b=a&gt;&gt;4;<br/>c=~(~0&lt;&lt;4);<br/>d=b&amp;c;<br/>printf("%o\n%o\n",a,d);<br/>}<br/><span class="STYLE13">==============================================================<br/><strong>【程序55】</strong></span><br/><strong>题目:学习使用按位取反~。</strong>   <br/>1.程序分析:~0=1; ~1=0;<br/>2.程序源代码:<br/>#include "stdio.h"<br/>main()<br/>{<br/>int a,b;<br/>a=234;<br/>b=~a;<br/>printf("\40: The a's 1 complement(decimal) is %d \n",b);<br/>a=~a;<br/>printf("\40: The a's 1 complement(hexidecimal) is %x \n",a);<br/>} </span><br/></p>
<p><span class="STYLE23"><strong><span class="STYLE13">【程序66】</span><br/>题目:输入3个数a,b,c,按大小顺序输出。 </strong>  <br/>1.程序分析:利用指针方法。<br/>2.程序源代码:<br/>/*pointer*/<br/>main()<br/>{<br/>int n1,n2,n3;<br/>int *pointer1,*pointer2,*pointer3;<br/>printf("please input 3 number:n1,n2,n3:");<br/>scanf("%d,%d,%d",&amp;n1,&amp;n2,&amp;n3);<br/>pointer1=&amp;n1;<br/>pointer2=&amp;n2;<br/>pointer3=&amp;n3;<br/>if(n1&gt;n2) swap(pointer1,pointer2);<br/>if(n1&gt;n3) swap(pointer1,pointer3);<br/>if(n2&gt;n3) swap(pointer2,pointer3);<br/>printf("the sorted numbers are:%d,%d,%d\n",n1,n2,n3);<br/>}<br/>swap(p1,p2)<br/>int *p1,*p2;<br/>{int p;<br/>p=*p1;*p1=*p2;*p2=p;<br/>}<br/><span class="STYLE13">==============================================================<br/><strong>【程序67】</strong></span><br/><strong>题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。</strong><br/>1.程序分析:谭浩强的书中答案有问题。      <br/>2.程序源代码:<br/>main()<br/>{<br/>int number[10];<br/>input(number);<br/>max_min(number);<br/>output(number);<br/>}<br/>input(number)<br/>int number[10];<br/>{int i;<br/>for(i=0;i&lt;9;i++)<br/>  scanf("%d,",&amp;number);<br/>  scanf("%d",&amp;number[9]);<br/>}<br/>max_min(array)<br/>int array[10];<br/>{int *max,*min,k,l;<br/>int *p,*arr_end;<br/>arr_end=array+10;<br/>max=min=array;<br/>for(p=array+1;p&lt;arr_end;p++)<br/>  if(*p&gt;*max) max=p;<br/>  else if(*p&lt;*min) min=p;<br/>  k=*max;<br/>  l=*min;<br/>  *p=array[0];array[0]=l;l=*p;<br/>  *p=array[9];array[9]=k;k=*p;<br/>  return;<br/>}<br/>output(array)<br/>int array[10];<br/>{ int *p;<br/>for(p=array;p&lt;array+9;p++)<br/>  printf("%d,",*p);<br/>printf("%d\n",array[9]);<br/>}<br/><span class="STYLE13">==============================================================<br/><strong>【程序68】</strong></span><br/><strong>题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数</strong><br/>1.程序分析:<br/>2.程序源代码:<br/>main()<br/>{<br/>int number[20],n,m,i;<br/>printf("the total numbers is:");<br/>scanf("%d",&amp;n);<br/>printf("back m:");<br/>scanf("%d",&amp;m);<br/>for(i=0;i&lt;n-1;i++)<br/>  scanf("%d,",&amp;number);<br/>scanf("%d",&amp;number[n-1]);<br/>move(number,n,m);<br/>for(i=0;i&lt;n-1;i++)<br/>  printf("%d,",number);<br/>printf("%d",number[n-1]);<br/>}<br/>move(array,n,m)<br/>int n,m,array[20];<br/>{<br/>int *p,array_end;<br/>array_end=*(array+n-1);<br/>for(p=array+n-1;p&gt;array;p--)<br/>  *p=*(p-1);<br/>  *array=array_end;<br/>  m--;<br/>  if(m&gt;0) move(array,n,m);<br/>}<br/><span class="STYLE13">==============================================================<br/><strong>【程序69】</strong></span><br/><strong>题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出<br/>    圈子,问最后留下的是原来第几号的那位。</strong><br/>1. 程序分析:<br/>2.程序源代码:<br/>#define nmax 50<br/>main()<br/>{<br/>int i,k,m,n,num[nmax],*p;<br/>printf("please input the total of numbers:");<br/>scanf("%d",&amp;n);<br/>p=num;<br/>for(i=0;i&lt;n;i++)<br/>  *(p+i)=i+1;<br/>  i=0;<br/>  k=0;<br/>  m=0;<br/>  while(m&lt;n-1)<br/>  {<br/>  if(*(p+i)!=0) k++;<br/>  if(k==3)<br/>  { *(p+i)=0;<br/>  k=0;<br/>  m++;<br/>  }<br/>i++;<br/>if(i==n) i=0;<br/>}<br/>while(*p==0) p++;<br/>printf("%d is left\n",*p);<br/>}<br/><span class="STYLE13">==============================================================<br/><strong>【程序70】</strong></span><br/><strong>题目:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。</strong>   <br/>1.程序分析:<br/>2.程序源代码:<br/>main()<br/>{<br/>int len;<br/>char *str[20];<br/>printf("please input a string:\n");<br/>scanf("%s",str);<br/>len=length(str);<br/>printf("the string has %d characters.",len);<br/>}<br/>length(p)<br/>char *p;<br/>{<br/>int n;<br/>n=0;<br/>while(*p!='\0')<br/>{<br/>  n++;<br/>  p++;<br/>}<br/>return n;<br/>}</span></p></font>

更多回帖

打开APP