程序设计基础07-08冬
- 格式:pdf
- 大小:126.74 KB
- 文档页数:13
c语言《程序设计基础》课后习题参考答案与解析1. 习题一:编写一个C程序,输出“Hello World!”。
解析:这是一个非常简单的C程序,只需要使用printf函数输出所需的字符串即可。
```c#include <stdio.h>int main() {printf("Hello World!");return 0;}```2. 习题二:编写一个C程序,计算两个整数的和并输出结果。
解析:这个程序需要使用scanf函数从用户输入中读取两个整数,并使用printf函数输出它们的和。
```c#include <stdio.h>int main() {int num1, num2, sum;printf("请输入第一个整数:");scanf("%d", &num1);printf("请输入第二个整数:");scanf("%d", &num2);sum = num1 + num2;printf("两个整数的和为:%d", sum);return 0;}```3. 习题三:编写一个C程序,判断一个数是奇数还是偶数并输出结果。
解析:这个程序需要使用scanf函数读取用户输入的整数,并使用if-else语句判断该数的奇偶性,然后使用printf函数输出结果。
```c#include <stdio.h>int main() {int num;printf("请输入一个整数:");scanf("%d", &num);if (num % 2 == 0) {printf("该数是偶数");} else {printf("该数是奇数");}return 0;}```4. 习题四:编写一个C程序,判断一个年份是否为闰年并输出结果。
程序设计基础练习题(全部有答案版)程序设计基础练习题(全部有答案版)介绍:程序设计是计算机科学中的一门基础学科,它涉及到计算机程序的设计、编写和调试。
通过练习基础练习题,学生可以巩固和提高自己的程序设计能力。
本文将为您提供一些程序设计基础练习题,并附上答案,帮助您更好地理解和掌握程序设计的基本知识。
1. 基本输入输出题目描述:编写一个程序,要求用户输入两个数字,然后将这两个数字相加并输出结果。
```C++#include <iostream>int main() {int num1, num2, sum;std::cout << "请输入两个数字:" << std::endl;std::cin >> num1 >> num2;sum = num1 + num2;std::cout << "两个数字的和为:" << sum << std::endl;return 0;```2. 条件判断题目描述:编写一个程序,要求用户输入一个整数,然后判断该整数是否为偶数,并输出判断结果。
```Javaimport java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int num;System.out.println("请输入一个整数:");num = scanner.nextInt();if (num % 2 == 0) {System.out.println("该整数是偶数。
");} else {System.out.println("该整数不是偶数。
1简述软件工程中几个阶段,分别描述各阶段的主要工作答:一,项目计划阶段,也叫做可行性分析阶段:确定了一个软件以目前的条件可以完成,主要是经济,技术和社会条件,撰写可行性分析报告。
需求方和开发方共同探讨项目中的问题的解决方案;需要的资金,人力,物力;社会方面的影响,例如是否符合法律等;对项目的进度和预期效益进行估计。
二,项目需求分析阶段:对用户需求进行分析。
将用户的需求用逻辑的软件工程语言表达出来,设计好功能和数据库模型,编写成软件需求设计书。
这个阶段要注意的是行业的术语以及行业规则,开发的软件难免遇到不同行业,我们不是那个行业里面的人,所以对用户所在行业的需求分析的时候要正确理解他们的术语和规则。
当需求得到用户确认后记得让用户签字。
最后提醒一点,需求的变更在项目中很频繁,必须做好需求变更计划用以项目正常进行。
三,项目设计阶段:①概要设计就是设计软件的结构,包括组成模块,模块的层次结构,模块的调用关系,每个模块的功能等等。
同时,还要设计该项目的应用系统的总体数据结构和数据库结构,即应用系统要存储什么数据,这些数据是什么样的结构,它们之间有什么关系。
②详细设计阶段就是为每个模块完成的功能进行具体的描述,要把功能描述转变为精确的、结构化的过程描述。
概要设计阶段通常得到软件结构图。
详细设计阶段常用的描述方式有:流程图、N-S图、PAD图、伪代码等。
四,编码阶段:为程序员分配好编码任务,将软件的设计具体为软件代码。
这里注意的是编码语言,工具,环境和编码规范。
统一,标准的编码规范可让程序可读和易维护。
五,软件测试阶段:软件测试就是利用测试工具按照测试方案和流程对产品进行功能和性能测试,甚至根据需要编写不同的测试工具,设计和维护测试系统,对测试方案可能出现的问题进行分析和评估。
执行测试用例后,需要跟踪故障,以确保开发的产品适合需求。
测试的目的是以较小的代价发现尽可能多的错误。
要实现这个目标的关键在于设计一套出色的测试用例。
•引言•数据类型与运算符•程序控制结构目录•数组与字符串•函数与模块化程序设计•文件操作•指针与内存管理•综合案例分析01引言课程目标与要求程序设计概述程序设计的定义和重要性程序设计的基本步骤和流程程序设计语言简介程序设计语言的分类和特点程序设计语言的选择依据和建议02数据类型与运算符基本数据类型整数类型包括短整型、整型、长整型等,用于表示不同范围的整数。
浮点类型包括单精度浮点数和双精度浮点数,用于表示带有小数点的数值。
字符类型用于表示单个字符,如字母、数字、符号等。
布尔类型用于表示逻辑值,即真或假。
运算符与表达式比较运算符位运算符用于比较两个值的大小关系,如等于、大于、小于等。
用于对二进制位进行操作,如按位与、按位或等。
算术运算符逻辑运算符赋值运算符用于进行基本的数学运算,如加、减、乘、除等。
用于进行逻辑运算,如与、或、非等。
用于将表达式的值赋给变量。
数据类型转换自动类型转换强制类型转换变量与常量变量常量03程序控制结构顺序结构的概念按照程序中的语句先后顺序逐条执行,是最简单的程序控制结构。
顺序结构的实现通过编写顺序执行的语句序列来实现,每执行一条语句,程序计数器自动加1,指向下一条语句。
顺序结构的应用场景适用于一些简单的计算、数据处理和文件操作等任务。
选择结构的概念01选择结构的实现02选择结构的应用场景03循环结构的概念在程序中需要反复执行某个操作或语句序列时,可以使用循环结构。
循环结构的实现通过循环语句(如for、while语句)来实现,根据循环条件控制循环的执行次数。
循环结构的应用场景适用于需要重复执行某个操作的情况,如遍历数组、累加求和、打印输出等。
程序异常处理异常处理的概念异常处理的实现异常处理的应用场景04数组与字符串02030401一维数组的定义和初始化一维数组元素的访问和修改一维数组的遍历和一维数组的常见操作(如排序、查找等)0102030401字符串的定义和初始化02字符串的基本操作(如连接、截取、替换等)03字符串的遍历和04字符串的常见算法(如KMP 算法、Boyer-Moore 算法等)字符串及操作数组与字符串应用举例05函数与模块化程序设计函数定义函数调用返回值030201函数定义与调用参数传递方式位置参数关键字参数默认参数可变参数局部变量与全局变量局部变量变量作用域全局变量模块化程序设计思想模块化概念模块化优点模块导入与使用模块间通信06文件操作文件打开与关闭打开文件关闭文件在完成对文件的操作后,需要调用关闭文件的函数或方法,以释放系统资源并确保数据被正确写入文件。
08⼯业⼯程程序设计基础试卷(A卷,带答案)⼴东海洋⼤学 2007 —— 2008 学年第⼆学期《⼯业⼯程程序设计基础》课程试题课程号: 1410029-0√ 考试√ A 卷√ 闭卷□考查□ B 卷□开卷(答题注意事项:1、试卷内容采⽤4号或⼩4号宋体,页⾯和页码已排好,⽆需调整;2、按学校规定的阅卷要求进⾏评分;3、流⽔阅卷时,阅卷教师签名签在试卷⾸页左上⽅得分统计表实得分数栏的下⽅;4、出题时,所有题⽬集中书写,学⽣答题时,除客观题直接填在试卷上外,主观题统⼀答在所附⽩纸上。
)⼀、填空题(每空1分,共15)1.在C++中,运⾏时多态性是通过使⽤继承和虚函数实现的。
2.⽤来派⽣新类的类称为基类,⽽派⽣出的新类称为它的⼦类或派⽣类 3.如果⼀个类⾄少有⼀个纯虚函数,就称这个类为抽象类。
4.模板定义中标识类型的参数必须⽤关键字 class 修饰。
5.构造函数是对象被创建时⾃动执⾏,对象消失时⾃动执⾏的成员函数为析构函数。
6.⼀个类的成员可分为数据成员和成员函数两类。
7.继承是对象的⼀个特点,继承可分为单⼀继承和多重继承。
8.将成员函数放在类外,所⽤的作⽤域运算符为∷。
9.类的访问权限有___ 、和三种。
⼆、单项选择题(每题1分,共20分)1.设变量m ,n ,a ,b ,c ,d 均为0,执⾏(m = a==b)||(n=c==d)后,m ,n 的值是 ____D___ A. 0,0 B. 0,1 C. 1,0 D. 1,12.C 语⾔提供的预处理功能包括条件编译,其基本形式为 # XXX 标识符程序段 1 # else程序段 2班级:姓名:学号:试题共页加⽩纸张密封线GDOU-B-11-302#endif这⾥XXX可以是___D_____。
A.define或 includeB.ifdef 或includeC. ifdef 或ifndef或 defineD.ifdef或 ifndef或 if3.若a为⼆维数组,它有m列,则a[i][j]在数组中的位置是____c___A. i*m+jB. j*m+iC. i*m+j-1D. i*m+j+14.以下叙述不正确的是—D———:A.⼀个C++序可由⼀个或多个函数组成B.⼀个C++序必须包含⼀个main函数C.C++的基本组成单位是函数D.在C++中,注释说明只能位于⼀条语句的后⾯5.若⽤数组名作为函数调⽤时的实参,则传递给形参的是 A 。
•课程介绍与教学目标•程序设计基本概念•基本数据类型与运算目录•控制结构•函数与模块化设计•数组与字符串处理•指针与引用类型详解•文件操作与异常处理机制目录•数据结构与算法基础介绍01课程介绍与教学目标课程背景与意义程序设计是计算机科学的核心基础,掌握程序设计的基本概念和技能对于计算机专业学生至关重要。
随着信息技术的迅猛发展,程序设计已经成为现代社会不可或缺的技能之一,对于非计算机专业学生同样具有重要意义。
本课程旨在培养学生计算思维能力和解决实际问题的能力,为后续专业课程学习和职业发展打下坚实基础。
教学目标与要求01020304课程安排与考核方式课程安排本课程共分为理论授课、实验操作和课程设计三个环节,其中理论授课主要讲解程序设计的基本概念、原理和方法,实验操作要求学生运用所学知识完成实验任务,课程设计则要求学生综合运用所学知识完成一个完整的程序设计项目。
考核方式本课程采用平时成绩、实验成绩和期末考试成绩相结合的考核方式。
平时成绩主要考查学生的出勤率、课堂表现和作业完成情况;实验成绩主要考查学生的实验操作能力和问题解决能力;期末考试成绩则主要考查学生对课程知识的掌握程度和应用能力。
02程序设计基本概念程序与程序设计语言程序程序设计语言编译与解释解决特定问题或完成特定任务的一系列清晰指令,具有有限性、确定性、输入项、输出项和有效性等特性。
算法计算机中存储、组织数据的方式,包括数据结构评估算法性能的方法,包括时间复杂算法分析010203算法与数据结构编程的基本风格和模式,包括过程式编程、面向对象编程、函数式编程等。
编程范式指导编程的基本原则和方法,如模块化、复用性、可维护性等。
编程思想研究如何系统化、规范化、可定量化地开发和维护软件的学科。
软件工程编程范式与编程思想03基本数据类型与运算整型(int)表示整数,包括正整数、零和负整数。
浮点型(float)表示带有小数点的数值,可以表示很大或很小的数。
(072)上海大学2007-2008年冬季学期试卷 2008.3课程名:程序设计基础(C) 课程号:00863006 学分:5应试人声明:我保证遵守《上海大学学生手册》中的《上海大学考场规则》,如有考试违纪、作弊行为,愿意接受《上海大学学生考试违纪、作弊行为界定及处分规定》的纪律处分。
学号: 姓名: 学院/教师:题号 一 二 三 四 卷面 上机总分 题分 21 36 8 12 77 23 100 得分考生须知:1.试卷和答题纸上的”学号、姓名、学院、教师”都要填上;2.所有答题内容都写在答卷纸上,交卷时将试卷和答卷纸一起交上;3.不遵守上述要求者考试成绩将为零分。
4.本卷考试的得分为卷面分,电脑上机考试(另行安排)的得分为上机分,考试成绩为卷面分与上机分之和。
一、基础题(21分,第1小题3分,其它每小题2分) 1.以下所有项中哪三项是合法的C语言常量:0xff、’78’、”0”、018、e20、1e3.4、’\0’。
2.定义int x,y,z;用C语言表达式描述下述关系:x和y都不小于z;x和y至少有一个大于z。
3.计算位运算表达式的值,结果用十进制描述:~1、033&0x22。
4.已知字母’A’的ASCII码值为65,定义char c1=’E’; int c2=65; 分别写出printf(“%d”,c1); putchar(c2+32);的结果。
5.定义int x=1122,y=1123; 写出执行表达式x++>y?x--:--y后x和y 的值。
6.写出printf(“%3d*%7.2f”, 1234, 456.123); 的结果。
7.定义int i; 计算for(i=0; i*i<111; i++){ }的循环次数。
8.写出printf(“%d”, strlen(“string\097”)); 和sizeof(“string\097”)的结果(strlen( ) 为求字符串长度的库函数,sizeof为求对象存储字节数的运算符)。
9.定义struct num{ int a; float b;} s[ ]={{10, 3.0}, {3, 158.6}}, *p=s;计算s[0].b*s[1].a和 (int)(p+1)->b/p->a的值。
10.定义char *pc[]={ “Shanghai”, “Beijing”, “Guangzhou” }; int i;用循环结构写语句分行输出这些字符串。
二、阅读程序(36分,每小题4分)仔细阅读下列程序,将各程序的运行结果写在答卷纸上。
(1)程序#include <stdio.h>main(){int a, b;scanf(“%d %d”, &a, &b);a=a+b;b=a-b;a=a-b;printf(“a=%d ,b=%d\n”, a, b);}输入: 111 222输出:?(2)程序#include <stdio.h>main(){char s[80];int i;gets(s);for(i=0;s[i];i++){if(s[i]>='0'&&s[i]<='9'){s[i]='9'-(s[i]-'0');putchar(s[i]);}else putchar(‘*’);}}输入:1a2b3c4d5e6f7g8h输出:?(3)程序#include <stdio.h>void main(){int j=0,num;do{if(j>9) break;num = j*10+3;if(num%3==0)printf(“%d ”,num);j++;}while(1);}输出:?(4)程序#include <stdio.h>main(){int a[3][3]={1,2,3,4,5,6,7,8,9};int i,j;for(i=0,j=2;i<3;i++,j--)printf(“%d#”,a[i][j]);printf(“\n”);for(i=0,j=0;j<3;i++,j++)printf(“%d#”,a[i][j]);printf(“\n”);}输出:?#include <stdio.h>char* menu(int i){switch(i){case 0: return “File”;case 1: return “Edit”;case 2: return “View”;case 3: return “Quit”;}}main(){int j=0;for(;j<4;j++)printf(“%s ”,menu(j));}输出:?(6)程序void ex_s(){int av=100;static sv=100;av++; sv=sv+av;printf(“av=%d,sv=%d\n”,av,sv); }main(){int i;for(i=0;i<2;i++)ex_s();}输出:?#include <stdio.h>main(){int a[20],*p[4],i;for(i=0;i<20;i++)a[i]=i*10;for(i=0;i<4;i++)p[i]=&a[i*(i+1)];for(i=0;i<4;i++)printf(“%d ”,p[i][i]);}输出:?(8)程序#include “stdio.h”void inv(int *s, int k, int j){int t;if(k<j){t = *(s+k); *(s+k) = *(s+j); *(s+j) = t;inv(s, k+1, j-1);}}main(){int a[6], j;for(j=0;j<6;j++) scanf(“%d”, &a[j]);inv(a,0,5);for(j=0;j<6;j++) printf(“%d ”, a[j]);}输入:15 23 8 99 56 78输出:?(9)程序#include “stdio.h”main(){FILE* fp;int a[16];int i,j;fp=fopen(“test.txt”, “r”);for(i=0;i<16;i++)fscanf(fp, “%d”, &a[i]);for(i=0; i<16; i++){switch(a[i]){case 0: putchar('@'); break;case 1: putchar('&'); break;case 2: putchar('*'); break;case 3: putchar('#'); break;default: putchar('?');}if((i+1)%4==0)printf(“\n”);}}假设文件操作总是成功的,且test.txt的内容为0 1 1 01 2 2 12 3 3 23 4 4 3输出:?三、改错程序(8分,每错误点2分)下列程序各有两个错误(两个错误分别是在不同的行上,并只在有注解行号所标注的行上),按原来程序的要求,纠正错误,并将错误所在行号以及错误行完整的正确内容写在答卷纸的对应栏内。
(1)以下程序验证一个定理:任何一个整数n的立方都可以写成n 个连续奇数的和。
main(){int n,i,j,s,k,m;scanf(“%d”, &n);k=n*n*n;for(i=1;;i=i+2){/*1*/ for(s=0,j=i,m=0; m<n; m++,j=j+2)/*2*/ s=s+j; /*计算从i开始的连续的n个奇数之和*/ /*3*/ if(s==k) continue;}printf(“%d*%d*%d=%d=”,n,n,n,k);/*4*/ for(j=0;j<n;j++)/*下面打印已找到的n个连续奇数*/ {/*5*/ printf(j==0? “%d”: “+%d”,i);/*6*/ i++;}}(2)以下程序从输入的字符串str中删除指定的字符c。
#include “stdio.h”main(){char str[100],c;int i,j;printf(“please input string:”);gets(str);printf(“Please input a character:”);/*1*/ getchar(c);/*2*/ for(i=0,j=0;str[i];i++)/*3*/ if(str[i]!=c)/*4*/ str[j++]=str[i];/*5*/ str[i]='\0';printf(“After %c is deleted:”,c);puts(str);}输入str:How are you?输入c:o输出:After o is deleted: Hw are yu?四、程序填空(12分,每填空2分)阅读下列问题描述和相应的C程序,把应填入其中 (n) 处的内容写在答卷纸的对应栏内。
(1) 以下程序查找满足下述条件的三位数整数:它既是完全平方数,又有两位数字相同,比如100、144等。
main(){int n,k,a,b,c;for(n=10;;n++){k=n*n;if(______(1)_____) break;a=k/100;b= (2) ;c=k%10;if( (3) )printf(“%d=%d*%d\n”,k,n,n);}}(2)以下程序中结点node定义了一个整数的信息,函数IsPrime 的功能是判定一个整数是不是素数,是素数返回1否则返回0;函数create创建一个由10个整数构成的链表;函数del从链表中删除所有数据成员为素数的结点, 函数print输出头结点地址为head的链表信息。
#include “stdio.h”#include “stdlib.h”typedef struct node{int n;struct node* next;} NODE;int IsPrime(int n) /*判断整数n是不是素数*/{int i;if(n<2) return 0;for(i=2;i<n;i++)if(n%i==0) return 0;return 1;}NODE* create() /*创建由10个整数构成的链表*/{int i,n;NODE *head=NULL,*p;for(i=0;i<10;i++){p= (4) ;scanf(“%d”,&p->n);p->next=head;head=p;}return head;}NODE* del(NODE* head) /*删除所有素数点*/{NODE *p,*q;if(head==NULL) return NULL;for(p=head,q=p->next;q!=NULL;q=p->next){ /* 删除从第2个结点开始的整数部分是素数的结点*/ if(IsPrime(q->n)){p->next=q->next;free(q);}elsep= (5) ;}if(IsPrime(head->n)) /*处理头结点整数部分是素数的情况*/ {p= (6) ;free(head);head=p;}return head;}void print(NODE* head){NODE* p=head;if(p==NULL) printf(“ nothing”);while(p!=NULL){printf(“%d ”,p->n);p=p->next;}}main(){NODE* head;head=create();printf(“Source list: ”);print(head);printf(“\n”);head=del(head);printf(“After deleted: “);print(head);printf(“\n”);}输入:10 11 12 13 14 15 16 17 18 19输出:Source list: 19 18 17 16 15 14 13 12 11 10After deleted: 18 16 15 14 12 10(072)上海大学2007-2008年冬季学期答卷 2008.3课程名:程序设计基础(C) 课程号:00863006 学分:5应试人声明:我保证遵守《上海大学学生手册》中的《上海大学考场规则》,如有考试违纪、作弊行为,愿意接受《上海大学学生考试违纪、作弊行为界定及处分规定》的纪律处分。