浙江大学C语言上机题及答案1
- 格式:pdf
- 大小:4.68 MB
- 文档页数:41
大学大一c语言程序设计实验室上机题全部代码答案(实验报告)大学大一C语言程序设计实验室上机题全部代码答案(实验报告)实验目的:本实验旨在让大一学生通过实际操作掌握C语言的基本语法和常见程序设计题型,提高编程能力。
实验要求:1. 学生需要在实验室中完成上机题,并编写相应的代码。
2. 要求代码具有良好的结构和规范,能够正确运行,并符合题目要求。
3. 学生需要记录代码的思路和过程,并在实验报告中进行详细说明。
实验过程:本次实验共包括以下几个上机题,分别是:1. 题目:输入两个整数,计算它们的和。
实现思路:- 首先,定义两个整型变量a和b,用来保存输入的两个整数。
- 然后,使用scanf函数分别读取两个整数的值。
- 接下来,定义一个整型变量sum,用来保存两个整数的和。
- 使用sum = a + b计算两个整数的和。
- 最后,使用printf函数将结果输出到屏幕上。
2. 题目:输入一个整数n,计算1到n之间所有整数的和。
实现思路:- 首先,定义一个整型变量n,用来保存输入的整数。
- 然后,使用scanf函数读取整数n的值。
- 接下来,定义一个整型变量sum,用来保存1到n之间所有整数的和。
- 使用for循环语句,从1循环到n,累加每个整数的值。
- 最后,使用printf函数将结果输出到屏幕上。
3. 题目:输入一个整数n,判断它是否是质数。
实现思路:- 首先,定义一个整型变量n,用来保存输入的整数。
- 然后,使用scanf函数读取整数n的值。
- 接下来,定义一个布尔型变量isPrime,用来保存n是否是质数的判断结果。
- 使用for循环语句,从2循环到n-1,判断n是否能被其中任意一个整数整除。
- 如果n能被任意一个整数整除,则将isPrime设为假;否则,将isPrime设为真。
- 最后,根据isPrime的值,使用printf函数输出相应的判断结果。
4. 题目:输入一个正整数n,输出n的所有因子。
实现思路:- 首先,定义一个整型变量n,用来保存输入的正整数。
第一周上机题1.以下语句描述了包含数学成绩的学生信息结构体及其数组a:struct student{ char name[20]; float math; };student a[10] = {{"张三", 90},{"李四",85},{"王五",73}};int count=3; // 数组中包含的学生数编写两个函数分别实现在a数组中添加和删除学生信息。
要求:1) 原数组已按数学成绩排序(降序),添加和删除学生信息后数组应仍为降序;2)以下数据用于添加:{"赵二", 96}, {"钱六",65},{"孙七",80}3) 注意:添加,删除后count数据要相应变化。
#include<iostream.h>#include<string.h>struct student{char name[20];float math;};int count=3;void add(student a[10]);void dele(student a[10]);void print(student a[]);void main(){student a[10] = {{"张三", 90},{"李四",85},{"王五",73}};int n=0;do{cout<<".................学生信息处理系统.................."<<"\n 1-删除"<<"\n 2-增加"<<"\n 3-结束\n"<<"\n请选择: ";cin>>n;if(n==1) dele(a);else if(n==2) add(a) ;else cout<<"谢谢使用本系统!\n";}while(n!=3);}void add(student a[10]){student stu;int i=0,n=count;cout<<"请输入需增加的学生信息(姓名,成绩): ";cin>>>>stu.math;while(stu.math<a[i].math && i<n) i++;//找插入的位置for(;n>i;n--) a[n]=a[n-1]; //腾位置a[i]=stu; //插入count++;print(a);}void dele(student a[10]){char name[20];int i=0,n=count;print(a);cout<<"请输入需删除学生的姓名: ";cin>>name;while(strcmp(name,a[i].name)!=0 && i<n) i++;//找人if(i>=n) cout<<"查无此人!\n";else {for(;i<n-1;i++) a[i]=a[i+1]; //删除count--;print(a);}}void print(student a[]){cout<<"\n最新学生信息: \n";for(int i=0;i<count;i++)cout<<a[i].name<<'\t'<<a[i].math<<'\n';}2.定义描述三维坐标点(x,y,z)的结构体类型变量,完成坐标点的输入和输出,并求两坐标点之间的距离。
第一次上机作业(2021):要求:独立完成,上机调试通事后上交作业提交邮件主题命名:班级学号姓名(第1次作业),例如:电1301班2王鹏(第1次作业)以附件形式将每次作业的所有程序源程序紧缩打包后提交,紧缩文件命名格式同上。
程序必需采用缩进格式1.大写字母转换成小写字母从键盘输入一个大写英文字母,输出相应的小写字母。
例:输入G输出g2.求平方根输入一个实数x,计算并输出其平方根(保留1 位小数)。
例:输入17输出The square root of is3.温度转换设计一个程序将华氏温度转换成摄氏温度c = 5/9(f-32)a)输入华氏温度(实型)b)输出的摄氏温度结果保留两位小数例:Please input Fahrenheit temperature:The corresponding Celsius temperature is4. 计算旅途时刻输入二个整数time1 和time2,表示火车的起身时刻和抵达时刻,计算并输出旅途时刻。
(输入的有效的时刻范围是0000 到2359,不需要考虑起身时刻晚于抵达时刻的情形。
)例:输入712 1411 (起身时刻是7:12,抵达时刻是14:11)输出The train journey time is 6 hours 59 minutes.5. 数字加密输入一个四位数,将其加密后输出。
方式是将该数每一名上的数字加9,然后除以10 取余,做为该位上的新数字,最后将第1 位和第3 位上的数字互换,第2 位和第4 位上的数字互换,组成加密后的新数。
例:输入1257输出The encrypted number is 4601试探题:你可否编程找出谁做的好事?有四位同窗中的一名做了好事,不留名,夸奖信来了以后,校长问这四位是谁做的好事。
⏹A说:不是我。
⏹B说:是C。
⏹C说:是D。
⏹D说:他乱说。
已知三个人说的是实话,一个人说的是谎话。
此刻要依照这些信息,找出做了好事的人。
上机实验十二指针班级学号姓名一. 实验目的和要求(1) 掌握结构、结构数组、结构指针的定义及使用;(2) 掌握简单的链表的定义及使用;(3) 掌握共用体和枚举类型的定义及使用;(4) 掌握文件的简单的定义、打开、写、关闭等操作。
二. 实验内容【实验题1】程序填空,结构类型struct score 包含一名学生的3 门学科成绩和个人平均成绩,要求输入某位学生的三门课程成绩,并计算其平均成绩。
(1) 用普通的结构变量实现#include<stdio.h>struct score{ //定义结构类型int math; //数学成绩int phys;//物理成绩int chem; //化学成绩float aver; //平均成绩};void main(){ struct score s; //定义结构变量sscanf(“%d%d%d”,&s.math,&s.phys,&s.chem);//输入s的前三个成员(三科成绩) s.aver =(float)(s.math+s.phys+s.chem)/3; //计算s的平均成绩分量printf(“aver:%.2f\n”, s.aver ); //输出s的平均成绩分量}(2) 用结构指针#include<stdio.h>struct score{ //定义结构类型int math; //数学成绩int phys;//物理成绩int chem; //化学成绩float aver; //平均成绩};void main(){ struct score s, *p; //定义结构变量s和结构指针pp= &s; //令p指向sscanf(“%d%d%d”, &p->math, &p->phys,& p->chem);//输入p的前三个分量(三科成绩)p->aver = (float)(p->math+p->phys+p->chem)/3 ; //计算p的平均成绩分量printf(“aver:%.2f\n”, p->aver ); //输出p的平均成绩分量}【实验题2】程序填空,定义一个关于平面点的结构类型,并定义一个含5个元素的结构数组,用于存放5个平面点;然后输入这些点的坐标值,并统计位于半径为3、以原点为圆心的圆之内的点的个数。
大一c语言上机考试题及答案一、选择题(每题2分,共20分)1. C语言中,以下哪个选项是正确的整型常量表示?A. 0x1AB. 1.2E3C. 0b1010D. 0'123答案:A2. 若有定义 int a=5;,则表达式 a+=a-=a*=a 执行后,变量a的值是多少?A. 0B. 25C. -5D. 125答案:C3. 下列哪个函数不能正确计算字符串长度?A. strlen()B. sizeof()C. strnlen()D. wcslen()答案:B4. C语言中,以下哪个选项是合法的数组声明?A. int a[5] = {1, 2, 3, 4, 5};B. int b[] = {1, 2, 3, 4, 5};C. int c[5] = {1, 2, 3};D. int d[5] = {1, 2, 3, 4, 5, 6};答案:B5. 下列哪个选项不是C语言中的运算符?A. +=B. ||C. &&D.答案:D6. C语言中,以下哪个选项是正确的函数声明?A. int add(int a, int b);B. void add(int a, int b);C. int add(int, int);D. void add(int a, b);答案:C7. 若有定义 int x=10;,则以下哪个表达式的结果为非零值?A. x % 2B. x / 2C. x + 2D. x - 10答案:A8. 在C语言中,以下哪个选项是正确的文件操作函数?A. fopen()B. fclose()C. fprint()D. fscan()答案:A9. 下列哪个选项不是C语言中的基本数据类型?A. intB. floatC. charD. string答案:D10. C语言中,以下哪个选项是正确的结构体声明?A. struct Student {int id;char name[20];};B. struct Student student;C. struct {int id;char name[20];};D. A和C答案:D二、填空题(每题2分,共20分)1. 在C语言中,使用____关键字可以定义一个函数。
C语言上机练习参考标准答案C语言上机练习参考答案————————————————————————————————作者:————————————————————————————————日期:第1章C语言概述1-1编写程序,在屏幕上显示一个如下输出:---------------------------------Programming in C is fun!I love C language.---------------------------------Program#includemain(){ printf("---------------------------------\n");printf("Programming in C is fun!\n");printf("I love C language.\n");printf("---------------------------------\n");}1-2编写程序,在屏幕上显示一个如下图案:* * * ** * ** **Program (1)#includemain(){ printf("* * * *\n");printf(" * * *\n");printf(" * *\n");printf(" *\n ");}Program (2)#includemain(){ printf("%c%4c%4c%4c\n", '*', '*', '*', '*');printf("%3c%4c%4c\n", '*', '*', '*');printf("%5c%4c\n", '*', '*');printf("%7c\n ", '*');}1-3已知某个圆的半径,编写一个程序,用来计算并显示面积。
《C语言程序设计教程》实验报告15指针和数组练习系统中完成90002-90009补充习题1.选择题(1) 在C语言程序中,若对函数类型未加显式说明,则函数的隐含类型为D 。
A. voidB. doubleC. charD. int(2) 下列程序的输出结果是_____A___。
fun(int a, int b, int c){ c = a*b; }main(){ int c;fun(2, 3, c);printf(“%d\n”, c);}A. 0B. 1C. 6D. 无法确定(3) 对于以下递归函数f,调用f(4),其返回值为 A 。
int f(int n){ if(n) return f(n-1)+n;else return n;}A. 10B. 4C. 0D. 以上均不是(4) 执行下列程序:#define MAX(x, y) (x*y)int i = 5;i = MAX(i, i+1) -7;后变量i的值应为 B 。
A. 30B. 19C.23D. 1(5) 若p1和p2都是整型指针,p1已经指向变量x,要使p2也指向x, A 是正确的。
A. p2 = p1;B. p2 = **p1;C. p2=&p1;D. p2=*p1;(6) 若变量已正确定义并且指针p已经指向变量x,则&*p相当于 C 。
A. xB. *pC. pD. *&x(7) 下列程序段的输出是 B 。
int c[] = {1, 7, 12};int *k;k=c;printf(“next k is %d”, *++k);A. 2B. 7C. 1D. 以上均不对(8) 不正确的赋值或赋初值的方式是 D 。
A. char str[] = “string”;B. char str[7] = {…s‟, ‟t‟, ‟r‟, ‟i‟, ‟n‟, ‟g‟, ‟\0‟};C. char str[10], *p = “string”;D. char str[10]; str = “string”;(9) 对于以下变量定义,D 是正确的赋值。
上机考试练习题20021程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:输入x,计算并输出下列分段函数f(x)的值(保留1位小数)。
当x 不等于0时,y = f(x) = 1/x,当x 等于0时,y = f(x) = 0。
输入输出示例:括号内是说明输入2 (repeat=2)10 (x=10)0 (x=0)输出f(10.00) = 0.1f(0.00) = 0.0#include <stdio.h>int main(void){int repeat, ri;double x, y;scanf("%d", &repeat);for(ri = 1; ri <= repeat; ri++){scanf("%lf", &x);/*---------*/if(x!=0) y=1/x;else y=0;printf("f(%.2f) = %.1f\n", x, y);}}20022程序填空,不要改变与输入输出有关的语句。
输入华氏温度,输出对应的摄氏温度。
计算公式:c = 5*(f-32)/9,式中:c 表示摄氏温度,f表示华氏温度。
资料个人收集整理,勿做商业用途输入输出示例:括号内为说明输入150 (fahr=150)输出celsius = 65#include <stdio.h>int main(void){int celsius, fahr;/*---------*/scanf(“%d”,&fahr);celsius=5.0*(fahr-32)/9;printf("celsius = %d\n", celsius);}20023程序填空,不要改变与输入输出有关的语句。
输入存款金额money、存期year 和年利率rate,根据下列公式计算存款到期时的利息interest(税前),输出时保留2位小数。