天天看點

C語言經典100例(三)

【程式38】

題目:求一個3*3矩陣對角線元素之和

程式分析:利用雙重for循環控制輸入二維數組,再将a[i][i]累加後輸出。

程式源代碼:

main()
{
float a[3][3],sum=0;
int i,j;
printf("please input rectangle element:\n");
for(i=0;i<3;i++)
  for(j=0;j<3;j++)
  scanf("%f",&a[i][j]);
for(i=0;i<3;i++)
  sum=sum+a[i][i];
printf("duijiaoxian he is %6.2f",sum);
}      

【程式39】

題目:有一個已經排好序的數組。現輸入一個數,要求按原來的規律将它插入數組中。

程式分析:首先判斷此數是否大于最後一個數,然後再考慮插入中間的數的情況,插入後此元素之後的數,依次後移一個位置。

main()
{
int a[11]={1,4,6,9,13,16,19,28,40,100};
int temp1,temp2,number,end,i,j;
printf("original array is:\n");
for(i=0;i<10;i++)
  printf("%5d",a[i]);
printf("\n");
printf("insert a new number:");
scanf("%d",&number);
end=a[9];
if(number>end)
  a[10]=number;
else
  {for(i=0;i<10;i++)
   { if(a[i]>number)
    {temp1=a[i];
     a[i]=number;
    for(j=i+1;j<11;j++)
    {temp2=a[j];
     a[j]=temp1;
     temp1=temp2;
    }
    break;
    }
   }
}
for(i=0;i<11;i++)
  printf("%6d",a[i]);
}      

【程式40】

題目:将一個數組逆序輸出。

程式分析:用第一個與最後一個交換。

#define N 5
main()
{ int a[N]={9,6,5,4,1},i,temp;
  printf("\n original array:\n");
  for(i=0;i<N;i++)
  printf("%4d",a[i]);
  for(i=0;i<N/2;i++)
  {temp=a[i];
   a[i]=a[N-i-1];
   a[N-i-1]=temp;
  }
printf("\n sorted array:\n");
for(i=0;i<N;i++)
  printf("%4d",a[i]);
}      

【程式41】

題目:學習static定義靜态變量的用法

程式分析:

#include "stdio.h"
varfunc()
{
int var=0;
static int static_var=0;
printf("\40:var equal %d \n",var);
printf("\40:static var equal %d \n",static_var);
printf("\n");
var++;
static_var++;
}
void main()
{int i;
  for(i=0;i<3;i++)
   varfunc();
}      

【程式42】

題目:學習使用auto定義變量的用法

#include "stdio.h"
main()
{int i,num;
num=2;
  for (i=0;i<3;i++)
  { printf("\40: The num equal %d \n",num);
   num++;
   {
   auto int num=1;
   printf("\40: The internal block num equal %d \n",num);
   num++;
   }
  }
}      

【程式43】

題目:學習使用static的另一用法。

#include "stdio.h"
main()
{
int i,num;
num=2;
for(i=0;i<3;i++)
{
printf("\40: The num equal %d \n",num);
num++;
{
static int num=1;
printf("\40:The internal block num equal %d\n",num);
num++;
}
}
}      

【程式44】

題目:學習使用external的用法。

#include "stdio.h"
int a,b,c;
void add()
{ int a;
a=3;
c=a+b;
}
void main()
{ a=b=4;
add();
printf("The value of c is equal to %d\n",c);
}      

【程式45】

題目:學習使用register定義變量的方法。

void main()
{
register int i;
int tmp=0;
for(i=1;i<=100;i++)
tmp+=i;
printf("The sum is %d\n",tmp);
}      

【程式46】

題目:宏#define指令練習(1)

#include "stdio.h"
#define TRUE 1
#define FALSE 0
#define SQ(x) (x)*(x)
void main()
{
int num;
int again=1;
printf("\40: Program will stop if input value less than 50.\n");
while(again)
{
printf("\40:Please input number==>");
scanf("%d",&num);
printf("\40:The square for this number is %d \n",SQ(num));
if(num>=50)
  again=TRUE;
else
  again=FALSE;
}
}      

【程式47】

題目:宏#define指令練習(2)

#include "stdio.h"
#define exchange(a,b) { \ /*宏定義中允許包含兩道衣裳指令的情形,此時必須在最右邊加上"\"*/
             int t;\
             t=a;\
             a=b;\
             b=t;\
            }
void main(void)
{
int x=10;
int y=20;
printf("x=%d; y=%d\n",x,y);
exchange(x,y);
printf("x=%d; y=%d\n",x,y);
}      

【程式48】

題目:宏#define指令練習(3)

#define LAG >
#define SMA <
#define EQ ==
#include "stdio.h"
void main()
{ int i=10;
int j=20;
if(i LAG j)
printf("\40: %d larger than %d \n",i,j);
else if(i EQ j)
printf("\40: %d equal to %d \n",i,j);
else if(i SMA j)
printf("\40:%d smaller than %d \n",i,j);
else
printf("\40: No such value.\n");
}      

繼續閱讀