c语言输五人成绩求平均,C语言实验报告作业.doc

本章实验旨在帮助读者熟悉C程序的编辑、编译、运行流程,理解C语言的基本数据类型、运算符和表达式。通过一系列的源程序实例,学习者将掌握整型、实型常量的使用,理解预处理命令、声明、可执行语句等概念。实验涉及的关键操作包括使用命令行编译器进行程序的修改、编译、连接和运行,以及分析++和--运算符的影响。此外,还通过具体表达式分析,深入理解C语言的求值规则和混合表达式的计算过程。
摘要由CSDN通过智能技术生成

第13章 实验与指导

为了结合实际,强化操作,加强实践环节,激励创新意识,增强实验的针对性,提高程序设计的编程能力和调试能力,本章给出了与各章对应的实验题目,并给以必要的指导。

读者也可以举一反三,根据自己的学习兴趣,将自己专业领域或生活中的某些问题,作为实验题目,创造性地解决自己面临的实际问题,提高成就感和自豪感。

实验1 C程序的运行环境和运行C程序的方法

一、目的要求

1.认识在计算机系统上编辑、编译、连接和运行C程序的步骤。

2.在调试程序中观察系统提示,改正编译错误或连接错误。

3.了解C语言源程序的结构及书写格式,了解表达C语言程序的各个组成成分的术语。

二、实验内容

思考问题:什么是源程序?C语言源程序的结构是怎样的?C语言源程序的书写格式怎样?指出第1章例题的程序中哪些是注释、预处理命令、声明部分、可执行语句、函数定义、函数调用、关键字、main函数等。

1.练习进入C语言编程界面。输入下列源程序,进行修改、编译、连接和运行。应了解是用什么命令进行编译、连接和运行的。运行的结果是什么?

程序如下:

#include "stdio.h"

main ( )

{

printf("Programming is Fun.\n");

}

运行结果为:

2.输入下列源程序,进行修改、编译、连接和运行。运行的结果是什么?

程序如下:

#include "stdio.h"

main ( )

{ printf("Programming \n");

printf("is Fun.\n");

}

运行结果为:

运行结果比上题多一行,可知\n的作用是:

3.输入下列源程序,进行修改、编译、连接和运行。运行的结果是什么?

程序如下:

#include "stdio.h"

#include

main ( )

{

float x;

x=sin(3.141593/4);

printf("%f\n",x);

}

运行结果为:

语句float x; 的作用是:

实验2 数据类型、运算符与表达式

一、目的要求

1.掌握C语言的基本数据类型。

2.学会如何书写整型、实型常量,如何定义整型、实型变量。

3.掌握C语言的算术运算符、赋值运算符、逗号运算符及运算规则。

4.掌握表达式的求值规则。

二、实验内容

思考问题:数据类型、运算符、表达式在C语句中充当什么成分?什么是标识符?如何书写整型、实型、字符型常量?如何定义整型、实型、字符型变量?怎样表示字符串?如何求表达式的值?混合表达式的求值规则是怎样的?

1.输入下列源程序,进行修改、编译、连接和运行。分析++运算符。

程序如下:

#include "stdio.h"

main ( )

{

int i,j,m,n;

i=8;

j=10;

m=++i;

n=j++;

printf("%d,%d,%d,%d\n",i,j,m,n);

}

运行结果为:

前++的含义是:

后++的含义是:

2.输入下列源程序,进行修改、编译、连接和运行。分析++和--运算符。

程序如下:

#include "stdio.h"

main ( )

{

int i,j;

i=8;

j=10;

printf("%d,%d\n",i,j);

printf("%d,%d\n",i++,j--);

printf("%d,%d\n",i,j);

printf("%d,%d\n",++i,--j);

}

运行结果为:

分析如何得出此运行结果:

3. 输入下列源程序,进行修改、编译、连接和运行。分析表达式的值。

#include

main ( )

{

int a=7,b=3;

float x=2.5,y=4.7,z1,z2;

printf("z1=%f\n",x+a%3*(int)(x+y)%2/4);

printf("z2=%f\n",(float)(a+b)/2+(int)x%(int)y);

}

运行结果为:

表达式x+a%3*(int)(x+y)%2/4得到这样的结果是因为:

表达式(float)(a+b)/2+(int)x%(int)y得到这样的结果是因为:

4. 输入下列源程序,进行修改、编译、连接和运行。分析表达式的值。

#include "stdio.h"

main( )

{

int x, z;

float y, w;

x=(1+2, 5/2, -2*4, 17%4);

y=(1.+2. , 5./2. , -2.*4.);

z=(1+2, 5/2 , -2*4 , -17%4);

w=(1+2, -2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很抱歉,作为AI,我没有能力提供实验报告。但是我可以为您提供一些关于时间片轮转调度算法的基本信息和C语言实现的思路。 时间片轮转调度算法是一种常用的进程调度算法,它将CPU时间分成若干个时间片,每个进程在一个时间片内获得相同数量的CPU时间,如果进程在时间片结束之前没有执行完,则将其放入就绪队列的末尾,等待下一次执行。这样可以保证每个进程都有机会获得CPU时间,避免进程长时间占用CPU的情况,提高系统的资源利用率。 在C语言中,我们可以使用结构体来表示进程的信息,包括进程ID、进程状态、执行时间和优先级等。我们可以使用一个数组来存储所有进程的信息,并使用一个循环队列来表示就绪队列,每个时间片从队首开始执行,执行完毕后将进程放到队列尾部,直到所有进程都执行完毕。 以下是时间片轮转调度算法的C语言实现参考代码: ``` #include <stdio.h> #define MAX_PROCESS_NUM 10 #define TIME_SLICE 2 struct Process { int pid; // 进程ID int status; // 进程状态,0表示未执行,1表示正在执行,2表示已完成 int priority; // 进程优先级 int execute_time; // 进程执行时间 }; int main() { struct Process processes[MAX_PROCESS_NUM]; int ready_queue[MAX_PROCESS_NUM]; int head = 0, tail = 0; int process_num, current_time = 0; int i, j; printf("请输入进程数:"); scanf("%d", &process_num); // 初始化进程信息 for (i = 0; i < process_num; i++) { printf("请输入进程%d的信息(ID 优先级 执行时间):", i + 1); scanf("%d%d%d", &processes[i].pid, &processes[i].priority, &processes[i].execute_time); processes[i].status = 0; // 所有进程初始状态均为未执行 } // 将所有进程放入就绪队列 for (i = 0; i < process_num; i++) { ready_queue[tail++] = i; } // 时间片轮转调度 while (head != tail) { // 就绪队列不为空 int current_process = ready_queue[head]; head = (head + 1) % MAX_PROCESS_NUM; // 队首出队 if (processes[current_process].execute_time > TIME_SLICE) { // 执行一个时间片 current_time += TIME_SLICE; processes[current_process].execute_time -= TIME_SLICE; // 将进程重新放入就绪队列末尾 ready_queue[tail] = current_process; tail = (tail + 1) % MAX_PROCESS_NUM; } else { // 执行剩余时间 current_time += processes[current_process].execute_time; processes[current_process].execute_time = 0; processes[current_process].status = 2; // 进程执行完毕 // 输出进程执行信息 printf("进程%d执行完毕,执行时间:%d,优先级:%d\n", processes[current_process].pid, current_time, processes[current_process].priority); // 将已完成进程从就绪队列中删除 for (i = 0; i < tail; i++) { if (ready_queue[i] == current_process) { for (j = i; j < tail - 1; j++) { ready_queue[j] = ready_queue[j + 1]; } tail--; break; } } } } return 0; } ``` 以上代码仅供参考,具体实现方式可以根据实际情况进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值