一、
1.n的阶乘
int i=0;
int n;
int sum=1;
printf("输入n的值:");
scanf("%d",&n); //获取n的值
for(i=1;i<=n;i++)
{
sum=i*sum;//实现阶乘
}
printf("%d\n",sum);
return 0;
2.n的阶乘之和
//法一:嵌套循环
int i=0;
int j=0;
int sum_1=1;
int sum_2=0;
int n=10;
for(i=1;i<=3;i++)
{
sum_1=1;
for(j=1;j<=i;j++)
{
sum_1=j*sum_1;//阶乘
}
sum_2=sum_1+sum_2;//阶乘之和
}
printf("%d",sum_2);
return 0;
//法二:
int i=0;
int sum=1;
int sum_1=0;
for(i=1;i<=3;i++)
{
sum*=i;
sum_1+=sum;
}
printf("%d",sum_1);
return 0;
3.冒泡排序
核心在于双层嵌套循环
排分数:
int i,j,t,n;
int a[100];
printf("输入需要排序的个数:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
for(i=1; i<=n-1; i++)//n个数需要排n-1趟
{
for(j=1; j<=n-i; j++)//每一趟需要比较n-i次大小
{
if(a[j]<a[j+1])//交换位置,从小到大
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
for(i=1;i<=n;i++)//打印排好序的数字
{
printf("%d\n",a[i]);
}
return 0;
根据分数打印人名:
struct student{
char name[21];
char score;
};//创建一个结构体存放姓名和分数
int main(){
int i,j,n;
struct student a[100],t;//创建一个数组用来存放姓名和分数
printf("输入一个n:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%s %d",&a[i].name,&a[i].score);//分别存入姓名和分数
}
//排序
for(i=1;i<=n-1;i++)
{
for(j=1;j<=n-i;j++)
{
if(a[j].score<a[j+1].score)//数组中的分数进行比较
{
t=a[j];//交换保存着姓名和分数的数组
a[j]=a[j+1];
a[j+1]=t;
}
}
}
for(i=1;i<=n;i++)
{
printf("%s %d\n",a[i].name,a[i].score);//打印排好序的姓名和分数
}
return 0;
}
时间复杂度为O(n^2)