今天把自己在大一写过的一些小的练习发布一下给大家参考参考
1.函数形式
#include<stdio.h>
int max(int x,int y)
{if(x>y)return x;
else return y;
}
int main()
{
int a,b,c;
scanf("%d%d",&a,&b);
c=max(a,b);
printf("max=%d",c);
}
2.函数交换两个数
#include<stdio.h>
void swap(int x[ ]);
int main()
{
int i,a[2];
printf("请输入两个整数:\n");
for(i=0;i<2;i++)
scanf("%d",&a[i]);
swap(a);
for(i=0;i<2;i++)
printf("a[%d]=%d\n",i,a[i]);
}
void swap(int x[2])
{int t;
t=x[0];
x[0]=x[1];
x[1]=t;}
3.函数算阶乘
#include<stdio.h>
float fact(int n)
{
int t=1,i;
for(i=2;i<=n;i++)
t=t*i;
return t;
}
int main()
{
int a=8,sum=0,i;
for(i=1;i<=a;i++)
sum=sum+fact(a);
printf("%d\n",sum);
}
4.比大小
#include<stdio.h>
int max(int x,int y)
{if(x>y)return x;
else return y;
}
int main()
{
int a,b,c,d;
scanf("%d%d%d",&a,&b,&c);
d=max(a,max(b,c));
printf("max=%d",d);
}
5.公比数列前二十项的和
#include <stdio.h>
int main()
{
double a;
int i,p;
scanf("%lf%d",&a,&p);//用%lf而不是%f,不然精度不够
for(i=1;i<=20;i++)
{
i>1?a=a*p:a;
printf("%.0f\n",a);
}
return 0;
}
6.冒泡排序法
#include<stdio.h>
#include<string.h>
#define N 11//N表示要排序的字符数
void sort(char s[])//冒泡交换函数
{
int i,j;
char t;
for(i=1;i<N;i++)
for(j=0;j<N-i;j++)
if(s[j]>s[j+1])
{
t=s[j];
s[j]=s[j+1];
s[j+1]=t;
}
}
int len(char s[])//字符串长度
{int i;
for(i=0;s[i]!='\0';i++);
return i;
}
int main()
{
char str[]="Luozhengwei";
sort(str);
len(str);
printf("%s\nlen=%d",str,len(str));
}
//冒泡法排列数
#include"stdio.h"
void sort(int s[])
{
int i,j;
int t;
for(i=1;i<4;i++)
for(j=0;j<4-i;j++)
if(s[j]<s[j+1])
{
t=s[j];
s[j]=s[j+1];
s[j+1]=t;
}
}
int main()
{
int a[4],b[4],i,t;
for(i=0;i<4;i++)
scanf("%d",&a[i]);
sort(a);
for(i=0;i<4;i++)
printf("%2d",a[i]);
}
//冒泡排序
#include"stdio.h"
int main ()
{
int a[10],i,j,t;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<9;i++)
for(j=0;j<9-i;j++)
if(a[j+1]>a[j])
{
t=a[j+1];a[j+1]=a[j];a[j]=t;
}
for(i=0;i<10;i++)
printf("%d ",a[i]);
}
//选择排序
#include"stdio.h"
int main()
{
int i,j,a[10],k,min,t;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
{
min=a[i];k=i;
for(j=i+1;j<10;j++)
if(min>a[j])
{
min=a[j];k=j;
}
if(k!=i)
{
t=a[k];a[k]=a[i];a[i]=t;
}
}
for(i=0;i<10;i++)
printf("%d ",a[i]);
}
7.输入一个数,判断是几位数,并逆序输出
#include <stdio.h>
int main()
{
int n,count=0;
int c,s=0;
scanf("%d",&n);
do
{
c=n%10;
n=n/10;
s=s*10+c;
count+=1;
}
while(n!=0);
printf("%d digits,reverse output:%d\n",count,s);
return 0;
}
8.*菱形
#include <stdio.h>
#include <stdlib.h>//abs函数在stdlib.h中表示绝对值,fab函数在<math.h>中
int main()
{
int i,j;
for(i=1;i<=7;i++)
{
for(j=1;j<=abs(i-4);j++)
printf(" ");
for(j=1;j<=7-abs(8-2*i);j++)
printf("*");
printf("\n");
}
return 0;
}
9.输出1-100的所有素数
#include <stdio.h>
#include <math.h>
int Su(int n);//声明函数名要加分号
int main()
{
int i;
for(i=2;i<=100;i++)
if(Su(i))
printf("%d ",i);
return 0;
}
int Su(int n)
{int i,k;
for(i=2;i<=sqrt(n);i++)//sqrt函数是开平方
{if(n%i==0)
return 0;
if(i>sqrt(n))
return 1;}
}
10.输入十个数,用数组保存,并判断正数和偶数的个数
#include<stdio.h>
float fact(int n)
{
n=23;
printf("%d",n);
}
int main()
{
int s[10],n;
int i=0;
int j=0;
printf("请输入十个整数:");
for(n=1;n<=10;n++)
scanf("%d",&s[n]);
for(n=1;n<=10;n++)
{
if(s[n]>0) i++;
if(s[n]%2==0) j++;
}
printf("其中有%d个正数,有%d个偶数\n",i,j);
}
11.判断一个数是否是水仙花数
#include<stdio.h>
int fun(int num)
{
int b=0,s=0,g=0;
g=num%10; num=num/10;
s=num%10;num=num/10;
b=b%10;
if(num==g*g*g+s*s*s+b*b*b) return 1;
else
return 0;
}
int main()
{
int n;
//scanf("%d",&n);
for(n=100;n<=999;n++)
if(fun(n)==1) printf("%4d\n",n);//printf("yes\n");
//else printf("no\n");
}
12.使用单循环实现:求1!+2!+3!+4!+…+20!
#include <stdio.h>
int main()
{
int i;
double a=1,s=0;
for(i=1;i<=20;i++)
{
a=a*i;
s=s+a;
}
printf("%f\n",s);
return 0;
}
13.使用指针交换两个数的值
#include<stdio.h>
void swap(int *x,int *y)//传地址
{
int t;
t=*x;
*x=*y;
*y=t;
}
void swap1(int x,int y)//传值
{
int t;
t=x;
x=y;
y=t;
}
int main()
{int a=10,b=20;
printf("a=%d,b=%d\n",a,b);
swap(&a,&b);
//swap1(a,b);//传完值后,a,b的值并没有发生改变
printf("a=%d,b=%d",a,b);
}
14.指针版前100项累加和
#include<stdio.h>
int main()
{
int i,sum=0;
int *pi=&i,*ps=∑
for(*pi=1;*pi<=100;(*pi)++)
{
*ps=*ps+*pi;
}
printf("%d",sum);
}
15.指针交换两个数
#include<stdio.h>
int main()
{
int a, b,tmp;
int *pa=&a, *pb=&b;
scanf("%d%d",pa,pb);
if(*pa>*pb)
{
tmp=*pa;*pa=*pb;*pb=tmp;
}
printf("%d %d",*pa,*pb);
}
16.分解质因数
#include<stdio.h>
int main()
{
int n,d,q;
scanf("%d",&n);
q=n;
for(d=2;d<=q;d++)
{
while(q%d==0)
{
if(q==d)
printf("%d",d);
else
printf("%d*",d);
q=q/d;
}
}
}
17.0~1000素数
#include"stdio.h"
#include"math.h"
int main()
{
int i,j;
for(i=2;i<=1000;i++)
{
for(j=2;j<=sqrt(i);j++)
if(i%j==0) break;
if(j>sqrt(i))
printf("%5d",i);
}
}
另一种方法判断素数
int prime( int p )
{
int i,a=0;
if(p<2)return 0;
else
{for(i=2;i<p;i++)
if(p%i==0)
a++;
if(a==0)
return 1;
else return 0;
}
}
18.while实现字母大小互换
#include"stdio.h"
int main()
{
char ch;
while((ch=getchar())!='\n')
{
if(ch>='A'&&ch<='Z')
ch=ch+32;
else//if(ch>='a'&&ch<='z')
ch=ch-32;
putchar(ch);
}
}
19.用递归函数实现阶乘
#include<stdio.h>
long fact(int n);
int main()
{
int n;long f;
printf("n=");
scanf("%d",&n);
f=fact(n);
printf("%d!=%d\n",n,f);
}
long fact(int n)
{
if(n==1)return 1;//递归结束条件
else
return(n*fact(n-1));
}
20.正整数的各位数之和;
#include <stdio.h>
int main()
{
int a,i,count=0;
scanf("%d",&a);
while(a!=0)
{
i=a%10;
a=a/10;
count+=i;
}
printf("%d",count);
return 0;
}
21.生成随机数
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#define N 10
int main()
{
int a[N][N],i,j;
srand(time(NULL));
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
a[i][j]=rand()%40+10;//随机数生成的范围10-50;
printf("%4d",a[i][j]);
}
printf("\n");
}
}
以上为本人大一写过的一些简单程序,不喜勿喷。