一,1000以内的回文素数
#include<stdio.h>
#include<math.h>
int judg(int i)//用于判断一个数字是不是素数
{
int j;
if(i==1)
return 0;
if(i==2)
return 1;
for(j=2;j<=sqrt(i);j++)
{
if(i%j==0)
break;
}
if(j>sqrt(i))
return 1;
}
int main()
{
int i;
for(i=10;i<1000;i++)
if(judg(i)==1)
if(i/100==0)//判断是不是两位数
{
if(i/10==i%10)//判断两位数的个位和十位是否相等
printf("%d ",i);
}
else
if(i/100==i%10)//判断百位和个位是否相等
printf("%d ",i);
}
二,数组中插入元素
#include <stdio.h>
void insert(int *a,int n,int index,int e)
{
int i,j;
for(j=n-1;j>=index-1;j--)
a[j+1]=a[j];
a[index-1]=e;
}
int main()
{
int a[5]={2,4,5,6,0};
int i;
for(i=0;i<5;i++)//遍历
printf("%d\t",a[i]);
printf("\n");
insert(a,5,2,15);//第2个位置插入15
for(i=0;i<6;i++)
printf("%d\t",a[i]);//输出排序后的数组
}
三,求2/1,3/2,5/3,8/5…前20项的和。
#include <stdio.h>
int main()
{
int n,t,num=20;
float a=2,b=1,s=0;
for(n=1;n<=num;n++)
{
s=a/b+s;
t=a;
a=a+b;
b=t;//t把前一个分式的分子传个下一个分式的分母
}
printf("sum=%9.6f\n",s);
return 0;
}
四,获取二维数组将3*4的矩阵中元素的最大值及下标
#include <stdio.h>
int main()
{
int a[3][4],i,j,max,max_i=0,max_j=0;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
scanf("%d",&a[i][j]);
max=a[0][0];
for(i=0;i<3;i++)
for(j=0;j<4;j++)
if(a[i][j]>max)
{
max=a[i][j];
max_i=i;
max_j=j;
}
printf("max=a[%d][%d]=%d\n",max_i,max_j,max);
return 0;
}
五,矩阵转置(mxn阶,初始a(i,j),转置后
b(j,i)=a(i,j))
#include <stdio.h>
int main()
{
int i,j,i1,j1,a[101][101],b[101][101];
printf("please input the num of rows(<=100)\n");
scanf("%d",&i1);
printf("please input the num of columns(<=100)\n");
scanf("%d",&j1);
for(i=0;i<i1;i++)
for(j=0;j<j1;j++)
b[j][i]=a[i][j];
return 0;
}
六,求3x3矩阵对角线元素之和
void main()
{
int a[3][3];
int sum=0,i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
for(i=0;i<3;i++)
for(j=0;j<3;j++)
if(i==j||(i+j)==2)//下标满足情况
sum=a[i][j]+sum;
printf("%d\n",sum);
}
七,求水仙花数(三位数,各位数字立方和等于其本身)
#include <stdio.h>
int main()
{
int a,b,c,i;
for(i=100;i<1000;i++)
{
a=i%10;
b=i/10%10;
c=i/100;
if(a*a*a+b*b*b+c*c*c==i)
printf("%5d\n",i);
}
return 0;
}
八,求前20个Fibonacci数列
#include <stdio.h>
int main()
{
int a=1,b=1;
int i;
for(i=0;i<10;i++)
{
printf(" %d %d",a,b);
a=a+b;
b=b+a;
}
system("pause");
}
九,生兔子问题(1,1,2,3,5,8……)
#include <stdio.h>
int main()
{
int i,tu1,tu2,tu3,m;
tu1=1;tu2=1;
printf("month\n");
scanf("%d",&m);
if(m==1||m==2)
{
printf("yi dui tuzi");
}
else if(m>2)
{
for(i=3;i<=m;i++)
{
tu3=tu1+tu2;
tu1=tu2;
tu2=tu3;
}
printf("%dmonth de tuzi:%d\n",m,tu3);
}
return 0;
}
十,输入一行英文句子,计算单词个数
#include <stdio.h>
int main()
{
printf("input:\n");
char ch;
int i,count=0,word=0;
while((ch=getchar())!='\n')
if(ch==' ')
word=0;
else if(word==0)
{
word=1;
count++;
}
printf("you %d ge danci\n",count);
return 0;
}
十一,加密解密(字符+位置+偏移值5)
#include <stdio.h>
#include <string.h>
int main()
{
int result=1;
int i;
int count=0;
char Text[128]={'\0'};
char cryptograph[128]={'\0'};
while(1)
{
if(result==1)
{
printf("请输入要加密的明文:\n");
scanf ("%s",&Text);
count=strlen(Text);
for(i=0;i<count;i++)
{
cryptograph[i]=Text[i]+i+5;
}
cryptograph[i]='\0';
printf("加密后的密文是:%s\n",cryptograph);
}
else if(result==2)
{
count=strlen(Text);
for(i=0;i<count;i++)
{
Text[i]=cryptograph[i]-i-5;
}
Text[i]='\0';
printf("解密后的明文是:%s\n",Text);
}
else if(result==3)
{
break;
}
else
{
printf("请输入正确的命令符:\n");
}
printf("输入1加密新的明文,输入2对刚加密的密文进行解密,输入3退出系统:\n");
printf("请输入命令符:\n");
scanf("%d",&result);
}
return 0;
}
十二,逆序输出(将一个从键盘输入的整数存放到一个数组中,通过程序的运行按照数组中的逆序输出该整数,利用递归的方法解决问题)
#include <stdio.h>
int convert(char s[],int n)
{
int i;
if((i=n/10)!=0)//通过不断取余和整除10来得到数据的每一位
convert(s+1,i);
*s=n%10+'0';
return 0;
}
int main()
{
int num;
char str[10]=" ";
printf("input integer data: ");
scanf("%d",&num);
convert(str,num);
printf("output string: \n");
puts(str);
return 0;
}
十三,将一个一维数组就地逆置
#include <stdio.h>
int main()
{
int a[10]={1,2,3,4,5,6,7,8,9,10};
int i=0,j=9;
while(i<=j)
{
int tem=a[i];
a[i]=a[j];
a[j]=tem;
i++;
j--;
}
for(i=0;i<10;i++)
printf("%d ",a[i]);
return 0;
}
十四,数据加密(每位数字加上5,除10的余数取代该数,再将第一位和第四位交换,二三位交换)
#include <stdio.h>
int main()
{
int a,i,aa[4],t;
scanf("%d",&a);
aa[0]=a%10;
aa[1]=a%100/10;
aa[2]=a%1000/100;
aa[3]=a/1000;
for(i=0;i<=3;i++)
{
aa[i]+=5;
aa[i]%=10;
}
for(i=0;i<=1;i++)
{
t=aa[i];
aa[i]=aa[3-i];
aa[3-i]=t;
}
for(i=3;i>=0;i--)
printf("%d",aa[i]);
return 0;
}
十五,输出菱形
#include <stdio.h>
#include <stdlib.h>
int main()
{
int line = 0; //上半部分行数
int i = 0; //控制循环次数
int j = 0;//控制星星数
int n = 0;//控制空格数
printf("input:");
scanf("%d", &line);
if(line % 2 == 0) //判断是否为奇数行
{
printf("error\n");
exit(1);
}
for (i = 0; i < line; i++)//上半部分
{
for (n = 0; n < line - 1 - i; n++)//每行星星前面的空格数
{
printf(" ");
}
for (j = 0; j < 2 * (i+1)-1; j++)//*的个数=2*行数-1
{
printf("*");
}
printf("\n");
}
for (i = 0; i < line - 1; i++)//下半部分
{
for (n = 0; n < i + 1; n++)
{
printf(" ");
}
for (j = 0; j < 2 * (line - 1 - i) - 1; j++)
{
printf("*");
}
printf("\n");
}
system("pause");
return 0;
}
十六,求2-300范围内的完数(完数=因子之和,如6=1+2+3)
#include <stdio.h>
int main()
{
int num, i, sum;
for(num=2;num<=300;num++){
sum=0;
for(i=1;i<num;i++)
{
if(num%i==0)
sum+=i;
}
if(sum==num)
printf("%d\n",num);
}
return 0;
}
十七,求孪生素数(间隔为2的素数)3-1000以内
#include <stdio.h>
#include <math.h>
int prime(int m)
{
int j;
for(j=2;j<=sqrt(m);j++)
{
if(m%j==0)
return 0;
}
return 1;
}
int main()
{
int i,count=0;
for(i=3;i<1000;i++)
if(prime(i)&&prime(i+2))
{
printf("(%-3d,%3d)",i,i+2);
count++;
if(count%5==0)
printf("\n");
}
return 0;
}
十八,求回文数(n<256,n的平方具有对称性质的数)
#include <stdio.h>
void main()
{
int i,j,k;
for(i=0;i<=256;i++)
{
j=i*i;
k=0;
while(j>0){
k=k*10+j%10;//把j的值从最低位往前依次给k最高位往后
j=j/10;//j=0的时候就交换完了
}
if(k==i*i)//如果是回文的,交换完还是不变的
printf("%d*%d=%d\n",i,i,i*i);
}
}
十九,判断一个五位数是不是回文数
#include <stdio.h>
int main()
{
int a,b,c,d,n;
scanf("%d",&n);
a=n%10;
b=n%100/10;
c=n%10000/1000;
d=n/10000;
if(a==d&&b==c)
printf("this number is a huiwen\n");
else
printf("this number is not a huiwen\n");
return 0;
}
二十,求100以内所有的勾股数
#include <stdio.h>
#include <math.h>
int main()
{
int a,b,c,i;
printf("100以内的勾股数:\n");
for(a=1;a<=100;a++)
for(b=1;b<=100;b++)
{
c=sqrt(a*a+b*b);
if(c*c==a*a+b*b && a+b>c && a+c>b && b+c>a && c<=100)
{
printf("%4d %4d %4d\n",a,b,c);
}
}
printf("\n");
return 0;
}
更多推荐
C语言程序设计经典例题(考研必背)(基础篇)第二周
发布评论