为什么我感受不到计算机专业是建立在基础学科上的? 感觉学了高数大物这些课根本在编程上用不到,甚至有些人整个大学四年只学了Java编程就可以找到一份相当不错的工作,那既然基础学科对编程的作用如此微弱,那编程在高中甚至初中就可以开始学了吗?
时间: 2023-02-08 12:52:49 浏览: 78
在计算机专业中学习基础学科是很重要的。即使你认为这些课程在编程中没有什么用处,但是它们为你提供了一些基本的思维方式和理解能力,帮助你更好地学习和理解计算机科学。例如,学习高数可以帮助你更好地理解算法和数据结构,学习大物可以帮助你更好地理解计算机硬件。
当然,这并不意味着你必须在高中或初中就开始学习编程。学习编程的时机取决于你的兴趣和能力。但是,如果你想在计算机专业中取得成功,那么你应该尽早开始学习,并且尽量深入学习。
相关问题
大物实验不确定度的计算公式
大物实验的不确定度计算公式一般为:
$\Delta x = \sqrt{\frac{\sum_{i=1}^n (x_i - \bar{x})^2}{n(n-1)}}$
其中,$\Delta x$ 表示测量值 $x_i$ 的不确定度,$n$ 表示测量次数,$\bar{x}$ 表示测量值的平均值。
这个公式是基于样本标准差的计算公式得出的,样本标准差是一组数据的标准差,用于反映数据的离散程度。在实验中,由于测量误差的存在,同样的物理量在多次测量中往往会有不同的结果,因此需要计算出这些测量结果的平均值和标准差,以反映测量结果的可靠程度。
编程实现: 某班级共有50名学生,本学期共有5门课程,分别是高等数学、大学物理、计算机基础、C语言程序设计和马克思主义原理。请定义结构体存储学生的姓名、性别、学号和5门课程的期末考试成绩。 要求: 1)学号格式为220101~220150,有序生成;姓名和性别请在主程序中给定。 2)请利用随机数生成5门课的期末考试成绩;各门课的成绩最大值不能超过100分,最小值高于40分。 3)查找功能1:用二分(折半)查找算法实现根据学号查找该学生的各个科目成绩,输出该学生的姓名、学号、各科目成绩以及平均成绩。 4)查找功能2:用线性查找算法实现查找各个科目大于90分和小于60分的成绩,并输出相应的学生的姓名、学号和该科目成绩。 5)排序功能:根据总成绩对学生成绩进行从高到低排序,并依次输出姓名、学号、各科目成绩以及总成绩。
以下是代码实现,注释中有详细说明:
```c
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
// 定义学生结构体
struct student{
char name[20]; // 姓名
char sex[5]; // 性别
char id[10]; // 学号
int score[5]; // 各门课程成绩
float total_score; // 总成绩
};
// 二分查找学生函数
int binary_search(struct student s[], int n, char* target){
int left = 0, right = n-1;
while(left <= right){
int mid = (left + right) / 2;
if(strcmp(s[mid].id, target) == 0){
return mid; // 找到了,返回下标
}
else if(strcmp(s[mid].id, target) < 0){
left = mid + 1; // 目标在右侧
}
else{
right = mid - 1; // 目标在左侧
}
}
return -1; // 没找到,返回-1
}
// 线性查找成绩函数
void linear_search(struct student s[], int n, int low, int high){
for(int i=0; i<n; i++){
for(int j=0; j<5; j++){
if(s[i].score[j] < low || s[i].score[j] > high){
printf("姓名:%s\t学号:%s\t%s成绩:%d\n", s[i].name, s[i].id, j==0?"高数":(j==1?"大物":(j==2?"计算机基础":(j==3?"C语言程序设计":"马原"))), s[i].score[j]);
}
}
}
}
// 总成绩比较函数,用于排序
int cmp(const void* a, const void* b){
return ((struct student*)b)->total_score - ((struct student*)a)->total_score;
}
int main(){
srand(time(NULL)); // 初始化随机数种子
struct student stu[50]; // 存储学生信息
int used[50] = {0}; // 标记学号是否被使用过
char name[10][20] = {"张三","李四","王五","赵六","孙七","周八","吴九","郑十","冯十一","陈十二"}; // 姓名
char sex[10][5] = {"男","女","男","女","男","男","女","女","男","女"}; // 性别
for(int i=0; i<50; i++){
// 生成学号
int id;
do{
id = rand() % 50 + 101;
}while(used[id-101]);
used[id-101] = 1;
sprintf(stu[i].id, "220%d", id);
// 给定姓名和性别
strcpy(stu[i].name, name[i%10]);
strcpy(stu[i].sex, sex[i%10]);
// 随机生成成绩
for(int j=0; j<5; j++){
stu[i].score[j] = rand() % 61 + 40;
}
// 计算总成绩
stu[i].total_score = 0;
for(int j=0; j<5; j++){
stu[i].total_score += stu[i].score[j];
}
}
// 排序
qsort(stu, 50, sizeof(struct student), cmp);
// 输出排序结果
printf("按总成绩排名:\n");
for(int i=0; i<50; i++){
printf("姓名:%s\t学号:%s\t高数:%d\t大物:%d\t计算机基础:%d\tC语言程序设计:%d\t马原:%d\t总成绩:%.1f\n", stu[i].name, stu[i].id, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].score[3], stu[i].score[4], stu[i].total_score);
}
// 查找
char target[10];
printf("请输入要查找的学号:");
scanf("%s", target);
int index = binary_search(stu, 50, target);
if(index != -1){
printf("姓名:%s\t学号:%s\t高数:%d\t大物:%d\t计算机基础:%d\tC语言程序设计:%d\t马原:%d\t平均成绩:%.1f\n", stu[index].name, stu[index].id, stu[index].score[0], stu[index].score[1], stu[index].score[2], stu[index].score[3], stu[index].score[4], stu[index].total_score/5.0);
}
else{
printf("未找到该学生!\n");
}
printf("大于90分或小于60分的成绩:\n");
linear_search(stu, 50, 90, 100);
linear_search(stu, 50, 0, 60);
return 0;
}
```
注意:由于每次生成的随机数都是不同的,因此每次运行程序得到的结果都是不同的。