大一C语言常见的一些程序

今天把自己在大一写过的一些小的练习发布一下给大家参考参考
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=&sum;
	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");
	}
}

以上为本人大一写过的一些简单程序,不喜勿喷。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

A Tiger

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值