C语言第3章(顾元刚)-4
虎贲C语言第三章
3.4.2 字符数据的输入与输出
(1)putchar函数的一般调用形式 putchar(字符变量)
printf(“%c”,字符变量);
(2)getchar函数的一般调用形式 getchar(字符变量)
scanf(“%c”,&字符变量);
例3.10:有以下程序 #include <stdio.h> main() { char c1,c2,c3,c4,c5,c6; scanf("%c%c%c%c",&c1,&c2,&c3,&c4); c5=getchar(); c6=getchar(); putchar(c1); putchar(c2); printf("%c%c\n",c5,c6); } 程序运行后,若从键盘输入(从第1列开始) 123<回车> 45678<回车>
例如:
main ( ) { printf(“%f”,123.54); printf(“%9.1f”,123.54);
printf(“%9.2f”,123.54); printf("%12f\n",123.54); } 输出结果: 123.540000 □ □ □ □ 123.5 □ □ □ 123.54 □ □ 123.540000
(4)复合语句:把多个语句用一对花括号{ }括起来组 成的一个语句称为复合语句。 例如 : main ( ) { int x, y, z, t; x=8; y=6; if (x>y) {z = x – y ; t = z * 2;} else { z = x + y ; t = z / 2; } printf("z=%d, t=%d \n",z,t); } (5)空语句:仅包含一个分号的语句。
严蔚敏《数据结构(c语言版)习题集》算法设计题第三章参考答案
严蔚敏《数据结构(c语言版)习题集》算法设计题第三章参考答案第三章栈与队列typedef struct{Elemtype *base[ ];Elemtype *top[ ];}BDStacktype; //双向栈类型Status Init_Stack(BDStacktype &s int m)//初始化一个大小为m 的双向栈s{s base[ ]=(Elemtype*)malloc(sizeof(Elemtype));s base[ ]=s base[ ]+m;s top[ ]=s base[ ];s top[ ]=s base[ ];return OK;}//Init_StackStatus push(BDStacktype &s int i Elemtype x)//x入栈 i= 表示低端栈 i= 表示高端栈{if(s top[ ]>s top[ ]) return OVERFLOW; //注意此时的栈满条件if(i== ) *s top[ ]++=x;else if(i== ) *s top[ ] =x;else return ERROR;return OK;}//pushStatus pop(BDStacktype &s int i Elemtype &x)//x出栈 i= 表示低端栈 i= 表示高端栈{if(i== ){if(s top[ ]==s base[ ]) return OVERFLOW;x=* s top[ ];}else if(i== ){if(s top[ ]==s base[ ]) return OVERFLOW;x=*++s top[ ];}else return ERROR;return OK;}//popvoid Train_arrange(char *train)//这里用字符串train表示火车 H 表示硬席 S 表示软席{p=train;q=train;InitStack(s);while(*p){if(*p== H ) push(s *p); //把 H 存入栈中else *(q++)=*p; //把 S 调到前部p++;}while(!StackEmpty(s)){pop(s c);*(q++)=c; //把 H 接在后部}}//Train_arrangeint IsReverse()//判断输入的字符串中 & 前和 & 后部分是否为逆串是则返回否则返回{InitStack(s);while((e=getchar())!= & )push(s e);while((e=getchar())!= @ ){if(StackEmpty(s)) return ;pop(s c);if(e!=c) return ;}if(!StackEmpty(s)) return ;return ;}//IsReverseStatus Bracket_Test(char *str)//判别表达式中小括号是否匹配{count= ;for(p=str;*p;p++){if(*p== ( ) count++;else if(*p== ) ) count ;if (count< ) return ERROR;}if(count) return ERROR; //注意括号不匹配的两种情况return OK;}//Bracket_TestStatus AllBrackets_Test(char *str)//判别表达式中三种括号是否匹配{InitStack(s);for(p=str;*p;p++){if(*p== ( ||*p== [ ||*p== { ) push(s *p);else if(*p== ) ||*p== ] ||*p== } ){if(StackEmpty(s)) return ERROR;pop(s c);if(*p== ) &&c!= ( ) return ERROR;if(*p== ] &&c!= [ ) return ERROR;if(*p== } &&c!= { ) return ERROR; //必须与当前栈顶括号匹配}}//forif(!StackEmpty(s)) return ERROR;return OK;}//AllBrackets_Testtypedef struct {int x;int y;} coordinate;void Repaint_Color(int g[m][n] int i int j int color)//把点(i j)相邻区域的颜色置换为color{old=g[i][j];InitQueue(Q);EnQueue(Q {I j});while(!QueueEmpty(Q)){DeQueue(Q a);x=a x;y=a y;if(x> )if(g[x ][y]==old){g[x ][y]=color;EnQueue(Q {x y}); //修改左邻点的颜色}if(y> )if(g[x][y ]==old){g[x][y ]=color;EnQueue(Q {x y }); //修改上邻点的颜色}if(xif(g[x+1][y]==old){g[x+1][y]=color;EnQueue(Q,{x+1,y}); //修改右邻点的颜色}if(yif(g[x][y+1]==old){g[x][y+1]=color;EnQueue(Q,{x,y+1}); //修改下邻点的颜色}}//while}//Repaint_Color分析:本算法采用了类似于图的广度优先遍历的思想,用两个队列保存相邻同色点的横坐标和纵坐标.递归形式的算法该怎么写呢?3.21void NiBoLan(char *str,char *new)//把中缀表达式str转换成逆波兰式new{p=str;q=new; //为方便起见,设str的两端都加上了优先级最低的特殊符号InitStack(s); //s为运算符栈while(*p){if(*p是字母)) *q++=*p; //直接输出else{c=gettop(s);if(*p优先级比c高) push(s,*p);else{while(gettop(s)优先级不比*p低){pop(s,c);*(q++)=c;}//whilepush(s,*p); //运算符在栈内遵循越往栈顶优先级越高的原则}//else}//elsep++;}//while}//NiBoLan //参见编译原理教材3.22int GetValue_NiBoLan(char *str)//对逆波兰式求值{p=str;InitStack(s); //s为操作数栈while(*p){if(*p是数) push(s,*p);else{pop(s,a);pop(s,b);r=pute(b,*p,a); //假设pute为执行双目运算的过程push(s,r);}//elsep++;}//whilepop(s,r);return r;}//GetValue_NiBoLan3.23Status NiBoLan_to_BoLan(char *str,stringtype &new)//把逆波兰表达式str转换为波兰式new{p=str;Initstack(s); //s的元素为stringtype类型while(*p){if(*p为字母) push(s,*p);else{if(StackEmpty(s)) return ERROR;pop(s,a);if(StackEmpty(s)) return ERROR;pop(s,b);c=link(link(*p,b),a);push(s,c);}//elsep++;}//whilepop(s,new);if(!StackEmpty(s)) return ERROR;return OK;}//NiBoLan_to_BoLan分析:基本思想见书后注释.本题中暂不考虑串的具体操作的实现,而将其看作一种抽象数据类型stringtype,对其可以进行连接操作:c=link(a,b).3.24Status g(int m,int n,int &s)//求递归函数g的值s{if(m==0&&n>=0) s=0;else if(m>0&&n>=0) s=n+g(m-1,2*n);else return ERROR;return OK;}//g3.25Status F_recursive(int n,int &s)//递归算法{if(n<0) return ERROR;if(n==0) s=n+1;else{F_recurve(n/2,r);s=n*r;}return OK;}//F_recursiveStatus F_nonrecursive(int n,int s)//非递归算法{if(n<0) return ERROR;if(n==0) s=n+1;else{InitStack(s); //s的元素类型为struct {int a;int b;}while(n!=0){a=n;b=n/2;push(s,{a,b});n=b;}//whiles=1;while(!StackEmpty(s)){pop(s,t);s*=t.a;}//while}return OK;}//F_nonrecursive3.26float Sqrt_recursive(float A,float p,float e)//求平方根的递归算法{if(abs(p^2-A)<=e) return p;else return sqrt_recurve(A,(p+A/p)/2,e);}//Sqrt_recurve。
C2-3(顾元刚)
上一张 下一张
3、关系运算符和关系表达式
所谓关系运算是对两个运算量进行比 较的一种运算。进行关系运算的表达式 称为关系表达式,他是用关系运算符和 其他表达式连接而成的式子。关系运算 是一种比较简单的逻辑运算。 C语言提供了6种关系运算符,其形 式和作用详见表2.6。
上一张 下一张
表2.6 关于运算符和关于表达式的基本形式
上一张 下一张
⑤ 模运算,即是求余数运算,要求参与运 算的量均为整型。其运算结果等于两数 相除后的余数。例如:100%7的结果为2。 ⑥ 算术表达式的书写形式和数学公式的 不同,例如,公式b2-4ac必须写成b*b4*a*c,这里的运算符“*”是不能省略 的。另外还要注意运算的优先级,对于 式子写成-b /(2*a),绝不能写成-b/2*a。 下面是一些合法的算术表达式的例子:
+
* / % ++ --
加法运算
减法运算 乘法运算 除法运算 模运算(求 余) 自增1 自减1 取负
a+b a-b a*b
a/b a%b a++或++a a--或--a
√ √ √
√ √ √ √
√ √ √
√ × × ×
求a 与b的和 求a 与b的差 求a 与b的积
a 除以b的商 求a 除以b的余 数 相当于a=a+1 相当于a=a-1
①
上一张 下一张
②
在使用赋值表达式时,要注意以下几个问题:
① 赋值运算符“=”是右结合性运算符,即其运算 次序应从右至左执行。 ② 由于赋值运算产生一个新的表达式,根据赋值 运算的定义,他还可以赋给另一个变量,从而产 生连续赋值的效果,非常适用于变量的初始化。 例如: a=b=c=0 ③ 赋值表达式不是赋值语句,但按照C语言规定, 任何表达式在其未尾加上分号就构成为语句。因 此, a=b=c=0; 才是一个是赋值语句。 上一张 下一张
百科园C语言题库完整
第一章1.以下叙述中错误的是( )B.C语言编写的每个函数都可以进行独立编译并执行2. 计算机高级语言程序的运行方法有编译执行和解释执行两种,以下叙述中正确的是( )A.C语言程序仅可以编译执行3. C语言规定:在一个源程序中,main的位置( ) A.可以任意4. 一个C语言程序是由( ) C.函数组成5. 以下关于结构化程序设计的叙述中正确的是( ) B.c语言中,程序的模块化是利用函数实现的6. 以下叙述正确的是( ) C.c语言本身没有输入和输出语句7. 以下叙述中错误的是( ) A.C语言编写的每个函数都可以进行独立编译并执行8. 以下叙述正确的是( )B.c程序中注释部分可以单独占一行9. 以下叙述正确的是( )D.c语言函数可以嵌套调用,如fun(fun(x))10. 一个C程序的执行是从( )D.本程序main函数开始,到main函数结束11. 以下叙述不正确的是( )A.在c程序中,注释说明只能位于一条语句后面第二章单项选择1以下选项中非法的字符常量是( )(B ‘/019’)2设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的数据类型为()(C double)3判断字符型变量c1是否为数字字符的正确表达式为( )(A (C1>=‘0’)&&(C1<=‘9’))4若有定义语句:int k1=10,k2=20;,执行表达式(k1=k1>k2)&&(k2=k2>k1)后,k1和k2的值分别为()(B 0和20)5下面四个选项中,均是不合法的用户标识符的选项是()。
(B b-a goto int)6判断字符型变量c1是否为小写字母的正确表达式为()。
(B (c1>=’a’)&&(c1<=’z’))7表达式18/4*sqrt(4.0)/8值的数据类型为()。
(B double)8下面四个选项中,均是合法的用户标识符的选项是()。
C1-3(顾元刚)
上一张
下一张
③ 编译源程序 按【Alt+C】 可切换到Compile菜单项。选择其中的 Compile to OBJ项或按【Alt+F9】可单独编译源程序。一旦 有错,如将printf写成了prrintf则会报告与图1.11类似的 出错信息。如果提示Success表示编译成功,并产生目标 代码.OBJ文件。 ④ 连接程序: 选择Compile子菜单中的Link EXE file项或按【F9】,系 统将各目标程序包括有关的库文件连接在一起,组成一个 可执行.exe文件。与编译时一样,如果提示Success表示 连接成功;如果提示Errors,则表示连接失败,如图1.11 所示。
上一张 下一张
方法一:按热键【F10】选中主菜单,再用【←】、【→】两键 选择所需的功能项。 方法二:按热键【Alt+〈项目首字母〉】,可直接选定所需要的 功能项。如按【Alt+F】选中File项。 选定功能项后,按回车键【Enter】, Edit功能进入编辑状态,其 余功能将列出一个下拉菜单。如选中 File 项后,按【Enter】 键,即列出如图1.8所示的下拉菜单。下拉菜单中的各子功能 可用【↓】、【↑】两个键进行切换。 ② 编辑区:用于源程序的编辑。该区顶部自动显示光标当前所 处的行列位置、编辑状态、自动缩进、制表开关和源文件名等 信息,为用户操作提供方便。如图1.9所示,光标当前处于第3 行、第4列。 ③ 消息窗口/观察窗口:在编译/连接时用来显示出错信息;在 运行时,用户可以观察一些变量或表达式的值。
上一张 下一张
⑵ TC主屏幕的组成
图1.7除去顶部两行显示信息以外的部分构成 TC主屏幕。TC主 屏幕由位于首行的主菜单(Main Menu)、 位于中间窗口的 编辑区(Edit Window)、消息窗口(Message Window)/观 察窗口(Watch Window)和位于底行的参考行(Reference Line) 的四部分组成。其中: ① 主菜单:有 8个功能项组成,除 Edit功能项外,其余各项都 有下级子菜单(详见第11章)。8个功能项为: File Edit Run Compile Project Option Debug Break/watch 分别代表:文件操作、编辑、运行、编译、项目文件、选项、 调试、中断/ 观察等功能。其中,初学者常用的有 File 、Edit 、 Run、Compile四项。 在启动 TC2.0 后,主菜单即被选中,此时,可用【←】、【→】 两个键选择所需的功能项。被选中的功能项呈“反相”显示。 除此以外,还有以下两种切换为主菜单的方法:
C语言程序设计教程CJ_03C语言程序的流程控制_潭浩强第3版
•表达式1
假
•表达式2
真
表达式1; 相当于: while ( 表达式2) { 循环体 表达式3; }
Page 23
•循环体
•表达式3
辽宁师范大学
蔡静
说明:
表达式2多为关系、逻辑表达式或数值、字符型数据, 表达式1、3可为赋值、逗号表达式等; 表达式1、3皆可省略,此时等价为 while 语句,但分号不 可省略。表达式1、2、3都省略,即 for ( ; ;)循环体 ,相当于 while ( 1) 循环体,即死循环; 表达式3或循环体中必须有语句改变表达式2的值,否 则死循环。循环体为空语句时即 for ( 表达式1;表达式2;);
控制语句
限制转向语句
break中止循环或分支; continue结束本次循环; return从函数返回
goto转移语句 其他:
声明语句; 复合语句:把多个单语句用{ }括起来
辽宁师范大学 蔡静
Page 6
3.3 选择型程序设计 3.3.1---3.3.2 if…else结构 一、 if (表达式)
3.4.5 循环结构的中途退出与重复周期的中途结束
1.break——中途退出循环结构 格式: break; 在switch语句终止某个case语句 结束本层循环。 3. Goto语句 格式: goto 标号; 跳转到标号处语句 标号:语句
例0351:
2.continue——提前结束一个重复周期
二级求精:找满足方程组的hen , chick
for(hen = 0;hen <= 33;hen++) 找满足方程组的 chick ;
C语言程序设计基础教程 课后习题答案 (清华大学出版社 于延编) 自己做的 欢迎校正
for(i=3;i<=n;i++) //计算第三到弟 n 位数 { c=a+b; b=a; a=c; printf("%d ",a); } system("pause");} 10.输入一个十进制正整数 N,输出其二进制形 式,写出算法。 #include<stdio.h> #include<stdlib.h> void f(int n) { if(n) f(n/2 ); //用递归求 else return; printf("%d",n%2); } int main() { int n; while(1) { scanf("%d",&n); if(n<0) break; if(n==0) printf("0"); f(n); printf("\n"); } return 0; system("pause");}
第二章认识 C 语言
习 题 一、单项选择题 1.要把高级语言编写的源程序转换为目标程序,需要 使用( )。
A) 编辑程序 B) 驱动程序 C) 诊断程序 D) 编译程序 2.若有说明语句:int a,b,c,*d=&c; ,则能正确从键 盘读入三个整数分别赋给变量 a、b、c 的语句是( )。 A) scanf("%d%d%d",&a,&b,&c); B) scanf("%d%d%d",&a,&b,c); C) scanf("%d%d%d",a,b,c); D) scanf("%d%d%d",a,b,*c); 3.以下选项中合法的用户标识符是( )。 A) long B) _2Test C) 3Dmax D) A.dat 4.C 语言程序的执行,总是起始于( )。 A) 程序中的第一条可执行语句 B) 程序中的第一个函数 C) main 函数 D) 包含文件中的第一个函数 5.下列说法中正确的是( )。 A) C 程序书写时,不区分大小写字母 B) C 程序书写时,一行只能写一个语句 C) C 程序书写时,一个语句可分成几行书写 D) C 程序书写时每行必须有行号 6.英文小写字母 d 的 ASCII 码为 100,英文大写字母 D 的 ASCII 码为( )。 A) 50 B) 66 C) 52 D) 68
C语言练习册1-4章答案
目录第1章C语言程序设计概述 (1)第2章C语言的基本数据类型与表达式 (2)第3章C语言程序的控制结构 (3)第1节顺序结构程序设计 (3)第2节选择结构程序设计 (6)第3节循环结构程序设计 (15)第4章函数及预处理命令 (22)第1章C语言程序设计概述一、选择题二、填空题1、一_、主、主2、.C 、.OBJ 、.EXE3、“{”、“}”、变量说明、执行语句4、主函数5、/* 、*/、运行三、编程题1、(1) 解:#include “stdio.h”void main(){printf(“ProgrammingLanguage\n”); }(2) 解:#include “stdio.h”void main(){printf("***************\n");printf("\n");printf(" Welcome \n"); printf("\n");printf("***************\n");}2、解main(){ int a,b,x,y,m,n;a=25;b=5;x=a+b; y=a-b; m=a*b; n=a/b;printf(“x=%d,y=%d,m=%d,n=%d\n”,x,y,m,n);}第2章C语言的基本数据类型与表达式一、选择题二、填空题1、_ 十、八、十六2、int 、float、double3、34、-165、16、 27、10、 68、99、‘f’10、(m/10%10)*100+m/100*10+m%10 11、3.500000 12、 113、 414、1.500000 、 6.70000015、1 、-2 、1 、4三、程序分析题1、1112、4,33、14、11,19,30,15、65,896、a=%d,b=%d第3章C语言程序的控制结构第1节顺序结构程序设计一、选择题二、填空题1、_a=5.0,4,c=32、03、b、b、 b4、-145、未指明变量k的地址、格式控制符与变量类型不匹配6、scanf(“%d%f%f%c%c”,&a,&b,&x,&c1,&c2);3 6.5 12.6aA7、A B <CR>8、10 15 109、123 、45.000000 10、不确定值11、261 12、1613、2,1三、程序分析题1、 4 、52、203、无正确值4、x=98 y=765.000000 z=4321.0000005、8796、10 , A , 10四、编程题1、解#include “stdio.h”main(){float c,f;printf("请输入一个华氏温度\n");scanf("%f",&f);c=5.0/9.0*(f-32);printf("摄氏温度为:%6.2f\n",c);}2、解#include “stdio.h”main(){int a,b,c,x;printf("请输入一个三位整数:");scanf("%d",&x);a=x/100;b=x/10%10;c=x%10;printf("输出结果:%d%d%d\n",c,b,a);}3、#include <stdio.h>main(){int hour,min,tran;printf("Enter time:");scanf("%d%d",&hour,&min);printf("before:%dh%dmm\n",hour,min);tran=hour*60+min;printf("after:%dmin\n",tran);}4、#include <stdio.h>main(){int a,n,i;float p,result=1;printf("Input a,n,p:");scanf("%d,%d,%f",&a,&n,&p);for(i=1;i<=n;i++)result=result*(1+p); //求(1+p)的n次方result=a*result-a;printf("\n到期利息为:%f\n",result);}5、#include <stdio.h>#define PI 3.14159main(){float r,h,l,s,v;printf("Input r,h:");scanf("%f,%f",&r,&h);l=2*PI*r;s=PI*r*r;v=PI*r*r*h;printf("r=%f,h=%f\nl=%f,s=%f,v=%f\n",r,h,l,s,v);}6、#include<stdio.h>void main(){ int a,b;long c;scanf("%d%d",&a,&b);c=(b%10)*1000+(b/10)*100+(a%10)*10+a/10; /*将a数的十位和个位数依次在c 数个位和十位上, b数的十位和个位数依次放在c数的百位和千位*/printf("The result is:%ld\n",c);}第2节选择结构程序设计一、选择题二、填空题1、&& || !2、x>2&&x<3||x<-103、y%2==14、x<z||y<z5、((x<0&&(y<0))||((x<0)&&(z<0))||((y<0)&&(z<0))6、17、08、19、0 10、0 11、012、113、014、[1] __ y<z ___ [2] ___ x<z ___[3] x<y15.[1] __ c=c+5____[2] ____ c=c-21_16、[1] __ u,v ____[2] __ x>y _____[3] u>z17、[1] ____ y%4==0&&y%100!=0 _[2] __ f=0____18、[1]gz<850 [2] (gz>=850)&&(gz<1500)[3] (gz>=1500)&&(gz<2000) [4] rfgz=gz-gz*0.015[5] rfgz=gz-gz*0.020019、[1] __10_____[2] ____9 ___[3] 11三、程序分析题1、 1,12、 1,03、5858584、your¥3.0yuan/xiaoshi5、2nd class postage is 14p6、 F7、 4:05 PM8、 b=29、 0.60000010、a=2,b=1 11、 passwarm四、编程题1、#include “stdio.h”void main(){int n;printf(“Input a number:\n”);scanf(“%d”,&n);if((n%5==0)&&( n%7==0)) printf(“yes\n”);else printf(“no\n”);}2、#include “stdio.h”void main(){int a,b;printf(“Input two number:\n”);scanf(“%d%d”,&a,&b);if(a*a+b*b>100) printf(“%d\n”,(a*a+b*b)/100); else printf(“%d\n”,a+b);}3、main(){float x;int y;printf("\n input x:");scanf("%f",&x);switch(x<0){case 1:y=-1;break;case 0:switch(x==0){case 1:y=0;break;default:y=1;}}printf("\n y=%d",y);}4、#include <stdio.h>#include <math.h>main(){float x,y;printf("Input x:");scanf("%f",&x);if(x<0)y=x*x*x;else if(x==0)y=0;elsey=sqrt(x);printf("x=%f,y=%f\n",x,y); }5、#include <stdio.h>main(){int n,n1,n2,n3,n4,n5,nn;printf("Enter n(n>=0 && n<99999):");scanf("%d",&n);if(n>=10000&&n<=99999){printf("n是5位数\n");n1=n%10;n2=(n/10)%10;n3=(n/100)%10;n4=(n/1000)%10;n5=n/10000;printf("n每一位上的数字是(从高到低)%d,%d,%d,%d,%d\n",n5,n4,n3,n2,n1);nn=n1*10000+n2*1000+n3*100+n4*10+n5;printf("n的逆序数为%d\n",nn);}if(n>=1000&&n<=9999){printf("n是4位数\n");n1=n%10;n2=(n/10)%10;n3=(n/100)%10;n4=n/1000;printf("n每一位上的数字是(从高到低)%d,%d,%d,%d\n",n4,n3,n2,n1);nn=n1*1000+n2*100+n3*10+n4;printf("n的逆序数为%d\n",nn);}if(n>=100&&n<=999){printf("n是3位数\n");n1=n%10;n2=(n/10)%10;n3=n/100;printf("n每一位上的数字是(从高到低)%d,%d,%d\n",n3,n2,n1);nn=n1*100+n2*10+n3;printf("n的逆序数为%d\n",nn);}if(n>=10&&n<=99){printf("n是2位数\n");n1=n%10;n2=n/10;printf("n每一位上的数字是(从高到低)%d,%d\n",n2,n1);nn=n1*10+n2;printf("n的逆序数为%d\n",nn);}if(n>=0&&n<=9){printf("n是1位数\n");printf("n每一位上的数字是(从高到低)%d\n",n);nn=n;printf("n的逆序数为%d\n",nn);}}6、#include <stdio.h>main(){float i,r;printf("Input i(万元):");scanf("%f",&i);if(i<=10)r=i*0.1;else if(i<=20)r=10*0.1+(i-10)*0.075;else if(i<=40)r=10*0.1+10*0.075+(i-20)*0.05;else if(i<=60)r=10*0.1+10*0.075+20*0.05+(i-40)*0.03;else if(i<=100)r=10*0.1+10*0.075+20*0.05+20*0.03+(i-60)*0.015;elser=10*0.1+10*0.075+20*0.05+20*0.03+40*0.015+(i-100)*0.01;printf("i=%f,r=%f\n",i,r);}7、#include <stdio.h>#include <math.h>void main(){ double s=0.0;int i,n;scanf("%d",&n);for(i=0; i<n;i++)if(i%5==0 && i%11==0)s=s+i;s=sqrt(s);p rintf("s=%f\n",s); }8、#include <stdio.h>main(){ int n,g,sh;printf("Enter a two-digit number:");scanf("%d",&n);printf("You entered the number ");if(n>=10 && n<=19)switch(n){ case 10:printf("ten\n");break;case 11: printf(" eleven\n");break;case 12:printf("twelve\n");break;case 13:printf("thirteen\n");break; case 14:printf("fourteen\n");break; case 15:printf("fifteen\n");break; case 16:printf("sixteen\n");break; case 17:printf("seventeen\n");break; case 18:printf("eighteen\n");break;case 19:printf("nineteen\n");break;}else{g=n%10;sh=n/10;switch(sh){case 2: printf("twenty");break;case 3:printf("thirty");break;case 4:printf("fourty");break;case 5:printf("fifty");break;case 6:printf("sixty");break;case 7:printf("seventy");break;case 8:printf("eighty");break;case 9:printf("ninety");break;}switch(g){case 0:printf("\n");break;case 1:printf("-one\n");break;case 2:printf("-two\n");break;case 3:printf("-three\n");break;case 4:printf("-four\n");break;case 5:printf("-five\n");break;case 6:printf("-six\n");break;case 7:printf("-seven\n");break;case 8:printf("-eight\n");break;case 9:printf("-nine\n");break;}}}第3节循环结构程序设计一、选择题二、填空题1.[1] ____ x>=0_______ [2] ____ x<amin ___________ 2.[1] _____ c!=`\n`__ [2]c>=`0`&&c<=`9`__ 3.[1] ______ x1 ______ [2] ______ x1/2-2_______ 4.[1] __ r=m;m=n;n=r;[2] ____ m%n ________ _____ 5.[1] __ i%3==2&&i%5==3&&i%7==2 _[2] ____ j%5==0____ 6.[1] _____ n%10 ______ [2] _____ max=t ____ 7.[1] _______ i<x ______8.[1] ________2*x+y*4==90____9.[1] ___ t=t*i _________ [2] ______ t=-t/i _______ 10.[1] ____ m=n __ [2] _____ m ___ [3] ____ m=m/10______ 11.[1] ____ m=0,i=1_____ [2] ___ m=m+i _________ 12.[1] _____ k ____ [2] ___ k/10_____13.[1] _____ break ___ [2] ____ i= =11或i>=11__________ 14.[1] _____ i<=9 ____ [2] ______ j%3!=0____15、[1]b=i+1 16、[1]t>eps [2] 2.0*s17、[1] (ch=getchar()) [2] front!=' ' [3] ch三、程序分析题1、172、6689773、0111224、s=35、3,1,-1,3,1,-1,3,1,-1四、编程题1、#include “stdio.h”void main(){ int k,s=0;scanf("%d",&k);while(k>0){ if(k%3==0&&k%7!=0)s++ ;scanf("%d",&k);}printf("s=%d\n",s);}2、#include “stdio.h”void main( ){ int sum,n,i,s=0;for(n=200;n<=500;n++){ sum=0;for(i=1;i<=n/2;i++)if(n%i==0) sum+=i;if(sum= =n)s=s+n; }printf(“s=%d\n”,s); }3、#include "stdio.h"void main(){ int n,x=1;for(n=9;n>=1;n--)x=2*(x+1);printf("n=%d",x);}4、#include "stdio.h"void main(){ int x,y,z;for(x=1;x<=19;x++)for(y=1;y<=33;y++)for(z=1;z<=99;z++)if((x+y+z==100)&&(5*x+3*y+z/3==100))printf("X=%d,Y=%d,Z=%d\n",x,y,z);}5. main(){int i,n=0;for(i=100;i<=600;i++){a=i/100;b=i%100/10;c=i%10;if((b+c)%10==a)n++; }printf(“n=%d\n”,n);}6、#include <stdio.h>void main(){int i,sum=0,a,b,c;for(i=123;i<433;i++){a=i/100;b=i/10%10;c=i%10;if(a!=b&&a!=c&&b!=c&&(a>0)&&(a<5)&&b>0&&b<5&&c>0&&c<5) {sum++;printf("%d ",i);}}printf("\n%d\n",sum);}7、输出9*9口诀表。
清华《C语言程序设计》1概述和数据类型ppt
级语言与数据结构的基本思想,初步学会运用计算机语言解决
实际问题、培养学生程序设计逻辑思想,并为今后进一步使用
其他面向对象的可视化开发工具,开发管理信息系统等应用程
序打下基础。
C语言程序设计
5
第
一
章
C 课程目标:
语
言 简
❖熟记C语言的基本概念
介
❖熟悉C-FREE的上机操作环境
❖会读、会编、会调试C程序
第 一 章
C 语 言 简 介
C语言程序设计
1
第
一 章
C 教材、参考书与课时安排
语
言
– 教材
简
介
C语言程序设计 唐国民 编著 清华大学出版社
– 参考书
C程序设计 谭浩强 清华大学出版社
C高级实用程序设计 王士元 清华大学出版 社
– 课时安排
授课 :60学时
C语言程序设计
2
第
一
章
– 上机安排
C 语
• 上机地点:1幢四楼计算机机房431
• 1987年,ANSI公布了新标准——87 ANSI C。
• 1990年,国际标准化组织接受了87 ANSI C为ISO
C 的标准(ISO9899—1990)。
• 1994年,ISO又修订了C语言标准。
• 目前流行的C语言编译系统大多是以ANSI C为基础
进行开发的。
C语言程序设计
13
第
一 章
二、
– 认真、独立、按时完成并提交作业
– 重视上机实践,有效利用宝贵的上机时间
C语言程序设计
4
第
一
章 一、 C语言程序设计在计算机科学与技术专业中的作用与地位
数据结构C语言版(第2版)严蔚敏人民邮电出版社课后习题答案之欧阳总创编
数据结构(C语言版)(第2版)课后习题答案李冬梅2015.3目录第1章绪论1第2章线性表6第3章栈和队列18第4章串、数组和广义表36第5章树和二叉树47第6章图60第7章查找75第8章排序89第1章绪论1.简述下列概念:数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型。
答案:数据:是客观事物的符号表示,指所有能输入到计算机中并被计算机程序处理的符号的总称。
如数学计算中用到的整数和实数,文本编辑所用到的字符串,多媒体程序处理的图形、图像、声音、动画等通过特殊编码定义后的数据。
数据元素:是数据的基本单位,在计算机中通常作为一个整体进行考虑和处理。
在有些情况下,数据元素也称为元素、结点、记录等。
数据元素用于完整地描述一个对象,如一个学生记录,树中棋盘的一个格局(状态)、图中的一个顶点等。
数据项:是组成数据元素的、有独立含义的、不可分割的最小单位。
例如,学生基本信息表中的学号、姓名、性别等都是数据项。
数据对象:是性质相同的数据元素的集合,是数据的一个子集。
例如:整数数据对象是集合N={0,±1,±2,…},字母字符数据对象是集合C={‘A’,‘B’,…,‘Z’,‘a’,‘b’,…,‘z’},学生基本信息表也可是一个数据对象。
数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。
换句话说,数据结构是带“结构”的数据元素的集合,“结构”就是指数据元素之间存在的关系。
逻辑结构:从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的。
因此,数据的逻辑结构可以看作是从具体问题抽象出来的数学模型。
存储结构:数据对象在计算机中的存储表示,也称为物理结构。
抽象数据类型:由用户定义的,表示应用问题的数学模型,以及定义在这个模型上的一组操作的总称。
具体包括三部分:数据对象、数据对象上关系的集合和对数据对象的基本操作的集合。
2.试举一个数据结构的例子,叙述其逻辑结构和存储结构两方面的含义和相互关系。
《C语言程序设计》第3章最简单的C程序设计
3.2.1 常量和变量
3.常变量: 在定义变量时,如果加上关键字const,则变量 的值在程序运行期间不能改变。 定义形式: const 类型 常量标识符 = 常量值
例:
const int a=3; const double PI = 3.14159;
21
3.2.1 常量和变量
4.标识符:一个对象的名字 大小写字母是不同的字符 C语言规定标识符只能由字母、数字和下划线3 种字符组成,且第一个字符必须为字母或下划线
4
3.1顺序程序设计举例
#include <stdio.h> int main ( ) 输出 { float f,c; scanf("%f",&f); c=(5.0/9)*(f-32); printf("f=%f\nc=%f\n",f,c); return 0; }
5
输入
3.2 数据的表现形式及其运算
3.2.1 常量和变量-练习
下面正确的字符常量是( C)
A) "c" B) "\\"
合法
C) 'W'
D) '\'
'\t'
下面不正确的字符串常量是( A )
A) 'abc ' B) "12'12"
C) "0"
D) " "
14
3.2.1 常量和变量-练习
写出下面C程序的运行结果 #include <stdio.h> int main ( ) {
3.2.1 常量和变量
3.2.2 数据类型
c语言第四版(谭浩强著)第3章 最简单的C程序设计 (2)
6.2 怎样定义和引用二维数组
队员1 队员2 队员3 队员4 队员5 队员6 2757 1436 2018
1分队 2456
2分队 3045 3分队 1427
1847 2018 1175
1243 1725 1046
1600 2020 1976
ห้องสมุดไป่ตู้
2346 2458 1477
float pay[3][6];
数组名的命名规则和变量名相同
如 int a[10]; 数组名
定义一维数组的一般形式为: 类型符 数组名[常量表达式]; 数组名的命名规则和变量名相同 如 int a[10]; 数组长度
定义一维数组的一般形式为: 每个元素的数据类型 类型符 数组名[常量表达式]; 数组名的命名规则和变量名相同
第6章 利用数组处理批量数据
前几章使用的变量都属于基本类型, 例如整型、字符型、浮点型数据,这 些都是简单的数据类型。 对于有些数据,只用简单的数据类型 是不够的,难以反映出数据聚集的特 点,也难以有效地进行处理。
如果有1000名学生,每个学生有一个 成绩,需要求这1000名学生的平均成 绩。 用s1,s2,s3,……,s1000表示每个学生的成 绩,能体现内在联系。 数组名 C语言用方括号中的数字表示下标, 如用s[15]表示
6.1.1 怎样定义一维数组
6.1.2 怎样引用一维数组元素
6.1.3 一维数组的初始化
6.1.4 一维数组程序举例
6.1.1怎样定义一维数组
一维数组是数组中最简单的 它的元素只需要用数组名加一个下 标,就能惟一确定 要使用数组,必须在程序中先定义 数组
定义一维数组的一般形式为: 类型符 数组名[常量表达式];
2020年智慧树知道网课《C语言程序设计(西安工程大学)》课后章节测试满分答案
第一章测试1【单选题】(1分)C语言程序的基本单位是()A.程序行B.函数C.语句D.字符2【单选题】(1分)C语言规定,在一个源程序中main函数的位置()A.必须在最开始B.必须在最后C.必须在预处理命令的后面D.可以在其他函数之前或之后3【单选题】(1分)对于一个正常运行的C程序,以下叙述中正确的是()A.程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束B.程序的执行总是从main函数开始,在程序的最后一个函数中结束C.程序的执行总是从main函数开始,在main函数结束D.程序的执行总是从程序的第一个函数开始,在main函数结束4【单选题】(1分)以下叙述的是()A.C程序的主函数必须用main作为函数名B.C程序在书写时,有严格的缩进要求,否则不能编译通过C.一个C程序只能有一个主函数D.一个C程序可以包含多个不同名的函数5【单选题】(1分)下列说法正确的是()A.一个函数的函数体必须要有变量定义和执行部分B.C程序的书写格式自由,一个语句可以分写在多行上C.一个函数的函数体必须要有执行部分,可以没有变量定义D.C程序的书写格式严格限制,一行内必须写一个语句6【多选题】(1分)下列关于注释行的描述中,正确的是()A.单行注释以“//”开头,“//”后面是注释内容B.注释只在C语言源程序中有效,在编译时会被编译器忽略C.单行注释以符号“/*”开头,以符号“*/”结尾D.注释只能对程序中的某一行代码进行解释7【单选题】(1分)关于计算机语言的描述,正确的是()A.机器语言由0和1组成,执行速度快B.汇编语言比机器语言执行速度快C.汇编语言已将机器语言符号化,所以它与机器无关D.机器语言因为是面向机器的低级语言,所以执行速度慢8【单选题】(1分)用C语言编写的程序()A.可直接被执行B.是一个源程序文件C.经过编译或解释才能被执行D.经过编译、连接后被执行9【单选题】(1分)连接程序将一个C程序的所有目标程序和系统的库文件以及系统提供的其他信息连接起来,最终生成一个可执行的二进制文件,它的后缀是()A..objB..cppC..libD..exe第二章测试1【单选题】(1分)C语言提供的数据类型关键字有()A.DoubleB.CharC.shortD.integer2【单选题】(1分)若有说明和语句:inta=5;a++;此处表达式a++的值是()。
精品课件-C语言程序设计(柴世红)-第3章
第3章 运算符与表达式
【例3-5】 条件运算符:计算a+|b|。
01 main() 02 { 03 int a,b; 04 printf("input 2 integer\n"); 05 scanf("%d%d",&a,&b); 06 printf("%d\n",b>=0?a+b:a-b); 07 }
17
第3章 运算符与表达式
2.赋值表达式 由赋值运算符将一个变量和一个表达式连接起来的式子就 称为赋值表达式,其一般形式如下:
<变量>=<表达式> 它的作用是将赋值运算符“=”右侧的表达式的值赋给左 侧的变量。
18
第3章 运算符与表达式
3.赋值运算时的类型转换 (1) 将实型数据赋给整型变量时,需要舍弃该实数的小数 部分。例如:int a = 1.23 ;,变量a得到的值为1,小数部分 被舍弃。 (2) 将整型数据赋给单、双精度变量时,数值不变,但是 将以浮点数的形式存储到变量之中。例如:float b=10; ,则 需要将10转换为10.00000,再存储到b中。 (3) 以上类型转换是由系统自动进行的。
3
第3章 运算符与表达式
3.2 算术运算符与表达式 3.2.1 算术运算符
C语言提供的算术运算符如表3.1所示。
4
第3章 运算符与表达式
运算符 + *
表 3.1 算术运算符
含义
运算符
加法或正号
/
减法或负号
%
乘法
含义 除法 取余
5
第3章 运算符与表达式
3.2.2 算术表达式 1.整数算术运算 参加算术运算的两个操作数都是整数,那么这个表达式就
C语言程序设计教程_李含光_郑关胜_清华大学出版社习题答案习题答案[完美打印版]
第1章习题参考谜底之欧侯瑞魂创作1.单项选择题(1)A (2)C (3)D (4)C (5)B 2.填空题(1)函数(2)主函数(main)(3)printf() , scanf()第2章习题参考谜底1.单项选择题1-5 CBCCC 6-10 CDCDC 11-13 DBB2.填空题(10)11(11)((m/10)%10)*100+(m/100)*10+m%10(12)0(13)10 ,9 ,11(15)(x<0&&y<0)||(x<0&&z<0)||(y<0||z<0)(16)double (17)x==0(18)sqrt(fabs(a-b))/(3*(a+b))(19)sqrt((x*x+y*y)/(a+b))第3章习题参考谜底1.单项选择题1-5 CCCDD 6-10 BCDBC 11-15 BCBBB 16 A 2.填空题(1)用;暗示结束(2){ }(3)y=x<0?1:x==0?0:-1(4)y%4==0&&y%100!=0||y%400==0(5)上面未配对(6)default标号(7)while , do while , for(8)do while(9)本次(10)本层3.阅读法式,指出结果(1)yes(2)*&(3)ABother(4)28 70(5)2,0(6)8(7)36(8)1(9)3,1,-1,3,1,-1(10)a=12 ,y=12(11)i=6,k=4(12)1,-24.法式填空(1)x:y, u:z(2)m=n , m!=0 ,m=m/10(3)t<eps , t*n/(2*n+1) , print f(“%lf\n”,2*s)(4)m%5==0 , printf(“%d\n”,k)(5)cx=getchar() , cx!=front , cx(6)double s=0 , 1.0/k , %lf(7)s>=0 , s<gmin ,5.编程题(1).#include <stdio.h>int main(){double x,y;scanf("%lf",&x);if(x<1)y=x;else if(x>=1.0&&x<10)y=2*x-11;elsey=3*x-11;printf("%lf\n",y);return 0;}(2).#include <stdio.h>int main(){double x,y,z,min;scanf("%lf%lf%lf",&x,&y,&z); if(x>y)min=y;else min=x;if(min>z)min=z;printf("min=%lf\n",min);return 0;}(3).#include <stdio.h>int main(){int y,m,d,flag,s=0,w,i;scanf("%d%d%d",&y,&m,&d);flag=(y%4==0&&y%100!=0||y%400 ==0);w=((y-1)*365+(y-1)/4-(y-1)/100+(y-1)/400)%7;for(i=1;i<=m;i++){switch(i){case 1:s=d;break;case 2:s=31+d;break;case 3:s=59+d;break;case 4:s=90+d;break;case 5:s=120+d;break;case 6:s=151+d;break;case 7:s=181+d;break;case 8:s=212+d;break;case 9:s=243+d;break;case 10:s=273+d;break;case 11:s=304+d;break;case 12:s=334+d;break;}}if(flag==1&&m>2)s=s+1;s=(w+s)%7;if(s==0)printf("星期日\n");elseprintf("星期%d\n",s);return 0;}(4).#include <stdio.h>int main(){float p,r;scanf("%f",&p);if(p<=10)r=p*0.1;else if(p>10&&p<=20)r=10*0.1+(p-10)*0.075;else if(p>20&&p<=40)r=10*0.1+10*0.075+(p-20)*0.05; else if(p>40&&p<=60)r=10*0.1+10*0.075+20*0.05+(p-40)*0.03;else if(p>60&&p<=100)r=10*0.1+10*0.075+20*0.05+20*0.03+(p-60)*0.015;else if(p>100)r=10*0.1+10*0.075+20*0.05+20*0. 03+40*0.015+(p-100)*0.01;printf("%f\n",r);return 0;}(5).#include <stdio.h>int main(){char c;while((c=getchar())!='\n'){if(c>='a'&&c<='z')c=c-32;putchar(c);}return 0;}(6).#include<stdio.h>int main(){int m,k=2;printf("输入一个正整数:\n"); scanf("%d",&m);while(k<m)if(m%k==0){printf("%4d",k);m=m/k;}elsek++;printf("%4d\n",m);return 0;}(7).#include<stdio.h>int main(){int a,n,s=0,p=0,i;scanf("%d %d",&n,&a);for(i=1;i<=n;i++){p=p*10+a;s=s+p;}printf("%d\n",s);return 0;}(8).#include<stdio.h>int main(){int i,j,k;for(i=1;i<=9;i++)for(j=0;j<=9;j++)for(k=0;k<=9;k++)printf("%5d",100*i+10*j+k); return 0;}(9).#include<stdio.h>#include<math.h>int main(){float a=-10,b=10,x,f1,f2,f; f1=(((2*a-4)*a+3)*a)-6;f2=(((2*b-4)*b+3)*b)-6;do{x=(a+b)/2;f=(((2*x-4)*x+3)*x)-6; if(f*f1<0){b=x;f2=f;}else{a=x;f1=f;}}while(fabs(f)>=1e-6);printf("%6.2f\n",x);return 0;}(10).#include<stdio.h>#include<math.h>int main(){int n=2;double eps,t,s=0,x;scanf("%lf %lf",&x,&eps); t=x;s=t;while(fabs(t)>=eps){t=-t*(2*n-3)*x*x/(2*n-2); s=s+t/(2*n);n++;}printf("%d,%lf\n",n,s);return 0;}(11).#include<stdio.h>int main(){unsigned long s,t=0,p=1;scanf("%u",&s); while(s!=0){if((s%10)%2!=0) {t=t+(s%10)*p; p=p*10; }s=s/10;}printf("%u\n",t); return 0;}第4章习题参考谜底1.单项选择题1-5 DDDBD 6-10 BADCD 11-14 BDAB2.填空题(1)2(2)嵌套 , 递归(3)全局变量 , 局部变量 , 静态变量 , 静态变量(4)auto , static , register , extern(5)外部变量(6)编译 ,运行3.阅读法式,指出结果(1)15(2)5(3)5,4,3(4)i=5i=2i=2i=4i=2(5)求水仙花数(6)-5*5*5(7)30(8)0 101 112 124.法式填空(1)float fun(float , float) , x+y,x-y , z+y,z-y(2)x , x*x+1(3)s=0 , a=a+b5.编程题(1).#include<stdio.h>unsigned int fun(unsigned int); int main(){unsigned int s; scanf("%u",&s);printf("%u\n",fun(s));return 0;}unsigned int fun(unsigned int s) {unsigned int p=0;while(s!=0){p=p+s%10;s=s/10;}return p;}(2).#include<stdio.h>#include<stdlib.h>#include<math.h>void f1(float,float,float,float);void f2(float,float,float,float);void f3(float,float,float,float);int main(){float a,b,c,d;scanf("%f %f %f",&a,&b,&c);if(a==0){printf("不是一元二次方程\n"); exit(0);}d=b*b-4*a*c;if(d>0)f1(a,b,c,d);else if(d==0)f2(a,b,c,d);elsef3(a,b,c,d);return 0;}void f1(float a,float b,float c,float d){float x1,x2;{x1=(-b+sqrt(d))/(2*a); x2=(-b-sqrt(d))/(2*a);printf("%.2f ,%.2f\n",x1,x2);}}void f2(float a,float b,float c,float d){float x1,x2;{x1=-b/(2*a);x2=-b/(2*a);printf("%.2f ,%.2f\n",x1,x2);}}void f3(float a,float b,float c,float d){float x1,x2;{x1=-b/(2*a);x2=sqrt(-d)/(2*a);printf("%.2f+i*%.2f\n",x1,x2); printf("%.2f-i*%.2f\n",x1,x2);}}(3).#include<stdio.h>double p(int,double);int main(){int n;double x;do{scanf("%d",&n);}while(n<0);scanf("%lf",&x);printf("%lf\n",p(n,x));return 0;}double p(int n,double x){double pn;if(n==0)pn=1;else if(n==1)pn=x;elsepn=((2*n-1)*x*p(n-1,x)-(n-1)*p(n-2,x))/n;return pn;}(4).#include<stdio.h>double fun(float);void display(float,int);int main(){float dep;int season;scanf("%f %d",&dep,&season);display(dep,season);return 0;}double fun(float d){return d*RATE;}void display(float d,int s){int i;printf("季度利余额\n"); printf("-------------------------------\n");for(i=1;i<=s;i++){printf("%-4d %-.2f %-.2f\n",i,fun(d),fun(d)*i+d);printf("-------------------------------\n");}}(5).#include<stdio.h>double fun(void);int main(){printf("%lf\n",fun());return 0;}double fun(void){double s=0;int n=1;while((double)(2*n-1)/((2*n)*(2*n))>1e-4){s=s+(double)(2*n-1)/((2*n)*(2*n));n++;}return s;}(6).#include<stdio.h>int fun(int);int main(){int w;scanf("%d",&w);printf("%d\n",fun(w));return 0;}int fun(int w){int n=1,p=1,m; m=w; while(m>10) {m=m/10;p=p*10;n++;}return w%p; }创作时间:二零二一年六月三十日第5章习题参考谜底1、选择题:1-5 C (B C) BBA 6-8 DDB2、填空题(1) 0,9(2) float realArray[100],char strArray[16],int intArray[1000] (3)运算符 sizeof(4) 6字节3、阅读法式,写出下面法式的运行结果(1) aabbcc dd(2) abcd(3)ahAMa(4)0010(5) 1 3 4 5(6)This is the title.Name 1 is RosalindaName 2 is ZekeThe biggest name alpabetically is ZekeBoth names are Rosalinda Zeke(7)0 0 0 0 0 0 0 00 1 2 3 4 5 6 70 2 5 6 8 10 748 140 3 6 9 12 15 18 210 4 8 12 16 20 24 280 5 10 15 20 177 30 350 6 12 18 24 30 36 420 7 14 21 28 35 42 494、法式填空(1) a[i][j] != a[j][i] , 1(2) 0, a[i] < a[mini] , maxi = i , a[maxi] = a[mini](3) int a[], int b[], b[i] = a[i], -999, arraycopy(a,b), b[i++](4) a<sizeof(ch), if5、编程题(1)#include<stdio.h>int main ( ){1 int a[3][4] = {0, 2,9,7,5,13,6,8,27,11,1,3};int i,j,temp;for(i=0,j=0;j<4;j++){temp = a[2-i][j];a[2-i][j] = a[i][j];a[i][j] = temp;}for(i=0;i<3;i++){for(j=0;j<4;j++)printf("%3d",a[i][j]);printf("\n");}return 0;}(2)#include<stdio.h>int main ( ){static int a[6][6];int i,j,t=1;for(i=0;i<6;i++){t = i+1;for(j=0;j<i+1;j++)a[i][j] = t--;}for(i=0;i<6;i++){for(j=0;j<6;j++)printf("%3d",a[i][j]);printf("\n");}return 0;}(3)#include <stdio.h>#define M 3#define N 4#define R 5int main( ){static int a[M][N],b[N][R],c[M][R]; int i,j,k;2 printf("Matrix a:\n");for( i = 0; i < M; i++ )for( j = 0; j < N; j++ )scanf( "%d",&a[i][j] );printf("Matrix b:\n");for( i = 0; i < N; i++ )for( j = 0; j < R; j++ )scanf( "%d",&b[i][j] );for( i = 0; i < M; i ++ )for( j = 0; j < N; j++ )for( k = 0; k < R; k++)c[i][k] += a[i][j]*b[j][k];for( i = 0; i < M; i++ ){for( j = 0; j < R; j++ )printf( "%3d",c[i][j] );printf("\n");}return 0;}(4)#include <stdio.h>#define M 5int main( ){static int a[M];int i,max = -1,min = 100,maxi,mini,temp;for( i = 0; i < M; i++ )scanf( "%d",&a[i] ); //0~99间的值for( i = 0; i < M; i++ ){if( max < a[i] ){max = a[i];maxi = i;}if( min > a[i] ){min = a[i];mini = i;}}temp = a[maxi];a[maxi] = a[mini];a[mini] = temp;for( i = 0; i < M; i++ )printf( "%3d",a[i] );return 0;}3(5)#include <stdio.h>#define M 3#define N 4int main( ){static int a[M][N];int max = -1,sumcol=0,sumrow=0;int i,j,maxi,col;for( i = 0; i < M; i++ ){sumrow = 0;for( j = 0; j < N; j++ ){scanf( "%d",&a[i][j] );sumrow += a[i][j];}if ( max < sumrow ){max = sumrow;maxi = i;}}printf("which col sum will be caculated?(>0)");scanf("%d",&col);for( i = 0; i < M; i ++ )sumcol += a[i][col-1];printf("The %dth row's sum is max, max=%d\n",maxi+1,max);printf("The %dth column's sum=%d\n",col,sumcol);return 0;}(6)#include <stdio.h>#define M 81int main( ){static char str[M];int i,count = 0;char ch;gets(str);fflush(stdin); //清空输入缓冲区,以便读入字符数据printf("Which character will be found?");ch = getchar();for( i = 0; i < strlen(str); i++ )if( ch == str[i] )count++;printf( "The number of character '%c' is %d\n",ch,count );4 return 0;}(7)#include <stdio.h>#include <stdlib.h>#define N 10 //同学人数#define M 5 //课程数void enter_scores(void);void sort_scores(int score[][M], int average[N][3]);void disp_scores(int score[][M]);void histogram(int n, int score[][M]);void printchar(int n);static int score[N][M];static int aver[N][3]; //第1列为均值,第2列原始顺序,第3列为均值逆序int main(){int course;enter_scores();printf("\n===========Oringenal Score Start=========\n");disp_scores(score);printf("\n===========Oringenal Score End===========\n");printf("\n===========Sorted Score Start============\n");sort_scores(score,aver);printf("\n===========Sorted Score End==============\n");printf("\nWhich class will be statisticed?\n");scanf("%d",&course);histogram(course, score);system("Pause");return 0;}/* 输入成果 */void enter_scores(){int i, j;for(i=0; i<N; i++) {for(j=0; j<M; j++){scanf("%d",&score[i][j]);aver[i][0] += score[i][j];}}for( i = 0; i < N; i++ )for ( j = 1; j < 3; j++ )5 aver[i][j] = i;}/* 成果排序. */void sort_scores(int score[][M], int average[N][3]){int i,j,t;int temp,tempindex;for( i = 0; i < N - 1; i++ )for( j = 0; j < N - 1 - i; j++ )if ( average[j][0] < average[j+1][0] ){temp = average[j][0];average[j][0] = average[j+1][0];average[j+1][0] = temp;tempindex = average[j][2];average[j][2] = average[j+1][2];average[j+1][2] = tempindex;}printf("\n Score1 Score2 Score3 Score4 Score5\n"); for( i = 0; i < N; i++ ){t = average[i][2];for( j = 0;j < M; j++ ){printf("%8d", score[t][j]);}printf("\n");}}/* 输出成果 */void disp_scores(int score[][M]){int i, j;printf("\n Score1 Score2 Score3 Score4 Score5\n"); for( i = 0; i < N; i++ ){for( j = 0;j < M; j++ )printf("%8d", score[i][j]);printf("\n");}}void printchar(int n){6 int i;for (i = 0; i < n; ++i) putchar('*');}void histogram(int course, int score[][M]){int i,temp;int segs[5] = {0};int sc[N];for( i = 0; i < N; i++ )sc[i] = score[i][course];for (i = 0; i < N; i++)/* 统计各分段人数 */{temp = (int)sc[i]/10;segs[ temp<6?0:temp-5]++; /* 成果/10,将成果分段 */ }printf("\nSegment Number\n");for (i = 0; i < 5; i++) /* 输出直方图,每段的人数 */{printf("<%3d: %5d| ", (i+1)*10+50, segs[i]);printchar(segs[i]);putchar('\n');}putchar('\n');}(8)#include <stdio.h>#define M 81int main( ){static char str[M];int i,count = 0;char ch = 0;gets(str);for( i = 0; i < strlen(str); i++ )if( ch < str[i] )ch = str[i];for( i = 0; i < strlen(str); i++ )if( ch == str[i] )count++;printf( " max = '%c' ,count = %d\n",ch,count );return 0;}7第6章习题参考谜底1、选择题:1-5 BBDDA 6-10 CCABD 11-15 CBCDA 16A2、填空题(1)常量,变量(2)指针(3)2(4)12,12(5) a[0],a[3] 3、阅读法式,写出下面法式的运行结果(1)5(2)6(3) abcdefglkjih(4) 976531(5)5,9(6)2,4,5,7,6,0,11,9,7,3,(7)string_a=I am a teacher.string_b=You are a student.string_a=I am a teacher.string_b=I am a teacher.4、法式填空(1) *p != '\0', *p-'0', j—(2) i <strlen(str), j=i, k+1(3)a+i, (char)(n%10) + '0'(4)*pk = i, a,n,i+1,pk(5) s1++, *s2, s1=p5、编程题(1)#include <stdio.h>int main(){int a=3,b=7,c=2;int *ptra = &a,*ptrb = &b,*ptrc = &c;int temp;printf("a=%d,b=%d,c=%d\n",a,b,c);printf("*ptra=%d,*ptrb=%d,*ptrc=%d\n",*ptra,*ptrb,*ptrc); if ( *ptra > *ptrb ){temp = *ptra;*ptra = *ptrb;1 *ptrb = temp;}if ( *ptra > *ptrc ){temp = *ptra;*ptra = *ptrc;*ptrc = temp;}if ( *ptrb > *ptrc ){temp = *ptrb;*ptrb = *ptrc;*ptrc = temp;}printf("a=%d,b=%d,c=%d\n",a,b,c);printf("*ptra=%d,*ptrb=%d,*ptrc=%d\n",*ptra,*ptrb,*ptrc);return 0;}(2)#include <stdio.h>#include <stdlib.h>void inputdata(int a[],int n);void process(int a[],int n);void outputdata(int a[],int n);int main(){int a[10],n=10;inputdata(a,n);outputdata(a,n);process(a,n);outputdata(a,n);system("Pause");return 0;}void inputdata(int a[],int n) //0~99之间的数{int i;for( i = 0; i < n; i++ )scanf("%d",a+i);}void outputdata(int *ptr,int n){int i;2 printf("\n==========OutPut Data Start=============\n"); for( i = 0; i < n; i++ )printf("%4d",*ptr++);printf("\n==========OutPut Data End================\n");} void process(int *ptr,int n){int i,maxi,mini;int max=-1,min=101;for( i = 0; i < n; i++ ){if ( max < *(ptr+i) ){max = *(ptr+i);maxi= i;}if ( min > *(ptr+i) ){min = ptr[i];mini= i;}}if ( mini != 0){i = ptr[0];ptr[0] = ptr[mini];ptr[mini] = i;}if (maxi != n-1){i = ptr[n-1];ptr[n-1] = ptr[maxi];ptr[maxi] = i;}if (maxi == 0 && mini == n-1){i = ptr[maxi];ptr[maxi] = ptr[mini];ptr[mini] = i;}}(3)#include<stdio.h>3int strLength (char *);int main(){static char str[81];gets(str);printf("string "%s" length:%3d\n",str,strLength(str)) ; system("Pause");return 0;}int strLength (char *s){char *p=s;while (*p) p++ ;return (p-s) ;}(4)#include <stdio.h>#define M 3#define N 4void Transpose (int (*a)[N],int (*T)[M]);int main( ){static int a[M][N],T[N][M];int i,j;for( i = 0; i < M; i++ )for( j = 0; j < N; j++ )scanf( "%d",&a[i][j] );printf("\n======Oringinal Matrix Start=========\n");for( i = 0; i < M; i ++ ){for( j = 0; j < N; j++ )printf( "%4d",a[i][j] );printf("\n");}printf("\n======Oringinal Matrix End===========\n");Transpose(a, T);printf("\n======Transpose Matrix Start=========\n");for( i = 0; i < N; i ++ ){for( j = 0; j < M; j++ )printf( "%4d",T[i][j] );printf("\n");}4 printf("\n======Transpose Matrix End===========\n"); return 0;}void Transpose (int (*a)[N],int (*T)[M]){int i,j;for( i = 0; i < N; i++ )for( j =0; j < M; j++ )T[i][j] = a[j][i];}(5)#include <stdio.h>int main(){static char source[81],target[81];int result;gets(source);gets(target);result = Strcmp(source,target);if (result){if( result < 0 )printf("%s < %s\n",source,target); elseprintf("%s > %s\n",source,target); }elseprintf("%s = %s\n",source,target); return 0;}int Strcmp(char *s,char *t){while (*s && *t && (*s == *t)) {s++;t++;}return *s - *t;}(6)#include <stdio.h>5#define M 5#define N 3int sum (int *a)int main()。
C2-1(顾元刚)
下一张
2.1.4符号常量
在程序设计中,对于某些有特定含义的、 经常使用的常量可以用标识符来代替。 用标识符代表常量,可增加程序的可读 性和可维护性。 在C语言中,代表常量的标识符称作符号常 量。符号常量定义的一般格式为: #define <符号常量> <常量>
其中,#define是用于定义符号常量预定义 命令符。其作用是定义一个符号常量, 并用该符号常量来代表其后的常量。例 如: #define PI 3.1415926 #define TURE 1
2.1常量
本节主要内容
2.1.1数值常量 2.1.2字符型常量 2.1.3 转义字符 2.1.4符号常量
下一张
2.1常量
常量是用来表示固定的数值和字符值的 词法单位。在程序中,常量之值不能再 被更改。常量具有一定的类型,类型由 其表示形式决定。在C语中,常量又可分 为数值常量和字符型常量。字符型常量 有字符常量(包括转义字符)和字符串 常量,另外还有一种符号常量。
表2.1 整型数据的表示范围
基本整型数 带符号数 无符号 数 0 ~ 65535 0 ~ 0177777 0x0 ~ 0xFFFF 长整型数 带符号数 无符号数
十 进 制 八 进 上一张 制 十 六 下一张 进制
-32768 +32767
~
-2147483648 2147483647 -020000000000 +17777777777 -0x80000000 +x7fffffff
上一张
下一张
表2.2常用转义字符及其含义
字符形式 \a \b \f \n \r \t \\ \’ \” \ddd \xhh
【免费下载】 杨明广C语言第一章、第二章、第三章课后答案
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,系电,力根通保据过护生管高产线中工敷资艺设料高技试中术卷资,配料不置试仅技卷可术要以是求解指,决机对吊组电顶在气层进设配行备置继进不电行规保空范护载高与中带资负料荷试下卷高问总中题体资,配料而置试且时卷可,调保需控障要试各在验类最;管大对路限设习度备题内进到来行位确调。保整在机使管组其路高在敷中正设资常过料工程试况中卷下,安与要全过加,度强并工看且作护尽下关可都于能可管地以路缩正高小常中故工资障作料高;试中对卷资于连料继接试电管卷保口破护处坏进理范行高围整中,核资或对料者定试对值卷某,弯些审扁异核度常与固高校定中对盒资图位料纸置试,.卷保编工护写况层复进防杂行腐设自跨备动接与处地装理线置,弯高尤曲中其半资要径料避标试免高卷错等调误,试高要方中求案资技,料术编试交写5、卷底重电保。要气护管设设装线备备置敷4高、调动设中电试作技资气高,术料课中并3中试、件资且包卷管中料拒含试路调试绝线验敷试卷动槽方设技作、案技术,管以术来架及避等系免多统不项启必方动要式方高,案中为;资解对料决整试高套卷中启突语动然文过停电程机气中。课高因件中此中资,管料电壁试力薄卷高、电中接气资口设料不备试严进卷等行保问调护题试装,工置合作调理并试利且技用进术管行,线过要敷关求设运电技行力术高保。中护线资装缆料置敷试做设卷到原技准则术确:指灵在导活分。。线对对盒于于处调差,试动当过保不程护同中装电高置压中高回资中路料资交试料叉卷试时技卷,术调应问试采题技用,术金作是属为指隔调发板试电进人机行员一隔,变开需压处要器理在组;事在同前发一掌生线握内槽图部内 纸故,资障强料时电、,回设需路备要须制进同造行时厂外切家部断出电习具源题高高电中中源资资,料料线试试缆卷卷敷试切设验除完报从毕告而,与采要相用进关高行技中检术资查资料和料试检,卷测并主处且要理了保。解护现装场置设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
程序运行后,若分别给变量a和b赋予5和6:
input a=5↙ input b=6↙ 则输出结果如下: old data: a=5,b=6 new data: a=6,b=5
【分析】这个问题类似于“有一瓶酱油和一瓶醋, 将两个瓶子内的液体互换”。人们马上会想到 需再找一个空瓶,先将酱油空瓶,再将醋倒入 原酱油瓶,最后将原空瓶内的酱油倒入原醋瓶。 根据这一思路,两个变量a和b的值交换的过程 可表示成图3.7。 程序设计如下:
a 5 ①1a
②
c
b 6 ③a
上一张 下一张
图3.7 交换变量a、b之值示意图
从输出结果可知: 通过交换变量的指针可交换输出变量的值,但原值不变。
上一张
下一张
3.4顺序结构程序实例
上一节介绍了三个采用顺序结构的数 值计算实例,下面再举几个顺序结构设 计的其他应用实例。
上一张
下一张
【例3.15】模拟企业管理信息系统的菜单设计。利用 printf函数按一定格式输出文字,可以在屏幕上显示一个 简单的程序界面。
上一张
下一张
#include <stdio.h> main() { int choice; printf("==================================\n"); printf("= 东方化工有限公司信息系统 =\n"); printf("==================================\n"); printf("= 1.计划管理 =\n"); printf("= 2.生产管理 =\n"); printf("= 3.仓库管理 =\n"); printf("= 4.财务管理 =\n"); printf("= 5.人事管理 =\n"); printf("= 6.退 出 =\n"); printf("==================================\n"); printf("Please choice (1-6):"); scanf("%d",&choice); 上一张 下一张 } 请读者分析下一张
程序如下: main() {int a=5,b=6,*p1,*p2,*p; 交换指向变量的值, p1=&a; 即交换指针的指向 p2=&b; printf("old data *p1=a%=d, *p2=b=%d\n",*p1,*p2); p=p1;p1=p2;p2=p; printf("a&b not swap a=%d, b=%d\n",a,b); printf("new data *p1=%d, *p2=d\n",*p1,*p2); } 程序运行后,输出如下:
可见,变量a、b的值已经改变。在实际应用中,有时不要求交换 两个变量(如a、b)的值,而是临时交换两个变量的输出,则可 以通过交换两个变量的指针实现。这一思路,可用图3.8表示。
上一张 下一张
P1 &a P2 &b
a 5 b 6 ③ P ①
P1 &a
a 5 b 6
② P2 &b
(a)指针变量p1和p2的指向 (b)交换指针p1和p2以改变指向 图3.8指针交换示意图
main() { int a,b,c; printf("input a="); 三条语句首尾相接, scanf("%d",&a); 写成一行,实现交换, printf("input b="); 不容易出错 scanf("%d",&b); printf("old data: a=%d,b=%\n",a,b); c=a;a=b;b=c; printf("new data: a=%d,b=%\n",a,b); }
【例3.16】将大写字母改写为小写字母。
【分析】大写字母和小写字母的 ASCⅡ码相差十进制数32,例如:字母 ‘A’的ASCⅡ码为十进制数65,而字母 ‘a’为97。因此,只要将一个大写字母 的ASCⅡ码加上32,即可改为小写字母; 反之,只要将一个小写字母的ASCⅡ码减 去32,即可改为大写字母。 据此,可编出如下程序: 上一张 下一张
#include <stdio.h> main() { char a1,a2; a1=getchar(); printf("%c,%d\n",a1,a1); a2=a1+32; printf("%c,%d\n",a2,a2); } 程序运行情况如下:
上一张 下一张
【例3.17】交换两个变量a和b的值。