一波简单练习题

目录

数组 学生成绩排序(降序)

结构体 计算学生平均成绩

 爱因斯坦跨台阶问题

 数组 删除数

 结构体 投票

 依次输出数字的每一位,并把每一位相加


数组 学生成绩排序(降序)

 

从键盘输入某班级学生某门课程的成绩,(学生人数不超过10个)存于数组中,
 具体人数从键盘输入,
编程将分数从高到低进行排序,要求在main函数中进行输入输出,排序过程用自定义函数实现

#include<stdio.h>
void paixu(int arr[20], int w)   //冒泡排序
{
	for (int a = 0; a < w-1; a++)
	{
		for (int b = 0; b < w - a - 1; b++)
		{
			if (arr[b] < arr[b+1])
			{
				int c=0;
				c = arr[b];
				arr[b] = arr[b + 1];
				arr[b + 1] = c;
			}
		}
	}
}
int main()
{
	int arr[20];
	int i = 0;
	int w = 0; 
	printf("请输入学生人数\n");
	scanf("%d", &w);
	printf("请输入学生成绩\n");
	for (i = 0; i < w; i++)
	{
		scanf("%d", &arr[i]);
	}
	paixu(arr, w);
	printf("降序排序结果\n");
	for (int x = 0; x < w; x++)
	{
		printf("%d ", arr[x]);
	}
	return 0;
}

结构体 计算学生平均成绩

今有班级学生5人,每个学生的信息如下,试编程求出学生各科的平均成绩,要求程序完整、
struct STUDENT
{
    int studentID;
    char studentName[10];
    int score[4];
};
struct STUDENT stu[5] = { {101,"zhang",90,83,72,82},{102,"wang",78,92,88,78},{103, "li", 89, 72, 98, 66 }, { 104,"zhao",78,95,87,90 }, { 105,"liu",65,80,90,75 } };

#include<stdio.h>
struct STUDENT
{
	int studentID;
	char studentName[10];
	int score[4];
};
struct STUDENT stu[5] = { {101,"zhang",90,83,72,82},{102,"wang",78,92,88,78},
	{103,"li",89,72,98,66 }, { 104,"zhao",78,95,87,90 }, { 105,"liu",65,80,90,75 } };
int main()
{

	for (int j = 0; j < 4; j++)
	{
		int sum = 0;
		float average_score = 0.0;
		for (int i = 0; i < 5; i++)
		{
			sum += stu[i].score[j];
		}
		average_score = sum / 5;
		printf("平均成绩为:%.2f\n", average_score);
	}


	return 0;
}

 爱因斯坦跨台阶问题

有一条长阶梯,若每步跨2阶,最后剩下1阶,若每步跨3阶,最后剩下2阶,若每步跨5阶,
最后剩下4阶,若每步跨6阶,则最后剩下5阶,只有每步跨7阶最后才正好1阶不剩,
请问这条台阶共有至少多少阶

#include<stdio.h>
int main()
{
	for (int i = 0; i < 200; i++)
	{
		if (i % 2 == 1)
			if (i % 3 == 2)
				if (i % 5 == 4)
					if (i % 6 == 5)
						if (i % 7 == 0)
						{
							printf("这条台阶共有至少%d阶\n", i);
							break;
					    }
	}
	return 0;
}

 数组 删除数

从键盘输入10个整数存于数组中,再从键盘任意输入一个整数x,若存在则将x删除,若x不存在则输出“不存在!”要求在main函数进行输入和输出.删除的过程在自定义函数中完成

#include<stdio.h>
void Delete(int arr[10],int j)
{
	for (; j < 9; j++)
	{
		arr[j] = arr[j + 1];//后一个覆盖前一个 如果是arr[9]则不需要覆盖
	}
}
int main()
{
	int arr[10];
	printf("请输入10个数\n");
	for (int i = 0; i < 10; i++)
	{
		scanf("%d", &arr[i]);
	}
	int x;
	printf("请输入要删除的数\n");
	scanf("%d",&x);
	int j;//接收删除的数的位置
	int judge = 0;
	for (int i = 0; i < 10; i++)
	{
		if (arr[i] == x)
		{
			judge = 1;
			j = i;
		}
	}
	if (judge == 0)
	{
		printf("不存在!\n");
	}
	else
	{
		Delete(arr, j);
		for (int i = 0; i < 9; i++)
		{
			printf("%d ", arr[i]);
		}
	}
	return 0;
}

 结构体 投票

设有三个候选人 输入候选人名字则为他投一票 假设有10人投票 候选人信息可如下描述 
struct person
{
    char name[20];
    int count;
};

#include<stdio.h>
#include<string.h>
struct person
{
	char name[20];
	int count;
};
int main()
{
	struct person A[3] = { {"wang",0},{"li",0},{"zhou",0} };
	printf("候选人有%s,%s,%s\n", A[0].name, A[1].name, A[2].name);
	for (int i = 0; i < 10; i++)
	{
		char name[20];
		scanf("%s", &name);
		for (int i = 0; i < 3; i++)
		{
			if (!strcmp(name,A[i].name))
			{
				A[i].count++;
			}
		}
	}
	for (int i = 0; i < 3; i++)
	{
		printf("%s %d\n", A[i].name, A[i].count);
	}
	return 0;
}

 依次输出数字的每一位,并把每一位相加

从键盘中任意输入一个4位数x,编程计算x的每一位数字相加之和
例如 输入x为1234 则有1234分离出其千位1百位2十位3个位4 然后计算1+2+3+4=10 并输出10

#include<stdio.h>
void chaifen(int x)
{
	if (x > 9)
	{
		chaifen(x / 10);
	}
	printf("%d ", x % 10);
}
int main()
{
	int x;
	int sum = 0;
	int c = 0;
	printf("请输入一个四位数\n");
	scanf("%d", &x);
	c = x;
	for (int i = 1; i < 5; i++)
	{
		sum += c % 10;
		c = c / 10;
	}
	chaifen(x);
	printf("%d ", sum);
	return 0;
}

 

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值