自然数之和。请定义局部变量s存放求和的结果,并用下
列语句输出结果
printf("1+2+...+n=%d\n",s);
void main()
{
int s;
/* 请添加相关说明和语句 */
s=0;
for (int i=1;i<=n;i++)
s+=i;
printf("1+2+...+n=%d\n",s); /* 注意:不要修改此输出语句 */
}
/**********
编写程序,求1到n之间的偶数之和,并将结果存放到s。
**********/
void main()
{
for (int i=1;i<=n;i++)
if (i%2==0)
s+=i;
}
//第二种方法
for (int i=2;i<=n;i+=2)
s+=i;
//第三种方法
for (int i=1;i<=n;i++)
(i%2==0)?s+=i:; //编译错误?
//第四种方法
/**********
和实型变量avg(不需要自行定义)。编写程序,求数组a中前n
个元素的最大值max、最小值min及平均值avg。
**********/
void main()
{
avg=0;
max=a[0];
min=a[0];
for (int i=0;i<n;i++)
{
if (a[i]>max)
max=a[i];
if (a[i]<min)
min=a[i];
avg+=a[i];
}
avg=avg/n;
}
/**********
编写程序,根据m的值求满足1+2+…+n>=m的最小n,并将
1+2+…+n的结果存放到s。例如,若m=50,则n=10,s=55。
**********/
void main()
{
for (int i=1;i<=m;i++)
{
s+=i;
if (s>=m)
{
n=i;
break;
}
}
}
/**********
自行定义)。编写程序,找出数组a中前n个元素中的最小元素
及其下标,然后把它和数组中最前面的元素a[0]交换位置。
**********/
void main()
{
int min=0,t,tmp;
min=a[0];
for (int j=0;j<n;j++)
{
if (a[j]<min)
min=a[j];
}
for (int k=0;k<n;k++)
{
if (a[k]==min)
t=k;
}
tmp=a[t];
a[t]=a[0];
a[0]=tmp;
}
/**********
自行定义)。编写程序,将字符串s中26个小写字母出现的次数
依次统计到数组c中。例如,当s=“abcijkabcdexyzuvwx”时,
数组c的26个元素值依次为:2 2 2 1 1 0 0 0 1 1 1 0 0 0
0 0 0 0 0 0 1 1 1 2 1 1。
**********/
void main()
{
int l=strlen(s);
for (int j=0;j<26;j++)
{
c[j]=0;
}
for (int i=0;i<l;i++)
{
switch(s[i])
{
case 'a':
c[0]++;
break;
case 'b':
c[1]++;
break;
case 'c':
c[2]++;
break;
case 'd':
c[3]++;
break;
case 'e':
c[4]++;
break;
case 'f':
c[5]++;
break;
case 'g':
c[6]++;
break;
case 'h':
c[7]++;
break;
case 'i':
c[8]++;
break;
case 'j':
c[9]++;
break;
case 'k':
c[10]++;
break;
case 'l':
c[11]++;
break;
case 'm':
c[12]++;
break;
case 'n':
c[13]++;
break;
case 'o':
c[14]++;
break;
case 'p':
c[15]++;
break;
case 'q':
c[16]++;
break;
case 'r':
c[17]++;
break;
case 's':
c[18]++;
break;
case 't':
c[19]++;
break;
case 'u':
c[20]++;
break;
case 'v':
c[21]++;
break;
case 'w':
c[22]++;
break;
case 'x':
c[23]++;
break;
case 'y':
c[24]++;
break;
case 'z':
c[25]++;
break;
default:
break;
}
}
}
/**********
(不需要自行定义)。编写程序,将字符串s中26个字母
(不区分大小写)出现的次数依次统计到数组c中。例如,
当s=“AbcijKaBcdEXyzuvwx”时,数组c的26个元素值
依次为:2 2 2 1 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0
1 1 1 2 1 1。
**********/
void main()
{
int l=strlen(s);
for (int j=0;j<26;j++)
c[j]=0;
for (int i=0;i<l;i++)
{
switch(s[i])
{
case 'a':
case 'A':
c[0]++;
break;
case 'b':
case 'B':
c[1]++;
break;
case 'c':
case 'C':
c[2]++;
break;
case 'd':
case 'D':
c[3]++;
break;
case 'e':
case 'E':
c[4]++;
break;
case 'f':
case 'F':
c[5]++;
break;
case 'g':
case 'G':
c[6]++;
break;
case 'h':
case 'H':
c[7]++;
break;
case 'i':
case 'I':
c[8]++;
break;
case 'j':
case 'J':
c[9]++;
break;
case 'k':
case 'K':
c[10]++;
break;
case 'l':
case 'L':
c[11]++;
break;
case 'm':
case 'M':
c[12]++;
break;
case 'n':
case 'N':
c[13]++;
break;
case 'o':
case 'O':
c[14]++;
break;
case 'p':
case 'P':
c[15]++;
break;
case 'q':
case 'Q':
c[16]++;
break;
case 'r':
case 'R':
c[17]++;
break;
case 's':
case 'S':
c[18]++;
break;
case 't':
case 'T':
c[19]++;
break;
case 'u':
case 'U':
c[20]++;
break;
case 'v':
case 'V':
c[21]++;
break;
case 'w':
case 'W':
c[22]++;
break;
case 'x':
case 'X':
c[23]++;
break;
case 'y':
case 'Y':
c[24]++;
break;
case 'z':
case 'Z':
c[25]++;
break;
default:
break;
}
}
}
/**********
1<=a<=9,1<=m<=9且m+k<=9(不需要自行定义)。编写
程序,求数列a,aa,aaa,…,aa…a,…(第i项为i个a)中,
第m项起的k项之和,并将结果存放到s。例如:当a=6,
m=4且k=3时,置s=6666+66666+666666。
**********/
void main()
{
int t=1;
long s0[10]={0};
if (a>=1 && a<=9 && 1<=m && m<=9 && m+k<=9)
{
for (int j=0;j<m;j++)
{
t=1;
for (int i=1;i<=j;i++)
{
t*=10;
}
s0[0]+=a*t;
}
s+=s0[0];
//printf("%d\n",s0[0]);
for (int i=1;i<k;i++)
{
s0[i]=s0[i-1]*10+a;
s+=s0[i];
}
}
if(a==0 || m==0 || k==0)
{
s=0;
}
}
/**********
n的值在0和9之间(不需要自行定义)。编写程序,
求1+12+123+…+12…n之值,并将结果存放到s。例如,
n=5时,置s=1+12+123+1234+12345。
**********/
void main()
{
int t;
long s0[10]={0};
if (n>=1 && n<=9)
{
s0[0]=1;
for (int j=1;j<n;j++)
{
t=1;
for (int i=1;i<=j;i++)
{
t*=10;
}
s0[j]+=s0[j-1]*10+j+1;
}
//printf("%d\n",s0[0]);
for (int i=0;i<n;i++)
{
s+=s0[i];
}
}
else
{
s=0;
}
}
/**********
其中数组a中前n个元素(a[0],a[1],…,a[n-1])已经按元素值由小到大排序。
编写程序,把变量e的值插入到数组a中,并且仍然保持a中元素由小到大的排列
顺序。若e的值比原有所有的数都大时,插入在末尾的a[n]。若比原有的数都小
时,则插入在最前面的a[0]。
**********/
void main()
{
for (int i=0;i<n;i++)
{
if (a[i]>=e)
{
for (int j=n-1;j>=i;j--)
{
a[j+1]=a[j];
}
a[i]=e;
break;
}
}
if (e>=a[n-1])
a[n]=e;
}
/**********
编写程序,用起泡法对数组a中前n个元素(a[0],a[1],…,a[n-1])进行
分段排序,其中前一半为从小到大排序,后一半为从大到小排序,n为奇数
时,位于中间点的数不需要排序。
**********/
void main()
{
for (int i=0;i<n/2;i++)
{
int max=a[0];
for (int j=1;j<n/2-i;j++)
{
if (max>a[j])
{
int t=a[j];
a[j]=max;
a[j-1]=t;
}
else
{
//int t=max;
max=a[j];
//a[j-1]=t;
}
}
}
for (i=n;i>n/2;i--)
{
int min=a[n/2];
for (int j=n/2+1;j<n;j++)
{
if (min<a[j])
{
int t=a[j];
a[j]=min;
a[j-1]=t;
}
else
{
//int t=max;
min=a[j];
//a[j-1]=t;
}
}
}
}
/**********
编写程序,用起泡法对数组a中前n个元素(a[0],a[1],…,a[n-1])进行
分段排序,其中前一半为从大到小排序,后一半为从小到大排序,并把n个
数的平均值存在a[n]中,n为奇数时,位于中间点的数不需要排序。
**********/
void main()
{ double min,max,t;
int k;
a[n]=0;
for (int i=0;i<n/2;i++)
{
min=a[0];
for (int j=1;j<n/2-i;j++)
{
if (min<a[j])
{
t=a[j];
a[j]=min;
a[j-1]=t;
}
else
{
//int t=max;
min=a[j];
//a[j-1]=t;
}
}
}
if (n%2==0)
k=0;
else
k=1;
for ( i=n-k;i>n/2;i--)
{
max=a[n/2+k];
for (int j=n/2+1;j<n;j++)
{
if (max>a[j])
{
t=a[j];
a[j]=max;
a[j-1]=t;
}
else
{
//int t=max;
max=a[j];
//a[j-1]=t;
}
}
}
for (i=0;i<n;i++)
a[n]+=a[i];
a[n]/=n;
}
/**********
编写程序,求某数列中前n个数,并依次存放在数组a中,该数列的前两个
数为2和3,以后每一个数都是前两个数之差(后面的数减去前面的数)的2
倍,如前6个数依次为:2,3,2,-2,-8,-12)。
**********/
void main()
{
a[0]=2;a[1]=3;
for (int i=2;i<n;i++)
{
a[i]=2*(a[i-1]-a[i-2]);
}
}
/**********
行定义),其中n的值是m的整数倍。编写程序,对数组a的前n个元素依次赋予从
2开始的偶数,然后按顺序每m个数求出一个平均值并依次存储在另一数组b中。
**********/
void main()
{
int t=n/m;
float p=0.0;
for (int i=0;i<n;i++)
{
a[i]=2*(i+1);
p+=a[i];
//printf("p%d=%d\n",i,a[i]);
for (int j=1;j<=t;j++)
{
if (i==j*m-1)
{
b[j-1]=p/m;
p=0;
}
}
}
}
/**********
自行定义)。编写程序,将mn二维数组a的行和列元素互换,存到nm二
维数组b中。
**********/
void main()
{
for (int j=0;j<=m;j++)
{
for (int i=0;i<=n;i++)
b[j][i]=a[i][j];
}
}
/**********
自行定义)。编写程序,求n*n二维数组a中第i行的元素最小值imin。
**********/
void main()
{
imin=a[i][0];
for (int j=1;j<n;j++)
{
if (imin>a[i][j])
{
imin=a[i][j];
}
}
}
/**********
自行定义)。编写程序,求n*n二维数组a中主对角线元素的最小值dmin。
**********/
void main()
{
dmin=a[0][0];
for (int i=1,j=1;i<n && i==j;i++,j++)
{
if (dmin>a[i][j])
{
dmin=a[i][j];
}
}
}
/**********
自行定义),其中a中元素值均为非负整数。编写程序,求n*n二维数组a
中的元素最小值min。
**********/
void main()
{
min=a[0][0];
for (int i=0;i<n;i++)
{
for (int j=0;j<n;j++)
if (min>a[i][j])
{
min=a[i][j];
}
}
}
/**********
定义)。编写程序,求n*n二维数组a的两条对角线上的元素的最小值d2min。
**********/
void main()
{
int i,j;
d2min=a[0][0];
for (i=0;i<n;i++)
{
for (j=0;j<n;j++)
{
if (i==j || (i-j==n-1) || (j-i==n-1))
{
if (a[i][j]<d2min)
{
d2min=a[i][j];
}
}
}
}
}
/**********
自行定义)。编写程序,求n*n二维数组a中第i行的元素之和isum。
**********/
void main()
{ int j;
isum=0;
for (j=0;j<n;j++)
isum+=a[i][j];
}
/**********
实型变量javg(不需要自行定义)。编写程序,求n*n二维数组
a中第j列的元素平均值javg。
**********/
void main()
{
javg=0.0;
int i;
for (i=0;i<n;i++)
{
javg+=a[i][j];
}
javg/=n;
}
/**********
实型变量davg(不需要自行定义)。编写程序,求n*n二维
数组a的主对角线元素平均值davg。
**********/
void main()
{
int i,k;
davg=0.0;
for (i=0;i<n;i++)
{
for (k=0;k<n;k++)
{
if (i==k)
davg+=a[i][k];
}
}
davg/=n;
}
/**********
数组a(不需要自行定义)。编写程序,求n*n二维数组a
的全部元素之和sum。
**********/
void main()
{
int j,k;
sum=0;
for (j=0;j<n;j++)
{
for (k=0;k<n;k++)
sum+=a[j][k];
}
}
/**********
(不需要自行定义)。编写程序,求n*n二维数组a的两条对角线
上各元素值之和d2sum。注意:对角线的元素只能计算一次。
**********/
void main()
{
int j,k,t=1;
d2sum=0;
for (j=0;j<n;j++)
{
for (k=0;k<n;k++)
{
if (j==k )
{
d2sum+=a[j][k];
}
if (k-j==n-t)
{
d2sum+=a[j][k];
t+=2;
}
}
}
if (n%2!=0)
d2sum-=a[n/2][n/2];
}
/**********
要自行定义)。编写程序,求n*n二维数组a的周边元素之和ss。
**********/
void main()
{
int j,k;
ss=0;
for (j=0;j<n;j++)
{
for (k=0;k<n;k++)
{
if (j==0 || k==0 || j==n-1 || k==n-1 )
{
ss+=a[j][k];
}
}
}
}
/**********
二维数组a(不需要自行定义)。编写程序,求n*n二
维数组a的周边元素的最小值smin。
**********/
void main()
{
int j,k;
smin=a[0][0];
for (j=0;j<n;j++)
{
for (k=0;k<n;k++)
{
if (j==0 || k==0 || j==n-1 || k==n-1 )
{
if (a[j][k]<smin)
smin=a[j][k];
}
}
}
}