c语言:数组编程题(掌握数组!!!)

2023-12-18 15:04:07

第一题:从10个数中找出最大值和最小值。

#include <stdio.h>
#include <stdlib.h>
#define N 10
int main()
{
	int i,max,min,a[N];
	printf("\nplease input ten number:\n");
	for(i=0;i<N;i++)
	scanf("%d",&a[i]);
	max=min=a[0];
	for(i=1;i<N;i++)
	{
		if(max<a[i])
		  max=a[i];
		if(min>a[i])
		  min=a[i];
	}
	printf("max=%d\n",max);
	printf("min=%d\n",min);
	return 0;
}

第二题:给定一个包含10个有序整数的数组{6,13,17,29,33,48,59,61,73,98},折半查找x是否在数

组中,若找到,输出其数组下标,若找不到,输出“No Found”。

#include <stdio.h>
#include <stdlib.h>
#define N 10
int main()
{
	int i,a[N]={6,13,17,29,33,48,59,61,73,98};
	int low=0,mid,high=N-1,x;      /*定义三个整型变量low、mid、high,分别表示数组的最小下 
                                     标、中间下标和最大下标*/
	printf("x=");
	scanf("%d",&x);
	while(low<=high)               //4.进入while循环,当low<=high时执行循环体。
	{
		mid=(low+high)/2;           //计算mid=(low+high)/2,即取数组中间位置的下标。
		if(x==a[mid])               //如果x等于a[mid],则输出查找结果并退出循环。
		{
			printf("\na[%d]=%d\n",mid,x);
			break;
		}
		else if(x>a[mid])       //如果x大于a[mid],则元素在mid的右侧,将low更新为mid+1。
		    low=mid+1;
		else high=mid-1;      //8.如果x小于a[mid],则元素在mid的左侧,将high更新为mid-1。
	}
	if(low>high)                //9.如果循环结束后仍未找到元素,则输出未找到的提示信息。
	printf("\nNo found\n");
	return 0;
}

第三题:随机生成10个0至100之间的整数,输出这10个随机整数。然后对这些整数从小到大升序

排列后输出。排序算法不限。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 10
int main()
{
	int i,j,t,a[N];
	unsigned int x;
	x=(unsigned int)time(NULL);
	srand(x);
	for(i=0;i<N;i++)
	    a[i]=rand()%100;       //随机产生10个数
	printf("\nBefore Sort");
	for(i=0;i<N;i++)
	printf("%4d",a[i]);       //输出随机产生的数10个数
	for(i=0;i<N-1;i++)        //直接交换排序
	{
		for(j=i+1;j<N;j++)
		if(a[i]>a[j])
		{
			t=a[i];
			a[i]=a[j];
			a[j]=t;
		}
	}
	printf("\nAfter Sort:");
	for(i=0;i<N;i++)          //将排列好的数输出
	printf("%4d",a[i]);
	return 0;
}

第四题:随机生成10个0至100之间的整数,输出这10个随机整数。然后对这些整数从小到大升序

排列后输出。排序算法不限。

#include <stdio.h>
#include <stdlib.h>
#include<time.h>
#define N 15
int main()
{
	int i,j,t,a[N];
	int b[N],c[N],nb=0;
	unsigned int x;
	x=(unsigned int)time(NULL);
	srand(x);             //随机生成数
	for(i=0;i<N;i++)
	    a[i]=rand()%51+10;    //确定a有15个数
	printf("\na:");
	for(i=0;i<N;i++)
	printf("%4d",a[i]);     //输出数组a的值
	for(i=0;i<N;i++)
	{
	    if(a[i]%2)          //确定是否是奇数值
	    {
	    	c[nb]=b[nb]=a[i];   //[nb]是将a[]里面的奇数的值,给了[nb]之中
	    	nb++;
		} 
    }
	printf("\nb:");
	for(i=0;i<nb;i++)
	printf("%4d",b[i]);      //输出数组b的值
	for(i=0;i<nb-1;i++)      //nb指的是在a[]中有几个奇数值,冒泡法
	{
		for(j=0;j<nb-1-i;j++)
		if(c[j]>c[j+1])
		{
		t=c[j];
		c[j]=c[j+1];
		c[j+1]=t;
		}
	}
	printf("\nc:");
	for(i=0;i<nb;i++)
	printf("%4d",c[i]);    //输出数组c的值
	return 0;
}





第五题:有17个人围成一圈(编号为0~16),从第0号的人开始从1报数,凡报到3的倍数的人离

开圈子,然后再数下去,直到最后只剩一个人为止。编程求此人原来的编号是多少号。

#include <stdio.h>
int main()
{
	int i,k=0,count=0,a[17];
	for(i=0;i<17;i++)
	    a[i]=i+1;      //从第0号的人开始从1报数
	for(i=0;i<17;i++)
	{
		if(a[i])
		{
			k++;
		if(k==3)
			{a[i]=0;
			k=0;
			count++;
			}
	    }
		if(count==16)break;
		if(i==16)
		   i=-1;
		
	}
		for(i=0;i<17;i++)
		if(a[i])
		printf("\n%d",i);
		return 0;	    
}


第六题:编写一个程序,其功能是自动统计从键盘输入的字符串中非元音字母的个数并将这些非元

音字母输出。例如,输入Hello,everyone!,则输出Hll,vryn! count=9

#include <stdio.h>
int main()
{
	char a[100];
	int i,count=0;
	gets(a);           //输入Hello,everyone!
	for(i=0;a[i];i++)
	switch(a[i])       //对字符进行筛选元音字母不要
	{
		case 'a':
		case 'e':
		case 'i':
		case 'o':
		case 'u':
		case 'A':
		case 'E':
		case 'I':
		case 'O':
		case 'U':break;
		default:putchar(a[i]);
		count++;
	}
	printf("\ncount=%d",count);
	return 0;
}

第七题:从键盘输入一个包含多个单词的字符串,将单词首字母转换为大写后输出。

#include <stdio.h>
int main()
{
	int i,flag=1;
	char a[100];
	gets(a);
	for(i=0;a[i];i++)
	{
		if(a[i]==3)
		  flag=1;
		if(flag&&a[i]!=32)
		{
			if(a[i]>='a'&&a[i]<='z')
			a[i]-=32;
			flag=0;
		}
	}
	puts(a);
    return 0;
}

文章来源:https://blog.csdn.net/ting_liang/article/details/135048462
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。