C程序举例:利用数组

1,对10个数组元素依次赋值,逆序输出。

#include "stdio.h"
int main()
{
	int i,a[10];
	printf("输入:"); 
	for(i=0;i<10;i++)
	scanf("%d",&a[i]);
	printf("\n");
	printf("输出:"); 
	for(i=9;i>=0;i--)
	printf("%2d",a[i]);
	return 0;
	} 

运行结果:

输入:1 2 3 4 5 9 8 5 2 4
输出: 4 2 5 8 9 5 4 3 2 1

2,利用数组输出一个斐波那契数列

#include "stdio.h"
int main()
{
	int i,a[20]={1,1};
	for(i=2;i<20;i++)
	a[i]=a[i-1]+a[i-2];
	for(i=0;i<20;i++)
	{
		if(i%5==0)printf("\n");
		printf("%6d",a[i]);
	 } 
	return 0;
}

运行结果:


     1     1     2     3     5
     8    13    21    34    55
    89   144   233   377   610
   987  1597  2584  4181  6765

3,冒泡排序,使输入的十个数从小到大正序输出

#include"stdio.h"
 int main()
 {
 	int a[10];
 	int i,j,t;
 	for(i=0;i<10;i++)
 	{
 		scanf("%d",&a[i]);
	}
	for(j=0;j<9;j++)
	for(i=0;i<9-j;i++)
	{
		if(a[i>a[i+1]])
		{
		t=a[i];
		a[i]=a[i+1];
		a[i+1]=t;
	    }
	} 
	for(i=0;i<10;i++)
	printf("%d ",a[i]);
	return 0;
 }

运行结果:

9 8 7 6 5 4 3 2 1 0
0 1 2 3 4 5 6 7 8 9

4,二维数组:有一个3*4的矩阵,要求编程求出其中值最大的那个元素的值,以及其所在行号和列号。

#include"stdio.h"
int main()
{
	int i,j,r,c,max;
	int a[3][4]={1,2,3,4,8,9,10,11,12,5,6,7};
	max=a[0][0];
	for(i=0;i<3;i++)
	for(j=0;j<4;j++)
	if(a[i][j]>max)
	{
		max=a[i][j];
		r=i;
		c=j;
	}
	printf("最大为%d,行号:%d,列号:%d",max,r,c);
	return 0;
 } 
最大为12,行号:2,列号:0

//因为这个输出结果我调了很久,因为下意识认为应该是三行零列才对,好久才反应过来,我定义的这个二位数组a[3][4]没有‘第三行’,也没有‘第四列’。

5,字符数组:输出一个已知的字符串。

#include "stdio.h"
int main()
{
	char c[15]={'i',' ','a','m',' ','a',' ','s','t','u','d','e','n','t'};
	int i;
	for(i=0;i<15;i++)
	{
		printf("%c",c[i]);
	}
	return 0;
}

运行结果:

i am a student

6,输入一行字符,统计其中有多少个单词,单词之间用空格隔开

#include"stdio.h"
int main()
{
	char string[81];
	int i,num=0,word=0;
    char c;
    gets(string);
    for(i=0;(c=string[i])!='\0';i++)
    if (c==' ')word =0;
    else if(word ==0)
    {
    	word =1;
    	num++;
	}
	printf("共%d个单词",num);
	return 0; 
 } 

运行结果:

i am a student.
共4个单词

7,用筛选法求100内的素数

#include"stdio.h"
#include"math.h"
int main()
{
	int i,j,n=0,a[101];
	for(i=1;i<=100;i++)
	a[i]=i;
	a[1]=0;
	for(i=2;i<sqrt(100);i++)
	{
		for(j=i+1;j<=100;j++)
		{
			if(a[j]!=0 && a[i]!=0)
			{
				if(a[j]%a[i]==0)
				a[j]=0;
			}
		}
	}
	for(i=2;i<101;i++)
	{
		if(a[i]!=0)
		{
		printf("%5d",a[i]);
		n++;
	    } 
		if(n==5)
		{ 
	    printf("\n");
	    n=0; 
	    }
	} 
	return 0; 
 } 

运行结果

   2    3    5    7   11
   13   17   19   23   29
   31   37   41   43   47
   53   59   61   67   71
   73   79   83   89   97

8,用选择法对十个整数排序

#include"stdio.h"
int main()
{
	int i,j,min,temp,a[11];
	printf("enter data:\n");
	for(i=1;i<11;i++) //这里只是想用a[1]到a[10],不是不知道有a[0]。
	{
		printf("a[%d]=",i);
		scanf("%d",&a[i]);
	}
	printf("the orginal numbers:\n") ;
	for(i=1;i<11;i++)
	{
		printf("%5d",a[i]);
	}
	for(i=1;i<10;i++)
	{
		min=i;
		for(j=i+1;j<11;j++)
		{
			if(a[min]>a[j])
			min=j;
		 } 
		temp=a[i];
		a[i]=a[min];
		a[min]=temp;
	}
	printf("\n"); 
	printf("the sorted numbers:\n");
	for(i=1;i<11;i++)
	printf("%5d",a[i]);
	return 0;
}

运行结果:

enter data:
a[1]=12
a[2]=15
a[3]=14
a[4]=87
a[5]=98
a[6]=54
a[7]=653
a[8]=32
a[9]=21
a[10]=10
the orginal numbers:
   12   15   14   87   98   54  653   32   21   10
the sorted numbers:
   10   12   14   15   21   32   54   87   98  653

9,有一个已经排好序的数组,要求输入一个数后,按原来的排序的规律将他插入数组

#include"stdio.h"
int main()
{
	int a[11]={1,4,6,8,9,12,13,28,46,96};
	int temp1,temp2,number,end,i,j;
	printf("array a:\n");
	for(i=0;i<10;i++)
	printf("%5d",a[i]);
	printf("\n");
	printf("insert number:\n");
	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;
			}
		}
	}
	printf("now array a:\n");
	for(i=0;i<11;i++)
	{
		printf("%5d",a[i]);	
	}
	return 0;
}

运行结果:

array a:
    1    4    6    8    9   12   13   28   46   96
insert number:
16
now array a:
    1    4    6    8    9   12   13   16   28   46   96

10,将一个数组中的值按逆序重新存放。

#include"stdio.h"
 #define N 5//改变N的值就可以改变数组中可以逆序的数
 int main()
 {
 	int a[N],i,temp;
 	printf("enter array a:\n");
 	for(i=0;i<N;i++)
 	scanf("%d",&a[i]);
 	printf("array a:\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");
	 printf("now array a:\n");
	 for(i=0;i<N;i++)
	 {
	 	printf("%4d",a[i]);
	 }
	 return 0;
  } 
enter array a:
1 2 3 4 5
array a:
   1   2   3   4   5
now array a:
   5   4   3   2   1

11,输出直角排列的杨辉三角形

#include"stdio.h"
#define N 10//改变定义的N值可以改变输出的杨辉三角的行数
int main()
{
	int i,j,a[N][N];
	for(i=0;i<N;i++)
	{
		a[i][i]=1;
		a[i][0]=1;
	}
	for(i=2;i<N;i++)
	{
		for(j=1;j<=i-1;j++)
		a[i][j]=a[i-1][j-1]+a[i-1][j];
	}
	for(i=0;i<N;i++)
	{ 
	    for(j=0;j<=i;j++)
	    printf("%4d",a[i][j]);
		printf("\n"); 
	}
	return 0;
}

运行结果:

   1
   1   1
   1   2   1
   1   3   3   1
   1   4   6   4   1
   1   5  10  10   5   1
   1   6  15  20  15   6   1
   1   7  21  35  35  21   7   1
   1   8  28  56  70  56  28   8   1
   1   9  36  84 126 126  84  36   9   1

12,将字符数组s2中的全部字符复制到字符数组s1中。不用strcopy函数。复制时,‘/0’后面的字符不用复制。

#include"stdio.h"
#include"string.h" 
int main()
{
	char s1[80],s2[80];
	int i;
	printf("input s2:");
	scanf("%s",s2);
	for(i=0;i<=strlen(s2);i++)
	s1[i]=s2[i];
	printf("s1:%s\n",s1);
	return 0;
}
input s2:ceshi
s1:ceshi
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值