新C语言-第四章作业(4)

合集下载

c语言第四章练习题答案

c语言第四章练习题答案

c语言第四章练习题答案习题四4.5编程判断输入整数的正负性和奇偶性。

流程图如图4-1。

#includemain(){int m;scanf("%d", &m); /*输入一个整数*/if (m >= 0) /*是否为正数*/{if (m%2 == 0) /*是正数,且能被2整除,是正偶数*/{printf("%d is a positive even\n", m);}else /*不能被2整除,是正奇数*/{printf("%d is a positive odd\n", m);}}/*if(m>=0)结束*/else{if (m % 2 == 0){printf("%d is a negative even\n", m); /*是负偶数*/}else{printf("%d is a negative odd\n", m); /*是负奇数*/}} }程序运行结果如下:第一次运行:6↙6 is a positive even第二次运行:-7↙6 is a negative odd4.6编程计算分段函数:1x x e y e -??=??-?000x x x >=<,输入x ,打印出y 值。

流程图如图4-2。

#include#includemain(){int x;double y;scanf("%d", &x); /* 输入一个整数*/if (x > 0){y = exp(-x); /*如果大于0,计算y=exp(-x)的值 */else if (x == 0){y = 1; /*x=0,则y=1*/}else{y = -exp(x); /*x<0,则y=-exp(x)*/` }printf("y=%f\n", y);}程序运行结果如下:第一次运行:4↙y=0.018316第二次运行:0↙y=1.000000第三次运行:-4↙y=-0.0183164.7输入三角形的三条边a,b,c ,判断它们能否构成三角形,若能则指出是何种三角形:等腰三角形、直角三角形、一般三角形。

程序设计基础-c语言-第四章数组-教材答案-科学出版社

程序设计基础-c语言-第四章数组-教材答案-科学出版社

程序设计基础-c语言-第四章数组-教材习题及其答案1.0编程将一个一维数组的值按逆序重新存放#include<stdio.h>void main(){int i_data[10];int m,i_temp;printf("给定10个数,用空格分隔:");scanf("%d %d %d %d %d %d %d %d %d %d",&i_da ta[0],&i_data[1],&i_data[2],&i_data[3],&i_data[4],&i_d ata[5],&i_data[6],&i_data[7],&i_data[8],&i_data[9]);for(m=1;m<=10/2;m++) //有意写成10/2 已解决任意一维数组的逆序问题,为什么此处用m=1;m<=10/2,而不能m=0;m<10/2{ i_temp=i_data[m-1]; //下面三条语句是典型的两数交换的方法i_data[m-1]=i_data[10-m];i_data[10-m]=i_temp;}for(m=0;m<10;m++){ printf("%d ",i_data[m]);}printf("\n");}2.0 编程求Fibonacci数列的前二十项。

FIBONACCI数列的定义F0=0,F1=1,Fn=Fn-1+Fn-2#include<stdio.h>void main(){int F[20];int m,n,i_blanknum;for(m=0;m<20;m++){ switch(m){ case 0:F[0]=0;break;case 1:F[1]=1;break;default: F[m]=F[m-1]+F[m-2];}}printf("Fibonacci数列的前20项是:\n"); for(m=0;m<20;m++){ printf("%d ",F[m]);}printf("\n");//下面输出项,这是我加的效果for(m=0;m<20;m++){ printf("%d",m+1); //输出项的编号//计算该项数据占几位i_blanknum=1;//每个数据间占一个空格n=F[m];do{ i_blanknum=i_blanknum+1;n=n/10;}while(n!=0);//减去该项编号数据占的位数n=m+1;do{ i_blanknum=i_blanknum-1;n=n/10;}while(n!=0);//输出空格while(i_blanknum>0){ printf(" ");i_blanknum--;}}printf("\n");}2.0在一个从小到大排列的数组中查找X,若x存在就将其测出,若不存在将其添加。

C语言第四章习题及答案(课余练习-不用提交)

C语言第四章习题及答案(课余练习-不用提交)

第四章习题答案一、选择题1)以下是if语句的基本形式:if(表达式) 语句其中"表达式"A)必须是逻辑表达式B)必须是关系表达式C)必须是逻辑表达式或关系表达式D)可以是任意合法的表达式2)以下选项中,值为1的表达式是()。

A)1-'0' B)1-'\0' C)'1'-0 D)'\0'-'0'3)若a是数值类型,则逻辑表达式(a==1)||(a!=1)的值是:A)1 B)0 C)2 D)不知道a的值,不能确定4)若变量已正确定义,在if (W)printf(“%d\n”,k);中,以下不可替代W的是A)a<>b+c B)ch=getchar()C)a==b+c D)a++5)设变量x和y均已正确定义并赋值,以下if语句中,在编译时将产生错误信息的是A)if(x++); B)if(x>y&&y!=0);C)if(x>y) x- - D)if(y<0) {;}else y++; else x++;6) 以下选项中,当x为大于1的奇数时,值为0的表达式A)x%2==1 B)x%2 C)x%2!=0 D)x%2==07) 设有条件表达式:(EXP)?i++;j--,则以下表达式中(EXP)完全等价的是A)(EXP= =0) B)(EXP!=0)C)(EXP= =1)D)(EXP!=1)8) 在以下给出的表达式中,与while(E)中的(E)不等价的表达式是A)(!E=0) B) (E>0||E<0) C) (E==0) D) (E!=0)9)若有定义int x,y;并已正确给变量赋值,则以下选项中与表达式(x-y)?(x++):(y++)中的条件表达式(x-y)等价的是()。

A)(x-y>0) B)(x-y<0) C)(x-y<0||x-y>0) D)(x-y==0)10) 若有表达式(w)?(--x):(++y),则其中与w等价的表达式是 ( )A)w==1 B) w==0 C) w! =1 D) w! =011) 设有定义: int a=1,b=2,c=3;,以下语句中执行效果与其它三个不同的是A)if(a>b) c=a,a=b,b=c; B)if(a>b){c=a,a=b,b=c;}C)if(a>b) c=a;a=b;b=c; D)if(a>b){c=a;a=b;b=c;}12) 已知字母A的ASCⅡ代码值为65,若变量kk为char型,以下不能正确判断出kk中的值为大写字母的表达式是A)kk>='A'&&kk<='Z' B)!(kk>='A'‖kk<='Z')C)(kk+32)>='a'&&(kk+32)<='z' D)isalpha(kk)&&(kk<91)isalpha(c) 判断参数c是否为英文字母头文件:ctype.hisupper(c) 判断参数c是否为大写英文字母是返回非零值,否则返回零islower(c ) 检查参数c是否为小写英文字母13)已有定义:char c; ,程序前面已在命令行中包含ctype.h文件,不能用于判断c中的字符是否为大写字母的表达式是A)isupper(c) B)’A’<=c<=’Z’C)’A’<=c&&c<=’Z’D)c<=(‘z’-32)&&(‘a’-32)<=c14) 当变量c的值不为2、4、6时,值也为“真”的表达式是A)(c==2)‖(c==4)‖(c==6) B)(c>=2&&c<=6)‖(c!=3)‖(c!=5)C)(c>=2&&c<=6)&&!(c%2) D)(c>=2&&c<=6)&&(c%2!=1)15) 若变量已正确定义,有以下程序段int a=3,b=5,c=7;if(a>b) a=b; c=a;if(c!=a) c=b;printf("%d,%d,%d\n",a,b,c);其输出结果是A)程序段有语法错 B)3,5,3 C)3,5,5 D)3,5,7 16)有以下程序#includemain(){int a=1,b=0;if(!a) b++;else if(a==0) if(a) b+=2;else b+=3;printf("%d\n",b); }程序运行后的输出结果是A)0 B)1 C)2 D)317)在嵌套使用if语句时,C语言规定else总是()。

c语言第四章习题

c语言第四章习题

c语言第四章习题第四章练习题一、填空题1、以下程序的运行结果是(),把x定义为静态变量运行结果是()。

void increment(void){ int x=0; x+=1; printf(\main(){ increment(); increment(); increment(); }2、若输入的值是-125,以下程序的运行结果是()#include \main(){ int n; void f(int n); scanf(\ printf(\if(n1)printf(\ r=n%k; } }if(n!=1) printf(\}3、设有以下宏定义: #define WIDTH 80 #define LENGTH WIDTH+40则执行赋值语句:v=LENGTH*20;(v为int型)后,v的值是()4、设有以下宏定义: #define WIDTH 80#define LENGTH (WIDTH+40)1则执行赋值语句:k=LENGTH*20;(k为int型变量)后,k的值是()5、下面程序的运行结果是()#define DOUBLE(r) r*r main(){ int x=1,y=2,t; t=DOUBLE(x+y); printf(\6、下面程序的运行结果是()#define MUL(z) (z)*(z) main(){ printf(\ } 7、下面程序的运行结果是()#define POWER(x) ((x)*(x)) main(){ int i=1; while(ib?a:b)+1 main(){ int i=6,j=8,k; printf(\ }二、选择题1、以下正确的说法是()建立自定义函数的目的之一是:A)提高程序的执行效率 B)提高程序的可读性 C)减少程序的篇幅 D)减少程序文件所占内存2、以下正确的说法是()A)用户若需调用标准库函数,调用前必须重新定义B)用户可以重新定义标准库函数,若如此,该函数将失原有含义。

C语言程序设计 – 第 04 章课后习题

C语言程序设计 – 第 04 章课后习题

C语言程序设计– 第四章课后习题一、选择题1. 以下关于运算符优先级的描述中正确的是(C)A. 关系运算符<算术运算符<赋值运算符<逻辑运算符(不含!)B. 逻辑运算符(不含!)<关系运算符<算术运算符<赋值运算符C. 赋值运算符<逻辑运算符(不含!)<关系运算符<算术运算符D. 算术运算符<关系运算符<赋值运算符<逻辑运算符(不含!)2. 能正确表示“当x的取值在[1, 10]或[200, 210]范围为真,否则为假”的表达式是(C)A. (x >= 1) && (x <= 10) & (x >= 200) & (x <= 210)B. (x >= 1) || (x <=10) || (x >= 200) || (x <= 210)C. (x >= 1) && (x <=10) || (x >= 200) && (x <= 210)D. (x >= 1) || (x <=10) && (x >= 200) || (x <= 210)3. 对于以下程序,输出结果为(A)# include <stdio.h>main(){int a, b, c;a =b =c = 0;printf("%d, %d, %d, %d\n", a, b, c, a++ && b++ || c++);}A. 1, 0, 1, 0B. 1, 1, 1, 0C. 1, 0, 1, 1D. 1, 1, 1, 1(解释:在VC++编译环境中,参数的计算是从右向左的,因此先计算右侧的表达式,并且每个参数计算完后相关待更新变量会被更新;对于逻辑与运算符,若左侧值为假,则右侧的值不会被计算(没必要算);对于逻辑或运算符若左侧的值为真,则右侧的值也不会被计算;布尔类型数据转整型时,true=1,false=0。

c语言程序设计第四章习题答案

c语言程序设计第四章习题答案

第四章选择结构1:实现输入一个字符的大小写字母的转换#include<stdio.h>void main(){char x='a';printf("输入x:\n");scanf("%c",&x);if( x>='A' && x<='Z'){x=x+32; /*是大写,转换为小写,至于为什么要+32吗,请看看大小写字母的ASCII码差值*/}elseif( x>='a' && x<='z'){x=x-32; /*是小写,转换为大写*/}/*其它不用理*/printf("%c\n",x);}2:输入一个大写字母实现,输出字母表中的前后字母,但是当时A 或是Z时提示输出的“没有前面的字母”,“没有后面的字母”#include<stdio.h>void main(){char x;printf("输入一个大写字母x:\n");scanf("%c",&x);if (x=='A'){printf("没有前面的字母");}if( x=='Z'){ printf("没有后面的字母");}else// (x>'A'||x<'Z'){printf("%c, %c",x-1,x+1);}}3:实现的是对百分制的评等级#include<stdio.h>void main(){float x;printf("请输入学生的成绩x的值\n");scanf("%f",&x);if(x>=90&&x<=100){printf("等级为A ");}else{if (x>=80&&x>=89){printf("等级为B ");}elseif (x>=70&&x<=79){printf("等级为C ");}elseif (x>=60&&x<=69){printf("等级为D ");}else{printf("等级为E ");}}}4:知道今天的日期,年月日,求出明天的年月日#include <stdio.h>int main(){int year,month,day;int maxdays[]={31,28,31,30,31,30,31,31,30,31,30,31};printf("请输入年月日,中间用空格隔开!\n");scanf("%d %d %d",&year,&month,&day);if(year%400==0 || (year%4==0 && year%100!=0)) maxdays[1]=29;//闰年二月最大值是29if(month>12 || month<1){printf("日期不合法!\n");return 0;}if(day>maxdays[month-1]){printf("日期不合法!\n");return 0;}day++;if(day>maxdays[month-1]){day=1;month++;if(month>12){month=1;year++;}}printf("明天的日期是:%d-%d-%d\n",year,month,day);return 0;}5:输入三角形的三条边的长度,判断能否构成三角形,并且判断三角形的形状。

C语言第四章选择结构程序设计作业-雨课堂

C语言第四章选择结构程序设计作业-雨课堂

单选题 3分
18.若变量已正确定义并赋值,以 下符合C语言语法的表达式是( )
A a:=b+1 B a=b=c+2 C int 18.5%3 D a=a+7=c+b
单选题 3分 19.若有条件表达式 (exp) ?a++:b--,则以下表达式 中能完全等价于表达式(exp) 的是( )
A (exp==0)
单选题 3分
2.下列运算符中优先级最高 的是( )
A< B+
& C& D !=
单选题 3分
3.能正确表示“当x的取值在 [1,10]和[200,210]范围内为真, 否则为假"的表达式是( )
A
(x>=1)&&(x<=10)&&(x >=200)&&(x<=210)
B
(x>=1)||(x<=10)||(x>=2 00)||(x<=210)
单选题 3分
5.下列运算符中优先级最低 的是( )
A ?: &
B& C+ D !=
单选题 3分
6.以下程序的运行结果是( ) #include<stdio.h> main() {int a,b,d=241; a=d/100%9; b=(-1)&&(-1); printf(“%d,%d”,a,b);}
正常使用主观题需2.0以上版本雨课堂
主观题 10分 24.程序设计题 编一个程序,输入3个整数, 按从大到小的顺序输出。 要求拍照或截图提交(1)算 法(2)编写的程序(3)程序 运行结果答案
正常使用主观题需2.0以上版本雨课堂

C语言第四章习题答案

C语言第四章习题答案

1.下列程序中横线处正确的语句应该是()#include<iostream>using namespace std;class Base{public;void fun( ){cout< < “Base : : fun” < < endl;}};class Derived : public Base{public:void fun( ){_________//显示调用基类的函数fun( )cout < < “Derived : : fun” < < endl;}};A fun( ).B Base.fun( )C Base : : fun( )D Base - >fun( )2下面程序的执行结果是()#include<iostream.h>class A{public:void disp(){ cout<<"class A"<<endl;}};class B:public A{public:void disp(){cout<<"class B"<<endl;}};void main(){B b;b.disp();}输出为:class B3下面程序的执行结果是()#include<iostream.h>class A{public:A(int I,int j){a=I;b=j;}void move(int x,int y){a+=x;b+=y;}void show(){cout<<"("<<a<<","<<b<<")"<<endl;} private:int a,b;};class B:private A{ public:B(int I,int j,int k,int l):A(I,j){x=k;y=l;}void show(){cout<<x<<","<<y<<endl;}void fun(){move(2,4);}void f1(){A::show();}private:int x,y;};void main(){ A e(2,3);e.show();B d(4,5,6,7);d.fun();d.show();d.f1();d.show();}输出为:(2,3)6,7(6,9)4下面程序的输出结果为#include<iostream.h>class base{public:base(int x,int y){a=x;b=y;}void show(){cout<<"base:"<<a<<";"<<b<<endl;} private:int a,b;};class derived:public base{public:derived(int x,int y,int z):base(x,y),c(z){}void show(){cout<<"derived:"<<c<<endl;} private:int c;};int main(){base b(10,10),*pb;derived d(20,30,40);pb=&b;pb->show();pb=&d;pb->show();return 0;}输出结果为base:10;10base:20;3055、下面程序的输出结果为#include<iostream.h>class AA{protected:int k;public:AA(int n=4):k(n){}~AA(){cout<<"AA"<<endl;}virtual void f() const=0;};inline void AA::f() const{}class BB:public AA{public:~BB(){cout<<"BB"<<endl;}void f() const{cout<<k-2;AA::f();}};int main(){AA &p=*new BB;p.f();delete &p;return 0;}程式的执行结果2AA6 分析以下程式的执行结果:#include<iostream.h>class base{ int n;public:base(){};base (int a){cout << "constructing base class" << endl;n=a;cout << "n=" << n << endl;}~base() { cout << "destructing base class" << endl; } };class subs : public base{int m;public:subs(int a, int b) : base(a){cout << "constructing sub class" << endl;m=b;cout << "m=" << m << endl;}subs() { cout << "destructing sub class" << endl; }};void main (){subs s(1,2);}解:这里base 是基类,subs为派生类,subs类的构造函数中含有调用基本类的构造函数。

C语言第四章练习题

C语言第四章练习题

C语⾔第四章练习题注意,本套题⽬中有些涉汲到函数的调⽤和指针的使⽤,⼤家⾃已先去看下,不懂就问,培养⾃⼰的⾃学能⼒。

⼀,选择题1.若有以下定义int x[10], *pt=x;则对x数组元素的正确引⽤是A) pt+3B) *&x[10]C) *(pt+10)D) *(x+3)2.有以下程序#includemain(){ int i, s=0, t[]={1,2,3,4,5,6,7,8,9};for(i=0;i<9;i+=2) s+=*(t+i);printf("%d\n",s);}程序执⾏后的输出结果是A) 20B) 25C) 45D) 363.#includemain(){ int c[6]={10,20,30,40,50,60}, *p,*s;p = c; s = &c[5];printf("%d\n", s-p );}程序运⾏后的输出结果是A) 5B) 50C) 6D) 60{ int a[3]={0}, i, j, k=2;for( i=0; ifor( j=0; jprintf("%d\n", a[1] );}程序运⾏后的输出结果是A) 0B) 2C) 15..有以下程序#includemain(){ int a[5]={2,4,6,8,10}, *p,**k;p = a; k = &pprintf("%d ", *( p++ ) );printf("%d\n", **k );}程序运⾏后的输出结果是A) 4 6B) 4 4C) 2 2D) 2 46.以下叙述中正确的是A) ⼀条语句只能定义⼀个数组B) 每个数组包含⼀组具有同⼀类型的变量,这些变量在内存中占有连续的存储单元C) 数组说明符的⼀对⽅括号中只能使⽤整型常量,⽽不能使⽤表达式D) 在引⽤数组元素时,下标表达式可以使⽤浮点数7.以下叙述中正确的是A) 数组下标的下限是1B) 数组下标的下限由数组中第⼀个⾮零元素的位置决定C) 数组下标的下限由数组中第⼀个被赋值元素的位置决定D) char c1, c2, *c3, c4[40];是合法的变量定义语句8.以下叙述中正确的是C) 语句 char a[2] = {"A", "B"}; 是合法的,定义了⼀个包含两个字符的数组D) 语句 char a[3]; a = "AB"; 是合法的,因为数组有三个字符空间的容量,可以保存两个字符9.有以下程序#includemain(){ int a[ ]={ 2,4,6,8,10 }, x, *p, y=1;p = &a[1];for( x=0; x<3; x++ ) y += *(p+x);printf( "%d\n",y );}程序的输出结果是A) 13B) 19C) 1110.有以下程序#includemain(){int a[ ] = { 2,4,6,8 }, *p=a, i;for( i=0; i<4; i++ )a[i]=*p++;printf( "%d\n" ,a[2] );}程序的输出结果是A) 2B) 8C) 4D) 611.以下叙述正确的是A) 不能在数组说明符的⼀对⽅括号中使⽤表达式B) char c1, *c2, **c3, c4[2]; 是C语⾔的合法语句C) 数组下标的最⼩值可以是负值D) 若有数组定义 int array[5]; 则语句printf("%d",array[1.23]);是合法的int b[] = {9};char c[3] = {"A", "B"};char d = "12";以下叙述正确的是A) a, b的定义合法,c, d的定义不合法B) a,b,c,d的定义都是合法的C) a,b,c的定义是合法的,d的定义不合法D) 只有a的定义是合法的12.对于函数声明void fun(float array[], int *ptr);下叙述正确的是A) 调⽤函数时,array数组的元素和ptr都是按值传送B) 函数声明有语法错误,参数 array 缺少数组⼤⼩定义C) 调⽤函数时,array数组中将存储从实参中复制来的元素值D) 函数参数 array, ptr 都是指针变量13.要求定义⼀个具有6个元素的int型⼀维数组,以下选项中错误的是A) int a[2*3] = {0};B) int N = 6, a[N];C) #define N 3int a[N+N];D) int a[] = {1,2,3,4,5,6};14.设有定义:int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a,i;,若0≤i≤9,则对a数组元素的引⽤错误的是A) *(&a[i])B) a[10]C) p[i]D) a[p-a]15.有以下程序#includeint fun(int x[],int n){static int sum=0, i;for(i=0;ireturn sum;{int a[]={1,2,3,4,5}, b[]={6,7,8,9}, s=0; s=fun(a,5)+fun(b,4);printf("%d\n",s);}程序执⾏后的输出结果是A) 55B) 50C) 45D) 60⼆,填空题1. #includevoid fun(int *s, int n1, int n2){int i, j, t;i=n1; j=n2;while( i{t=s[i]; s[i]=s[j]; s[j]=t; i++; j--;}}main(){int a[10]={1,2,3,4,5,6,7,8,9,0}, k; fun(a,0,3); fun(a,4,9); fun(a,0,9); for(k=0;k<10;k++)printf("%d", a[k]);printf("\n");}则输出结果是。

数据结构(C语言版)习题及答案第四章

数据结构(C语言版)习题及答案第四章

习题4.1选择题1、空串与空格串是(B)。

A、相同B、不相同C、不能确定2、串是一种特殊的线性表,其特殊性体现在(B)。

A、可以顺序存储B、数据元素是一个字符C、可以链式存储D、数据元素可以是多个字符3、设有两个串p和q,求q在p中首次出现的位置的操作是(B)。

A、连接B、模式匹配C、求子串D、求串长4、设串s1=“ABCDEFG”,s2=“PQRST”函数strconcat(s,t)返回s和t串的连接串,strsub(s,i,j)返回串s中从第i个字符开始的、由连续j个字符组成的子串。

strlength(s)返回串s的长度。

则strconcat(strsub(s1,2,strlength(s2)),strsub(s1,strlength(s2),2))的结果串是(D)。

A、BCDEFB、BCDEFGC、BCPQRSTD、BCDEFEF5、若串s=“software”,其子串个数是(B)。

A、8B、37C、36D、94.2简答题1、简述空串与空格串、主串与子串、串名与串值每对术语的区别?答:空串是指长度为0的串,即没有任何字符的串。

空格串是指由一个或多个空格组成的串,长度不为0。

子串是指由串中任意个连续字符组成的子序列,包含子串的串称为主串。

串名是串的一个名称,不指组成串的字符序列。

串值是指组成串的若干个字符序列,即双引号中的内容。

2、两个字符串相等的充要条件是什么?答:条件一是两个串的长度必须相等条件二是串中各个对应位置上的字符都相等。

3、串有哪几种存储结构?答:有三种存储结构,分别为:顺序存储、链式存储和索引存储。

4、已知两个串:s1=”fg cdb cabcadr”, s2=”abc”, 试求两个串的长度,判断串s2是否是串s1的子串,并指出串s2在串s1中的位置。

答:(1)串s1的长度为14,串s2的长度为3。

(2)串s2是串s1的子串,在串s2中的位置为9。

5、已知:s1=〃I’m a student〃,s2=〃student〃,s3=〃teacher〃,试求下列各操作的结果:strlength(s1);答:13strconcat(s2,s3);答:”studentteachar”strdelsub(s1,4,10);答:I’m6、设s1=”AB”,s2=”ABCD”,s3=”EFGHIJK,试画出它们在各种存储结构下的结构图。

C语言第四章习题带答案

C语言第四章习题带答案
-4-
A.A B.ABother C.Aother D.编译错误,无法运行 10.当 a=1, b=3, c=5, d=4 时,执行完成下面一段程序后 x 的值是( B )。 if (a<b) if (c<d) x=1; else if (a<c) if (b<d) x=2; else x=3; else x=6; else x=7; A.1 B.2 C.3 D.6 二、填空题 11.以下程序的输出结果是( -1 )。 main() { int a=100, x=10, y=20, ok1=5, ok2=0; if (x<y) if (y!=10) if (!ok1) a=1; else if (ok2) a=10; a=-1; printf("%d\n",a); } 12.阅读以下程序: main() { int t, h, m; scanf("%d", &t); h=(t/100)%12; if (h==0) h=12; printf("%d:", h); m=t%100; if (m<10) printf("0"); printf("%d",m); if (t<1200||t==2400) printf("AM"); else printf("PM"); } 若运行时输入:1605<CR>,程序的运行结果是( 4:05PM )。 13.若运行时输入:3 5/<CR>,则以下程序的运行结果是( 0.600000 )。 main() { float x, y; char o; double r; scanf("%f%f%c", &x, &y, &o); switch (o) { case '+': r=x+y; break;

C语言第4章习题参考答案

C语言第4章习题参考答案
if(disc>=0.0)
printf("Two roots:x1=%lf\tx2=%lf\n",re+im,re-im);
else
printf("Two comples roots:x1=%lf+i*%lf\tx2=%lf-i*%lf\n",re,im,re,im);
}
}
4-10
main( )
{ int num,indiv,ten,hundred,place;
break;
default:printf("Input error!");
}
}
4-8
#include "stdio.h"
main( )
{ char key;
printf(" L—装载文件\n");
printf(" S—保存文件\n");
printf(" E—编辑文件\n");
printf(" P—打印文件\n");
{ double a,b,c;
double disc;
double re,im;
printf("Enter a,b,c:");
scanf("%lf%lf%lf",&a,&b,&c);
if(a==0.0)
if(b==0.0)
printf("The equation has not soluble!\n");
break;
case 2: printf("%d,%d", ten,indiv);
printf("\n反序数字为:");

c语言程序设计课后习题答案第四章

c语言程序设计课后习题答案第四章

/*习题4 4*/#include<stdio.h>main(){int x1,x2,i,n,x;double item,sum;printf("enter n:\n");scanf("%d",&n);x1=2;x2=1;sum=0;for(i=1;i<=n;i++){item=1.0*x1/x2;sum=sum+item;x=x1+x2;x2=x1;x1=x;}printf("sum=%.2lf\n",sum); }/*练习4-3*/#include<stdio.h>#include<math.h>main(){ int a=-1,t=-2;double eps,s=0,item=1;printf("enter eps:\n");scanf("%lf",&eps);while(fabs(item)>=eps){t=t+3;a=-a;item=a*1.0/t;s=s+item;}printf("s=%lf\n",s);}/*练习4-3*/#include<stdio.h>main(){ int n=-1,bujige=-1;double grade=0,sum=0,ave;printf("enter grade:\n");while(grade>=0){sum=sum+grade;if(grade<60)bujige=bujige+1;n=n+1;scanf("%lf",&grade);}ave=sum/n;printf("ave=%lf\n",ave);printf("bujige=%d\n",bujige);}/*练习4-4*/#include<stdio.h>main(){ int n=-1,bujige=-1;double chengji=0,sum=0,ave;printf("enter n ge zheng zheng shu \n");while(chengji>=0){sum=sum+chengji;n++;if(chengji>=0&&chengji<=60)bujige=bujige+1;scanf("%lf",&chengji);}ave=sum/n;printf("ave=%lf\n",ave);printf("bujige=%d\n",bujige);}/*练习4-7*/#include<stdio.h>main(){ int n,i,j,m;printf("enter zheng zheng shu n:\n");scanf("%d",&n);printf("enter n ge zheng zheng shu:\n");for(i=1;i<=n;i++){scanf("%d",&m);if(m==1)printf("1 bu shi su shu \n");else{ for(j=2;j<=m/2;j++)if(m%j==0)break;if(j>m/2)printf("%d shi su shu\n",m);elseprintf("%d bu shi su shu\n",m);}}}/*练习4-8*/#include<stdio.h>main(){ int n,i,j,jiecheng;double sum=0;printf("enter yi ge zheng zheng shu n:\n");scanf("%d",&n);for(i=1;i<=n;i++){ jiecheng=1;for(j=1;j<=i;j++)jiecheng=jiecheng*j;sum=sum+1.0/jiecheng;}printf("e=%.2lf\n",sum+1);}/*练习4-11*/#include<stdio.h>main(){ int n,mark,i,min;printf("enter yi ge zheng zheng shu n:\n");scanf("%d",&n);printf("enter n ge zheng shu\n");scanf("%d",&mark);min=mark;for(i=1;i<=n-1;i++){ scanf("%d",&mark);if(mark<min)min=mark;}printf("min=%d\n",min);} printf("min=%d",min);}#include<stdio.h>#include<math.h>main(){ int m;printf("enter yi ge zheng shu:\n ");scanf("%d",&m);m=fabs(m);while(m!=0){printf("%d",m%10);m=m/10;}printf("\n");}/*习题4-13*/#include<stdio.h>main(){ int i,j,sum=1;for(i=100;i<=200;i++){for(j=2;j<=i/2;j++)if(i%j==0)break;if(j>i/2){ printf("%6d",i);sum=sum+1;}if(sum>8){ printf("\n");sum=1;}}printf("\n");}/*习题4-14*/#include<stdio.h>main(){int x1=1,x2=1,i,x;printf("%6d%6d",x1,x2);for(i=1;i<=18;i++){x=x1+x2;printf("%6d",x);x1=x2;x2=x;}printf("\n");}/***/#include<stdio.h>main(){ int i,j,k;for(i=1;i<=4;i++){for(j=1;j<=4-i;j++)printf(" ");for(k=1;k<=2*i-1;k++)printf("*");printf("\n");}for(i=1;i<=3;i++){for(j=1;j<=i;j++)printf(" ");for(k=1;k<=7-2*i;k++)printf("*");printf("\n");}}。

C语言第4章_习题讲解

C语言第4章_习题讲解

1. 若要跳出 switch 结构,应使用 switch (表达式) break 语句。 { case 常量表达式1:语句1 break;
case 常量表达式 2: 语句 2 break; 2.多个case可以共用一组执行语句 …… case 常量表达式n:语句n break; default:语句n+1 }
例如,有函数如下: -1 (x<0) Y= 0 (x=0) 1 (x>0) 编写程序,由键盘输入x的值,屏幕显 示Y的值。
main ( ) main main ( ( )) { int x,y; int x,y; {{ int x,y; scanf("%d",&x); scanf("%d",&x); scanf("%d",&x); if(x<0) if(x!=0) if(x<0) y=-1; y=-1; if (x<0)y=-1; if(x>0) y=1; else if(x>0)y=1; else y=0; y=1; if (x==0) else y=0; y=0; else printf("x=%d,y=%d\n",x,y); printf("x=%d,y=%d\n",x,y); } printf("x=%d,y=%d\n",x,y); } }

语句4
#include<stdio.h> main( ) { int score; scanf(“%d”, &score); if (score>100||score<0) printf(“输入错误”); else if ( score<60) printf(“不及格”); else if ( score <80) printf(“中等”); else printf(“优秀”); }

C语言第四章基础练习题

C语言第四章基础练习题

第四章基础练习题知识点:1、C语句可分为以下五类:1>表达式语句:由表达式加上分号“;”组成2>函数调用语句:由函数名、实际参数加上分号“;”组成。

其一般形式为:函数名(实际参数表);3>控制语句:有九种控制语句。

可分成以下三类:条件判断语句:if语句、switch语句;循环执行语句:do while语句、while语句、for语句;转向语句:break语句、goto语句、continue语句、return语句。

4>复合语句把多个语句用括号{}括起来组成的一个语句,在程序中应把复合语句看成是单条语句,而不是多条语句。

复合语句内的各条语句都必须以分号“;”结尾,在括号“}”外不能加分号。

5>空语句2、putchar 函数是字符输出函数,其功能是在显示器上输出单个字符。

其一般形式为:putchar(字符变量)对控制字符则执行控制功能,不在屏幕上显示。

3、getchar函数的功能是从键盘上输入一个字符。

其一般形式为: getchar();通常把输入的字符赋予一个字符变量,构成赋值语句,getchar函数只能接受单个字符,输入数字也按字符处理。

输入多于一个字符时,只接收第一个字符。

4、printf函数称为格式输出函数。

其功能是按用户指定的格式,把指定的数据显示到显示器屏幕上。

printf函数调用的一般形式为:其中格式控制字符串用于指定输出格式。

格式控制串可由格式字符串和非格式字符串两种组成。

格式字符串是以% 开头的字符串,在%后面跟有各种格式字符,以说明输出数据的类型、形式、长度、小数位数等非格式字符串在输出时原样照印,在显示中起提示作用。

在Turbo C类型:类型字符用以表示输出数据的类型,其格式符和意义如下表所示:标志:标志字符为-、+、#、空格四种,其意义下表所示:输出最小宽度:用十进制整数来表示输出的最少位数。

若实际位数多于定义的宽度,则按实际位数输出,若实际位数少于定义的宽度则补以空格或0。

C语言第四章作业

C语言第四章作业

4.1#include<stdio.h>#include<stdlib.h>#include<conio.h>int main(void){char s[1000];printf("请输入字符串:");gets(s);int i=0;char ch;printf("请输入字符:");scanf("%c",&ch);int address;while(i<1000){if(ch!=s[i]){i++;}else{break;}}if(ch!=s[i]){printf("无此项字符!\n");}else{address=i+1;printf("第一次出现%c的地方是在字符串的第%d个位置\n",ch,address);}system("PAUSE");return 0;}运行结果:请输入字符串:abcdefg请输入字符:c第一次出现c的地方是在字符串的第3个位置请按任意键继续. . .运行结果:请输入字符串:abcdefg请输入字符:Z无此项字符!请按任意键继续. . .4.3#include<stdio.h>#include<stdlib.h>#include<conio.h>int Menu(char ch);int funcA(char a);int funcB(char b);int funcC(char c);int main(void){char x;Menu(x);system("PAUSE");return 0;}int Menu(char ch){char A,B,C;ch=0;while(ch!=EOF){ch=getch();switch(ch){case 'A':funcA(A);break;case 'B':funcB(B);break;case 'C':funcC(C);break;default:ch=EOF;break;}}}int funcA(char a){printf("调用函数A()\n");}int funcB(char b){printf("调用函数B()\n");}int funcC(char c){printf("调用函数C()\n");}运行结果:【输入A】调用函数A【输入B】调用函数B【输入C】调用函数C请按任意键继续. . .4.6#include<stdio.h>#include<string.h>int Atoi(char str[]);int main(void){char s[1000];gets(s);Atoi(s);system("PAUSE");return 0;}int Atoi(char str[]){int i,j;int Num;j=1;Num=0;for(i=strlen(str)-1;i>=0;i--){Num=Num+(str[i]-'0')*j;j=j*10;}printf("Num=%d\n",Num);return(Num);}运行结果:12345678Num=12345678请按任意键继续. . .4.7#include<stdio.h>#include<stdlib.h>int Itob(int n,char s[],int b);void Reverse(char t[1]);int main(void){int x;int y;char ch[1000];printf("请输入整数:");scanf("%d",&x);printf("需要转化成几进制(输入数值范围2~35):");scanf("%d",&y);if(y>=36 || y<=1){printf("输入值无效!\n");}else{Itob(x,ch,y);}system("PAUSE");return 0;}int Itob(int n,char s[],int b){int m;m=n;int i=0;if(m<10){while(m!=0){s[i]=(char) ((m%b)+'0');i++;m=m/b;}}else{while(m!=0){if((m%b)<10){s[i]=(char) ((m%b)+'0');i++;m=m/b;}else{s[i]=(char) ((m%b)-10+'A');i++;m=m/b;}}}s[i]='\0';Reverse(s);puts(s);}void Reverse(char t[]){char c;int i,j,length;length=0;i=0;while(t[length]!='\0'){length++;}j=length-1;while(i<(length/2)){c=t[i];t[i]=t[j];t[j]=c;i++;j--;}}运行结果:请输入整数:125需要转化成几进制(输入数值范围2~35):8 175请按任意键继续. . .运行结果:请输入整数:125需要转化成几进制(输入数值范围2~35):16 7D请按任意键继续. . .运行结果:请输入整数:125需要转化成几进制(输入数值范围2~35):1 输入值无效!请按任意键继续. . .。

大学C语言第四章作业答案

大学C语言第四章作业答案

第四章课后习题参考程序三、编程1、输入一个正整数,判断该数为奇数还是偶数。

参考程序:(1)#include<stdio.h>int main(){int a;printf("Enter an integer:");scanf("%d",&a);if(a%2==0)printf("%d是偶数\n",a);elseprintf("%d是奇数\n",a);return 0;}(2)#include<stdio.h>int main(){int a;printf("please enter an integer:");scanf("%d",&a);switch(a%2){case 0:printf("%d是偶数\n",a);break;case 1:printf("%d是奇数\n",a);break;default:printf("error\n");break;return 0 ;}}2、求任意三个整数中的最大数。

#include<stdio.h>int main(){int a,b,c,max;printf("please enter three number:");scanf("%d,%d,%d",&a,&b,&c);if(a>b)max=a;if(max<c) max=c;printf("max = %d\n",max);return 0;}3、判别键盘上输入字符的种类(控制字符、大写字母、小写字母、数字或其它)。

#include <stdio.h>int main(){char ch;printf("please input a character:");scanf("%c",&ch);if(ch>='A'&&ch<='Z')printf("%c是大写字母\n",ch);else if(ch>='a'&&ch<='z')printf("%c是小写字母\n",ch);else if(ch>='0'&&ch<='9')printf("%c是数字\n",ch);elseprintf("%c是其他字符\n",ch);return 0;}7、某商场进行打折促销活动,消费金额p越高,折扣d越大,其标准如下:P<200 d=0%200<=P<400 d=5%400<=P<600 d=10%600<=P<1000 d=15%1000<=P d=20%要求用switch语句编程,输入消费金额,求其实际消费金额。

C语言第四章作业

C语言第四章作业

C语⾔第四章作业C语⾔第四章作业选择题1、设ch是char型变量,其值为A,且有下⾯的表达式: ch=(ch>='A'&&ch<='Z')?(ch+32):ch 上⾯表达式的值是(B )A、 AB、 aC、 ZD、z2、设a,b和c都是int型变量,且a=3,b=4,c=5,则下⾯的表达式中, 值为0的表达式是( D )A、'a'&&'b'B、a<=bC、 a||b+c&&b-cD、 !((a3、为表⽰关系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)4、执⾏下⾯程序段 int x=35; char z='A'; int B;B=((x=15)&&(z<'a')) 后,B的值为(B )A、 0B、1C、 2D、 35、表达式: 10!=9的值是( d )A、trueB、⾮零值C、 0D、 16、若要求在if后⼀对圆括号中表⽰a不等于0的关系,则能正确表⽰这⼀关系的表达式为()A、 a<>0B、 !aC、 a=0D、 a7、设a=5,b=6,c=5,d=8,m=2,n=2,执⾏ (m=a>b)&&(n=c>d) 后n的值为(B )A、 1B、 2C、 3D、 08、若有以下定义: float x; int a,b; 则正确的switch 语句是( D )9、设a=1,b=2,c=3,d=4,则表达式: aA、 4B、 3C、 2D、 110、设x 、y 、z 、t均为int型变量,则执⾏以下语句后,t的值为(C )x=y=z=1; t=++x || ++y && ++z;A、不定值B、 4C、1D、011、有如下程序段 int a=14,b=15,x; char c='A';x=(a&&b) && (c<'B'); 执⾏该程序段后,x的值为(D )A、tureB、 falseC、 0D、 112、为了避免嵌套的if-else语句的⼆义性,C语⾔规定else总是与( C )组成配对关系。

C语言 第4章 思考与练习

C语言 第4章 思考与练习

思考与练习4-3:
在Visual C++6.0的安装路径下查找文件stdio.h, 找到后打开该文件,请认真查看该文件中对printf() 和scanf()的函数声明部分。
思考与练习4-4: 上机运行例4.4、例4.5和例4.6,并分析实验结果。
课后习题:
4.1-4.3 要求:4.3需上机实验。
的返回值
#include <stdio.h> main() {
char ch; int a=0; printf("Press a key and then press Enter:"); ch = getchar(); /* 从键盘输入一个字符,按回车键结束输入,该字符被存入变量 ch */ ch = ch + 32; /* 将大写英文字母转换为小写英文字母 */ a=putchar(ch); /* 在屏幕上显示变量ch中的字符 */ putchar('\n'); printf("a1=%d\n",a); a=putchar('\n'); /* 输出一个回车换行控制符 */ printf("a2=%d\n",a); }
C语Visual C++6.0的安装路径下查找文件stdio.h, 找到后打开该文件,请认真查看该文件中对 getchar()和putchar(ch)的函数声明部分,并对照 课本4.1.2的说明,思考是否有不同。
思考与练习4-2:
将例4-1程序修改为如下代码,分析并运行观察putchar()和getchar()函数
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档