中国海洋大学C程上机习题
- 格式:doc
- 大小:171.00 KB
- 文档页数:28
海洋大学c语言考试题及答案海洋大学C语言考试题及答案一、选择题(每题2分,共20分)1. C语言中,以下哪个关键字用于定义一个结构体?A. intB. structC. floatD. char答案:B2. 下列哪个不是C语言标准输入输出库中的函数?A. printf()B. scanf()C. get()D. puts()答案:C3. 在C语言中,数组的下标默认从哪个数字开始?A. 0B. 1C. -1D. 任意数字答案:A4. C语言中,以下哪个语句用于结束一个循环?A. continueB. breakB. returnD. exit答案:B5. 在C语言中,指针的指针是什么?A. 一个数组B. 一个指向指针的指针C. 一个函数D. 一个结构体答案:B6. 下列哪个操作符用于计算两个变量的值的乘积?A. *B. /C. %D. +答案:A7. C语言中,用于定义一个函数的关键字是?A. functionB. defC. voidD. int答案:D(通常用于返回类型,但也可以用于定义函数)8. 在C语言中,以下哪个是正确的字符串字面量?A. "Hello World"B. 'Hello World'C. hello worldD. Hello World答案:A9. 在C语言中,哪个函数用于获取一个字符的ASCII码值?A. getchar()B. putchar()C. ord()D. ascii()答案:A10. 下列哪个是C语言中的合法标识符?A. classB. 2variableC. VariableNameD. #include答案:C二、填空题(每空3分,共30分)11. C语言中,用于计算两个整数的平均值的函数是______。
答案:average12. 当一个变量的值需要在函数之间共享时,可以使用________关键字。
答案:static13. 在C语言中,________语句允许程序跳过当前循环的剩余部分,直接开始下一次循环。
1. 编写函数long fun(long x),它的功能是:将长整型参数x中每一位上为偶数的数依次取出,构成一个新数返回。
高位仍在高位,低位仍在低位。
例如:下面程序运行时输入:2,程序输出:24802.#include<>long fun(long x){long i,m,sum=0;int j=0,n;for(i=x;i>0;){m=i%10;i=i/10;if(m%2==0){j++;for(n=1;n<j;n++)m=m*10;sum+=m;}}return sum;}void main(){long a,b;printf("Enter a number:");scanf("%ld",&a);b=fun(a);printf("b=%ld\n",b);}2. 编写函数void fun(int k,int *p),功能是:将参数k(2≤k≤32767)所有的不相同质因子升序写入p所指的一维数组中,以-1作为所有质因子的结束标志。
例如:下面程序运行时若输入200,输出:2 5;若输入27720,输出:2 3 5 7 11;若输入101,输出101。
#include<>#include<>void fun(int k,int *p){int i,j,t=0;double b;for(i=2;i<=k;i++) 先判断是不是质数,在判断是不是因子。
{b=sqrt(i);for(j=2;j<=b;j++)if(i%j==0)break;if(j>b&&k%i==0){p[t]=i;t++;}p[t]=-1;}}void main(){int x,a[17]={0},i;do{ printf("Enter a number(2-32767):");scanf("%d",&x);}while(x<2);fun(x,a);for(i=0;a[i]!=-1;i++)printf("%d ",a[i]);printf("\n");}3. 编写函数void fun(int *x,int n),功能是:求出长度为n的数组x中的最大数与次最大数,并把最大数和a[0]对调,次最大数与a[1]对调,其余的数保持不变。
海洋大学c语言考试题及答案一、选择题(每题2分,共20分)1. C语言中,以下哪个选项是合法的标识符?A. 2variableB. variable2C. variable-2D. variable_2答案:B2. 在C语言中,以下哪个选项是正确的整型常量?A. 0x1AB. 0x1aC. 0x1A.1D. 0x1a.1答案:A3. 下列哪个选项是C语言中的逻辑运算符?A. &&B. ||C. &&D. ||答案:A4. 在C语言中,以下哪个选项表示的是“或”逻辑运算?A. &&B. ||C. !D. ~答案:B5. C语言中,以下哪个选项是正确的字符串字面量?A. "Hello World"B. 'Hello World'C. "Hello World\n"D. 'Hello World\n'答案:A6. 在C语言中,以下哪个选项是正确的数组声明?A. int array[5] = {1, 2, 3};B. int array[] = {1, 2, 3};C. int array[5] = {1, 2, 3, 4};D. int array[5] = {1, 2, 3, 4, 5, 6};答案:B7. C语言中,以下哪个选项是正确的函数声明?A. int add(int a, int b);B. int add();C. int add(int a, int);D. int add(int, int);答案:A8. 在C语言中,以下哪个选项是正确的结构体声明?A. struct Student {int id;char name[20];};B. struct Student {int id;char name;};C. struct Student {int id;char name[20];int age;};D. struct Student {int id;char name;int age;};答案:A9. C语言中,以下哪个选项是正确的指针声明?A. int *ptr;B. int *ptr[];C. int (*ptr)[];D. int (*ptr)();答案:A10. 在C语言中,以下哪个选项是正确的文件操作?A. FILE *fp = fopen("file.txt", "r");B. FILE *fp = open("file.txt", "r");C. FILE *fp = fopen("file.txt", "w+");D. FILE *fp = open("file.txt", "w+");答案:A二、填空题(每题2分,共20分)1. C语言中,字符常量可以用单引号括起来,例如:'A'。
20XX年复习资料大学复习资料专业:班级:科目老师:日期:实验前言(建议认真阅读)一、上机实验的目的上机实验的目的是提高学生的分析问题、解决问题的能力和动手能力,通过实践环节理解C++语言的基本结构和程序设计方法。
通过亲手编程掌握C++语言编程的方法。
二、实验基本内容为了使学生在上机实验时目标明确,本实验指导书针对课程内容编写了五个实验。
学生在课内机时先完成指导书中标有“*”号的程序,理解所学的知识,在此基础上再编写其他应用程序。
指导书中的五个个实验如下:1. 函数与编译处理2. 指针与引用3. 类和对象4. 继承和派生类5. 多态性三、实验提交(特别提醒)1. 实验题目以附件形式提交,每个附件限一个源程序,附件以实验编号-题号-自己学号.cpp命名;如学号为20XXXX20XXXX20XXXX34的同学提交实验1的第5题,则附件命名方式为:1-5-20XXXX20XXXX20XXXX34.cpp,错误提交的将视为未提交。
2. 提交时间定为该次实验课的一周内,过期不再接收。
四、评分和作弊处理1. 要求提交实验题总数为6题(带“*”号),占期末总评成绩的20XX%;2. 存在抄袭和被抄袭的作业,无论抄袭与被抄袭者,本门课程平时成绩以零分记。
存在两次及两次以上抄袭和被抄袭者,本门课程以不及格记。
五、实验课要求(重点强调)1. 严禁QQ、MSN等即时软件工具聊天;2. 严紧接听手机、发送短信;3. 严紧玩游戏。
实验1 函数与编译处理一、实验目的1. 掌握函数声明、定义和使用的方法;2. 掌握形参与实参之间的对应关系;3. 掌握函数调用时,形参、实参之间的“值传递”和“引用传递”的区别;4. 掌握函数递归调用的方法;5. 掌握全局变量、局部变量、静态变量的使用方法;6. 掌握文件包含的使用方法。
二、实验内容1. 定义两个函数swap1和swap2,目的是实现两个整数的次序交换,其中swap1的参数是传递值参数,swap2的参数是引用参数,在程序中分别调用这两个函数,其输出结果如下所示:初始值:x=1,y=2调用swap1后的结果:x=1 y=2调用swap2后的结果:x=2 y=12. 编写一个函数,用来计算从键盘上输入的整数的阶乘。
中国海洋大学期末考试试题及参考答案2013-2014学年第 1 学期试题名称: C程序设计语言共 3 页第 1 页专业年级:计算机应用学号姓名授课教师名分数本试卷满分为70分一、填空题(每空1分,共10分)1、假设变量a和b均为整型,以下语句可以不借助任何变量把a、b中的值进行交换。
请填空。
a+=__________;b=a-__________;a-=___________;2、若a=1,b=4,c=3,则表达式 !(a<b)||!c&&1的值是________。
3、若i为整型变量,则以下循环执行次数是__________。
for(i=2;i==0;) printf(“%d”,i--);4、若二维数组a有m列,则在a[i][j]前的元素个数为_____________。
5、凡是函数中未指定存储类别的局部变量,其隐含的存储类别为______________。
6、设有以下宏定义:#define WIDTH 80#define LENGTH (WIDTH+40)则执行赋值语句:k=LENGTH*20;(k为int型变量)后,k的值是___________。
7、变量的指针,其含义是指该变量的______________。
8、当说明一个共用体变量时系统分配给它的内存大小是_________________________。
二、阅读以下程序,写出各程序的执行结果(每题5分,共20分)1、#include <stdio.h>2、 #include <stdio.h>void main() void main(){ int a,b c,d x; { int i,j,x=0;a=c=0; for(i=0;i<2;i++)b=1; d=20; { x++;if(a) d=d-10; for(j=0;j<=3;j++)else if(!b) {if(j%2)continue;if(!c)x=15; x++;else x=25; }printf(“%d\n”,d); x++;} }printf(“x=%d\n”,x);}结果为:结果为:授课教师命题教师或命题负责人签字院系负责人签字年月日中国海洋大学命题专用纸(附页)2013-2014学年第 1 学期试题名称:C程序设计语言共 3 页第 2 页。
C++复习题第2章 数据类型与表达式1. 数据类型的定义有什么用途?2. 注意%(整除求余)、++前后增量区别。
3. 计算中要注意类型转换机制。
第3章 程序设计初步1. 关系运算和逻辑运算的作用以及值是什么?2. 注意break与 continue的区别。
3. 掌握循环分支程序的编写。
第4章 函数4. 真正掌握函数入口参数,出口参数,函数类型,函数调用。
5. 内置函数的作用与实现条件。
6. 理解函数重载7. 默认参数的函数?8. 掌握全局变量,局部变量,静态局部变量,动态变量的区别?生命期,存储位置,初始化值9. include < > ” ”的区别。
第5章 数组1. 注意数组不要超限。
2. 数组只能在初始化时赋全值。
3. 二维数组数据存放顺序。
4. 数组名代表其首地址。
5. 掌握向函数中传递一维和二维数组的方法。
6. C中字符串基本处理函数。
7. C++中的字符串类和头文件以及使用。
第6章 指针1. 掌握指针概念与使用。
2. 掌握通过指针向函数传递一维、二维数组的方法。
3. 字符数组名,指针,字符串三者相当。
4. 二级指针。
5. 掌握引用的概念与使用。
6. 引用与指针的区别?7. 向函数传递指针和引用有什么优点?第7章 结构1. 先声明结构类型,在定义结构变量,再访问其成员。
2. 掌握结构数组,结构指针,引用,及向函数传递的方法。
掌握例题: 5.3, 5.5, 5.7, 5.8, 5.12, 6.6, 6.20, 7.2, 7.6第8章 类和对象1. 类和对象的关系。
2. 掌握类的封装性,继承性,多态性的概念及用途。
3. 面向对象的程序设计和面向过程的程序设计在思想上区别,优点?4. 掌握如何声明一个类的类型,如何实现一个类,如何使用一个类,这三部分文件的组织。
头文件,外界接口;类的源文件,类的实现;主程序,面向对象程序编写。
5. 掌握类的成员的访问属性(限定方式)的作用。
掌握类的内部访问和外部访问的真正用法。
第一章C语言概述问题与思考1.若有源程序文件t1.c,编译后生成的目标文件名是 t1.obj ,连接后生成的文件名是_t1.exe__,它们位于磁盘什么位置?(位于TC根目录下)2.程序1_3.c中输出的10!值是多少?正确答案是3628800 不变成长整形的错误答案是24320第三章数据类型、运算符与表达式问题与思考1.实验一的程序1中,语句a=1+1/2+1/3+1/4;执行后变量a的值是_1__。
怎样修改程序才能得到正确的结果?(a=1+1.0/2+1.0/3+1.0/4或a=1+1f/2+1f/3+1f/4)2.下面程序段执行后,问:变量a、b在内存中所占字节数分别为_2__、__4__,其值分别为__20__、_40__。
int a=-6.56; float b;b=(a=4*5,a*2),a+6;3.下列定义变量的语句中错误的是__D__。
A) int _int; B) double int_; C) char For; D) float US$; 4.若变量x、y已正确定义并赋值,下面符合C语言语法的表达式是_A__。
A) ++x,y=x-- B) x+1=y C) x=x+10=x+y D) double(x)/10 5.数字字符0的ASCII的值为48,下面程序运行后输出结果是___c___。
main(){char a='1',b='2';printf("%c,",b++);printf("%d\n",b-a);}A) 3,2 B) 50,2 C) 2,2 D) 2,506.设有 int x=11; 则表达式 x++*1/3 的值是___A__。
A) 3 B) 4 C) 11 D) 12第四章顺序结构程序设计问题与思考1.已有如下定义和输入语句,若要求a,b,c1,c2的值分别为5、6、A和B,当从第一列开始输入数据时,正确的数据输入方式是 __c____ (<CR>表示回车)。
第5单元循环作业2预警:在做下面作业时若算法中循环条件不正确可能会导致“死循环”,此时请按下“ctrl+break”强行终止。
一、图形类编程1.输出一个m行n列的平行四边形状(即输出m行,每行中有n个星号)。
如下图为m=6 n=10的图形。
m,n由运行时用户输入。
1.c2. 用星号输出一个钻石形状。
运行程序输入n值,则钻石型的上三角就为n行,下三角为n-1行。
如下图为n=6的图形。
2.c-------------------------------------------------------------------------------------------------------------二、数学求解题目3. 利用公式PI/4=1-1/3+1/5-1/7+... 计算PI的近似值。
(1)给定项数计算。
例如计算到分母为10000的那项为止,10000即是程序运行时用户输入的项。
3_1.c(2)给定精度计算。
例如计算到累加项(±)1/n的绝对值小于等于10-6, 0.000001即是程序运行时用户输入的精度。
3_2.c4. 编写程序求输入的两个任意正整数的最大公约数和最小公倍数。
4.c提示:可用“辗转相除法”求两个自然数m 与 n的最大公约数与最小公倍数。
辗转相除法求最大公约数的算法为:(1)对于已知两个数m 与 n,设m > n,否则m 与 n互换(2)m 除以 n得余数r(3)若r=0,则n为求得的最大公约数,算法结束,否则执行(4)(4)m←n, n←r , ,重复执行(2)求得最大公约数后,最小公倍数就等于原两个数相乘,而后除以最大公约数即为最小公倍数。
请根据上述算法求解任意两个整数的最大公约数和最小公倍数。
5. 斐波纳契数列。
5.c有一种数列:0,1,1,2,3,5,8,13,21,34,。
它以0和1开头,接下来每个数是其前两个数之和。
数学家斐波纳契(Fibonacci)首先发现并研究这种数列的性质与应用,该数列因此得名。
第一章测试1.C程序中语句的结束符是;。
()A:错B:对答案:B2.一个C程序的执行是从本程序文件的第一个函数开始,到本程序文件的最后一个函数结束。
()A:错B:对答案:A3.C语言编写的程序需要编译连接才能运行。
()A:对B:错答案:A4.构成C程序的基本单位是函数。
()A:错B:对答案:B5.没有main函数程序就无法执行。
()A:对B:错答案:B第二章测试1.“A”是合法的字符常量是。
()A:错B:对答案:B2.long是合法的用户标识符。
()A:对B:错答案:B3.在C语言中,变量所分配的内存空间大小由变量的类型决定()A:对B:错答案:A4.下面正确的int型常量表示是________。
()A:0xagB:089C:16.700答案:D5.下面错误的实型常量表示是________。
()A:62.123B:12E-88C:3.5e7.8D:.23答案:C第三章测试1.有以下程序,程序的输出结果是int main(){ int a=3; a+=a-=a*a;printf(“%d”,a); return 0;}()A:-3B:-12C:0D:9答案:B2.运行以下程序的输出结果是________。
int main(){ int x,y, z ; x=y=1;z=x++,y++,++y; printf(“%d,%d,%d”, x,y,z) ; return 0;}()A:2,3,3B:2,2,1C:2,3,1D:2,3,2答案:C3.有如下的变量定义:int i=8,a,b;double x=1.42,y=5.2;则以下符合C语言语法的表达式是________。
()A:y=i+=(b=i)B:y=x%iC:a+=a-=(b=4)(a=3)D:a=a3=2答案:D4.设有以下定义:#define d 2int a=0; double b=1.25; char c=’A’;则下面语句中错误的是________。
C 语言程序设计上机实验指导与习题参考答案仅供教师内部参考华南农业大学目录上机实验1实验1 C 语言程序初步1一实验目的1二实验内容1实验2 基本数据类型运算和表达式3一实验目的3二实验内容3实验3 基本输入与输出5一实验目的5二实验内容5实验4 选择结构程序设计4一实验目的4二实验内容4实验5 循环结构程序设计一9一实验目的9二实验内容9实验6 循环结构程序设计二15一实验目的15二实验内容15实验7 数组17一实验目的17二实验内容17实验8 字符数组的应用22一实验目的22二实验内容22实验9 函数的基本应用24 一实验目的24二实验内容24实验10 指针与结构体26一实验目的26二实验内容26*实验11 链表29一实验目的29二实验内容29*实验12 文件32一实验目的32二实验内容32上机实验实验1 C 语言程序初步一实验目的1了解所用的计算机系统的基本操作方法学会独立使用该系统2 了解在该系统上如何编辑编译连接和运行一个C 程序3 通过运行简单的C 程序初步了解C 程序的特点4 在教师的指导下学会使用JudgeOnline 实验系统二实验内容1 运行第一个C 程序[题目The first C Program]将下列程序输入TC 或VC编译连接和运行该程序void mainprintf "The first C Program\n"[具体操作步骤]以Turbo C 上的操作为例1Windows 进入后按照第一章中介绍的方法进入Turbo C2在编辑窗口中输入程序3保存程序取名为a1c4按照第一章中介绍的方法编译连接和运行程序2 在JudgeOnline 系统中提交实现了计算ab 功能的程序[题目1001计算ab]由键盘输入两个整数计算并输出两个整数的和实现该功能的程序如下void mainint a bscanf "dd" a b1 printf "d" a b1在程序编辑窗口中输入程序2保存程序取名为a2c3按照前二章中介绍的方法编译连接和运行程序4在程序运行过程中输入15 30↙↙表示输入回车符5 如果看到如下输出结果则表明1530 的结果正确如果得不到如下结果则需检查并更正程序456 按照第三章中介绍的方法进入JudgeOnline 实验系统7 显示题目列表点击题号为1001题名为计算ab的题目8 查看完题目要求后点击页面下端的sumbit 参照第二章提交程序的方法提交程序a2c9 查看评判结果如果得到accepted则该题通过否则返回第一步检查程序是否正确2实验2 基本数据类型运算和表达式一实验目的1掌握C 语言数据类型熟悉如何定义一个整型和实型的变量以及对它们赋值的方法2 掌握不同的类型数据之间赋值的规3 学会使用C 的有关算术运算符以及包含这些运算符的表达式特别是自加和自减-- 运算符的使用4 进一步熟悉C 程序的编辑编译连接和运行的过程二实验内容1 变量的定义[题目1117变量定义按要求完成程序]下面给出一个可以运行的程序但是缺少部分语句请按右边的提示补充完整缺少的语句void mainint a b 定义整型变量a 和bint i j 定义实型变量i 和ja 5b 6i 314 j iabprintf "a db di fj f\n" a b i j[具体操作步骤]1将代码补充完整2在TC 或VC上运行通过3在JudgeOnline 实验系统上提交2 赋值表达式与赋值语句[题目1118赋值表达式与赋值语句写出程序运行结果] 阅读下面程序写出运行结果void mainfloat aint b cchar d ea 35b ac 330d c3e \\printf "fddcc" abcde运行结果为35000003330J\[提示]赋值语句具有类型转换的功能但可能会改变数据3 基本运算[题目1119基本运算写出程序运行结果]阅读下面程序写出运行结果void mainint a b cfloat d 15 e fa 357b 1510c be 1510f d10printf "dddfff" abcdef运行结果为0211500000010000001500000[提示]除法分整除与普通除法之分4实验3 基本输入与输出一实验目的1熟练掌握putchargetcharprintf scanf 函数的使用方法2 掌握各种类型数据的输入输出的方法能正确使用各种格式转换符二实验内容[题目1126字符的输入与输出]编程实现由键盘输入一个字符后在屏幕上输出该字符[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]a↙↙[正确输出] [正确输出]a参考程序include "stdioh"mainchar chch getcharputchar ch[题目1127计算加法]编程实现由键盘输入一个加法式输出正确的结果两个加数均为整数[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]1020 ↙- 1560↙[正确输出] [正确输出]30 45参考程序include "stdioh"mainint a bscanf "dcd" abprintf "d" ab[题目1014求圆面积]由键盘输入圆半径r 请计算该圆的面积注取314159结果保留两位小数位另外程序只要能对r 在0 到10000 范围的情况输出正确答案即可[第一组自测数据] [键盘输入]5652 ↙[键盘输入][正确输出] 112↙1335502 [正确输出][第二组自测数据] 39408[提示]结果保留两位小数可采用printf 函数的格式控制字符来实现参考程序include "stdioh"mainfloat arearscanf "f"rarea 314159rrprintf "02f"area2[题目1015计算摄氏温度值]从键盘输入一个华氏温度值要求按格式输出其对应的摄氏温度值精确到小数点后两位数学公式描述为5C F 329[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]100↙100↙[正确输出] [正确输出]3778 3778[提示]注意公式中的除为普通除法参考程序includevoid mainfloat fcscanf "f"fc 509 f-32printf "2f"c3实验4 选择结构程序设计一实验目的1了解C 语言表示逻辑的方法以0 代表假以非0 代表真2 学会正确使用逻辑运算符和逻辑表达式3 熟练掌握if 语句和switch 语句4 结合程序掌握一些简单的算法二实验内容[题目1120判断点是否在圆]由键盘输入一个点的坐标要求编程判断这个点是否在单位圆上点在圆上输出Y 不在圆上输出N 使用小数点后3 位精度进行判断[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]07070707 ↙8>0505↙[正确输出] [正确输出]Y N[提示] 1平面上的点与圆的关系分为在圆内在圆上在圆外三种本题要求判断是否在圆上2判断两实数相等采用判断这两实数的差的绝对值小于规定误差精度本题为0001 的方法实现参考程序include "stdioh"include "mathh"void mainfloat abscanf "ff"abif fabs aabb-1 1e-3printf "Y\n"else printf "N\n"[题目1017求数的位数]由键盘输入一个不多于9 位的正整数要求输出它是几位数[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]349213 ↙10000↙[正确输出] [正确输出]6 5[提示]划定一位数二位数九位数的范围后用if else if else 语句实现判断4参考程序mainint nplacescanf "ld"nif n 99999999 place 9else if n 9999999 place 8else if n 999999 place 7else if n 99999 place 6else if n 9999 place 5else if n 999 place 4else if n 99 place 3else if n 9 place 2else place 1printf "ld\n"place[题目1018数的排序]由键盘输入三个整数a b c按从小到大的顺序输出这三个数[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]654590 ↙963 ↙[正确输出] [正确输出]456590 369参考程序includemainint abctscanf "ddd"abcif a b t aa bb tif a c t aa cc tif b c t bb cc tprintf "ddd"abc[题目1016字符变换]由键盘输入5 个字符将其中的大写字母变成小写其它类型的字符不变并按输入顺序逐个输出[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]ApPLe ↙aB 5 ↙[正确输出] [正确输出]apple ab 5[提示]下面代码实现由键盘读入一个字符并按题意处理后输出char aa getcharif a A a Z a a32putchar a5现在题目要求处理5 个字符怎么做呢请自己思考参考程序includemainchar abcdescanf "ccccc"abcdeif a Za A a a32if b Zb A b b32if c Zc A c c32if d Zd A d d32if e Ze A e e32printf "ccccc"abcde[题目1019数的整除]由键盘输入5 个整数逐个判断它们能否被27 整除能的输出YES不能的输出NO 注意输出时一个判断结果占一行5 个数的判断共占5 行[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]8 27 17577 325 54 ↙8 27 17577 325 54 ↙[正确输出] [正确输出]NO NOYES YESYES YESNO NOYES YES[提示]整除即除得余数为0参考程序include "stdioh"mainint abcdescanf "d d d d d"abcdeif a27 0 printf "YES\n" else printf "NO\n"if b27 0 printf "YES\n" else printf "NO\n"if c27 0 printf "YES\n" else printf "NO\n"if d27 0 printf "YES\n" else printf "NO\n"if e27 0 printf "YES\n" else printf "NO\n"[题目1020正负奇偶判断]由键盘输入非零整数x 判断该数正负正数输出positive 负数输出negative 接着判断该数的奇偶性奇数输出odd偶数输出even[第一组自测数据] negative[键盘输入] odd-43 ↙[第二组自测数据][正确输出] [键盘输入]698 ↙positive[正确输出] even参考程序include "stdioh"mainint nscanf "d"nif n 0 printf "negative\n"else printf "positive\n"if n2 0 printf "even\n"else printf "odd\n"[题目1023简单计算器]下面程序是实现一个简单的运算器保留两位小数点如果由键盘输入1050计算机可以输出结果6000如果输入8 *6计算机输出4800如果输入204 计算机输出500 如果输入8-6计算机输出200 请在空处填上适当的代码运行通过后并提交include "stdioh"void mainfloat abcscanf "fcf"switch opcasecase - _case _case __default printf "error"returnprintf "result " c[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]452↙501-23 ↙[正确输出] [正确输出]90 27107参考程序includeint mainchar opscanf "fcf"aopbswitch opcase c abbreakcase -c a-bbreakcase c abbreakcase c abbreakdefaultprintf "error"breakprintf "result 2f"c8实验5 循环结构程序设计一一实验目的1熟悉掌握用while 语句do-while 语句和for 语句实现循环的方法2 掌握在程序设计中用循环实现一些常用算法如穷举迭代递推等二实验内容[题目1024计算阶乘]输入正整数n计算n 结果用长整型数表示注n 123n[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]5 ↙8 ↙[正确输出] [正确输出]120 40320参考程序includemainlong in 1ascanf "ld"afor i 1i ai n niprintf "ld\n"n[题目1025计算数列和]有数列1357911现要求由键盘输入n计算输出该数列的前n 项和[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]2 ↙ 5 ↙[正确输出] [正确输出]4 259参考程序includemainlong nsum 0it 1scanf "ld"nfor i 1i nisum sumtt t2printf "ld\n"sum或includemainlong nsumscanf "ld"nsum nnprintf "ld"sum注评判系统不对程序实现细节进行分析只对运行结果进行评测[题目1026 加一行字符中的数字]由键盘输入一行字符总字符个数从1 个至80 个均有可能以回车符表示结束将其中每个数字字符所代表的数值累加起来输出结果[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]abc123↙A6H7T65↙[正确输出] [正确输出]6 24[提示] 1可以使用下面程序段逐个读入键盘输入的一行字符char chwhile ch getchar \n2 数字字符转为对应的数值可用a ch-0参考程序includemainchar cint s 0awhile c getchar \nif c 0c 9a c-48s saprintf "d"s10[题目1029求最大公约数]由键盘输入两个正整数mn mn 用长整数表示计算它们的最大公约数[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]1624↙1725↙[正确输出] [正确输出]8 1[提示]公约数是既能整除m 又能整除n 的数题目要求满足这一条件的最大的一个参考程序includemainlong rmntempscanf "ldld"mnwhile m 0r nmn mm rprintf "ld\n"n或includemainlong mntisscanf "ldld"mnt m nnmfor i t-1i 1i--if mi 0ni 0s i breakprintf "d"s[题目1030字符变换]由键盘输入一个句子总字符个数从1 个至80 个均有可能以回车符表示结束将其中的大写字符变成小写其它类型的字符不变最后输出变换后的句子[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]How Are You ↙ThiS IS My fIrSt C ProgrAm ↙[正确输出] [正确输出]how are you this is my first c program11参考程序includemainchar cwhile c getchar \nif c Ac Zc c32putchar c[题目1037计算数列和]有数列编程实现由键盘输入n计算输出数列前n 项和结果保留四位小数[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]20 ↙30 ↙[正确输出] [正确输出]326603 880403参考程序includemainint itnfloat a 2b 1s 0scanf "d"nfor i 1i nis sabt aa abb tprintf "4f\n"s[题目1044输出最小值]从键盘输入十个整数输出最小值[ 自测数据][键盘输入]12 45 76 87 5 87 43 55 99 21 ↙[正确输出]512参考程序include "stdioh"mainint itminscanf "d" minfor i 1i 10iscanf "d" tif t min min tprintf "d\n"min*[题目1031统计单词个数]由键盘输入一个句子总字符个数从1 个至80 个均有可能以回车符表示结束以空格分割单词要求输出单词的个数[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]How Are You ↙There are many students and many[正确输出] trees↙3 [正确输出]7参考程序includemainint inum 0word 0char cfor i 0 c getchar \niif c word 0else if word 0word 1numprintf "d"num*[题目1042百万富翁]一个百万富翁遇到一个陌生人陌生人找他谈了一个换钱的计划该计划如下我每天给你m 元而你第一天只需给我一分钱第二天我仍给你m 元你给我2 分钱第三天我仍给你m 元你给我4分钱依次类推你每天给我的钱是前一天的两倍直到一个月38 天百万富翁很高兴欣接受这个契约现要求编写一个程序由键盘输入m计算多少天后百万富翁开始亏钱[第一组自测数据] 18[键盘输入] [第二组自测数据]100↙[键盘输入][正确输出] 10000↙13[正确输出] 25参考程序includeincludemainint nmiscanf "d"mfor i 1i 38iif 001 pow 2i-1 -1 -im 0 breakprintf "d"i-114实验6 循环结构程序设计二一实验目的1进一步熟悉掌握用while 语句do-while 语句和for 语句实现循环的方法2 掌握在程序设计中使用多重循环二实验内容[题目1028求素数]输出2 到200 之间包括2 200 的所有素数注要求1 行1 个素数按由小到大的顺序输出[提示]采用双重循环外层循环产生2 到200 之间的数内层循环对数进行判断是否为素数参考程序includeincludemainint mkifor m 2m 200mk sqrt mfor i 2i kiif mi 0 breakif i k printf "d\n"m[题目1035打印菱形]由键盘输入正数n要求输出2n1 行的菱形图案要求菱形左边紧靠屏幕左边[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]3 ↙ 2 ↙[正确输出] [正确输出]15参考程序include "stdioh"include "mathh"mainint nijkscanf "d"nfor i 1i 2n1ik abs n1-ifor j 1j kj printf " "for j 1j 2n1-2kj printf ""printf "\n"[题目1038打印图案]由键盘输入正数n要求输出中间数字为n 的菱形图案要求菱形左边紧靠屏幕左边[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]4 ↙ 3[正确输出] [正确输出]1 1121 121 12321 12321 1234321 121 12321 1 1211参考程序includeincludemainint nijkhscanf "d"nfor i -n1i n-1ifor j 0j abs i jprintf " "for k 1k n-abs i k printf "d"kfor h n-abs i -1h 1h-- printf "d"hprintf "\n"16实验7 数组一实验目的1掌握一维数组和二维数组的定义赋值和输入输出方法2 掌握与数组有关的算法二实验内容[题目1039倒序]由键盘输入10 个整数倒序输出数字间由一个空格分隔[ 自测数据][键盘输入]70 5 14 20 19 2 99 67 13 66 ↙[正确输出]66 13 67 99 2 19 20 14 5 70参考程序includemainint a [10]int ifor i 0i 10i scanf "d"a[i]for i 9i 0i-- printf "d\n"a[i][题目1040统计不同数字个数]由键盘输入20 个整数统计不同数字的个数[ 自测数据][键盘输入]70 5 14 22 19 2 99 67 13 66 5 93 44 38 22 11 39 22 33 11↙[正确输出]16[提示]上述答案中因为5 有1 个重复数字11 有1 个重复数字22 有2 个重复数字故不同数字有16个分别是70 5 14 22 19 2 99 67 13 66 93 44 38 11 39 3317参考程序include"stdioh"mainint a [20]int itp 0for i 0i 20iscanf "d"a[i]for t 0t itif a[t] a [i] breakif t ipprintf "d"p[题目1062打印矩阵]由键盘输入一个3×4 的矩阵要求输出它的转置矩阵[ 自测数据][键盘输入] [正确输出] 1 6 9 3 1 1 11 1 02 6 1 91 9 8 9 9 0 83 2 9参考程序includemainint a [3][4]b[4][3]ijfor i 0i 3ifor j 0j 4jscanf "d"a[i][j]b[j][i] a [i][j]for i 0i 4ifor j 0j 3jprintf "d "b[i][j]printf "\n"*[题目1047冒泡排序]由键盘输入10 个数用冒泡法对10 个数从小到大排序并按格式要求输出代码如下请填充完整数字间由一个空格分隔incude "stdioh"mainint a[10] i j t18for i 0i 10iscanf "d"___________for ___________for j 0j ____jif ______________________for i 0i 10iprintf "d "a[i][ 自测数据][键盘输入]70 5 14 20 19 2 99 67 13 66 ↙[正确输出]2 5 13 14 19 20 66 67 70 99参考程序includemainint a [10]int ijtfor i 0i 10iscanf "d"a[i]for i 0i 9ifor j 0j 9-ijif a[j] a [j1]t a [j] a [j] a[j1] a[j1] tfor i 0i 10iprintf "d "a[i]*[题目1046计算高精度加法]由键盘输入两个位数很长的整数一行一个数每个数最长不超过80 位试计算并输出这两个数的和[ 自测数据][键盘输入]1XXXXXXXXXX23456789 ↙987654321098765 ↙[正确输出]1XXXXXXXXXX4455555419参考程序include "stdioh"include "stringh"mainint a [100] 0 b[100] 0 c[100] 0char s[101]int i 0n1 0n2 0 0e 0gets sn1 strlen sfor i n1-1i 0i-- a[n1-1-i] s[i]-0gets sn2 strlen sfor i n2-1i 0i-- b[n2-1-i] s[i]-0if n1 n2 n1else n2for i 0i ic[i] a[i]b[i]e 10e a[i]b[i]e 10if c[] 0 printf "d"c[]for i -1i 0i--printf "d"c[i]*[题目找矩阵中的鞍点]由键盘输入一个3 ×4 3 行4 列的矩阵输出矩阵中的鞍点即在矩阵行中最大列中最小的数若没有鞍点输出NO 字样[ 自测数据][键盘输入]87 90 110 98 ↙70 97 210 65 ↙98 45 120 30 ↙[正确输出]11020参考程序includemainint ijka[3][4]jflagfor i 0i 3ifor j 0j 4jscanf "d"a[i][j] for i 0i 3ia [i][0]j 0for j 0j 4jif a[i][j]a [i][j] j jflag 1for k 0k 3kif a [k][j]flag 0 breakif flagprintf "d" breakif flagprintf "NO"21实验8 字符数组的应用一实验目的1掌握字符数组和字符串函数的使用2 掌握与字符串处理有关的算法二实验内容[题目1121定义存贮字符串的字符数组]在下面程序中填充定义字符数组的语句使程序完整include "stringh"void mainchar s[80] 定义字符数组sstrcpy s "abcdefghij klmn"printf "s" s参考程序[题目1123字符串的输入与输出]下面程序实现从键盘读入字符串后输出到屏幕请填充必要的语句include "stdioh"void mainchar s[50]printf "Whats your name"gets s 由键盘读入字符串printf "Your name is "printf "s" s 打印字符串参考程序[题目1122字符串的合并]从键盘输入3 个字符串每个字符串以回车符做为结束标志将3 个字符串以输入先后顺序合并到字符串s 中请填空使用程序完整include "stdioh"include "stringh"mainchar s[100] ""char a [30]gets a strcat s a22gets a strcat s agets a strcat s a可以写多行代码printf "s" s[ 自测数据][键盘输入] [正确输出]123 123abc456abc456参考程序[题目1050寻找字符串]由键盘输入两个字符串假设第一个字符串必包含第二个字符串如第一个字符串为ABCDEF第二个为CDE则CDE 包含在ABCDEF 中现要求编程输出第二字符串在第一行字符串中出现的位置如果第二个字符串在第一个字符串中出现多次则以最前出现的为准[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]ABCDEFG ↙hellhello ↙DE ↙hello ↙[正确输出] [正确输出]4 5[提示]方法1建立双重循环外层循环变量指示第一个串的查找起始位置内层循环从起始位置开始判断第二个字符中是否出现在此处方法2 使用字符串函数strstr参考程序include "stdioh"mainint ijchar a [80] b[80]gets a gets bfor i 0a[i] \0ifor j 0b[j] \0jif a[ij] b[j] breakif b[j] \0 breakif a[i] \0 printf "d"i1else printf "Not Found"23实验9 函数的基本应用一实验目的1掌握定义函数的方法2 掌握函数实参与参的对应关系以及值传递的方式3 掌握函数的嵌套调用和递归调用的方法4 掌握全局变量和局部变量动态变量静态变量的概念和使用方法二实验内容[题目1059函数定义]下面是使用辗转相除法求最大公约数的程序请补充完整程序中函数的定义与调用include "stdioh"int f int m int nint rwhile r mn 0m nn rreturn nmainint a b nscanf "dd" a bprintf "d\n" f a b[题目1083编写函数计算阶乘]下面程序实现由键盘读入整数n计算并输出n 请补充完整计算阶乘的函数long fanc int along in 1for i 1i ai n nireturn nvoid mainint nscanf "d" n24printf "ld" fanc n[题目1124函数中的变量]写出下面程序的运行结果int f1 int xstatic int z 3y 0yzreturn xyzmainint a 1kfor k 0k 3k printf "4d"f1 a 程序运行结果为6 8 10*[题目1084编写递归调用函数实现十进制数转二进制数]下面程序实现由键盘输入一个正整数不大于100000000 输出其对应的二进制数原码表示请填空include "stdioh"void fun int iif i 1fun i2printf "d" i2mainint nscanf "d" nfun n25实验10 指针与结构体一实验目的1通过实验进一步掌握指针的概念会定义和使用指针变量2 能正确使用数组的指针和指向数组的指针变量3 能正确使用字符串的指针和指向字符中的指针变量4 掌握结构体类型变量的定义和使用二实验内容[题目1091交换两数由大到小输出]下面程序交换两数使两数由大到小输出请填空include "stdioh"void swap int p1 int p2int temptemp p1p1 p2p2 tempint mainint ab int papbscanf "dd" a bpa a pb bif a b swap pa pbprintf "d d\n"ab[题目1065数组中的指针]设有如下数组定义int a[3][4] 1357 9111315 17192123计算下面各项的值设数组a 的首地址为2000一个int 类型数占四个字节注意地址则输出地址变量则输出变量值要求一行一个答案不允许多余空行及空格1a[2][1] 2 a[1] 3 a 4 a 15 a 16 a 17 a[2] 18 a 1 19 a2 226参考程序include "stdioh"mainprintf "19\n"printf "2016\n"printf "2000\n"printf "2016\n"printf "2004\n"printf "2016\n"printf "2036\n"printf "2020\n"printf "21"[题目1092函数实现求字符串长度]下面程序以指针方式传递参数由函数实现求字符串长度请填空完成include "stdioh"include "stringh"int f char preturn strlen pint mainchar s[80]int iscanf "s" si f sprintf "d" i[题目1125定义结构体类型]要求定义一个名为student 的结构体类型其包含如下成员1字符数组name 最多可存放10 个字符2 字符变量sex用于记录性别3 整数类型变量num用于记录学号4 float 类型变量score 用于记录成绩并使下列代码完整定义结构体类型struct studentchar name[20]char sex。
第一章C语言概述问题与思考1.若有源程序文件t1.c,编译后生成的目标文件名是 t1.obj ,连接后生成的文件名是_t1.exe__,它们位于磁盘什么位置?(位于TC根目录下)2.程序1_3.c中输出的10!值是多少?正确答案是3628800 不变成长整形的错误答案是24320第三章数据类型、运算符与表达式问题与思考1.实验一的程序1中,语句a=1+1/2+1/3+1/4;执行后变量a的值是_1__。
怎样修改程序才能得到正确的结果?(a=1+1.0/2+1.0/3+1.0/4或a=1+1f/2+1f/3+1f/4)2.下面程序段执行后,问:变量a、b在内存中所占字节数分别为_2__、__4__,其值分别为__20__、_40__。
int a=-6.56; float b;b=(a=4*5,a*2),a+6;3.下列定义变量的语句中错误的是__D__。
A) int _int; B) double int_; C) char For; D) float US$; 4.若变量x、y已正确定义并赋值,下面符合C语言语法的表达式是_A__。
A) ++x,y=x-- B) x+1=y C) x=x+10=x+y D) double(x)/10 5.数字字符0的ASCII的值为48,下面程序运行后输出结果是___c___。
main(){char a='1',b='2';printf("%c,",b++);printf("%d\n",b-a);}A) 3,2 B) 50,2 C) 2,2 D) 2,506.设有 int x=11; 则表达式 x++*1/3 的值是___A__。
A) 3 B) 4 C) 11 D) 12第四章顺序结构程序设计问题与思考1.已有如下定义和输入语句,若要求a,b,c1,c2的值分别为5、6、A和B,当从第一列开始输入数据时,正确的数据输入方式是 __c____ (<CR>表示回车)。
int a,b;char c1,c2;scanf("%d%c%d%c",&a,&c1,&b,&c2);A) 5 A 6 B<CR> B) 5 A6B<CR> C) 5A6B<CR> D) 5A6 B<CR> 2.以下说法正确的是__df_____。
A)输入项可以为一个实型常量,如scanf(“%f”,3.5);B)只有格式控制,没有输入项,也能正确输入,如scanf(“a=%d,b=%d”);C)当输入实型数据时,格式控制部分应规定小数点后的位数,如scanf(“%4.2f”,&f);D)当输入数据时,必须指明地址,如scanf(“%f”,&f);E)可以采用不同的格式符,实现对一个实型数据以八进制或十六进制形式输入/输出。
F)整型数据不能使用%f或%lf格式符。
3.若a是int型变量,则表达式(a=5*6,a*3),a+8的值是 __38____ 。
4.若有定义:int b=7; float a=2.5,c=4.7; 则表达式 a+(int)(b/3*(int)(a+c)/2)%4的值为__5.500000___。
5.输出长整型数据使用格式符____%ld___,输出无符号的整数用格式符___%u__ ,以指数形式输出单精实数用格式符___%e___。
6.下面程序运行时输入:10 11<回车>,输出_____a=8 b=17_____。
#include<stdio.h>void main(){int a,b;scanf("%o%x",&a,&b);printf("a=%d,b=%d\n",a,b);}7.下面程序段执行时,怎样输入才能让a=10,b=20 ?__________a=10,b=20________ int a,b;scanf("a=%d,b=%d",&a,&b);8.若a和b均为int变量,以下语句的功能是______交换ab的值_______。
a+=b;b=a-b;a-=b;9.在scanf函数调用中,可以在格式字符和%之间加一星号*,它的作用是___表示本输入项在读入后不赋给相应的变量_____。
10.a++、++a、a=a+1都能实现使变量a的值增1,与之等效的表达式还有____a+=1______第五章选择控制结构问题与思考1.若执行下面的程序时从键盘上输入5,则输出结果是___B___main(){int x;scanf("%d",&x);if(x++>5)printf("%d\n",x);else printf("%d\n",x--);}A) 7 B) 6 C) 5 D) 42.已知a,b,m,n,c,d变量的定义如下,则执行完下列表达式后m,n的值为____b__ int a=3,b=4,m=0,n=0,c=3,d=4;(m=a<b)||(n=c<d);A) m=1 n=1 B) m=1 n=0 C) m=0 n=0 D) m=0 n=13.表达式(!7<5+1>0+4<5)的值是___C___A) 3 B) 2 C) 1 D) 04.假设在程序中,x,y,z均被定义成整型,且已赋大于1的值,则下列能正确表示1/(xyz)的表达式是____D__A) 1/x*y*z B)1/(x*y*z)C) 1/x/y/(float)z D) 1.0/x/y/z 5.已知字母a的ASCII十进制代码为97,则执行以下语句后的输出为___C___ char a='a';a--;printf("%d,%c\n",a+'2'-'0',a+'3'-'0');A) b,c B) a--运算不合法,故有语法错C) 98,cD) 格式描述和输出项不匹配,输出无定值6.为了避免嵌套的条件语句if-else的二义性,C语言规定:else与__B___配对。
A) 缩排位置相同的if B) 其之前最近的ifC) 其之后最近的if D) 同一行上的if7.若给定条件表达式(M)?(a++): (a--),则其中表达式M___C___A) 和(M==0)等价B) 和(M==1)等价C) 和(M!=0)等价D) 和(M!=1)等价8.若有说明语句char s='\092'; 则该语句___B___A) 使s的值包含1个字符B) 说明不合法,s的值不确定C) 使s的值包含4个字符D) 使s的值包含3个字符9.设a=1,b=2,c=3,d=4,则表达式:a<b?a:c<d?a:d的结果为___D___A) 4 B) 3 C) 2 D) 110.有如下的变量定义:int i=8,k,a,b;unsigned long w=5;double x=1.42,y=5.2;则以下符合C语言语法的表达式是___A___A) a+=a-=(b=4)*(a=3)B) x%(-3) C)a=a*3=2 D) y=float(i) 11.有以下变量定义:int k=7,x=12;则下列值为3的表达式是__d____A) x%=(k%=5) B) x%=(k-k%5)C) x%=k-k%5 D) (x%=k)-(k%=5)12.设 int a=3 ; 则表达式 a<1&& - - a>1 的运算结果和a的值分别是__b____ A) 0和2 B) 0和3 C) 1和2 D) 1和313.假定所有变量均已正确定义,下列程序段运行后x的值是__d____ ok1=1;ok2=2;ok3=3;x=15;if(!ok1) x--;else if(ok2) if(ok3) x=3;else x=4;A) 14 B) 4 C) 15 D) 314.下面程序的输出结果是__a____main(){int x=1,a=0,b=0;switch(x){case 0 :b++;case 1 :a++;case 2 :a++;b++;}printf(“a=%d,b=%d\n”,a,b);}A) a=2,b=1 B) a=1,b=1 C) a=1,b=0 D) a=2,b=215.两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果分别是__a___main( ){ int x;scanf("%d",&x);if(x++>5)printf("%d",x);else printf("%d\n",x--);}A) 7和5 B) 6和3 C) 7和4 D) 6和416.有定义:int a=1,b=3,c=5,d=4,x;则执行完下面一段程序后x的值是 _b_____。
if(a<b)if(c<d) x=1;elseif(a<c)if( b<d) x=2;else x=3;else x=6;else x=7;A) 1 B) 2 C) 3 D) 617.能正确表示a和b同时为正或同时为负的表达式是______d__。
A) (a>=0||b>=0)&&(a<0||b<0)B) (a>=0&&b>=0)&&(a<0&&b<0)C) (a+b>0)&&(a+b<=0)D) a*b>018.当a=3,b=2,c=1时,表达式f=a>b>c的值是 ___0___ 。
19.当c的值不为0 时,在下列选项中能正确将c的值赋给变量a、b的是____c____。
A) c=b=a B) (a=c)||(b=c) C) (a=c)&&(b=c) D) a=c=b20.下面程序程序后输出结果是___b__。
main(){int a=3,b=2,c=1,t;if(a>b>c) t=1;else if(a<b<c) t=0;else t=-1;printf("%d\n",t);}A) 1 B) 0 C) -1 D) 不确定的数21.以下程序运行后的输出结果是________。