目录
3.输入10个正整数到a数组中,对a[10]数组中的素数升序排序
1. 方阵对角线元素求和及计数
对输入的一个N*N
的方阵,求其两条对角线上的元素之和及非零元素的数量
第一行输入一个不超过20的正整数N
,
在接下来的N
行中,依次输入方阵的每一行的N
个元素,方阵元素为绝对值不超过1000的整数,中间以空格间隔。
#include <stdio.h>
#include <stdlib.h>
int main() {
int num,a[20][20],cout=0,sum=0,i,j;
scanf("%d",&num);
for(i=0; i<num; i++)
for(j=0; j<num; j++) {
scanf("%d",&a[i][j]);
if(i==j||i+j==num-1) {
if(a[i][j]!=0)
cout+=1;
sum+=a[i][j];
}
}
printf("sum = %d, count = %d.\n",sum,cout);
return 0;
}
2.使用选择法升序
void sort( int a[], int n )
{
int temp,k,min,i;
for(k=0;k<n-1;k++)
{
min=k;
for(i=k+1;i<n;i++)
if(a[i]<a[min])
min=i;
temp=a[min];
a[min]=a[k];
a[k]=temp;
}
}
*3.输入10个正整数到a数组中,对a[10]数组中的素数升序排序
在一行中输入10个用空格间隔的正整数,数据之间只能各用1个空格间隔。
在一行中输出升序的素数序列,每个数输出占4列列宽。
输出正确,答案错误的做法
#include <stdio.h>
void sort( int a[], int n )
{
int temp,k,min,i;
for(k=0;k<n-1;k++)
{
min=k;
for(i=k+1;i<n;i++)
if(a[i]<a[min])
min=i;
temp=a[min];
a[min]=a[k];
a[k]=temp;
}
}
int jugle(int x)
{
int i = 0;
int flag = 1;
for(i=2;i<x;i++)
{
if(x%i==0)
{
flag = 0;
break;
}
}
return flag;
}
int main ()
{
int a [10] = {0};
int i = 0;
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
sort(a,10);
for(i=0;i<10;i++)
{
if(jugle(a[i])==1&&a[i]!=1)
printf("%4d",a[i]);
}
return 0;
}
4.对a[10]数组中的素数排序
#include<stdio.h>
int main()
{
int isPrime(int data);
int t,i,r,w;
int a[10] = {0} ,b[10];
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<10;i++)
{
for(r=i+1;r<10;r++)
{
if(a[i]>a[r])
{
w=a[i];
a[i]=a[r];
a[r]=w;
}
}
}
for(i=0;i<10;i++)
{
t=isPrime(a[i]);
if(t!=-1)
printf("%4d",isPrime(a[i]));
}
return 0;
}
int isPrime(int data)
{
int j;
for(j=2;j<data;j++)
{
if(data%j==0)
break;
}
if(j==data)
return data;
else return -1;
}