目录
数组 学生成绩排序(降序)
从键盘输入某班级学生某门课程的成绩,(学生人数不超过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;
}