都是上课老师布置的作业
和一些网上看到的经典
程序,拿出来和大家
分享下,如有雷同
纯属欺骗,谢谢
后续还会更新
!!!!!!
1.1判别一个数是否为质数/素数(prime number)
一个大于1的自然数,除了1和它本身外,不能被其他自然数整除(除0以外)的数称之为素数,也叫质数。
#include <stdio.h>
int main()
{
inti;
intn;
intflag=0;
printf("inputnumber n:");
scanf("%d",&n);
for(i=2;i<=n/2;i++)
{
if(n%i==0)
{
flag=1;
break;
}
}
if(flag==0)
printf("%dis a prime number/n",n);
else
printf("%dis not a prime number/n",n);
return0;
}
1.2列出1-1000中的质数和个数
#include <stdio.h>
int main()
{
inti;
intj;
int f; *f是标记,标记这个数是不是质数,0为质数,1为负数*
int count=0;
for(i=2;i<1000;i++)
{
f=0; *每次都要初始为0*
for(j=2;j<=i/2;j++)
{
if(i%j==0)
{
f=1;
break;
}
}
if(f==0)
{
count++;
printf("% d",i);
if(count%6==0) //将结果每6个一行打出来//
printf(“\n”);
}
}
printf("\ncount=%d\n",count);
return0;
}
2.1判别一个数是否为完数(perfectnumber)
一个数恰好等于它的因子之和,则称该数为完数,称完美数或完备数。
#include<stdio.h>
intmain()
{
int i;
int n;
int sum=0;
printf("please input a numbern:");
scanf("%d",&n);
for(i=1;i<=n/2;i++)
{
if(n%i==0)
{
sum+=i;
}
}
if(sum==n)
printf("%d is a perfectnumber\n",n);
else
printf("%d is not a perfectnumnber\n",n);
return 0;
}
2.2列出1-1000的中完数和个数
#include<stdio.h>
intmain()
{
int i;
int j;
int count=0;
int sum=0;
for(i=1;i<=1000;i++)
{
for(j=1;j<=i/2;j++)
{
if(i%j==0)
{
sum+=j;
}
}
if(sum==i)
{
count++;
printf("perfect number=%d\n",i);
}
sum=0;
}
printf("count=%d\n",count);
return 0;
}
3.1建三角形
*
* *
* **
* ** *
* ** * *
#include<stdio.h>
intmain()
{
int i;
int j;
int rows;
printf("please input number:\n");
scanf("%d",&rows);
for(i=1;i<=rows;i++)
{
for(j=1;j<=i;j++)
{
printf("*");
}
printf("\n");
}
return 0;
}
3.2打印倒三角形
* ** * *
* ** *
* **
* *
*
#include<stdio.h>
intmain()
{
int i;
int j;
int rows;
printf("please input number:\n");
scanf("%d",&rows);
for(i=1;i<=rows;i++) * for(i=rows;i>=1;i--)
{
for(j=5;j>=i;j--) for(j=1;j<=i;j++) *
{
printf("*");
}
printf("\n");
}
return 0;
}
3.3建数字三角形
1
1 2
1 23
1 23 4
1 23 4 5
#include<stdio.h>
intmain()
{
int i;
int j;
int rows;
printf("please input number:\n");
scanf("%d",&rows);
for(i=1;i<=rows;i++)
{
for(j=1;j<=i;j++)
{
printf("%d",j);
}
printf("\n");
}
return 0;
}
3.4用 * 打印金字塔
*
* * *
* * * * *
* * * * * * *
* * * * * * * * *
#include<stdio.h>
intmain()
{
int i;
int space;
int rows;
int k=0;
printf("please input numbers:");
scanf("%d",&rows);
for(i = 1; i <= rows; i ++) * for(i=rows;i>=1;i--)*(倒金字塔)
{
for(space = 1; space<= rows - i; space ++)
{
printf(" ");
}
while(k != 2 * i - 1)
{
printf("*");
k++;
}
k=0;
printf("\n");
}
return 0;
}
3.5打印倒金字塔
#include<stdio.h>
intmain()
{
int i;
int j;
int space;
int rows;
printf("please input numbers:");
scanf("%d",&rows);
for(i = rows; i >= 1; i --)
{
for(space = 1; space <= rows - i; space++)
{
printf(" ");
}
for(j=i;j<2*i-1;j++)
{
printf("*");
}
for(j=0;j<i;j++)
{
printf("*");
}
printf("\n");
}
return 0;
}
1、计算Fibonacci数列
Fibonacci数列又称斐波那契数列,又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21。
#include<stdio.h>
intmain()
{
int n;
int count;
int t1=0;
int t2=1;
int display=0;
printf ("Enter number of terms:");
scanf ("%d",&n);
printf ("FibonacciSeries:%d+%d+",t1,t2); *先显示已有的两个数字*
count=2; *第一个和第二个数字已经给出*
while (count<n)
{
display=t1+t2;
t1=t2;
t2=display;
count++;
printf("%d+",display);
}
return 0;
}
4.2选择排序法
#include<stdio.h>
intmain()
{
int i;
int j;
int k;
int temp;
int a[10];
printf("please input 10 num:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<9;i++)
{
k=i;
for(j=i+1;j<10;j++)
{
if(a[k]>a[j])
{
k=j;
}
if(k!=i)
{
temp=a[k];
a[k]=a[i];
a[i]=temp;
}
}
}
printf("the pai xu jie guo:\n");
for(i = 0; i < 10; i++)
printf("% d",a[i]);
return 0;
}
4.3冒泡排序法
#include<stdio.h>
intmain()
{
int i;
int j;
int t;
int a[10];
printf("please input ten scores:");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<9;i++)
{
for(j=9;j>i;j--)
{
if(a[j]<a[j-1])
{
t=a[j];
a[j]=a[j-1];
a[j-1]=t;
}
}
}
printf("pai xu hou de jie guo:\n");
for(i=0;i<10;i++)
printf("% d",a[i]);
return 0;
}
5.1求最大公约数gcd(最大公因子、最大公因数)
方法之一:设两数为a、b(a>b),求a和b最大公约数(a,b)的步骤如下:用a除以b,得a÷b=q......r1(0≤r1)。若r1=0,则(a,b)=b;若r1≠0,则再用b除以r1,得b÷r1=q......r2 (0≤r2).若r2=0,则(a,b)=r1,若r2≠0,则继续用r1除以r2,……如此下去,直到能整除为止。其最后一个为被除数的余数的除数即为(a, b)。
例如:a=25,b=15,a/b=1......10,b/10=1......5,10/5=2.......0,最后一个为被除数余数的除数就是5,5就是所求最大公约数。
#include<stdio.h>
intmain()
{
int a;
int b;
int c; 余数
int gcd;
printf("please ipunt two number:");
scanf("%d %d",&a,&b);
while(a%b!=0) 辗转相除
{
c=a%b;
a=b;
b=c;
}
gcd=b;
printf("gcd=%d\n",gcd);
return 0;
}
6.将3行4列的矩阵转置
#include<stdio.h>
intmain()
{
int i;
int j;
inta[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
int b[4][3];
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
b[j][i]=a[i][j];
}
}
for(i=0;i<4;i++)
{
for(j=0;j<3;j++)
{
printf("% d",b[i][j]);
}
printf("\n"); /每打出一行换一行/
}
return 0;
}
7. 输入5个字符串,升序排列
#include<stdio.h>
#include<string.h>
intmain()
{
char a[5][20];
char temp[100];
int i;
int j;
// printf("please input string:\n"); //
for(i=0;i<5;i++)
{
gets(a[i]);
}
for(i=0;i<4;i++)
{
for(j=0;j<4-i;j++)
{
if(strcmp(a[j],a[j+1])>0)
{
strcpy(temp,a[j+1]);
strcpy(a[j+1],a[j]);
strcpy(a[j],temp);
}
}
}
printf("pai xu jie guo:\n");
for(i=0;i<5;i++)
{
printf("%s\n",a[i]);
}
return 0;
}
8. 查找某个字符在一个字符串中的位置,假设字符串中的字符是有序的,如“adfgikmnprs”中查找g的位置。(折半查找)
#include<stdio.h>
#include<string.h>
intmain()
{
char a[100];
char c;
int i;
int high;
int low=0;
int mid;
printf("please input string:\n");
gets(a);
high=strlen(a);
printf("please input you wantstring:\n");
c=getchar();
for(i=0;;i++)
{
mid=(high+low)/2;
if(a[mid]==c)
break;
if(a[mid]>c)
high=mid;
else
low=mid;
}
printf("postion=%d\n",mid+1);
return 0;
}
9.在一个字符串中删除指定字符,如“character”串中删除字符’a’;
#include<stdio.h>
#include<string.h>
intmain()
{
int i;
int j;
char a[100];
char del;
int len;
printf("please input string:\n");
gets(a);
// scanf("%s",&a);
len=strlen(a);
printf("please input detletestring:\n");
// scanf("%c",&del);
del=getchar();
for(i=0;i<len;i++)
// for(i=0;i!='\n';i++)
{
while(a[i]==del)
{
for(j=i;j<len;j++)
// for(j=i;j!='\n';j++)
{
a[j]=a[j+1];
}
}
}
for(i=0;i<len;i++)
printf("%c",a[i]);
// puts(a);
// printf("%s",a);
return 0;
}
10.在一个字符串中插入指定字符,如“character”串中第3个字符位置插入字符’g’;
#include<stdio.h>
#include <string.h>
intmain()
{
char a[100];
char c;
int pos;
int i;
int j;
int len;
printf("please input string:\n");
gets(a);
printf("please input you wangtstring:\n");
c=getchar();
printf("please input you wangtpos:\n");
scanf("%d",&pos);
/* printf("please input you wangt pos andc:\n");
scanf("%d%c",&pos,&c); */
len=strlen(a);
for(i=len;i>=pos-1;i--)
{ //把插入的位置后面的数往后移一位//
a[i+1]=a[i];
}
a[pos-1]=c; //把输入的字符放在数组中pos-1这个位置//
printf("%s",a);
// puts(a);
return 0;
}
11.编写一个模拟硬币程序,每投掷一次硬币,程序都要打印正面或者反面,计算正反面出现的次数并打印出结果
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
intmain()
{
int i;
int j;
intcount1=0;
int count2=0;
srand(time(0));
for(j=0;j<10;j++)
{
i=rand()%2; rand()是取随机数
if(i==0)
{
count1++;
}
else if(i==1)
{
count2++;
}
}
printf("count1=%d,count2=%d",count1,count2);
return 0;
}
12.求一元二次方程,ax2+bx+c=0的根,并考虑判别式的情况。
#include<stdio.h>
#include<math.h>
intmain()
{
float a;
float b;
float c;
float d;
float x1;
float x2;
printf("please input 3 number:\n");
scanf("%f %f%f",&a,&b,&c);
d=b*b-4*a*c;
if(d>=0)
{
x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(2*a);
printf("x1=%.2fx2=%.2f\n",x1,x2);
}
else
printf("no shi gen");
return 0;
}