1.
筛选法又称筛法,具体做法是:先把N个自然数按次序排列起来。1不是质数,也不是合数,要划去。第二个数2是质数留下来,而把2后面所有能被2整除的数都划去。2后面第一个没划去的数是3,把3留下,再把3后面所有能被3整除的数都划去。3后面第一个没划去的数是5,把5留下,再把5后面所有能被5整除的数都划去。这样一直做下去,就会把不超过N的全部合数都筛掉,留下的就是不超过N的全部质数。因为希腊人是把数写在涂腊的板上,每要划去一个数,就在上面记以小点,寻求质数的工作完毕后,这许多小点就像一个筛子,所以就把埃拉托斯特尼的方法叫做“埃拉托斯特尼筛”,简称“筛法”。
(来源百度百科)
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
printf("100内的素数有:\n");
int i,j,k,a[100];
for(i=0;i<100;i++){
a[i] = i+1;
}
a[0]=0;
for(j=1;j<sqrt(100);j++){
//printf("%d",a[j]);
for(i=j+1;i<100;i++){
if(a[j]!=0&&a[i]!=0){
if(a[i]%a[j] == 0){
//printf("%d",a[j]);
a[i]=0;
}
}
}
}
for(i=1,k=0;i<100;i++){
if(a[i]!=0){
printf("%d\t",a[i]);
k++;
if(k%5 == 0){
printf("\n");
}
}
}
return 0;
}
2.
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("请输入10个整数\n");
int i,j,temp,a[10];
for(i=0;i<10;i++){
scanf("%d",&a[i]);
}
for(j=0;j<10;j++){
for(i=j+1;i<10;i++){
if(a[j]>a[i]){
temp=a[j];
a[j]=a[i];
a[i]=temp;
}
}
}
printf("排序后的结果是:\n");
for(i=0;i<10;i++){
printf("%d ",a[i]);
}
return 0;
}
3.
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("请输入九个数:\n");
int i,j,sum,a[3][3];
for(i=0;i<3;i++){
for(j=0;j<3;j++){
scanf("%d",&a[i][j]);
}
}
sum = a[0][0]+a[1][1]+a[2][2];
printf("对角线元素和为:%d",sum);
return 0;
}
4.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int num,i,j;
int a[10] = {2,4,6,8,10,11,13,17,20};
printf("请输入要插入的数:\n");
scanf("%d",&num);
for(i=0;i<9;i++){
if(a[i]>=num)
{
for(j=9;j>i;j--){
a[j]=a[j-1];
}
a[i]=num;
break;
}
}
for(i=0;i<10;i++){
printf("%d ",a[i]);
}
return 0;
}
5.
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("原数组为:\n");
int a[5] = {1,2,3,4,5};
int i,j,temp;
for(i=0;i<5;i++){
printf("%d ",a[i]);
}
for(i=0,j=4;i<j;i++,j--){
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
printf("\n逆序后的数组为:\n");
for(i=0;i<5;i++){
printf("%d ",a[i]);
}
return 0;
}
6.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i,j,a[10][10];
for(i=0;i<10;i++){
a[i][0]=1;
a[i][i]=1;
}
for(i=2;i<10;i++){
for(j=1;j<i;j++){
a[i][j]=(a[i-1][j]+a[i-1][j-1]);
}
}
for(i=0;i<10;i++){
for(j=0;j<=i;j++){
printf("%4d",a[i][j]);
}
printf("\n");
}
return 0;
}
7.
。。。这题没看懂
8.
#include <stdio.h>
#include <stdlib.h>
#define N 3
int main()
{
int i,j,k,flag,point,pointj;
int a[N][N] = {9,7,1,5,3,2,6,8,10};
printf("原数组为:\n");
for(i=0;i<N;i++){
for(j=0;j<N;j++)
printf("%d ",a[i][j]);
printf("\n");
}
for(i=0;i<N;i++){
point=a[i][0];
pointj=0;
for(j=0;j<N;j++){
if(a[i][j]>point){
//找出每行的最大值
point=a[i][j];
pointj=j;
}
}
flag = 1;
for(k=0;k<N;k++){
if(point>a[k][pointj]){
//不是同一列最小的
flag=0;
break;
}
}
if(flag){
printf("该数组的鞍点为a[%d][%d]=%d",i,pointj,point);
break;
}
}
if(!flag){
printf("该数组不存在鞍点:\n");
}
return 0;
}
9.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i,num,start,end,mid,flag=0;
start=0;
end=14;
int a[15]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14};
printf("当前数组为:\n");
for(i=0;i<15;i++){
printf("%d ",a[i]);
}
printf("\n请输入要查找的元素的值:\n");
scanf("%d",&num);
while((num>=a[start])&&(num<=a[end])){
mid=(start+end)/2;
if(num==a[mid]){
printf("所查找的元素是第%d个",mid+1);
flag=1;
break;
}
else if(num<a[mid]){
end=mid-1;
}
else{
start=mid+1;
}
}
if(!flag){
printf("查找不到输入的元素");
}
return 0;
}
10.
#include <stdio.h>
#include <stdlib.h>
int main()
{
char a[3][80];
int i,j,upper,lower,num,space,other;
upper=lower=num=space=other=0;
for(i=0;i<3;i++){
printf("请输入第%d行:\n",i+1);
gets(a[i]);
for(j=0;j<80&&a[i][j]!='\0';j++){
if(a[i][j]>='A'&&a[i][j]<='Z'){
upper++;
}
else if(a[i][j]>='a'&&a[i][j]<='z'){
lower++;
}
else if(a[i][j]>='0'&&a[i][j]<='9'){
num++;
}
else if(a[i][j] == ' '){
space++;
}
else{
other++;
}
}
}
printf("有%d个大写字母\n",upper);
printf("有%d个小写字母\n",lower);
printf("有%d个数字\n",num);
printf("有%d个空格\n",space);
printf("有%d个其他字符\n",other);
return 0;
}
12.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i,j;
char before[100],after[100];
printf("请输入翻译前的密码:\n");
gets(before);
printf("翻译后的密码为:");
puts(before);
printf("\n翻译后的密码为:");
i=0;
while(before[i]!='\0'){
if(before[i]>='A'&&before[i]<='Z'){
after[i]=155-before[i];
}
else if(before[i]>='a'&&before[i]<='z'){
after[i]=219-before[i];
}
else{
after[i]=before[i];
}
i++;
}
j=i;
for(i=0;i<j;i++){
putchar(after[i]);
}
return 0;
}
13.
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
int main()
{
char ch1[50],ch2[50];
int ch1Length,ch2Length,i,j;
printf("请输入两个字符串\n");
gets(ch1);
gets(ch2);
ch1Length=strlen(ch1);
ch2Length=strlen(ch2);
for(i=ch1Length,j=0;i<ch1Length+ch2Length;i++,j++){
ch1[i]=ch2[j];
}
for(i=0;i<ch1Length+ch2Length;i++){
putchar(ch1[i]);
}
return 0;
}