分支、循环在数组的应用习题


一、循环结构、分支结构

例题
1.输出20以内所有不是3或5的倍数的数(一行输出7个)

#include<stdio.h>

int main()
{
	int num,n=0;
	
	for(num=0;num<=20;num++)
	{
		if(!(num%3==0||num%5==0))
		{
			printf(" %d ",num);
			n++;
			if(n%7==0)
			{
				printf("\n");
			}
		}
	}
}

2.计算10!

#include<stdio.h>

int main()
{
	int num;
	long result=1;
	for(num=1;num<=10;num++)
		result *=num;
	printf("%ld",result);
	
 } 

3.计算1+1/2+1/3+…+1/10

#include<stdio.h>
int main()
{
	int i;
	float sum=0;
	for(i=1;i<=10;i++){
		sum+=1.0/i;
	}
	printf("%f",sum);
 } 

4.计算1-3+5-7…99

#include <stdio.h>
int main()
{
	int fuhao=1,sum=0,num;
	for(num=1;num<=99;num+=2)
	{
		sum+=fuhao*num;
		fuhao*=-1;
	}
	printf("%d",sum);
 } 

5.计算1-1/3+1/5-1/7+…1/99

#include<stdio.h>
int main(){
	float i=1,j,k=1,sum=0;
	for(j=1;j<=99;j+=2){
		sum+=k*(i/j);
		k*=-1;
	}
	printf("%f",sum);
	return 0;
} 

二、一维数组的用途与使用

一维数组的定义
int a[10];
a,称数组名,中括号[]中的数字,成为下标,下标从0-9
a[0]:是数组第一个元素,是一个完整变量名

例:
输入10名学生成绩,计算出总分和平均分和最低分,最高分。

 #include<stdio.h>
 
 int main()
 {
 	int i;
 	int score[10],sum=0;
 	float aver;
 	int max=-1,min=101;
 	
 	for(i=1;i<=10;i++)
 	{
 		printf("请输入第%d名学生的成绩:",i);
 		scanf("%d",&score[i-1]);
	 }
	
	for(i=0;i<10;i++)
	{
		sum+=score[i];
		if(score[i]>max)
			max=score[i];
		if(score[i]<min)
			min=score[i];
	}
	
	aver = sum/10.0;
	
	printf("所有学生的成绩:");
	for(i=1;i<=10;i++)
	{
		printf("%d ",score[i-1]);
	}
	printf("总分%d,平均分%f,最高分%d,最低分%d",sum,aver,max,min);
 }

例:
将数字小到大排序

#include <stdio.h>

int main(){
	int score[6]={5,23,6,2,9,7};
	int i,t,j;
	
	printf("排序前:");
	for(i=0;i<6;i++){
		printf(" %d ",score[i]);
	}
	for(j=0;j<4;j++) {
		for(i=0;i<=6-2-j;i++){
			if(score[i]>score[i+1]){
				t=score[i];
				score[i]=score[i+1];
				score[i+1]=t;
		}
	}
}
	printf("\n排序后:");
	for(i=0;i<6;i++){
		printf(" %d ",score[i]);
	}
} 

一维数组的下标控制
1.数组的输出:正序输出、逆序输出

int main()
{
	int a[5]={12,3,25,7,19},i;
	
	for(i=0;i<5;i++)
		printf("%d ",a[i]);
		
	printf("\n");
	for(i=5-1;i>=0;i--)
		printf("%d ",a[i]);
 } 

2.查找数组中的一个数

#include<stdio.h>

int main()
{
	int a[5]={12,3,25,7,19},i;
	int finder;
	
	finder =12;
	
	for(i=0;i<5;i++)
	{
		if(a[i]==finder)
		break;
	}
	if(i<5)
		printf("%d是第%d个元素值 ",a[i],i+1);
	else
		printf("没有这个元素");
 } 

3.找最大值和最小值


#include<stdio.h>

int main()
{
	int a[5]={12,3,25,7,19},i;
	int max,maxaddr;
	int min,minaddr;
	
	min=a[0];
	minaddr=0;
	max=a[0];
	maxaddr=0;
	
	for(i=1;i<5;i++)
	{
		if(a[i]>max)
		{
			max=a[i];
			maxaddr=i;
		}
		else if(a[i]<min)
		{
			min=a[i];
			minaddr=i;
		}
	}
	printf("最大值:%d,是第%d个元素\n",max,maxaddr+1);
	printf("最小值:%d,是第%d个元素\n",min,minaddr+1);
 } 

4.交换位置

#include<stdio.h>

int main()
{
	int a[5]={12,3,25,7,19},i;
	int t;
	
	printf("原数组:");
	for(i=0;i<5;i++)
		printf("%d ",a[i]);
		
	for(i=0;i<5/2;i++)
	{
		t=a[i];
		a[i]=a[5-1-i];
		a[5-1-i]=t; 
	}
		
	printf("\n逆序存放后数组:");
	for(i=0;i<5;i++)
		printf("%d ",a[i]);
 } 

5.数组向后移动

#include<stdio.h>

int main()
{
	int a[8]={3,25,7,19,20,11,6},i;
	int t;
	
	printf("原数组:");
	for(i=0;i<8;i++)
		printf(" %d ",a[i]);
	
	for(i=8-1;i>=0;i--)
	{
		a[i+1]=a[i];
	}
	
	a[0]=0;
	
	printf("\n元素组向后移动后的数组:");
	for(i=0;i<8;i++)
		printf(" %d ",a[i]);
 } 

6.向前移动

#include<stdio.h>

int main()
{
	int a[8]={12,3,25,7,19,20,11,7},i;
	int t;
	
	printf("原数组:");
	for(i=0;i<8;i++)
		printf(" %d ",a[i]);
	
	for(i=1;i<8;i++)
	{
		a[i-1]=a[i];
	}
	
	printf("\n元素组向前移动后的数组:");
	for(i=0;i<8-1;i++)
		printf(" %d ",a[i]);
 } 

7.对10个数进行排序

#include<stdio.h>

int main(){
	int a[8]={12,3,25,7,19,20,11,6},i;
	int t,max,maxaddr,j;
	
	printf("原数组:");
	for(i=0;i<8;i++)
		printf(" %d ",a[i]);
	
	for(j=1;j<=8;j++)
{
	max=a[0];
	maxaddr=0;
	for(i=1;i<=8-j;i++)
	{
		if(a[i]>max)
		{
			max=a[i];
			maxaddr=i;
		}
	}	
	if(maxaddr !=i-1)
	{
		t =a[maxaddr];
		a[maxaddr]=a[i-1];
		a[i-1] =t;
	}
}
	printf("\n排序后数组:");
	for(i=0;i<8;i++)
		printf(" %d ",a[i]);
		
} 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值