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]);
		}

结果:

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

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

结果:

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;
			}
		}

结果:

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");

结果:

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++;
		}

结果:

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");

结果:

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");

结果:

/*-------------------反爬声明o()咻咻咻--------------------

作者:**杨木发** 版权声明: 本文为博主倾情原创文章,整篇转载请附上源文链接!

如果觉得本文对你有所收获,你的请评论点赞 与

合理优质的转发也将是鼓励支持我继续创作的动力,

更多精彩可百度搜索 杨木发 或:

个人网站:杨木发的自留地 - 此地无银三百两

GitHub:https://github.com/yangmufa

坚持创作 善于总结 开源共享 高质进步。 -------------------反爬声明o()咻咻咻--------------------*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员菜鲲

你的鼓励将是我创作的最大动力o

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值