C语言 经典习题案例

1、对int a[]={25,24,12,76,98,101,50,28}数组进行排序。

		int i=0,j=0,temp=0,a[]={25,24,12,76,98,101,50,28};
		while(i<sizeof(a)/4){
			for(j=0;j<sizeof(a)/4-i-1;){
				if(a[j]<a[j+1]||a[j]==a[j+1]){
					j++;
				}else if(a[j]>a[j+1]){
					temp=a[j];
					a[j]=a[j+1];
					a[j+1]=temp;
					j++;
				}
			}
			i++;
		}
		for(i=0;i<sizeof(a)/4;i++){
			printf("%d - ",a[i]);
		}

结果:882f4a34922cc3c54f207befc78a0dbebc4.jpg

 

2、从键盘输入若干个整数,其值在0~4的范围内,用-1作结束标志,统计每个整数的个数。

		int number,i;
		number=i=0;
		while(number!=-1){
			scanf("%d",&number);
			i++;
		}
		printf("\n本次输入 %d 个数\n\n",i-1);

结果:7326a2efebd3618f2b865777aabfb989c35.jpg

 

3、定义一个含有30个整型元素的的数组,按顺序分别赋予从2开始打的偶数,
然后按顺序每5个数求出一个平均数,放在另一个数组中。

		int a[]={2,4,6,8,10,12,14,16,18,20,22,24,26,28,30};
		int b[(sizeof(a)/4)/5]={0},i=0,j=0,sum=0;
		for(i=0;i<sizeof(a)/4;i++){
			sum+=a[i];
			if((i+1)%5==0){
				b[j]=(sum/5);
				printf("%d\n",b[j]);
				j++;
				sum=0;
			}
		}

结果:f8ff6dfb5ca27ada06896d4308ca2282ff4.jpg

 

4、若定义有,int a[][]={1,2,3},{4,5,6};现要将a的行和列的元素互换
 后存到另一个二维数组b里,最后输出a、b的各个元素。

		int i,j,a[2][3]={{1,2,3},{4,5,6}},b[3][2];
		for(i=0;i<2;i++){
			for(j=0;j<3;j++){
				b[j][i]=a[i][j];
			}
		}

		for(i=0;i<2;i++){
			for(j=0;j<3;j++){
				printf("-%d-",a[i][j]);
			}
			printf("\n\n");
		}
		printf("\n\n");

		for(i=0;i<3;i++){
			for(j=0;j<2;j++){
				printf("/%d\\",b[i][j]);
			}
			printf("\n\n");
		}
		printf("\n\n");

结果:ee3cb04d462cd62e29622066973f86052ee.jpg

 

5、通过循环按行顺序为一个5x5的二维数组a赋值1到25的自然数,然后输出该数组的左下半三角。

		int a[5][5],i,j,temporary;a[5][5]=i=j=0;temporary=1;
		for(i=0;i<5;i++){
			for(j=0;j<5;j++){
				a[i][j]=temporary++;
			}
		}
		temporary=0;
		for(i=0;i<5;i++){
			for(j=0;j<=temporary;j++){
				printf("-%d-",a[i][j]);
			}
			printf("\n\n");
			temporary++;
		}

结果:48f485ea5b6fe71c08958fbccd3cd037275.jpg

 

6、数组a包括10个整数,把a中所有的后项除以前项之商取整后存入数组b中,
并按每行3个元素的格式打印出数组b。(由于第一个数没有前项故从第二个开始)

		int a[10]={12,225,717,9419,29137,39465,79955,339656,922225,5341212};
		int b[9]={0},i=0,j=0;

		for(i=1;i<=9;i++){
			b[j]=a[i]/a[i-1];
			if(j%3==0){printf("\n");}
			printf("   %d",b[j]);
			j++;
		}
		printf("\n\n");

结果:d47e1a53edebca727e443fc4aa434e16b1f.jpg

 

7、从键盘输入一个字符串a,并在字符串中的最大元素后边插入另外输入的b字符串。

		char b[]={"CHAOJISHUAI"},a[10000]={'0'},max=a[0];
		int i=0,j=0,k=0;
		printf("输入字符串a:");
		gets(a);
		while(a[i]){
			if(max<a[i]){
				max=a[i];
				j=i;
			}
			i++;
		}

		if(a[j]==max){//验证最大元素与下标的匹配是否正确
			for(i=j+1;i<=(strlen(b)/1);i++){//从最大元素后一个开始需要后移元素的个数等于数组b的个数
				for(k=strlen(a);k>j;k--){//从数组a的最后一个元素开始往前移直到最大元素止每次后移需要挪动的元素总个数
					a[k+1]=a[k];//把前面一个赋值给后面一个
				}
				a[i]=' ';//腾出来的空间暂用空格代替
			}
		}
		puts(a);

		if(a[j]==max){
			k=0;
			for(i=j+1;i<(sizeof(b)/1);i++){//从a数组最大元素后开始插入b数组中从第一个元素开始的数
				a[i]=b[k];
				k++;
			}
		}
		puts(a);
		printf("\n\n");

结果:5cf0ed3214fc47c69c3a9d7d492ec8f70d4.jpg

 

/*---------------------

作者:东方神祇 
本文链接:https://my.oschina.net/yangmufa/blog/write/3081616

版权声明:
      本文为博主原创文章,转载请附上源文链接!

 如果觉得我的论文对您有用,您的请评论点赞与
 合理优质的转发也将是鼓励支持我继续创作的动力!
---------------------*/

转载于:https://my.oschina.net/yangmufa/blog/3081616

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值