https://www.cnblogs.com/zpcdbky/p/5857656.html
sizeof(arr)/sizeof(arr[0])
https://blog.csdn.net/daijinghui512/article/details/52104534
http://www.cocoachina.com/articles/53120
1.输入一个正整数n(假设n≤100),然后输入n个整数存入整型数组a并求出这n个整数的平均值。
#include <stdio.h>
int main()
{
int i,n,sum;
int a[n];
double ave;
sum=0;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
sum+=a[i];
}
ave=sum*1.0/n;
printf("%.2f",ave);
}
*2.插入排序——已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中。
https://blog.csdn.net/weixin_42859280/article/details/84996712
#include <stdio.h>
int main()
{
int a[10],i,n;
for(i=0;i<9;i++)
scanf("%d",&a[i]);
scanf("%d",&n);
i=8;
while(i>=0 && a[i]>n)
{
a[i+1]=a[i];
i--;
}
i++;
a[i]=n;
for(i=0;i<9;i++)
printf("%d", a[i]);
printf("%d",a[9]);
return 0;
}
3.将一个数组中的值按逆序重新存放。例如,原来顺序为1,2,3,4,5,6,7,8。要求改为8,7,6,5,4,3,2,1。注意:不只是按逆序输出,是逆序存放。
#include<stdio.h>
#define N 8
int main()
{
int t,i;
int a[N]={1,2,3,4,5,6,7,8};
for(i=0;i<N/2;i++)
{
t=a[i];
a[i]=a[N-i-1];
a[N-i-1]=t;
}
for(i=0;i<N;i++)
{
printf("%d\t",a[i]);
}
return 0;
}
*4.编写一个能将十进制数转换成任意进制数(如2,8,16进制)的程序,要求:从键盘上输入一个十进制数和要转换的进制基数(2或8或16),如输入123,2则输出1111011B;输入14,8则输出173O;输入14,16,则输出7BH。
#include<stdio.h>
#include<math.h>
char b[1000];
char a[16]= {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
int main()
{
int i,n,r;//十进制的整数n,转化成r进制的数;
while(~scanf("%d %d",&n,&r))
{
int i=0,flag=0;
if(n<0) //判断负数
flag=1;
while(n>0)
{
b[i++]=a[n%r];
n/=r;
}
i--;
if(flag==1)
printf("-");
for(; i>=0; i--)
{
printf("%c",b[i]);
}
printf("\n");
}
return 0;
}
5.输入一个正整数n,然后输入n个整数存入整型数组a,再输入一个整数x,查找该数是数组中第几个元素的值。如果该数不在数组中,则输出“无此数”。(二分查找最简单)
N的 前后 为什么会对程序运行 产生影响 ?
得先确定N的范围 才能定义 不然容易出错
1.顺序查找
#include<stdio.h>
int main()
{
int N,i,x;
int a[N];
scanf("%d",&N);
printf("请输入%d个数:\n",N);
for(i=0;i<N;i++)
{
scanf("%d",&a[i]);
}
printf("请输入要查找的数:");
scanf("%d",&x);
for(i=0;i<N;i++)
{
if(a[i]==x)
{
printf("%d是a[%d]",x,i);
break;
}
}
if(i==N)
printf("%d没有找到\n",x);
}
2.二分查找法
#include<stdio.h>
int main()
{
int N,i,x,n,top,bot,mid;
int a[N];
scanf("%d",&N);
printf("请输入%d个数:\n",N);
for(i=0;i<N;i++)
{
scanf("%d",&a[i]);
}
printf("请输入要查找的数:");
scanf("%d",&x);
top=0;bot=N-1;
while(top<=bot)
{
mid=(top+bot)/2;
if(x==a[mid])
{
printf("%d是a[%d]",x,mid);
break;
}
else if(x<a[mid])
bot=mid-1;
else if(x>a[mid])
top=mid+1;
}
if(top>bot)
printf("%d没有找到",x);
}
6.将两个按从小到大的顺序排列的数组合并,合并后的数组也应按从小到大的顺序排列,如数组a的元素是2,6,12,39,53,89;数组b的元素为1,3,6,10,35;合并后的数组元素为1,2,3,6,6,10,12,35,39,53,99。(数组可自行给定)
https://blog.csdn.net/weixin_43424154/article/details/84574964
#include<stdio.h>
int main()
{ int str1[6]={2,6,12,39,53,89};//两个升序排放的数组
int str2[5]={1,3,6,10,35};
int c[11];//用来存放两个数组
int i,j,t,f,x;
for(i=0;i<6;i++)
c[i]=str1[i];
for(j=0;j<5;j++,i++)
c[i]=str2[j];
for(j=0;j<11;j++)
for(i=0;i<10-j;i++)
if(c[i]>c[i+1])
{
t=c[i];
c[i]=c[i+1];
c[i+1]=t;
}
for(i=0;i<11;i++)
printf("%d\t",c[i]);
return 0;
}
*7.如何验证数中的元素是否有序,如数组a中的元素为1,3,5,7,9,10,11,则该数组中元素有序;若元素为1,5,3,7,9,8,11,则该数组中元素无序。
#include<stdio.h>
int main()
{
int i,flag=1;
int a[10]={0};
for(i=0;i<5;i++)
{
scanf("%d",&a[i]);
}
if(a[0]<a[1])//第一个数比第二个数小
{
for(i=1;i<4;i++)
{
if(a[i]>a[i+1])//前一个数比后一个数大
{
flag=0;
break;
}
}
}
else//第一个数比第二个数大
{
for(i=1;i<4;i++)
{
if(a[i]<a[i+1])//前一个数比后一个数小
{
flag=0;
break;
}
}
}
if(flag==0)
printf("无序");
else
printf("有序");
}
*8.输入一个正整数n(1<n≤10),再输入n个整数存入数组a;然后输入一个正整数m(1<m≤10),输入m整数存入数组b,找出只出现其中一个数组中的所有元素、找出两个数组共有的元素。
https://blog.csdn.net/hjh123668/article/details/102845203
https://blog.csdn.net/yu876876/article/details/79030106
https://blog.csdn.net/windyJ809/article/details/79679473
https://blog.csdn.net/Bob__yuan/article/details/84350152
#include<stdio.h>
int main()
{
int k=0,s=0,n,i,x,j,f,m,a[10],b[10],c[10],d[10];
scanf("%d,%d",&n,&m);
printf("请输入数组a:");
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
printf("请输入数组b:");
for(j=0;j<m;j++)
{
scanf("%d",&b[j]);
}
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if(a[i]==b[j])
{
c[k++]=b[j];
break;
}
}
}
for(i=0;i<n;i++)
{
for(x=0;x<k;x++)
{
if(a[i]==c[x])
{
break;
}
else
if(x==k-1)
d[s++]=a[i];
}
}
for(j=0;j<m;j++)
{
for(x=0;x<k;x++)
{
if(b[j]==c[x])
{
break;
}
else
if(x==k-1)
d[s++]=b[j];
}
}
for(x=0;x<k;x++)
printf("相同=%d ",c[x]);
printf("\n");
for(x=0;x<s;x++)
printf("特异点=%d ",d[x]);
}
*9.编写程序,统计一个整数序列中出现次数最多的整数。要求输出该整数及其出现的次数。
https://blog.csdn.net/jiangxiaoshan123/article/details/81701505
https://blog.csdn.net/AA11224488/article/details/79872288
https://blog.csdn.net/LMY_go/article/details/41632119
#include <stdio.h>
int main()
{
int n;
scanf("%d",&n);
int a[n];
int b[n];
for(int i=0;i<n;i++)//数组的初始化
{
scanf("%d",&a[i]);
b[i]=1;
}
for(int j=0;j<n;j++)
{
if(b[j]==1)//如果这个数字之前没有记录过
{
for(int k=j+1;k<n;k++)
{
if(a[j]==a[k])//出现相同的字母
{
b[j]++;
b[k]=b[j];
}
}
}
}
int cnt=b[0];
int max=a[0];
for(int kk=1;kk<n;kk++)
{
if(b[kk]>cnt)
{
cnt=b[kk];//找到最大的出现次数
max=a[kk];
}
}
printf("%d %d",max,cnt);
return 0;
}