c 中的元素是 a 和 b 对应元素的最大值
| December 4, 2007 20:02 | timmy | Via Original
输入一个正整数repeat (0 输入 1 个正整数 n(1≤n≤10),再读入 n 阶方阵 a 和 b, 生成并输出 n 阶方阵 c,c 中的元素是 a 和 b 对应元素的最大值. c[i][j]=max(a[i][j],b[i][j]) i,j=0,1,2...n-1
例:括号内是说明
输入:
1 (repeat=1)
3 (n=3)
1 2 3 4 5 6 7 8 9 (输入方阵a)
2 3 4 5 6 7 8 9 0 (输入方阵b)
输出:
2 3 4
5 6 7
8 9 9
#include "stdio.h"
int main( )
{ int ri,repeat;
int a[6][6],b[6][6],c[6][6],i,j,n;
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++){
scanf("%d",&n);
for (i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
for (i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&b[i][j]);
for (i=0;i<n;i++)
for(j=0;j<n;j++)
if(b[i][j]>a[i][j])
c[i][j]=b[i][j];
else
c[i][j]=a[i][j];
for (i=0;i<n;i++){
for(j=0;j<n;j++)
printf("%-6d",c[i][j]);
printf("\n");
}
}
}
例:括号内是说明
输入:
1 (repeat=1)
3 (n=3)
1 2 3 4 5 6 7 8 9 (输入方阵a)
2 3 4 5 6 7 8 9 0 (输入方阵b)
输出:
2 3 4
5 6 7
8 9 9
#include "stdio.h"
int main( )
{ int ri,repeat;
int a[6][6],b[6][6],c[6][6],i,j,n;
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++){
scanf("%d",&n);
for (i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
for (i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&b[i][j]);
for (i=0;i<n;i++)
for(j=0;j<n;j++)
if(b[i][j]>a[i][j])
c[i][j]=b[i][j];
else
c[i][j]=a[i][j];
for (i=0;i<n;i++){
for(j=0;j<n;j++)
printf("%-6d",c[i][j]);
printf("\n");
}
}
}
在这n个数中找出与平均值之差的平方和最小的数
| November 27, 2007 19:11 | timmy | Via Original
输入一个正整数repeat (0 读入1 个正整数n(n<=10),再读入n个整数, 计算平均值(取整),然后在这n个数中找出与平均值之差的平方和最小的数(设惟一)。
例:括号内是说明
输入:
2 (repeat=2)
4 (n=4)
-10 2 -5 0
3 (n=3)
1 2 3
输出:
-5 (平均值是-3,与平均值之差的平方和是49 25 4 9,最小平方和是4,对应的数是-5)
2 (平均值是2,与平均值之差的平方和是1 0 1,最小平方和是0,对应的数是2)
#include "stdio.h"
int main( )
{ int ri,repeat;
int aver,i,n,sub,a[10];
long b[10];
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++){
scanf("%d",&n);
aver=0;
for(i=0;i<n;i++){
scanf("%d",&a[i]);
aver+=a[i];
}
aver/=n;
for(i=0;i<n;i++)
b[i]=(a[i]-aver)*(a[i]-aver);
sub=0;
for(i=0;i<n;i++)
if(b[i]<b[sub])
sub=i;
printf("%d\n",a[sub]);
}
}
例:括号内是说明
输入:
2 (repeat=2)
4 (n=4)
-10 2 -5 0
3 (n=3)
1 2 3
输出:
-5 (平均值是-3,与平均值之差的平方和是49 25 4 9,最小平方和是4,对应的数是-5)
2 (平均值是2,与平均值之差的平方和是1 0 1,最小平方和是0,对应的数是2)
#include "stdio.h"
int main( )
{ int ri,repeat;
int aver,i,n,sub,a[10];
long b[10];
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++){
scanf("%d",&n);
aver=0;
for(i=0;i<n;i++){
scanf("%d",&a[i]);
aver+=a[i];
}
aver/=n;
for(i=0;i<n;i++)
b[i]=(a[i]-aver)*(a[i]-aver);
sub=0;
for(i=0;i<n;i++)
if(b[i]<b[sub])
sub=i;
printf("%d\n",a[sub]);
}
}
输出一个 n 阶的方阵, 该方阵副对角线、最后一列和最后一行上的元素都是digit,其它元素都是 digit-1
| November 27, 2007 19:10 | timmy | Via Original
输入一个正整数repeat (0 读入 1 个正整数 n(1≤n≤6)和 1 个整数 digit, 输出一个 n 阶的方阵, 该方阵副对角线、最后一列和最后一行上的元素都是digit,其它元素都是 digit-1。(副对角线为从矩阵的右上角至左下角的连线)
例:括号内是说明
输入:
1 (repeat=1)
4 2 (n=4, digit=2)
输出:
1 1 1 2
1 1 2 2
1 2 1 2
2 2 2 2
#include "stdio.h"
int main( )
{ int ri,repeat;
int a[6][6],i,j,n,digit;
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++){
scanf("%d%d",&n,&digit);
for (i=0;i<n;i++)
for(j=0;j<n;j++){
a[i][j]=digit-1;
if((i+j==n-1)||i==n-1||j==n-1)
a[i][j]++;
}
for (i=0;i<n;i++){
for(j=0;j<n;j++)
printf("%-6d",a[i][j]);
printf("\n");
}
}
}
例:括号内是说明
输入:
1 (repeat=1)
4 2 (n=4, digit=2)
输出:
1 1 1 2
1 1 2 2
1 2 1 2
2 2 2 2
#include "stdio.h"
int main( )
{ int ri,repeat;
int a[6][6],i,j,n,digit;
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++){
scanf("%d%d",&n,&digit);
for (i=0;i<n;i++)
for(j=0;j<n;j++){
a[i][j]=digit-1;
if((i+j==n-1)||i==n-1||j==n-1)
a[i][j]++;
}
for (i=0;i<n;i++){
for(j=0;j<n;j++)
printf("%-6d",a[i][j]);
printf("\n");
}
}
}
函数程序设计求数列的和
| November 27, 2007 19:09 | timmy | Via Original
编写一个程序,计算数列1+(1+2)+(1+2+3)+…+(1+2+3+…+n)的前n项之和。要求:定义一个含静态局部变量的函数,用于计算数列第i项的值。
例:(括号内为说明)
输入
5(n=5)
输出
sum=35
#include <stdio.h>
long num(int n);
void main()
{
int n,i;
long sum=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
sum+=num(i);
printf("sum=%ld\n",sum);
}
long num(int n)
{
static long s;
s+=n;
return s;
}
例:(括号内为说明)
输入
5(n=5)
输出
sum=35
#include <stdio.h>
long num(int n);
void main()
{
int n,i;
long sum=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
sum+=num(i);
printf("sum=%ld\n",sum);
}
long num(int n)
{
static long s;
s+=n;
return s;
}
用递归方法实现对一个整数进行逆序输出
| November 27, 2007 19:08 | timmy | Via Original
用递归方法实现对一个整数进行逆序输出。
例:(括号内为说明)
输入
3(repeat=3)
123
900
5
输出
After reverse:321
After reverse:009
After reverse:5
#include <stdio.h>
void reverse(int n);
void main()
{
int n,ri,repeat;
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++){
scanf("%d",&n);
printf("After reverse:");
reverse(n);
printf("\n");
}
}
void reverse(int n)
{
if(n!=0){
printf("%d",n%10);
reverse(n/=10);
}
}
例:(括号内为说明)
输入
3(repeat=3)
123
900
5
输出
After reverse:321
After reverse:009
After reverse:5
#include <stdio.h>
void reverse(int n);
void main()
{
int n,ri,repeat;
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++){
scanf("%d",&n);
printf("After reverse:");
reverse(n);
printf("\n");
}
}
void reverse(int n)
{
if(n!=0){
printf("%d",n%10);
reverse(n/=10);
}
}












