韩信点兵C语言
c语言课后答案
《C程序设计》课外作业及参考答案说明:(1)章节顺序按照PowerPoint电子教案;(2)教材上的作业注明了章节和题号;(3)所用教材是《C程序设计(第二版)》谭浩强清华大学出版社;第一章C语言概述1.1 简答题:写出C语言的主要特点(教材习题1.1)。
1.2填空题:1.C语言与操作系统并称“栾生兄弟”。
2.C语言俗称为形式。
3.C源程序文件经过处理后产生目标文件,目标文件经处理后生成可执行文件。
1.3 单项选择题1. 以下说法中正确的是。
(A)C语言程序总是从第一个定义的函数开始执行(B)在C语言程序中,要调用的函数必须在main函数中定义(C)C语言程序总是main函数开始(D)C语言程序中的main函数必须放在程序的开始部分2. 以下正确的C标识符是。
(A)_125 (B)C# (C)C++ (D)A$1.4 多项选择题1. 以下关于C语言的说法中,错误的是。
(A)俗称为“低级语言的高级形式”,因此功能简单(B)不是结构化程序设计语言(C)可能直接访问内存(D)语法限制不严2. 以下标识符属于C语言关键字的有。
(A)integer (B)else (C)include (D)while第二章C语言基本数据类型、变量、常量与表达式2.1简答题1.求下面算术表达式的值。
(教材习题3.9)a)x+a%3*(int)(x+y)%2/4设x=2.5, a=7, y=4.7b)(float)(a+b)/2+(int)x%(int)y设a=2, b=3, x=3.5, y=2.52.写出下面程序的运行结果。
(教材习题3.10)main(){ int i, j, m, n;i=8; j=10; m=++i; n=j++;printf("%d,%d,%d,%d", i, j, m, n);}3.写出下面表达式运算后a的值,设原来a=12。
设a和n已定义为整型变量。
(教材习题3.12)a)a+=a b) a-=2 c) a*=2+3b)d) a/=a+a e) a%=(n%=2), n的值等于5 f) a+=a-=a*=a4.C语言中如何表示“真”和“假”?系统如何判断一个量的“真”和“假”?2.2 填空题1. 写出下面各逻辑表达式的值。
C语言复习题(答案)
1.编程计算球的体积(V=34πr3),要求半径通过键盘输入,π的值定义为符号常量PI ,输出结果保留两位小数,输入前和输出时要求给出含义明确的提示信息。
#include<stdio.h>main(){float r,v;scanf(“%f ”,&r)v=4/3*PI*r*r*r;printf(“v is %.2f ”,v);}2.输入任意一个3位数,将其各位数字反序输出(例如输入123,输出321)。
#include<stdio.h>main(){int n,s,g,b;printf(“please input n:\n ”);scanf(“%d ”,&n);g=n%10;s=n/10%10;b=n/100;printf(“%d”,100*g+10*s+b);}3.输入三角形的边长,求三角形的面积(面积=sqrt(s(s-a)(s-b)(s-c)),s=(a+b+c)/2)。
#include <stdio.h>main(){int a,s,c,b;printf(“please input a,b,c:”);scanf(“%d,%d,%d”,&a,&b,&c);while(a+b)<=c||(a+c<=b||(b+c)<=a);{printf(“please input a,b,c:”);scanf(“%d,%d,%d”,&a,&b,&c);}s=(a+b+c)/2;area=sqrt(s*(s-a)(s-b)(s-c));printf(“area is:%d\n”,area);}4. 输入3个字符,反向输出这3个字符和它们的ASCII码。
#include <stdio.h>main(){char ch1,ch2,ch3;printf("please input ch1&ch2&ch3:");scanf(“%c%c%c”,&ch1,&ch2,&ch3);printf(“%c\t%c\t%c\n”,ch3,ch2,ch1);printf(“%d\t%d\t%d\n”,ch3,ch2,ch1)}5.编程计算圆的面积(S=πr2),要求半径通过键盘输入,π的值定义为符号常量PI,输出结果保留两位小数,输入前和输出时要求给出含义明确的提示信息。
哈工大c语言试题
哈工大 2008 年 秋 季学期C 语言 试题考成绩和卷面笔试成绩各自所占比例折合后累加计算。
一、填空题(6分,每题1分)1.设变量定义为“int x,y[10];”,则“_________”与“*(y+x)”等效。
2.如果在程序中使用了strcmp 库函数,则程序前面要写#include "________"。
3.1.37×1042在C 语言中写作________4.把C 语言源程序翻译成机器语言目标程序的过程称为“__________”,翻译得到的目标程序扩展名为“__________”。
5.已知x 是double 型变量,“scanf("________",&x);”用于从键盘读取数据存放到x 中。
6. 已知:“#define M(x,y) x*y ”,则表达式“M(5+4,3-1)”的值为________。
二、单项选择题:(10分,每题2分)1.判断字符串s1与字符串s2相等,应当使用: 。
A) if (s1 = s2)B) if (strcmp(s1, s2))C) if (!strcmp(s1, s2)) D) if (strcmp(s1, s2) = 0)2.用“if(0<x<3) x=x+1;”实现“如果x 在0到3之间则将其值加1”的操作,________。
(A) 正确(B) 有语法错误 (C) 有逻辑错误 (D) 有连接错误3.#include<stdio.h>#include<string.h> main() {printf("%d\n", strlen("IBM\n012\t\"\\\0")); }则程序运行后的输出结果是。
A) 10 B) 11 C) 16 D) 124.函数定义的首部写作“int func( )”,x、y是int型变量,则__________是正确的调用。
C语言必考100题解析
C语⾔必考100题解析1.按下述格式,从键盘输⼊⼀个整数加法表达式:操作数1+操作数2,然后计算并输出表达式的计算结果,形式如下:操作数1+操作数2=计算结果。
2.输⼊两个整形数并打印,如果⽤户不慎输⼊了⾮法字符,那么程序提⽰“输⼊数据类型错误”。
3.已知三⾓形的三边长a,b,c,要求编写程序,从键盘输⼊a,b,c的值,计算并输出三⾓形的⾯积(注意不存在的情况)。
4.编程从键盘输⼊圆的半径r,计算并输出圆的周长和⾯积。
5.任意从键盘输⼊⼀个三位整数,要求正确分离它的个位,⼗位和百位数,并分别在屏幕上输出。
6.写⼀个函数实现统计⼀个输⼊的整形数的位数。
7.编程计算⽅程ax*x+bx+c=0的根,a,b,c由键盘输⼊,只是⽤主函数来实现。
8.编写三个函数,分别在b*b-4*a*c⼤于0、⼩于0、等于0时进⾏调⽤,并输出结果,在主函数中读⼊a、b、c的值。
9.从键盘输⼊你和你朋友的年龄,变成判断谁的年龄⼤,并打印最⼤者的年龄。
10.从键盘输⼊⼀个年份,判断该年是否是闰年,并输出结果。
11.判断某⼈是否属于肥胖体型。
根据⾝⾼与体重因素,医务⼯作者经⼴泛的调查分析给出了以下按“体指数”对肥胖程度的划分:体指数t=w/h*h(w为体重,单位为kg,h为⾝⾼,单位为m)。
当t<18时,为低体重;当t介于18和25之间时,为正常体重;当t介于25和27之间时,为超重体重;当t≧27时,为肥胖。
编程从键盘输⼊你的⾝⾼h和体重w,根据上式,判断体重类型。
12.利⽤switch语句将百分制成绩转化为五分制成绩。
13.利⽤switch语句将五分制成绩转换成对应分数范围并输出。
14.编程设计⼀个简单的计算器程序,要求根据⽤户从键盘输⼊的表达式:操作数1 运算符op 操作数2 计算表达式的值,指定的运算符为加减乘除。
15.利⽤时间函数编写⼀个猜数程序。
16.编程实现计算n的阶乘。
17.利⽤函数递归实现计算n!。
18.利⽤π/4=1-1/3+1/5-1/7……计算π的值直到最后⼀项的绝对值⼩于0.0001为⽌,要求统计总共累加了多少项。
C语言课后习题答案
void main()
{
int i=2,n,c;
c=0;
printf("守形数有:");
while(i<1001)
{
n=i*i;
if(n%10==i)
{
printf("%5d",i);
c++;
}
else if(n%100==i)
{
printf("%5d",i);
c++;
int main()
{
int i=0;
int nums[10];
int sum = 0;
int product = 1;
int sum_of_square = 0;
for( i=0; i<10; ++i )
{
printf( "请输入数据: " );
scanf( "%d", &nums[i] );
sum += nums[i];
#include<stdio.h>
void main()
{
int num1=1,num2=1,i=1;
printf("%3d%3d",num1,num2);
while(i<=20)
{
num1=num1+num2;
num2=num1+num2;
i++;
printf("%3d%3d",num1,num2);
{
n=a%10;
sum+=n;
C语言经典题目
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埃及分数式五、斐波那契序列——递推的学问30分数序列31斐波那契序列与卢卡斯序列32幂序列33双关系递推数列34基于2x+3y的递推数列35汉诺塔问题36猴子吃桃37猴子爬山38购票排队*39神秘的数组六、韩信点兵——远古的神机妙算40破解数字魔术41鸡兔同笼与羊犬鸡兔问题42百鸡问题43韩信点兵44整币兑零*45解佩尔方程七、泊松分酒——奇妙的分解46分解质因数47积最大的整数分解48整数的拆分49整数的分划50泊松分酒*51西瓜分堆*52水手分椰子*53矩形的优化剪切八、角谷猜想——精巧的转化54分数化小数55数制转换56角谷猜想57黑洞数495与617458回文数九、幻方——古今中外的数阵奇葩59杨辉三角60数字三角形61折叠方阵与旋转方阵*62幻方*63三阶素数方阵64可逆素数方阵十、插入乘号——决策的最优化65删除中的最值问题*66最长公共子序列67古尺神奇68数码珠串*69数阵中的最优路径*70插入乘号问题71智能甲虫的安全点72点的覆盖圆十一、尾数前移——运算模拟的典范73均位奇观探索74多少个1能被2009整除7501串积问题76连写数整除问题77尾数前移问题*78求圆周率兀到n位十二、外索夫游戏——博弈策略的秘诀79圆圈循环报数*80圆圈中的无忧位与绝望位81列队顺逆报数82洗牌复原83翻币倒面84黑白棋子移动85模拟发扑克牌86外索夫游戏十三、多格式万年历——变幻多姿的图表87新颖的p进制乘法表88多格式万年历89金字塔图案90菱形与灯笼图案91函数y=sin(x)/x图形92奥运五环旗十四、高斯八皇后——排列组合的精彩93排列中的平方数94实现a(n,m)与若干复杂排列95实现c(n,m)与允许重复组合96高斯八后问题*97皇后控制棋盘问题*98伯努利装错信封问题*99别出心裁的情侣拍照*100德布鲁金环序列。
趣味C语言题
*运行结果The thief is B. (乙为窃贼.)
求数字
求出所有可能的以下形式的算式,每个算式中有九个数位,正好用尽1到9这九个数字。
1)○○○+○○○=○○○(共有168种可能的组合)
2)○×○○○○=○○○○(共有2种可能的组合)
3)○○×○○○=○○○○(共有7种可能的组合)
4)○×○○○=○○×○○○(共有13种可能的组合)
5)○×○○○=○×○○○○(共有28种可能的组合)
6)○○×○○=○×○○○○(共有7种可能的组合)
7)○○×○○=○○×○○○(共有11种可能的组合)
爱因斯坦的数学题
爱因斯坦出了一道这样的数学题:有一条长阶梯,若每步跨2阶,则最最后剩一阶,若每步跨3阶,则最后剩2阶,若每步跨5阶,则最后剩4阶,若每步跨6阶则最后剩5阶.只有每次跨7阶,最后才正好一阶不剩.请问这条阶梯共有多少阶?119
角谷猜想
猜想的内容是:任给一个自然数,若为偶数除以2,若为奇数则乘3加1,得到一个新的自然数后按照上面的法则继续演算,若干次后得到的结果必然为1.请编程验证.
黑洞数495与6174
黑洞数也称为陷阱数,又称“Kaprekar问题”,是一类具有奇特转换特性的数。
任何一个数字不全相同的三位数,经有限次“重排求差”操作,总会得到495.最后所得的495即为三位黑洞数。所谓“重排求差”操作即组成该数的数字重排后的最大数减去重排后的最小数。(6174为四位黑洞数)
求车速
一辆以固定速度行驶的汽车,司机在上午10点看到里程表上的读数是一个对称数(即这个数从左向右读和从右向左读是完全一样的),为95859.两小时后里程表上出现了第二个新的对称数.问该车的速度是多少新的对称数是多少?
趣味C语言题
韩信点兵在中国数学史上,广泛流传着一个“韩信点兵”的故事:韩信是汉高祖刘邦手下的大将,他英勇善战,智谋超群,为汉朝建立了卓越的功劳。
据说韩信的数学水平也非常高超,他在点兵的时候,为了知道有多少兵,同时又能保住军事机密,便让士兵排队报数:按从1至5报数,记下最末一个士兵报的数为1;再按从1至6报数,记下最末一个士兵报的数为5;再按从1至7报数,记下最末一个士兵报的数为4;最后按从1至11报数,最末一个士兵报的数为10;你知道韩信至少有多少兵?()z谁结婚呢?魔术师的秘密在一次晚会上,一位魔术师掏出一叠扑克牌,取出其中13张黑桃,预先洗好后,把牌面朝下,对观众说:“我不看牌,只数一数就能知道每张牌是什么?”魔术师口中念一,将第一张牌翻过来看正好是A;魔术师将黑桃A放到桌上,继续数手里的余牌,第二次数1,2,将第一张牌放到这叠牌的下面,将第二张牌翻开,正好是黑桃2,也把它放在桌子上。
第三次数1,2,3,前面二张牌放到这叠牌的下面,取出第三张牌,正好是黑桃3,这样依次将13张牌翻出,准确无误。
现在的问题是,魔术师手中牌的原始顺序是怎样的?约瑟夫问题这是17世纪的法国数学家加斯帕在《数目的游戏问题》中讲的一个故事:15个教徒和15 个非教徒在深海上遇险,必须将一半的人投入海中,其余的人才能幸免于难,于是想了一个办法:30个人围成一圆圈,从第一个人开始依次报数,每数到第九个人就将他扔入大海,如此循环进行直到仅余15个人为止.问怎样排法,才能使每次投入大海的都是非教徒.求车速一辆以固定速度行驶的汽车,司机在上午10点看到里程表上的读数是一个对称数(即这个数从左向右读和从右向左读是完全一样的),为95859.两小时后里程表上出现了第二个新的对称数.问该车的速度是多少新的对称数是多少?常胜将军现有21根火柴,两人轮流取,每人每次可以取走1至4根,不可多取,也不能不取,谁取最后一根火柴谁输.请编写一个程序进行人机对弈,要求人先取,计算机后取;计算机一方为"常胜将军".十进制转换成N进制(N=2 8 16 )定义一个方法Trans(int num, int regx) 实现将一个输入十进制数num转换成regx 进制Eg: Trans(100, 16) 表示将 100 转成 16进制数输出求100到1000之间有多少个其数字之和为5的整数.(答案:104,113,122,131,140,203,212,221,230,302,311,320,401,410,500)打鱼还是晒网scanf(“%d%d%d”,&year ,&month,&day);中国有句俗语叫"三天打鱼两天晒网".某人从1990年1月1日起开始"三天打鱼两天晒网",问这个人在以后的某一天中是"打鱼"还是"晒网".*思考题:请打印出任意年份的日历*运行结果Enter year/month/day:1991 10 25He was fishing at day.Enter year/month/day:1992 10 25He was sleeping at day.Enter year/month/day:1993 10 25He was sleeping at day.求具有abcd=(ab+cd)^2性质的四位数3025这个数具有一种独特的性质:将它平分为二段,即30和25,使之相加后求平方,即(30+25)2,恰好等于3025本身.请求出具有这样性质的全部四位数.*运行结果There are following numbers with 4 digits satisfied condition:2025 3025 9801填数字游戏已知下面的算式:ABCD× EDCBA 计算ABCDE取什么值? Sum谁在说谎张三说李四在说谎,李四说王五在说谎,王五说张三和李四都在说谎.现在问:这三人中到底谁说的是真话,谁说的是假话*运行结果Zhangsan told a lie (张三说假话)Lisi told a truch. (李四说真话)Wangwu told a lie. (王五说假话)谁是窃贼公安人员审问四名窃贼嫌疑犯.已知,这四人当中仅有一名是窃贼,还知道这四人中每人要么是诚实的,要么总是说谎的.在回答公安人员的问题中:甲说:"乙没有偷,是丁偷的."乙说:"我没有偷,是丙偷的."丙说:"甲没有偷,是乙偷的."丁说:"我没有偷."请根据这四人的答话判断谁是盗窃者.*运行结果The thief is B. (乙为窃贼.)求数字求出所有可能的以下形式的算式,每个算式中有九个数位,正好用尽1到9这九个数字。
C语言实验内容
C语言上机实验2.1熟悉C语言程序开发环境2.1.3实验内容1.编程题1编写程序实现在屏幕上显示以下文字。
The dress is long.The shoes are big.The trousers are black.思考:如何在屏幕显示数字、汉字等信息?2.编程题2编程打印如下图案。
aaaaaaaaaa3.改错题改正下列程序中的错误,在屏幕上显示商品价格表(源程序error1_2.c)。
输入输出示例商品名称价格TCL电视机¥7600美的空调¥2000SunRose键盘¥50.5源程序(有错误的程序)#include <stdio.h>mian(){printf("商品名称价格\n);printf("TCL电视机¥7600")printf("美的空调¥2000)printf("SunRose键盘¥50.5)}4.编程题3编程将下面的内容显示在屏幕的中间位置。
***********************************tell me why? tell me why?tell me why? tell me why?just tell me why, why, why?*********************************** 思考:最少可用几条printf()语句完成?2.2数据描述2.2.3实验内容1.编程题1已知a=150,b=20,c=45,编写求a/b、a/c(商)和a%b、a%c(余数)的程序。
输入输出示例a/b的商=7a/c的商=3a%b的余数=10a%c的余数=152.编程题2已知a=160,b=46,c=18,d=170,编写求cb dcba--+))((的程序。
输入输出示例(a+b)/(b-c)*(c-d)=-1064.0000003.编程题3设变量a的值为0,b的值为-10,编写程序:当a>b时,将b赋给c;当a<=b时,将a赋给c。
有趣的c语言话题.doc
有趣的c语言话题在中国数学史上,韩信有一个广为流传的“韩信点兵”的故事:韩信是汉高祖刘邦手下的一名将军。
他英勇善战,才智超群,为汉朝做出了突出贡献。
据说韩信的数学水平也很高,他在点兵的时候,为了知道有多少士兵,同时能保守军事机密,便让士兵排队去数: 根据从1到5的数字,写下最后一个士兵报告的数字为1;按1到6之间的数字,注意最后一个士兵报告的数字是5。
按1到7之间的数字,注意最后一个士兵报告的数字是4。
最后,从1数到11,最后一名士兵报告10。
你知道韩信至少有多少士兵吗?谁要结婚了?魔术师的秘密在一个聚会上,一个魔术师拿出一叠扑克牌,拿出13张黑桃,提前洗干净,把牌翻过来,对观众说:“我不看牌。
我只能数一数,知道每张牌是什么。
”魔术师从嘴里读出一张卡片,把第一张卡片翻过来,看它到底是一张;魔术师把黑桃A放在桌子上,第二次数了数手中剩余的牌,1,2。
他把第一张牌放在那叠牌下面,把第二张牌翻过来,也就是黑桃2,然后把它放在桌子上。
在1、2和3的第三次计数中,前两张牌被放在这一叠牌下面,第三张牌只有3张黑桃,这样就一张接一张地打出了13张牌,这是准确的。
现在的问题是,魔术师牌的原始顺序是什么?约瑟夫问题这是17世纪法国数学家加斯帕尔在《数目的游戏问题》讲的一个故事。
333615名基督徒和15名非基督徒在深海遇险。
其中一半必须放入海里,其余的可以存活。
所以他想出了一个办法,让:30人围成一个圈,从第一个人开始依次数,每次数到第九,就把他扔进海里。
这个循环一直持续到只剩下15个人。
询问如何安排汽车,以便不信教的人每次都会被扔进海里。
询问以固定速度行驶的汽车的速度。
驾驶员将看到里程表上的读数是一个对称的数字(即从左到右读取的数字与从右到左读取的数字完全相同),即95859。
两小时后,里程表上会出现第二个新的对称数字。
问一下汽车的速度是多少,新的对称数字是多少?常胜将军现在有21场比赛。
两个人轮流带他们。
每个人一次可以拿1到4根火柴。
C语言考试题及答案
一、单项选择题:(10分,每题2分)1.char *p[10];该语句声明了一个:。
A)指向含有10个元素的一维字符型数组的指针变量pB)指向长度不超过10的字符串的指针变量pC)有10个元素的指针数组p,每个元素可以指向一个字符串D) 有10个元素的指针数组p,每个元素存放一个字符串2.若int x;且有下面的程序片断,则输出结果为:。
for (x=3; x<6; x++){printf((x%2) ? "##%d" : "**%d\n", x);}A) ##3B) **3C) **3D)##3**4**4 ##4 ##4**5 ##5##5 **53.在while(!x)语句中的!x与下面条件表达式等价的是:。
A) x!=0 B) x==1 C) x!=1 D) x==04.已知struct point{int x;int y;};struct rect{struct point pt1;struct point pt2;};struct rect rt;struct rect *rp = &rt;则下面哪一种引用是不正确的________。
A) B) (*rp). C) rp-> D)rt->5.若二维数组a有m行n列,则下面能够正确引用元素a[i][j]的为:。
A) *(a+j*n+i) B) *(a+i*n+j) C) *(*(a+i)+j) D) *(*a+i)+jCDDDC二、分析程序并写出运行结果。
(25分,每题5分)1.#include <>main(){int n;static char *monthName[]={"Illegal month", "January", "February","March", "April", "May", "June", "July", "August","September", "October", "November", "December"};for (n=1; n<=12; n++){printf("%s\n", monthName[n]);}}运行结果是:JanuaryFebruaryMarchAprilMayJuneJulyAugustSeptemberOctoberNovemberDecember2.#include<>#define ARR_SIZE 7void YH(int a[][ARR_SIZE], int n);void PrintYH(int a[][ARR_SIZE], int n);main(){int a[ARR_SIZE][ARR_SIZE];YH(a, ARR_SIZE-1);PrintYH(a, ARR_SIZE-1);}void YH(int a[][ARR_SIZE], int n){int i, j;for (i=1; i<=n; i++){for (j=1; j<=i; j++){if (j==1 || i==j){a[i][j] = 1;}else{a[i][j] = a[i-1][j-1] + a[i-1][j];}}}}void PrintYH(int a[][ARR_SIZE], int n){int i , j ;for (i=1; i<=n; i++){for (j=1; j<=i; j++){printf("%4d", a[i][j]);}printf("\n");}}运行结果是:11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 13.#include <>main(){int i, n;for (i=1; i<=5; i++){printf("Please enter n:");scanf("%d", &n);if (n <= 0) continue;printf("n = %d\n", n);}printf("Program is over!\n");}程序运行时输入:1 -2 3 -4 5↙运行结果是:n = 1Please enter n: Please enter n:n = 3 Please enter n: Please enter n:n = 5 Program is over!4.#include <>void Func(int n);main(){int i;for (i = 0; i < 2; i++){Func(i);}}void Func(int n){static int t = 1;printf("t=%d\n", t++);}运行结果是:t=1t=25.#include <>int Func(int i);main(){int i;for (i=3; i<5; i++){printf(" %d", Func(i));}printf("\n");}int Func(int i){static int k = 10;for (; i>0; i--){k++;}return (k);}运行结果是:13 17三、阅读并完成程序,在标有下划线的空白处填入适当的表达式或语句,使程序完整并符合题目要求。
C语言作业——精选推荐
C语⾔作业作业1 数制与编码1.将下列⼗进制实数分别转换为⼆进制、⼋进制和⼗六进制实数:45 195 10.3125 51.8 2.将下列⼋进制和⼗六进制实数转换为⼆进制实数:(42.14)8(10.01)8(3C.24)16(7F.0E)16 3.请写出下列整数的8位⼆进制原码、反码和补码。
0 102 -15 -127 4.请写出下列整数的16位⼆进制补码(以⼗六进制形式书写)。
0 6207 -7225 -32768 5.下列16位⼆进制补码分别表⽰什么整数?00000010 10011010 11101100 010001106.⽤16位⼆进制补码形式完成下列计算:14 + (-9) = 5 (-23) + 15 = -87.下列实数的单精度存储形式是怎样的(根据Intel格式计算)?0.3125 -34.28.请写出空格、数字0、⼤写字母A和⼩写字母a等字符的ASCII码。
9.仔细观察ASCII码表, 怎样将⼩写字母转换为⼤写字母? 怎样将⼤写字母转换为⼩写字母?10.汉字“软”的区位码是4077, “件”区位码是2894, 它们的内码分别是什么?11.字符串"Welcome!"的长度是多少? 需占⽤内存空间多少字节? 最后⼀个字节是什么?12.请将下列字符串按从⼩到⼤的顺序排列:"ABC" "123" "abc""Rate1""Rate2""pen""pencil""1+2"作业2 简单的C 程序1. 物体的位移:输⼊物体的初速度v 0, 加速度a 和时间t , 计算并输出其位移。
2021at t v s += 2. 公汽车票:若乘客⾝⾼低于1.2⽶则免费, 否则收取车费2元。
3. 购物优惠活动(⼀)若顾客购物不⾜100元, 则不优惠; 购物达100元, 按九折优惠。
韩信点兵问题的神算法
韩信点兵问题的神解法定理1:一个数除以a余数x,除以b余数y,a、b互质且a<b,求这个数的最小值。
设这个数为z,则z=b(an+x-y)/(b-a)+y (1)或z=a(bn+x-y)/(b-a)+x (2)其中n为使(bn+x-y)/(b-a)为正整数的最小值。
证明:设z=al+x=bm+y 则:al+x-y-am=(b-a)m所以m=(a(l-m)+x-y)/(b-a)将变量l-m用独立变量n代替:m= (an+x-y)/(b-a)将m代入以上等式得到:z=b(an+x-y)/(b-a)+y同理可以证明等式2定理2:在定理1等式中,0<=n<=b-a。
证明:从定理1等式中可知n=l-m,因为a<b,所以l>=m,故n>=0假设n=h(b-a)+k,k<=b-a 代入以上算式z=b(ah(b-a)+ak+x-y)/(b-a)+y=ahb+b(ak+x-y)/(b-a),由此可知,n可以取值为k。
根据以上两个定理来计算韩信点兵问题,具有两个方面的优点:1、将两个变量合并成了一个变量,从而只需要尝试一个变量即可。
2、这一个变量的范围被两个除数的值界定,需要尝试的最多次数是确定的。
例1:一个数除以9余5,除以13余4,求这个数的最小值列出算式:13*(9n+5-4)/(13-9)+4=13*(9n+1)/4+4显然能让相除结果为整数的n的最小值为3,代入则得:13*(9*3+1)/4+4=95。
例2:一个数除以13余10,除以17余5,求这个数的最小值列出算式:17*(13n+10-5)/(17-13)+5=17*(13n+5)/4+5显然能让相除结果为整数的n的最小值也为3,代入则得:17*(13*3+5)/4+5=192以上算法比传统算法更简便,但依然有缺陷,即如果除数的值比较大时,要获得满足条件的n的值尝试的次数也会相应增大,从而对于大数相除时也会计算量太大,无法手算,用计算机计算也会比较耗时。
《C语言程序设计》复习题库(1)
复习题库
当n=5时
93.有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它
插入到数组中。
94.将一个数组中的值按逆序重新存放。
例如,原来顺序为8,6,5,4,1。
要求
改为1,4,5,6,8
95.编程先输入某班10个学生某门课的成绩(成绩均为float型数据),
对全班10个学生成绩进行由高到低排序,并打印输出排序结果。
96.从键盘任意输入某班10个学生的成绩,输出最高分并统计出不及格
人数。
97.写一个判断素数的函数,在主函数输入一个整数,输出是否为素数的
信息
98.编写函数实现两个整型变量值的交换。
99.用递归调用的方法求n!,要求n由用户输入。
100.从键盘任意输入10个整数并放入一个数组,用函数编程实现将其中最大数与最小数的位置对换后,再输出调整后的数组。
101.写一个函数,使给定的一个3X3的二维整形数组转置,即行列互换102.写一个函数,将两个字符串连接
103.写一个函数,使输入的一个字符串按反序存放。
104.输入两个实数,用一个函数求出它们之和。
105.有一个一维数组score,内放10个学生成绩,写一个函数求平均成绩。
106.输出所得水仙花数,所谓水仙花数是指一个数3位数,其各各位数字立方和等于其本身, 例如: 153 = 1*1*1 + 3*3*3 + 5*5*5。
C语言穷举法经典例题
令z=100-x-y 1%)
只进行101×101= 10201 次运算(前者的
第3章 程序控制结构
第3章 程序控制结构
继续优化
void main() 取x<=14,y<=25 只进行 { 15×26= 390 次运算 int x,y,z; for (x=0;x<=14;x++) for (y=0;y<=25;y++) if (7*x+4*y==100 ) { z=100-x-y; printf("cocks=%d,hens=%d,chickens=%d\n",x,y,z); } }
第3章 程序控制结构
百元买百鸡问题分析
void main() 结果:x=0,y=25,z=75 { x=4,y=18,z=78 int x,y,z; x=8,y=11,z=81 for (x=0;x<=100;x++) x=12,y=4,z=84 for (y=0;y<=100;y++) for (z=0;z<=100;z++) { if (z%3==0 &&x+y+z==100 && 5*x+3*y+z/3==100 ) printf("x=%d,y=%d,z=%d\n",x,y,z); } }
第3章 程序控制结构
穷举法求解韩信点兵
#include <stdio.h> void main() { int x; for (x=1; ;x++) { if (x%5==1 && x%6==5 && x%7==4 && x%11==10) { printf(" x = %d\n", x); } } } /*死循环——永远不会退出的循环*/
哈工大2003-2006年高级语言程序设计 考试题答案
哈工大2003年春季学期C语言考试题参考答案一、填空题:(24分)(1) 将变量a的地址存入 (9) float a[10]指针变量p中(2) 自动变量 (10) j<10(3) 7 (11) j<=8(4) &x,&y (12) k<=9-j(5) float *x,*y (13) a[k]>a[k+1](6) *x (14) a[k]=a[k+1](7) *x=*y (15) j<=9(8) *y=temp (16) j%5==0二、单选题:(20分)1、B2、A3、 D4、 B5、 D6、D7、D8、D9、A 10、A三、判断题:(16分)1、√2、√3、4、√5、 6、 7、√ 8、四、写出程序运行结果(20分)1、 a=8,x=1252、 adb=1,y=1 abcdefghimnohino3、04、a=61 a=723五、编程:1、main(){int a[3][4], i,j, max, m,n;for (i=0; i<3; i++){for(j=0 ;j<4 ;j++)scanf("%d",&a[n]);}max = a[0][0];m= n = 0;for (i=0; i<3; i++){for(j=0 ;j<4 ;j++)if (max<a[i][j]){max = a[i][j];m = i ;n=j ;}}printf("max=%d\n",max);printf("m=%d\tn=%d\n",m,n);2、#include <stdio.h>main(){int x,n,tt,f1(int int);scanf(“%d,%d”,&x,&n);tt=f1(x,n);printf(“%d”,tt);}int f1(int x,int y){int temp=1,I;for(I=1;I<=y;I++)temp*=x;return(tmp);}哈工大2002/2003学年秋季学期 C语言试题答案一、选择题1、D,2、B,3、A,4、B,5、A,6、A,7、D,8、D,9、B, 10、B二、给出下列程序的运行结果1、17,1022、13.7000003、d=204、135、s=12346、10三、阅读程序,在标有下滑线的空白处填入适当的表达式或语句,使程序完整并符合题目要求。
程序填空题27道(含答案)
石家庄学院2020-2021学年一学期课程考试试卷答案(A卷)课程名称:C语言考试时间:120分钟年级:xxx级专业:xxx题目部分,(卷面共有27题,27分,各大题标有题量和总分)一、阅读程序,在标有下划线的空白处填入适当的表达式或语句,使程序完整并符合题目要求(27小题,共27分)1、(模拟试题1 中)韩信点兵。
韩信有一队兵,他想知道有多少人,便让士兵排队报数:按从1至5报数,最末一个士兵报的数为1;按从1至6报数,最末一个士兵报的数为5;按从1至7报数,最末一个士兵报的数为4;最后再按从1至11报数,最末一个士兵报的数为10。
下面程序的主要功能是计算韩信至少有多少兵。
#include <stdio.h>main(){int x = 1;int find = 0;for (x=1; ________; x++){if (x%5==1 && x%6==5 && x%7==4 && x%11==10){printf(" x = %d\n", x);____________;}}}答案:!flag、flag=12、(模拟试题1 中)下面程序是计算字符串中实际字符的个数,即实现和字符串处理函数strlen相同的功能。
unsigned int MyStrlen(char str[]){unsigned int len = 0, i;for (i=0; str[i]!=______; i++){len _______ ;}return len;}答案:++、'\0'3、(模拟试题1 中)下面这个程序用于读入5个整数,当程序读入的数据为正整数时,则显示该数,否则,不显示。
读入5个数据后,程序结束运行。
#include <stdio.h>main(){int i, n;for (i=1; i<=5; i++){printf("Please enter n:"); scanf("%d", &n);if (n <= 0) _____________;printf("n = %d\n", n);}printf("Program is over!\n");}答案:continue4、(模拟试题2 易)下面函数实现strcmp的功能,将两个字符串s和t进行比较,然后将两个字符串中第一个不相同字符的ASCII码值之差作为函数值返回。
经典算法--C语言代码大全
经典算法--C语言代码大全/*韩信点兵*/#include"stdio.h" void main(){int i=900;for(i=900;i<=1100;i=i++)if(i%3==1&&i%5==1&&i%7==1){ printf("满足条件的值为:%d\n",i);break;}}/*两个日期之间的天数*/#include "stdio.h" void main(){int i,y,m1,m2,d1,d2;int d=0;printf("请输入年月日:\n如2010年1月3日和3月4日输入格式为2010 1 3 3 4\n");scanf("%d%d%d%d%d",&y,&m1,&d1,&m2,&d2);y=(y%4==0&&y%100!=0||y%400==0)?1:0;for(i=m1;i<m2;i++)switch(i){case 1:case 3:case 5:case 7:case 8:case 10:case 12:d+=31;break;case 4:case 6:case 9:case 11:d+=30;break;case 2:d=d+28+y;break;}printf("%d\n",d+d2-d1); }/* N 乘方表*/#include"stdio.h"void main(){int n,i,p=1;printf("请输入n的值,按回车键确定~\n");scanf("%d",&n);do{i=p*p;printf("%.0d的乘方为%.0d\n",p,i);p=p++;}while(p<=n);}/* 判断某一日期是当年的第几天*/#include"stdio.h"void main(){int n,year,month,day,month_day_sum=0,sum,month_day[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; printf("请输入\"年月日\"\n");scanf("%d%d%d",&year,&month,&day);if(year%100!=0&&year%4==0||year%400==0) month_day[2]=29; if(day>31||day<1||month>12||month<1) printf("错误"); else{for(n=1;n<month;n++) month_day_sum+=month_day[n];sum=month_day_sum+day;printf("是%d年的第%d天\n",year,sum); }}/*n的阶乘表*/#include"stdio.h"void main(){float n, i=1,p=1;printf("请输入n的值:\n");scanf("%f",&n);do{i=i*p;if(p<=15)printf("%.2f的阶乘为%.2f\n",p,i); elseprintf("%.2f的阶乘为%4.5e\n",p,i);p=p++;}while(p<=n);}/*求一元二次方程的解*/#include"stdio.h"#include"math.h"void main(){int m;do{m=1;float a,b,c,delta,x1,x2,realpt,imagpt;printf("\n\n本程序可求一元二次方程的解。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
}
{
int a,b,c,N,i;
scanf("%d %d %d",&a,&b,&c);
for(i=3;;i++){
if(i%3==a && i%5==b && i%7==c)
break;
}
if(i<10 || i>100)
printf("No answer");
ቤተ መጻሕፍቲ ባይዱelse
printf("%d",i);
描述
相传韩信才智过人,从不直接清点自己军队的人数,只要让士兵先后以三人一排、五人一排、七人一排地变换队形,而他每次只掠一眼队伍的排尾就知道总人数了。输入3个非负整数a,b,c ,表示每种队形排尾的人数(a<3,b<5,c<7),输出总人数的最小值(或报告无解)。已知总人数不小于10,不超过100 。
输入
输入3个非负整数a,b,c ,表示每种队形排尾的人数(a<3,b<5,c<7)。例如,输入:2 4 5
输出
输出总人数的最小值(或报告无解,即输出No answer)。实例,输出:89
样例输入
2 1 6
样例输出
41
#include <stdio.h>
int main(void)