文档库 最新最全的文档下载
当前位置:文档库 › c语言第一节

c语言第一节

c语言第一节
c语言第一节

一章C语言概述

一:C语言的基本常识

1 世界上第一台电脑叫“ENIAC”

2 C语言诞生之前用的是汇编语言

3 标识符是由字母、数字、下划线组成,且数字不能开头二:C语言的特点

1 32个关键字

2 9种控制语句(顺序分支循环)

3 用的小写字母编程

4 C是可移植性好的语言

C语言的特点还有很多,主要记住以上四种即可

三:简单的C语言程序介绍

例:#include /*包含命令*/

main() /*主函数*/

{ /* {} 之间的是函数体*/

printf(“Hello,World!\n”); /*输出函数*/

}

程序结果:Hello,World!

说明:1 C允许使用包含命令,一般放在程序的最前面

2main是主函数的函数名,表示这是一个主函数

3一个完整的C程序有且只有一个主函数

4printf 是输出,显示内容

5程序总是从main函数开始执行到main函数结束

6每条语句之后必须加分号

7注释:/*……*/之间表示注释,不参与编译切不能嵌套了解:1 #include 是对函数的声明,stdio是“standard input & output”的缩写,即有关标准输入输出的信息

2 void 是“空”的意思,表示没有返回值,若有return需要

返回值时,则去掉void

3 printf是标准输出

4 \n是回车换行符

练习:#include

main()

{

int a,b,sum;

a = 123;

b = 456;

sum = a + b;

printf(“sum is %d\n”,sum);

}

四:标示符的命名规则

(一)标示符:程序中所使用的变量名、函数名、类型名、数组名等有效

字符

(二)命名规则

1 必须由字母(a~z , A~Z)、数字(0~9)及下划线组成

2 数字不能开头

3 不能是关键字

4 区分大小写

5 尽量做到“顾名思义”(为了以后维护的方便)

例:以下选项中不合法的标识符是()

A) j2_KEY B) Double C) 4d D) _8_

E) print F) FOR G) &a H) _00

I) 1_1 J) 1-1 K) _11 L) 1__

M) scan N) V oid O) _3com_ P) int

Q) _1234_ R) _1_2 S) int_2_ T) sizeof 五:进制及其转换

(一)进制(从十进制开始考虑)

(二)转换

1 二进制、八进制、十六进制与十进制之间的转换

1)二进制、八进制、十六进制转换成十进制规则:

按权展开,计算多项式的和

例:(11011)2 = ()10

1*24+1*23+0*22+1*21+1*20=26

练习:(71)8= ()10

(12A)16= ()10

例:(10101.10101)2= ()10

练习:(71.17)8= ()10

(12A.12)16= ()10

2)十进制转换成二进制、八进制、十六进制规则:

整数部分和小数部分分别进行计算,然后用小数点连接

即整数部分除以基数取余数,倒叙排列;小数部分乘以

基数取整数,顺序排列

例:(19)10= ()2

练习:(19)10= ()8

(19)10= ()16

例:(38.25)10=()2

练习:(38.25)10=()8

(38.25)10=()16

2二进制与八进制之间的转换

1)二进制转换成八进制规则:小数点左侧从右向左每三位二进制数对应一位八进制数;小数点右侧从左向右每三位对

应一位八进制数

例:(1100110)2= ()8

1——1 100——4 110——6

(101010.10101)2= ()8

2)八进制转换成二进制规则:将每位上的八进制数转换成三位二进制数,用小数点连接起来

例:(766)8= ()2

7——111 6——110 6——110

(678.123)8= ()8

3二进制与十六进制之间的转换

1)二进制转换成十六进制规则:小数点左侧从右向左每四位二进制数对应一位十六进制数;小数点右侧从左向右每四位对

应一位十六进制数

例:(1100110)2= ()16

110——6 0110——6

(101010.10101)2= ()16

2)十六进制转换成二进制规则:将每位上的十六进制数转换成四位二进制数,用小数点连接起来

例:(766)16= ()2

7——0111 6——0110 6——0110

(4A.5F)16= ()2

4 思考:八进制与十六进制之间的转换?

通过二进制做中间的桥梁

北航11秋学期《C语言程序设计》在线作业

1. 以下程序的输出结果是_______.#include main( ) { int num; for( num=0;num<=2;num++) printf(―%d‖,num); } (C) A. 1 B. 123 C. 012 D. 1234 2. 设有定义语句―char s[]=‖123‖;‖,则表达式―s[3]‖的值是(C) A. 1' B. '3' C. '\0' D. 存在语法错误 3. 不能进行++和――运算的数据类型是(D) A. int型 B. long型 C. double型 D. 指针型 4. 若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是(C) A. 0 B. 8 C. -12 D. 10 5. 下列数组定义正确的是________。(D) A. int a[5],b[2,3]; B. char no(30); C. char x[]; D. int x[5]={1,2,3}; 6. 若a、b均为int型变量,且a=100,则对以下关于for循环语句: for(b=100;a!=b;++a,b++)printf(―————\n");判断正确的是(C) A. 循环体只执行一次 B. 是死循环 C. 循环体一次也不执行 D. 输出———— 7. 语句if(!i) i++;中的条件表达式―!i‖等价于(A) A. i==0 B. i!=1 C. i!=0 D. –I 8. 函数原型语句正确的是(B) A. int Function(void a); B. void Function (int); C. int Function(a); D. void int(double a); 9. 下面程序输出结果是__________. main( ) { char a[]="programming", b[]="language"; char *p1,*p2; int i; p1=a; p2=b; for(i=0;i<7;i++) if(*(p1+i)==*(p2+i)) printf("%c",*(p1+i)); } (D) A. gm B. rg C. or D. ga 10. 下面程序的输出结果是_______. main() { int x=10,y=10; printf("%d %dn",x--,--y); } (A) A. 10 9 B. 9 9 C. 9 10 D. 10 10 11. 若变量已正确定义,执行语句scanf("%d%d%d ",&k1,&k2,&k3);时,()是正确的输入。(B) A. 2030,40 B. 20 30 40 C. 20, 30 40 D. 20, 30,40 12. 设整型变量n=10,i=4,则赋值运算n%=i+1执行后,n的值是______。(D) A. 3 B. 2 C. 1 D. 0 13. 若k为整型,以下while循环()次. int k=10; while (k=0) k=k-1; (C) A. 10次 B. 无限循环 C. 一次不执行 D. 执行一次 14. 如果有char* ssl=―0123456789‖,则,sizeof(ssl)的值是(A) A. 4 B. 10 C. 11 D. 40 15. 以下不正确的C语言标识符是______。(C) A. AB1 B. _ab3 C. 4ab D. a2_b 二、判断题(共 10 道试题,共 40 分。) 1. 模运算符要求两侧均应为整型数据。(√) 2. 一个算法应该具备有穷性、确定性、输入、输出和有效性。(√) 3. 使用printf和scanf函数时,必须添加#include 命令。(╳) 4. 自增运算符和自减运算符只能用于变量,不能用于常量或表达式。(√) 5. 假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是8。(√) 6. 在定义函数中指定的形参,在未出现函数调用时,它们并不占内存中的存储单元。(√) 7. rewind函数的作用是使指针重新返回文件的开头,此函数无返回值(√) 8. C语言规定标识符可由字母、数字、下划线三种字符组成,第一个字符可以为数字或字母。(╳) 9. 一个int型变量的最大允许值为32767,如果再加1就会溢出。(√) 10. 在程序运行过程中,其值不能被改变的量称为常量(√)

计算机C语言趣味的程序设计——题目百例

Contest - 2011级C语言课程大作业 Start Time: 2012-02-19 16:25:00 End Time: 2012-03-01 22:00:00 Current Time: 2012-2-23 15:51:18 Status:Running Public

写在最前: 本文档中的题目;在不不同的编译器中可能会有提示错误,呵呵,小小的动动手改下变量的定义就可以运行了……………….. 由于能力不足..有题目未解决的…或者有错误的我会…认真听取大家的..意见的…. 呵呵……..有一两个….偷了下懒哦……… 提供原题目还有本人自己的解答的源代码。感谢大家的。。。。建议……………. 问题A: 趣味程序设计_狼追兔子 时间限制: 1 Sec 内存限制: 128 MB 提交: 341 解决: 63 [提交][状态][讨论版] 题目描述 一只兔子躲进了n个环形分布的洞的某一个中。狼在第一个洞没有找到兔子,就隔一个洞,到第三个洞去找;也没有找到,就隔两个洞,到第六个洞去找。以后每次多一个洞去找兔子……这样下去,如果一直找不到兔子,请问兔子可能在哪个洞中? 输入 有多组测试数据,读取到文件结尾符为止。每组测试数据输入n(2≤n≤100),即洞穴个数。输入到文件结尾符为止。 输出 兔子可能藏匿的洞。如果不止一个,按从小到大的顺序输出。如果不存在,输出空行。

样例输入 10 8 15 样例输出 2 4 7 9 2 4 5 7 8 9 11 12 14 提示 用一个数组a[10],对应的元素a[0],a[1],a[2]……a[9]对应表示10个洞,初值均置1。通过一个循环用“穷举法”找兔子,第n次查找对应第(n-1)%10个洞,如果在第(n-1)%10个洞中没有找到兔子,因此将数组元素a[(n-1)%10]置0值。循环完成后,检查a数组各元素(各个洞)的值,若其值仍为1,则兔子可能藏身该洞中。 #include #include int ok[110]; int main() { int n,s,i,find; while(scanf("%d",&n)!=EOF) { memset(ok,0,sizeof(ok)); for(i=1;i<=200;i++) if(!ok[find=(i*(i+1)/2)%n]) if(find==0) ok[n]=1; else ok[find]=1; for(s=0,i=1;i<=n;i++) s+=ok[i]; for(i=1,find=0;i<=n;i++) if(!ok[i]) { if(find!=(n-s-1)) { printf("%d ",i);find++;

C语言课程标准

软件技术专业核心课程标准

《C语言程序设计》课程标准 1.前言 1.1 课程类别 专业课 1.2 适用专业 软件技术专业 1.3 课程性质 必修课 1.4 设计思路 本课程是大学一年级学生第一次接触到计算机的程序设计语言,在教学方法上采用课堂讲授、演讲和上机实践相结合,以能力培养为出发点以具备程序设计能力为教学目标。理论教学以C语言为最基本、最常用的功能(数据表达和流程控制)为重点教学,以:“够用”、“必须”为标准,在掌握必要的理论知识上从问题分析、建立数学模型、算法设计和编码、测试等方面,重点讲授程序设计的思想和方法以及设计风格,要使学生能够从较高的角度认识课程的学习目的,应看重对程序设计语言(并一定只是C语言)的特点、学习方法和应用能力的培养。 在教学过程中,应通过丰富的图片、动画、演示来帮助学生学习。 本课程实践性很强,在实践教学中以培养学生的独立思考能力与动手能力为主导原则,由教师布置时间内容和要求,并展示项目的参考作品,有学生独立上机编写并调试程序,解决实际问题,教师给予必要的辅导。要求学生通过上机训练巩固、验证、扩充或综合运用课堂讲授内容,从而进一步加深对知识的理解与掌握,培养构思解决问题的思路和良好的编程能力。 在学习方法上要求学生要“弄清概念、注重实践、由浅入深、循序渐进”。 2.课程目标 学习本课程后,学生应达到以下教学目标: 1.能正确使用C语言的标识符、数据类型、常量、变量、运算符、表达式、基本语句等基础知识; 2.认识算法流程图常用符号,能看懂算法流程图; 3.能编写简单的顺序结构,选择结构和循环结构的程序; 4.能使用函数进行模块化结构的程序设计;

c语言趣味编程实例

1、编程序求5X+2Y+Z=50 的所有非负整数解。 #include int main() { int x, y, z; int count = 0; for (x = 0; 5 * x <= 50;x++) for (y = 0; 2 * y <= 50; y++) for (z = 0; z <= 50; z++) { if (5 * x + 2 * y + z == 50) { count++; printf("%d :", count); printf("x=%d,y=%d,z=%d", x, y, z); printf("\n"); } } return 0; } 2、把25个字母A、B、C、···、X、Y按如下要求打印出来:从最中间的字母M 开始打印,然后一左一右依次打印出其它字母,即M,L,N,K,O,...。 要求:初始化时按字母表顺序赋值。 #include int main() { char x[] = "ABCDEFGHIJKLMNPQRST"; int k; int n = 0; while (x[n]) { n++; if (x[n] == 'M') { k = n;break; } } printf("%c,",x[k]); for (int i = 1; i <= 12; i++) if (i <= 11) printf("%c,%c,", (x[k] - i), (x[k] + i)); else printf("%c,%c。", (x[k] - i), (x[k] + i)); printf("\n");

10 C语言课程设计_坦克大战(提高篇)

C语言课程设计--坦克大战 一、游戏介绍 玩家坦克与敌方坦克在街道中进行巷战,玩家坦克被击中、玩家指挥部被击中或游戏时间到,一局游戏结束。 二、实验目的 综合应用C语言知识和设计知识开发一款小游戏。 三、实验内容 初始界面如下图。 按下空格键后游戏开始,“空格开始”消失,载入地图,并把玩家坦克设置在指挥部左侧。 游戏时间到,比如30秒,玩家坦克被敌方坦克摧毁,或者玩家指挥部被摧毁,一局游戏结束,游戏回到初始界面,并显示上一局的分数。 游戏区域为下图中最内部的黑色区域,左上角坐标[-26, -22],右下角坐标为[26, 22]。墙为正方形,边长为4,坦克也是正方形,比墙略小一点。 玩家用WASD键控制坦克上、下、左、右运行,按J键开炮。玩家坦克碰到墙就停下来,需要调转方向才能继续前进。玩家坦克开炮,一炮就能摧毁一块墙,或者一辆敌方坦克。玩家没摧毁一辆敌方坦克,加1分。 玩家指挥部被坦克或者炮弹(不管玩家还是敌方)碰上,都会被摧毁。 每隔几秒钟,比如3秒,就会产生一辆敌方坦克。敌方坦克每隔一段时间,比如1秒,就自动开炮。敌方坦克遇到墙就会停下来。停下来的坦克,前方的墙如果被摧毁了,又能继续前进。每隔几秒钟,比如2秒,敌方坦克就会顺时针变换一个方向前进。

四、实验准备 本实验中可能用到的C 语言标准库函数和FunCode API Stdio.h Math.h String.h

FunCode API

原图的角度 获得的旋转角度即为两张图片的

五、程序初步设计 如果程序规模比较小的时候,我们习惯一上手就写代码,边写边调整。但是当程序越来越大,代码越来越多的时候,如果我们还用这种方式编程,程序写到一半的时候,你可能会恨不得重写一遍。 此,我们在写代码之前,先把程序功能细化一下,并初步设计好程序结构,包括数据结构和自定义函数。有了比较清晰的思路以后,再开始开发程序。 在本项目中,我们要操作的对象有6个:玩家坦克、敌方坦克、玩家子弹、敌方子弹、墙、玩家指挥部。 其中,墙和指挥部都比较简单,主要是前4种,而且它们有共通性:名称、速度、位置,因此,可以考虑用一个结构体来表示。此外,我们需要用一种数据结构来管理它们。由于敌方坦克、子弹的数量都无法事先确定,所以我们选择链表而不是数组来管理它们。 struct Weapon{ char szName[128]; // 精灵名称 float fPosX, fPosY; // 精灵坐标 float fSpeedX, fSpeedY; // X和Y方向上速度 float fFireTime; // 敌方坦克距下一次开炮的剩余时间 int iHp; // 生命值 int iDir; // 朝向:0 - 上方;1 - 右方;2 - 下方;3 - 左方 int iType; // 类型: 0 - 我方坦克;1 - 敌方坦克;2 - 我方 // 子弹; 3 - 敌方子弹 Weapon* pNext; // 指向下一个节点的指针 }; 其中,iDir和iType用不同整数表示不同含义。如果在小程序中,我们可以在代码里直接调用这些整数,但是想象一下下面情况: 如果你连续写了三小时代码,你还能清晰记得1表示什么含义吗? 你时不时需要找到Weapon结构体定义查看这些数字的含义,然后再引用,出错的概率有多大? 如果你一不小心,在某处搞错了,比如要处理的是敌方坦克,你却引用2,需要多少时间才能把错误找出来? 因此,在做一个比较大的程序时,我们强烈建议用定义一个枚举类型,用我们熟悉的单词来表示这种数字的含义。 enum Direction{ UP = 0, // 上方 RIGHT = 1, // 右方 DOWN = 2, // 下方

C语言经典编程

猴子吃桃 1、题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。 1.程序分析:采取逆向思维的方法,从后往前推断。 2.程序源代码: main() { int day,x1,x2; day=9; x2=1; while(day>0) {x1=(x2+1)*2;/*第一天的桃子数是第2天桃子数加1后的2倍*/ x2=x1; day--; } printf("the total is %d\n",x1); } 回文数问题 题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。 1. 程序分析:学会分解出每一位数,如下解释:(这里是一种简单的算法) 2.程序源代码: main( ) { long a,b,c,d,e,x; scanf("%ld",&x); a=x/10000;/*分解出万位*/ b=x%10000/1000;/*分解出千位*/ c=x%1000/100;/*分解出百位*/ d=x%100/10;/*分解出十位*/ e=x%10;/*分解出个位*/ if (a!=0) printf("there are 5, %ld %ld %ld %ld %ld\n",e,d,c,b,a); else if (b!=0) printf("there are 4, %ld %ld %ld %ld\n",e,d,c,b); else if (c!=0) printf(" there are 3,%ld %ld %ld\n",e,d,c); else if (d!=0) printf("there are 2, %ld %ld\n",e,d); else if (e!=0) printf(" there are 1,%ld\n",e); } 杨辉三角 题目:打印出杨辉三角形(要求打印出10行如下图) 1.程序分析: 1 1 1

C语言程序设计课程设计题目

1一元稀疏多项式的运算 问题描述:设有两个带头指针的单链表表示两个一元稀疏多项式A、B,实现两个一元稀疏多项式的处理。 实现要求: ⑴输入并建立多项式; ⑵输出多项式,输出形式为整数序列:n,c1,e1,c2,e2……c n,e n,其中n 是多项式的项数,c i,e i分别为第i项的系数和指数。序列按指数降序排列; ⑶多项式A和B相加,建立多项式A+B,输出相加的多项式; ⑷多项式A和B相减,建立多项式A-B,输出相减的多项式; ⑸多项式A和B相乘,建立多项式A×B,输出相乘的多项式; ⑹设计一个菜单,至少具有上述操作要求的基本功能。 测试数据: (1) (2x+5x8-3.1x11)+(7-5x8+11x9) (2) (6x-3-x+4.4x2-1.2x9)-(-6x-3+5.4x2+7.8x15) (3)(x+x2+x3)+0 (4)(x+x3)-(-x-x-3) 2成绩排序 假设某年级有4个班,每班有45名同学。本学期有5门课程考试,每门课程成绩是百分制。假定每个同学的成绩记录包含:学号、姓名各门课程的成绩共7项,其中学号是一个10位的字符串,每个学生都有唯一的学号,并且这4个班的成绩分别放在4个数组中,完成以下操作要求: ⑴编写一个成绩生成函数,使用随机数方法,利用随机函数生成学生的各门课程的成绩(每门课程的成绩都是0∽100之间的整数),通过调用该函数生成全部学生的成绩; ⑵编写一个平均成绩计算函数,计算每个同学的平均成绩并保存在成绩数组中; ⑶用冒泡排序法对4个班的成绩按每个同学的平均成绩的以非递增方式进

行班内排序; ⑷用选择排序法对4个班的成绩按每个同学的平均成绩的以非递增方式进行班内排序; ⑸对已按平均成绩排好序的4个班的同学的构造一个所有按平均成绩的以非递增方式排列的新的单链表; ⑹设计一个菜单,至少具有上述操作要求的基本功能。 3迷宫问题 问题描述:以一个m×n的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。 实现要求: ⑴实现一个以链表作存储结构的栈类型,然后编写一个求解迷宫的非递归程序。求得的通路以三元组(i,j,d)的形式输出,其中:(i,j)指示迷宫中的一个坐标,d表示走到下一坐标的方向。 ⑵编写递归形式的算法,求得迷宫中所有可能的通路; ⑶以方阵形式输出迷宫及其通路。 [测试数据] 迷宫的测试数据如下:左上角(1,1)为入口,右下角(8,9)为出口。 1 2 3 4 5 6 7 8 实现提示:

CC语言趣味程序设计编程百例精解

C-C++语言趣味程序设计编程百例精解() ?81.角谷猜想 日本一位中学生发现一个奇妙的“定理”,请角谷教授证明,而教授无能为力,于是产生角谷猜想。猜想的内容是:任给一个自然数,若为偶数除以2,若为奇数则乘3加1,得到一个新的自然数后按照上面的法则继续演算,若干次后得到的结果必然为1。请编程验证。 *问题分析与算法设计 本题是一个沿未获得一般证明的猜想,但屡试不爽,可以用程序验证。题目中给出的处理过程很清楚,算法不需特殊设计,可按照题目的叙述直接进行证。 *程序说明与注释 #include<stdio.h> int main() { int n,count=0; printf("Please enter number:"); scanf("%d",&n); /*输入任一整数*/ do{ if(n%2)

n=n*3+1; /*若为奇数,n乘3加1*/ printf("[%d]:%d*3+1=%d\n",++count,(n-1)/3,n); } else { n/=2; /*若为偶数n除以2*/ printf("[%d]: %d/2=%d\n",++count,2*n,n); } }while(n!=1); /*n不等于1则继续以上过程*/ } 82.四方定理 数论中著名的“四方定理”讲的是:所有自然数至多只要用四个数的平方和就可以表示。 请编程证此定理。 *问题分析与算法设计 本题是一个定理,我们不去证明它而是编程序验证。 对四个变量采用试探的方法进行计算,满足要求时输出计算结果。 *程序说明与注释 #include<stdio.h> #include<stdlib.h> int main()

北航C语言期末模拟试题2012

一、选择题 1、下列数据中,为字符串常量的是()。 A、'A' B、How do you do. C、$abc D、"house" 2、以下所列的C语言常量中,错误的是( )。 A、0xFF B、1.2e0.5 C、2L D、'\72' 3、以下程序的输出结果是()。 main() {float x=3.6; int i; i=(int)x; printf("x=%f,i=%d\n",x,i); } A、x=3.,i=4 B、x=3 i=3. C、x=3,i=3 D、x=3.,i=3 4、若k是整型,则以下程序段的执行结果是:( ) k=-3; if(k<=0) printf("####") else printf("&&&&"); A、#### B、有语法错误,无结果 C、&&&& D、####&&&& 5、若x=2,y=3则x||y的结果是( )。 A、3 B、0 C、1 D、2 6、针对下列程序段回答问题( ). for(t=1;t<=100;t++) { scanf("%d",&x); if(x<0) continue; printf("%3d",t); } A、x>=0时什么也不输出 B、最多允许输出100个非负整数 C、printf函数永远也不执行 D、当x<0时整个循环结束 7、以下程序的执行结果是( )。 main() { int num = 0; while( num <= 2 ) { num++; printf( "%d,",num ); } } A、0,1,2 B、1,2,3, C、1,2,3,4, D、1,2, 8、选择正确的输入语句( )。:(其中:char string[20];)使得string的内容为"I am student". A、scanf("%s", string); B、scanf("%c", &string); C、scanf("%s", &string); D、gets(string); 9、对以下说明语句 int a[10]={6,7,8,9,10}; 的正确理解是()。 A、将5个初值依次赋给a[6]至a[10] B、将5个初值依次赋给a[0]至a[4] C、因为数组长度与初值的个数不相同,所以此语句不正确 D、将5个初值依次赋给a[1]至a[5] 10、以下标识符中可以作为用户函数名的是(). A、struct B、int C、union D、go_to 11、以下叙述错误的是(). A、函数调用可以出现在一个表达式中 B、函数调用可以作为一个函数的形参 C、函数调用可以作为一个函数的实参 D、函数允许递归调用 12、若用数组名作为函数的实参,传递给形参的是()。 A、数组第一个元素的值

C语言编程练习题绝对经典!

马克思手稿中有一道趣味数学题:有30个人,其中有男人、女人和小孩,在一家饭馆里吃饭共花了50先令,每个男人各花3先令,每个女人各花2先令,每个小孩各花1先令,问男人、女人和小孩各有几人 解方程组 编写程序,采用穷举法求出结果。 编写程序,根据以下公式求e 的值。要求用两种方法计算: 1) for 循环,计算前50项 2)while 循环,直至最后一项的值小于10-4 从键盘中输入一个数字(不限位数),用循环语句编程判断并输出这个数字的位数。 猴子吃桃子问题。猴子第一天摘下若干个桃,当即只一半,又多吃一个。第二天早上又将剩下的一半吃掉一半,双多吃一个。以后每天早上都吃了前天剩下的一半零一个,到第10天早上 只剩下最后一个桃。问第一天摘了几个桃。 编程打印九九乘法表 青年歌手参加歌曲大奖赛,有10个评委打分,试编程求选手的平均得分(去掉一个最高分和一个最低分)。 从键盘中输入一个数字(可以包含小数点,其位数在60位以下,求其整数的有效位数,如输入,返回值为整数有效位数为3) 1) 输入数据为浮点型,不用数组,不用字符串,只有变量的算术运算实现此功能。 2) 使用数组来进行编程。 使用数组,编写一个十进制正整数转换为任意进制数的转换工具。 (大进制向小进制的转换。(方法是相除去余) 10进制327转八进制: 327/8 = 40 余数为7 40/8 = 5 余数为0 于是八进制数为507(第一位5是最后的商)) 使用数组,编写一个任意进制正整数转换为十进制的转换工具。(以2,10进制互转为例,其他请举一反三: 二进制数1101转十进制: 1×2的三次幂+1×2的二次幂+0×2的一次幂+1×2的零次幂=8+4+0+1=13) 10个小孩围成一圈分糖果,老师顺次分给每个人的糖块数为12,2,8,22,16,4,10,6,14,20。然后按下列规则调整,所有小孩同时把自己的糖果分一半给右边的小孩,糖块数变为 奇数的人,再向老师补要一块,问经过多少次调整后,大家的糖块一样多,且每人多少块。 11111111!2!3!4!5!!e n ≈++++++??????+

C语言习题课(附答案)

C语言习题课 一、单项选择题: 1.以下A是C语言中有效的变量名称。 A._abc B.2abc C.char D.a#3 变量名只能以下划线和字母开头 2.下面四个说法中错误的是B。 A.for循环不仅可以和for循环嵌套,而且可以和While循环嵌套。 B.当在循环体内执行continue语句的时候,将结束整个循环。 C.while循环最少循环0次,do-while循环最少循环1次。 D.goto语句也可以实现循环的功能。 3.在while ( x )中的x与下面条件表达式等价的是D A.x = = 0 B.x= = 1 C.x! = 1 D.x ! = 0 4.为表示关系x≥y≥z,应使用C语言表达式A A.(x>=y)&&(y>=z) B.(x>=y)AND(y>=z) C.(x>=y>=z) D.(x>=y)&(y>=z) 5.设有如下定义:int x=9,y=2,z;则语句printf(“%d\n”,z= x/y);的输出结果是C A.1 B. C.4 D.3 整形中的“/”是整除 6.若有以下语句:static char x[ ]=”12345”;static char y[ ]={‘1’,’2’,’3’,’4’,’5’};则正 确的说法是 B 。 A.x数组和y数组的长度相同 B.x数组的长度大于y数组的长度 C.x数组的长度小于y数组的长度 D.x数组与y数组等价

字符串后有一个“\0” 7.已知有定义:char ch;则下面正确的赋值语句为A。 A.ch='X' B.ch='55' C.ch="M" D.ch="55" 8.以下说法中正确的是C A.C语言程序总是从第一个的函数开始执行 B.在C语言程序中,要调用的函数必须在main()函数中定义 C.C语言程序总是从main()函数开始执行 D.C语言程序中的main()函数必须放在程序的开始部分 语言中,形参的缺省存储类型说明是: A 语言中的简单数据类型有: B A.整型实型逻辑型 B.整型实型字符型 C.整型字符型逻辑型 D.整型实型逻辑型字符型 11.以下程序段的输出结果是: C A.1 int x=3; B.3 0 do{ C.1 -2 printf("%3d",x-=2); D.死循环 }while(!(--x)); 12.以下非法的赋值语句是: A A.n=(i=2,++i); B.j++; C.++(i+1); D.x=y>0; 13.设a和b均为double型变量,且a=,b=,则表达式(int)a+b/b的值是: D A.B.6 C. D.

15秋北航《C语言程序设计》在线作业三答案

北航《语言程序设计》在线作业三 单选题判断题 一、单选题(共 10 道试题,共 40 分。) 1. 若有定义:int (*p)[3]; 则下列选项中,描述正确的是 . p是一个指向整型变量的指针 . p是一个指针数组名 . p是一个指针,它指向一个含有3个整型元素的一维数组 . 定义不合法 -----------------选择: 2. 表达式:10!=9的值是( ) . true . 非零值 . 0 . 1 -----------------选择: 3. 以下叙述中错误的是 . 对于oule类型数组,不可以直接用数组名对数组进行整体输入或输出 . 数组名代表的是数组所占存储区的首地址,其值不可改变 . 当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息 . 可以通过赋初值的方式确定数组元素的个数 -----------------选择: 4. 若有说明语句:int w=2,x=3,y=3,z=4;则表达式w>x?w:z>y?z:x的值是 . 4 . 3 . 2 . 1 -----------------选择: 5. 下面程序的输出结果是__________. min() { int x=10,y=3; printf("%",y=x/y);} . 0 . 1 . 3 . 不确定的值 -----------------选择: 6. 给出说明语句:int =100,=40,=92; 则表达式(>)? + : +的值是( ). . 192 . 1 . 132 . 100 -----------------选择:

7. 当执行以下程序时,( )。#inlue voi min() { int ; while(=5) printf("% ",--); } . 循环体将执行5次 . 循环体将执行0次 . 循环体将执行无限次 . 系统会死机 -----------------选择: 8. 已知:int x,,;下列选项中错误的if语句是______。() . if(=) x++; . if(=<) x++; . if(-) x++; . if(x) x++; -----------------选择: 9. 已知:int =5; 执行以下的程序段后输出结果为_______.o { printf(“%n”,--); } while (!); . 5 . 4 . 陷入死循环 . 5 4 3 2 1 -----------------选择: 10. 若用数组名作为函数调用时的参数,则实际上传递给形参的是 . 数组元素的个数 . 数组的第一个元素值 . 数组中全部元素的值 . 数组首地址 -----------------选择: 北航《语言程序设计》在线作业三 单选题判断题 二、判断题(共 15 道试题,共 60 分。) 1. 语言中规定函数的返回值的类型由在定义该函数时所指定的函数类型所决定。( ) . 错误 . 正确 -----------------选择: 2. 指向同一数组的两指针p1、p2相减的结果与所指元素的下标相减的结果是相同的。( ) . 错误 . 正确 -----------------选择: 3. 在swith语句中可以根据需要使用或不使用rek语句。() . 错误 . 正确

趣味c语言编程100例

趣味 c 语言编程100 例 【程序 1】 题目:有 1、2、3、4 个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位、十位、个位的数字都是1、 2、3、4。组成所有的排列后再去 掉不满足条件的排列。 2.程序源代码: main() { int i,j,k; printf("\n"); for(i=1;i<5;i++) / *以下为三重循环 */ for( j=1;j<5;j++) for (k=1;k<5;k++) { if (i!=k&&i!=j&&j!=k) /* 确保 i 、 j、 k 三位互不相同 */ printf("%d,%d,%d\n",i,j,k); } } 程序 2】 题目:企业发放的奖金根据利润提成。利润 (I) 低于或等于 10 万元时,奖金可提 10% ;利润高于 10 万元,低于 20 万元时,低于 10 万元的部分按 10% 提成,高于 10 万元的部分,可可提成 7.5% ; 20 万到 40 万之间时,高于 20 万元的部分,可提成 5% ; 40 万到 60 万之间时高于

40 万元的部分,可提成 3% ;60 万到 100 万之间时,高于 60 万元的部分,可提成 1.5% ,高于 100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总 数? 1. 程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。 2. 程序源代码: main() { long int i; int bonus1,bonus2,bonus4,bonus6,bonus10,bonus; scanf("%ld",&i); bonus1=100000*0.1;bonus2=bonus1+100000*0.75; bonus4=bonus2+200000*0.5; bonus6=bonus4+200000*0.3; bonus10=bonus6+400000*0.15; if(i<=100000) bonus=i*0.1; else if(i<=200000) bonus=bonus1+(i-100000)*0.075; else if(i<=400000) bonus=bonus2+(i-200000)*0.05; else if(i<=600000) bonus=bonus4+(i-400000)*0.03;

C语言复习第十九课

第十九课 ※主要内容 (1)、选择结构 ※主要知识点 (1)、if语句 1.不含else子句的if语句 语句格式: If(表达式) 语句; 例如: if(x>y)printf(“%d”,x);if(x>z) {x++; printf(“%d”,x);} 执行过程是: 先计算出表达式的值,如果表达式的值为真(非0值),则执行其后的if子语句,执行后再去执行if语句后面的下一条语句;如果表达式的值为假(0值),则不执行if子语句,直接执行if语句后面的下一条语句. 例如: 输入两个实数,输出其中的最大数. #include main() { float a,b; scanf(“%f %f”,&a,&b); if(a>b)printf(“%5.2f”,a); if(b>a)printf(“%5.2f”,b); } 2.含else的if语句 语句格式: If(表达式) 语句1; else 语句2; 执行过程是: 先计算出表达式的值,如果表达式的值是真,则执行语句1,执行后再去执行if语句后面的下一条语句;如果表达式的值是假,则跳过语句1而直接执行语句2. 例如: if(x>y)

p rintf(“%d”,x); else p rintf(“%d”,y); 功能是: 如果x>y则输出x,否则输出y. (2)、if语句的嵌套 1、在if语句中嵌套具有else子句的if语句语句格式: If(表达式1) If(表达式) 语句1; Else 语句2; Else 语句3; 2、在if语句中嵌套不含else子句的if语句格式: If(表达式1) {if(表达式2) 语句1;} else 语句2; 3、在else子句中嵌套if子句 格式: If(表达式1) 语句1; else If(表达式2) 语句2; else 语句3; if语句的配对问题

复试C语言常考趣味程序设计

狼追兔子 1 巧夺偶数 2 五猴分桃 3 高次方数 4 借书方案 5 过桥问题 6 数制转换7 打渔晒网8 喝酒问题9 哥德巴赫猜想10 打印日历11 抓交通肇事逃逸犯12 反序数13 新郎新娘14 称重砝码15 求车速16 谁是窃贼17 出售金鱼18 百钱百鸡19 谜语博士20 猜牌术(-)21 舍罕王的失算22 怎样存钱利最大23 猜牌术(二)24 爱因斯坦的数学题25 取火柴游戏26 平分鱼和筐27 可逆素数28 三色球问题29 抢n游戏30 问题A: 趣味程序设计_狼追兔子 时间限制: 1 Sec 内存限制: 128 MB 提交: 341 解决: 63 [提交][状态][讨论版] 题目描述 一只兔子躲进了n个环形分布的洞的某一个中。狼在第一个洞没有找到兔子,就隔一个洞,到第三个洞去找;也没有找到,就隔两个洞,到第六个洞去找。以后每次多一个洞去找兔子……这样下去,如果一直找不到兔子,请问兔子可能在哪个洞中? 输入 有多组测试数据,读取到文件结尾符为止。每组测试数据输入n(2≤n≤100),即洞穴个数。输入到文件结尾符为止。 输出 兔子可能藏匿的洞。如果不止一个,按从小到大的顺序输出。如果不存在,输出空行。 样例输入 10 8 15

样例输出 2 4 7 9 2 4 5 7 8 9 11 12 14 提示 用一个数组a[10],对应的元素a[0],a[1],a[2]……a[9]对应表示10个洞,初值均置1。通过一个循环用“穷举法”找兔子,第n次查找对应第(n-1)%10个洞,如果在第(n-1)%10个洞中没有找到兔子,因此将数组元素a[(n-1)%10]置0值。循环完成后,检查a数组各元素(各个洞)的值,若其值仍为1,则兔子可能藏身该洞中。 #include #include int ok[110]; int main() { int n,s,i,find; while(scanf("%d",&n)!=EOF) { memset(ok,0,sizeof(ok)); for(i=1;i<=200;i++) if(!ok[find=(i*(i+1)/2)%n]) if(find==0) ok[n]=1; else ok[find]=1; for(s=0,i=1;i<=n;i++) s+=ok[i]; for(i=1,find=0;i<=n;i++) if(!ok[i]) { if(find!=(n-s-1)) { printf("%d ",i);find++; } else printf("%d",i); } printf("\n"); } return 0; } 问题B: 趣味程序设计_巧夺偶数 时间限制: 1 Sec 内存限制: 128 MB

C语言第一节课

计算机语言的发展史: 硬件→机器语言→汇编语言→ C语言→ C++语言→ Java语言 面向过程语言:C语言 面向对象语言:C++语言,Java语言 例:盖楼:需要考虑那块放柱子,哪块放梁,哪块放楼梯。 C程序基本结构: 函数是C程序的基本单位 #include Void main(){ 函数的首部 int a, b, sum; 函数体声明部分 a = 123; b = 456; 执行部分 sum = a + b; printf(“sum is %d\n”, sum); } %d表示以十进制整数类型,用来指定输入输出时的数据类型和格式。 Sum是要输出的变量。 在编写程序的时候一律使用的是英文标点符号。 在C语言中把定义的类型写在前面,把定义的名称写在后面。(先定义后使用)

C语言基本数据类型:整型 字符型 浮点型单精度浮点型 双精度浮点型 枚举类型 数据有常量和变量之分。 常量:不变的量 变量:变化的量 整型:int a = 100; int b; 浮点型:单精度浮点型(float) 32位有效位数 6~7位 双精度浮点型(double)64位有效位数15~16位 float a = 3.14; double a = 3.14; 字符型:char c = ‘a’; char c; char,short → int → long → float → double 强制类型转换(类型名)(表达式) 隐式强制类型转换,显式强制类型转换 在程序中对用到的所有的数据都必须指定其数据类型 int a; C语言数据运算: 算数运算:(+, -, *, /, %取余), 自增自减运算符 ++ -- 赋值运算符:(=) 逻辑运算符:(>, <, ==, >=, <= !=) 关系运算符:(&&, ||, !) 逗号运算符:(表达式1,表达式2)整个逗号表达式的值为表达式2的值 命名规则: 计算机区分大小写字母 变量名用小写字母表示 程序中的变量名长度不能大于8个字符,如果大于8个字符时,系统会默认前8位为变量名。student_name; student_number;

北航2011年硕士研究生入学考试数据结构与C语言试题与答案

2011 年硕士研究生入学考试 “数据结构与C语言程序设计”(科目代码:991)试题与答案 一、单项选择题(本题共20分,每小题各2分) 1.下列关于线性表的存储结构的叙述中,错误的是。 A.线性表的顺序存储结构中隐式地存储了数据元素之间的逻辑关系 B.线性表的顺序存储结构一定需要占用一片地址连续的存储空间 C.线性表的链式存储结构通过指针来反映数据元素之间的逻辑关系 D.线性表的链式存储结构占用的存储空间一定不连续 2.若front 和rear 分别表示链接队列的队头指针与队尾指针,则向队列中插入一个由p 指的新元素的过程是依次执行。 A.rear=p; front=p; B.front=p; rear=p; C.rear->link=p; rear=p; D.front->link=p; rear=p; 3.下列关于二叉树的叙述中,正确的是。 A.二叉树的度可以小于2 B.二叉树的度等于2 C.二叉树中至少有一个结点的度为2 D.二叉树中每一个结点的度都为2 4.若某二叉树有40个叶结点,则该二叉树的结点总数最少是。 A.78 B.79 C.80 D.81 5.若采用邻接矩阵存储一个有向图,且邻接矩阵主对角线以下元素均为0,则该有向图的拓扑序列。 A.存在且惟一B.存在但可能不惟一 C.不存在D.无法确定 6.下面关于AOE 网的叙述中,正确的是。 A.AOE 网是一个带权的连通图 B.AOE 网是一个带权的强连通图 C.AOE 网是一个带权的无回路的连通图 D.AOE 网是一个带权且无回路的有向图 7.下列关于线性表查找方法的叙述中,错误的是。 A.顺序查找法适合于采用顺序存储结构和链式存储结构的线性表的查找 B.对于相同元素,顺序查找法一定能够查找到表中首次出现的元素 C.对于相同元素,折半查找法一定能够查找到表中首次出现的元素 D.对于相同元素,折半查找法不一定能够查找到表中首次出现的元素 8.在二叉排序树中进行查找的平均时间效率主要与下列因素之一有关,该因素是。A.二叉排序树的深度B.二叉排序树中结点的个数的多少 C.被查找结点的度D.二叉排序树的存储结构 9.下列4 种排序方法中,每一趟排序结束时不一定能够确定一个元素排序最终位置的是。 A.插入排序B.快速排序 C.堆积(Heap)排序D.二路归并排序 2 10.下列4 种排序方法中,当待排序的序列中元素初始时已经按值有序,排序所花费的

相关文档
相关文档 最新文档