C语言题库2015(7)

2019-04-09 09:58

STACK *CreateNode(int num); STACK *PushStack(int num); int PopStack(void); int main() {

int pushNum[5] = {111, 222, 333, 444, 555}, popNum[5], i; for (i = 0; i < 5; i++) {

PushStack(pushNum[i]);

printf(\ }

for (i = 0; i < 5; i++) {

popNum[i] = PopStack();

printf(\ }

return 0; }

/* 函数功能:生成一个新的节点,并为该节点赋初值,返回指向新的节点的指针 */ STACK *CreateNode(int num) {

STACK *p;

p = (STACK *)malloc(sizeof(STACK)); if (p == NULL) {

printf(\ exit(0); }

p->next = NULL; /* 为新建的节点指针域赋空指针 */ p->data = num; /* 为新建的节点数据区赋值 */ return p; }

/* 函数功能:将整型变量num的值压入堆栈,返回指向链表新节点的指针 */ STACK *PushStack(int num) {

if (nodeNum == 0) /* 若为首节点,则保留该节点地址在head中*/ {

head = CreateNode(num); pr = head;

nodeNum++; /* 堆栈节点数寄存器+1 */ }

else /* 若不是首节点,则将新建节点连到链表的结尾处 */ {

pr->next = CreateNode(num);

pr = pr->next;

nodeNum++; /* 堆栈节点数寄存器+1 */ }

return pr; }

/* 函数功能:将当前栈顶的数据弹出堆栈,返回从堆栈中弹出的数据 */ int PopStack(void) {

STACK *p = head; int result; for (;;) {

if (p->next == NULL) /* 查找最后一个节点 */ {

break; } else {

pr = p; /* 记录最后一个节点的前一个节点的地址 */ p = p->next;

nodeNum--; /* 堆栈节点数寄存器-1 */ } }

pr->next = NULL; /* 将末节点的前一个节点置成末节点 */ result = p->data; free(p);

return result; }

Q1330.(50分)13个人围成一圈,从第1个人开始顺序报号1、2、3,凡报到3的人退出圈子。找出最后留在圈子里的人原来的序号。要求用结构体编程实现。 程序的运行示例如下:

出圈成员及顺序: 3 6 9 12 2 7 11 4 10 5 1 8 最后的成员是: 13 参考答案

#include

#define N 13

struct person {

int number; int nextp; } link[N + 1];

int main(void) {

int i, count, h;

/* 建立队列 */ for (i = 1; i <= N; i++) {

if (i == N) {

link[i].nextp = 1; } else {

link[i].nextp = i + 1; }

link[i].number = i; }

printf(\ count = 0; h = N;

printf(\出圈成员及顺序:\ while (count < N - 1) {

i = 0;

while (i != 3) {

h = link[h].nextp; if (link[h].number) {

i++; } }

printf(\ link[h].number = 0; count++; }

printf(\最后的成员是:\ for (i = 1; i <= N; i++) {

if (link[i].number) {

printf(\

} }

return 0; }

Q1332.(10分)创建并输出一个一维数组(含20个元素),数组元素的值分别是下标的3倍多2。

**输出格式要求:\程序的运行示例如下:

2 5 8 11 14 17 20 23 26 29 32 35 38 41 44 47 50 53 56 59 参考答案

#include

main() {

int a[20], k;

for (k = 0; k < 20; k++) {

a[k] = 3 * k + 2; printf(\ } }

Q539.(10分)从键盘输入某班学生某门课的成绩(已知每班人数最多不超过40人,具体人数由键盘输入,成绩为整数),试编程计算其平均分。

**输入格式要求:\提示信息:\ **输出格式要求:\程序的运行示例如下: Input n:3

Input score:80 100 60 Average score is 80 参考答案

#include

intmain() {

inti, result;

for(i = 1; i <= 20; i++) {

result = i * i; if(result > 100) break; else

printf(\ } }

Q1158.(10分)

下面程序的功能是读取7个数(1—50)的整数值,每读取一个值,程序打印出该值个数的*。找出其中的错误,并改正之。 #include \main()

{ int i,a,n=1; while(n<=7) { do {

scanf(\ }while(a<1 && a>50); for(i=1;i<=a;i++) printf(\ printf(\ n++; } }

参考答案

#include #define N 40

int Average(int score[], int n); /* Average()函数原型 */ void ReadScore(int score[], int n); /* ReadScore()函数原型 */ int main() {

int score[N], aver, n; printf(\ scanf(\

ReadScore(score, n); /* 数组名作为函数实参调用函数ReadScore() */ aver = Average(score, n); /* 数组名作为函数实参调用函数Average() */ printf(\ return 0; }

/* 函数功能:计算n个学生成绩的平均分 */

int Average(int score[], int n) /* Average()函数定义 */ {

int i, sum = 0;

for (i = 0; i < n; i++) {

sum += score[i];


C语言题库2015(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:部编版九年级语文上册期中检测卷(含答案)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: