C语言第四章习题带答案-2012.10.16更新
c语言地4章课后题
格式输入函数scanf()用于从键盘输入数据,该输入数据按指定的输入格式赋给相应的输入项。
其输入格式为:
Scanf(“输入格式控制符”,输入项地址列表);
注意:“输入格式控制符”必须用英文的双引号括起来,他的作用是按照输入格式从键盘从键盘键入若干类型的数据给后面的输入项。
例如:int a,b;
#include <stdio.h>
main()
{
char a,b;
int c;
scanf("%c%c%d",&a,&b,&c);
printf("%c,%c,%d\n",a,b,c);
}
结果:
(2)在与上面程序的键盘输入相同的情况下,若将程序中的第7条语句修改为
Printf(“%-2c%-2c%d\n”,a,b,c);
3、在两个scanf()函数中,输入4个数时,会在两个整数和两个浮点型数之间加入逗号,但加入逗号后,第二条scanf()语句会认为逗号也为有效输入项,后面的浮点型数就不会被读入,所以要加入getchar()函数将逗号吸收掉。
4-3、填空题
(1)要使下面程序在屏幕上显示1,2,34,则从键盘输入的数据格式应为1234
例如:
结果:
(3)c格式符用来输入一个字符。用法:
%c:输出一个字符
%mc:输出的字符占m列并右对齐,多余的空位用空格填补
%-mc:输出的字符占m列并左对齐,多余的空位用空格填补
例如:printf(“%-4c\n%4c\n”,‘A’,‘A’);
结果:A
A
(4)s格式符用来输出一个字符串。用法:
%s:以字符串的实际长度输出一个字符串
c语言程序设计c语言程序设计练习四(参考答案).docx
《C语言程序设计》练习四(参考答案)1. 输入一个学生的成绩(在o〜100分之间,超出此范围显示错),进行五级评分并显示。
答案:第一空:score>=0 && score<=100第二空:score/10第三空:break2. 使用二维数组形成并按下列形式输出数据0 12 3 412 3 4 52 3 4 5 63 4 5 6 74 5 6 7 8答案:第一空:a[5][5]第二空:i+j第三空:printf(n\n n)3. 对含有10个元素的数组“先按元素的存储次序倒序输入,再按其正序输出。
答案:第一空:N 10第二空:i>=0第三空:&a[i]4.学生成绩的字母等级和分数范围如下:字母等级分数范围9()〜100B 80-89C 70〜7960 〜690〜59输入错误输入字母等级之后,输出相应的分数范围。
答案:第一空:char score 第二空:break 第三空:default5.从键盘输入x 的值,根据以下公式计算并输岀x 和 J = <y 的值。
X 0<x<2 x 2 +l 2<x<6 Jx + l 6SxvlOY、in答案: 第一空:&X 第二空:break 第三空:sqrt(x-i-l)A 二IVU 2 +i6. 分别统计并输出17、18、19和20岁各年龄的学生人数。
答案:第一空:prim 廿(”输入年龄有\n”) 第二空:age 第三空:a[i]7. 将从键盘输入的字符串逆序显示。
答案: 第一空:str 第二空:n 第三空:p-E其它字母8. 输入100名学生的出生月份,统计并输出每个月份过生FI的学生人数。
答案:第一空:&month第二空:iv=12第三空:%d9. ........................................................................... 输入n(ndl),计算1+ (1+2) + (1+2+3) + ...................................................................... +(1+2+……+n)的值。
程序设计基础-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语言网络教室第四章答案
if((12+b+31+k)%7==5) printf("%d/3/13\n",a);
if((12+b+31+k+31)%7==5) printf("%d/4/13\n",a);
if((12+b+31+k+31+30)%7==5) printf("%d/5/13\n",a);
case'/':if(min!=0) printf("%d/%d=%d\n",max,min,max/min);
else printf("Error!\n");}break;}
}
}
ch=getchar();
else{if(ch==',')
{if(n>n0) max=n;else max=n0;
if(i<i0) min=i;else min=i0;
i0=min;n0=max;
i=0;n=0;}
else {switch(ch)
else printf("Error\n");
}
4-8. 求最大数和最小数的算数运算结果
成绩: 10 / 折扣: 0.8
输入若干个整数,及其要进行的算术运算(+|-|*|/)符号,输出最大整数与最小整数进行给定的算术运算的结果。输入的整数范围是(0~65535),输入等号作为输入的结束,输出格式见例题。
输入:整数序列及其运算序号
C 课后习题答案第四章
case 'c' : cout << '*' ; break ;
case 'd' : continue ;
}
cout << '#' << endl ;
}
}
答案:
$#
*#
*#
%
7.#include <iostream.h>
void main()
#include <iostream.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
int isPrime(int);
void createAry(int[], int);
void outAry(const int[], int);
void main()
cout << f( a, 3, 3 ) << endl ;
}
int f( int a[][3], int row, int col )
{int i, j, t=1 ;
for( i=0; i<row; i ++ )
for( j=0; j<col; j++ )
{a[i][j] ++ ;
if( i == j ) t*= a[i][j] ;
}
void createAry(int a[], int n)
{ srand( time(0) );
C语言第四章习题带答案-2012.10.16更新
C语言第四章习题带答案-2012.10.16更新练习4-1答案一、选择题1.已知:char c='A'; int i=1, j;,执行语句j=!c&&i++;,则i和j的值是( B )。
A.1,1 B.1,0 C.2,1 D.2,02.已知:int x=1, y=2, z;,则执行z=x>y?++x:++y;,则z的值为( C )。
A.1 B.2 C.3 D.43.已知:int a=4, b=5, c;,则执行表达式c=a=a>b后变量a的值为( A )。
A.0 B.1 C.4 D.54.已知:char ch='A';,则表达式ch=(ch>='A'&&ch<='Z')?(ch+32):ch;的值是( B )。
A.'A' B.'a' C.'Z' D.'z'5.若w=1, x=2, y=3, z=4;,则条件表达式w>x?w:yA.4 B.3 C.2 D.16.已知:int w=3, x=10, z=7;,则执行下面语句后的结果为( C )。
printf("%d",x>10?x+100:x-10);printf("%d",w++||z++);printf("%d",!w>z);printf("%d",w&&z);A.0111 B.1111 C.0101 D.01007.已知:a=b=c=1且a、b、c均为int型变量,执行以下语句:++a||++b&&++c;则变量a值为( ①C ),b值为( ②A )。
①A.不正确B.0 C.2 D.1②A.1 B.2 C.不正确D.08.执行下面语句后x的值为( D )。
《C语言程序设计》第4章习题答案
1、选择题(1)C(2)D(3)B(4)D(5)C(6)B(7)B(8)C(9)A(10)C(11)C(12)B 2、填空题(1)①int men[10] ;②float step[4]={1.9,-2.33,0,20.6};③_int grid[4][10] ;(2)①int m[10]={9,4,7,49,32,-5};②0 9③scanf("%d",m[1]);④m[0] =39;⑤m[0] =a[3]+a[5];(3)①3 ②5 ③8 ④8 ⑤9 ⑥12 ⑦9(4)①int a[10]={9,4,12,8,2,10,7,5,1,3}; ②0 9 ③8 8(5)103、程序填空题(1)array[20]20&array[i ]20max=array[i];min=array[i];sum+array[i];sum/20(2)-5.77000021(3)ABCDEFGHIJKLEFGHIJKLABFDEFGHIJKLABFDEFGHI4、程序设计题(1)#define SIZE 100#include<stdio.h>void main(){int a[SIZE+1],i,j;for(i=2;i<=100;i++)a[i]=i;for(i=2;i<=100;i++)for(j=i+1;j<=100;j++)if(a[i]!=0&&a[j]%a[i]==0)a[j]=0;printf("\n");j=0;for(i=2;i<=100;i++){if(a[i]!=0){printf("%-4d",a[i]);j++;}if(j==10){j=0;printf("\n");}}}(2)#define S 14#include"stdio.h"void main(){int a[S][S],i,j,n;printf("please enter n:");scanf("%d",&n);for(i=1;i<=n;i++){a[i][i]=1;a[i][1]=1;}for(i=3;i<=n;i++)for(j=2;j<i;j++)a[i][j]=a[i-1][j-1]+a[i-1][j];for(i=1;i<=n;i++){for(j=1;j<=n-i;j++)printf(" ");for(j=1;j<=i;j++)printf(" %3d",a[i][j]);printf("\n");}}(3)#define SIZE 80#include<stdio.h>void main(){char str1[SIZE+SIZE],str2[SIZE];int i,j;puts("Please enter 2 string:");scanf("%s",str1);scanf("%s",str2);i=0;while(str1[i]!='\0')i++;j=0;while(str2[j]!='\0'){str1[i]=str2[j];i++;j++;}str1[i]='\0';printf("%s\n",str1);}(4)#define SIZE 80#include<stdio.h>#include<string.h>void main(){char string[SIZE];int len,i,j,flag;long number;puts("Please enter a digital string:");scanf("%s",string);len=strlen(string);if(string[0]=='-'){flag=-1;i=1;}else{flag=1;i=0;}number=string[i]-'0';for(i++;i<len;i++)number=number*10+(string[i]-'0');number=flag*number;printf("%d\n",number);}(5)#define SIZE 40#include<stdio.h>void main(){int m,n,i,j;float price[SIZE],sum;printf("\nPlease input M and N:");scanf("%d%d",&m,&n);m=m-n;printf("Please input %d price :",n);sum=0;for(i=0;i<n;i++){scanf("%f",&price[i]);sum=sum+price[i];}printf("Aver are %10.2f.",sum/n);while(m>0){for(i=0;i<n-1;i++)price[i]=price[i+1];printf("\nPlease input one price:"); scanf("%f",&price[n-1]);m--;sum=0;for(i=0;i<n;i++){sum=sum+price[i];}printf("Aber are %10.2f",sum/n);}}。
C语言教材课后题答案-第4章
习题4一.单项选择题1.以下函数值的类型是【】。
fun(float x){float y;y=3*x-4;retun y;)A.不确定B.floatC.voidD.int【答案】D2.若有以下函数调用语句:fun(a,(x,y),fun(n+k,d,(a,b)));,在fun函数调用语句中实参的个数是【】。
A.3B.4C.5D.6【答案】A3.以下对C语言函数的有关描述中,正确的是【】。
A.在C语言中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参B. C语言中的函数既可以嵌套定义又可以递归调用C.函数必须有返回值,否则不能使用函数D.C程序中有调用关系的所有函数必须放在同一个源程序文件中【答案】A4.以下叙述不正确的是【】。
A.在不同的函数中可以使用相同名字的变量B.函数中的形式参数是局部变量C.在一个函数内定义的变量只在本函数范围内有效D.在一个函数内的复合语句中定义的变量在本函数范围内有效【答案】D5.C语言规定,除main函数外,程序中各函数之间【】。
A.既允许直接递归调用也允许间接递归调用B.不允许直接递归调用也不允许间接递归调用C.允许直接递归调用不允许间接递归调用D.不允许直接递归调用允许间接递归调用【答案】C6.C语言中形参的默认存储类别是【】。
A.自动(auto)B.静态(static)C.寄存器(register)D.外部(extern)【答案】A7.以下叙述正确的是【】。
A.每个C语言程序都必须在开头使用预处理命令:#include <stdio.h>B.预处理命令必须在C源程序的首部C.在C语言中,预处理命令都以“#”开头D.C语言的预处理命令只能实现宏定义和条件编译功能【答案】C8.C语言的编译系统对宏替换命令是【】。
A.在程序运行时进行代换的B.在程序连接时进行代换的C.和源程序中其他C语言同时进行编译的D.在对源程序中其他成分正式编译之前进行处理【答案】D9.以下关于宏的叙述正确的是【】。
C语言程序设计教程第四章练习题解析
12、C语言程序得基本单位就是( )、
A.程序行
B、语句
C、函数
D、字符
答案:C
解析:函数就是C语言程序得基本单位
13、C语言中决定函数返回值得类型得就是()、
A、return语句中得表达式类型
B、调用函数得主调函数类型
C。调用函数时临时
intd=1;
intfun(intp)
{
staticintd=5;
d+=p;
printf("%d ",d);
return d;
}
voidmain()
{
ﻩint a=3;
ﻩprintf("%d \n",fun(a+fun(d)));
}
A.699
B、66 9
C、61515
D、6 615
答案:C
解析:首先调用fun(d),将全局变量d=1带入,此时fun()函数内得静态局部变量d得值就是1,d+=p后d得值就是6,输出d得值,返回d得值;
A、当调用时,会调用内部函数
B、当调用时,会调用外部函数
C.当调用时,会调用两次,先调用内部函数再调用外部函数
D、都不调用,会报错
答案:A
解析:当内部函数与外部函数重名时,会优先调用内部函数
6、在C语言中,声明外部函数需要添加得关键字就是()
A、extern
B、static
C、this
D.auto
答案:A
{
ﻩintd=5;
ﻩd+=p++;
ﻩprintf(”%d”,d);
}
C语言第4章和第7章习题答案
第4章习题答案:1. 编写一个程序,输入一个三角形的三条边,若能构成一个直角三角形,则输出相应的提示信息。
(1).程序分析:若两条边的平方和等于第三条边的平方,则构成一个直角三角形。
(2).程序源代码:#include<stdio.h>void main(){float a,b,c;printf(“输入a,b,c:”);scanf(“%f,%f,%f”,&a,&b,&c);if(a*a+b*b==c*c||a*a+c*c==b*b||b*b+c*c==a*a)printf(“构成一个直角三角形\n”);}2.输入4个整数,要求按大小顺序输出。
#include<stdio.h>void main(){int t,a,b,c,d;printf("请输入4个整数:");scanf("%d,%d,%d,%d",&a,&b,&c,&d);printf("\na=%d,b=%d,c=%d,d=%d\n",a,b,c,d);if(a<b) {t=a;a=b;b=t;}if(a<c) {t=a;a=c;c=t;}if(a<d) {t=a;a=d;d=t;}if(b<c) {t=b;b=c;c=t;}if(b<d) {t=b;b=d;d=t;}if(c<d) {t=c;c=d;d=t;}printf("排序结果如下:\n");printf("%d,%d,%d,%d\n",a,b,c,d);}3.设计一个程序,判断一个整数是否是素数。
#include<stdio.h>#include<math.h>void main(){int i,m,k;printf("please input an integer:");scanf("%d",&m);k=(int)sqrt(m);for(i=2;i<=k;i++)if(m%i==0) break;if(i>k) printf("%d is a prime.\n",m);else printf("%d is not a prime.\n",m);}4.输入某年某月某日,判断这一天是这一年的第几天。
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语言 2版 课后答案 四章
绵 case 0:y=0;break;
case 1:y=x+1;break;
}
printf("y=%f\n",y);
}
以下为假设对 int 类型的变量进行处理,但毕竟不算完美
main() {
int x,y; printf("Input x:");
scanf("%d",&x);itch 语句(a>0)。
if(a<30)
m=1;
else if(a<40) else if(a<50) else if(a<60) else
m=2; m=3; m=4;
m=5
答
switch(a/10) {
case 1: case 2: case 3:m=1;break; case 4:m=2;break; case 5:m=3;break; case 6:m=4;break; default:m=5; }
坛
论
院
学
范
师
阳
绵
6
n ★以下两条 if 语句可合并成一条 if 语句,即___。 .c if(a<=b) x=1; s else y=2; b if(a>b)printf("***y=%d\n", y); b else printf("***x=%d\n",x); nu 答 m if(a<=b) printf("***x=%d\n",x=1); . else printf("***y=%d\n", y=2); w 7 ww ★输入两个字符,若这两个字符的序号(ASCII 码)之差为偶数,则输出它们的后继字符,
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语言第4章 习题解答
y2=sin2(x)-2sin(x)+6
请填空。
/*文件路径名:e4_2_1\main.c */
#include <stdio.h>/*标准输入/输出头文件*/
#include <math.h>/*数学函数首部文件*/
doubleFun(double x) { return x*x - 2 * x + 6; }
解析:面向对象技术有三个重要特性:封装性、继承性和多态性;而类比性不属于面向对象的特征。
答案:C
12.对于一个正常运行的C程序,以下叙述中正确的是。
A)程序的执行总是从main函数开始,在main函数结束
B)程序的执行总是从程序的第一个函数开始,在main函数结束
C)程序的执行总是从main函数开始,在程序的最后一个函数中结束
printf("%d\n", s);/*输出s */
return 0;/*返回值0,返回操作系统*/
}
程序运行后的输出结果是。
A)24B)28C)32D)36
解析:main()函数在开始时,s=a=4,其中的a为全局变量。
第1次循环时,i=0,f(i)=f(0),将0传递给形参n,首先执行if语句中的条件“n%2”;条件为假,则执行else下的复合语句“{ int a = 7; t += a++; }”,可知t=0+7=7,使用return返回t=7+(a++)=7+5=12,a运算完后自增1,变为6,这里的a为函数f()内,复合语句之外的a,返回主函数后s=4+12=16。
C语言第4章习题解答
{ 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; else pn=((2*n-1)*x*p(n-1,x)-(n-1)*p(n-2,x))/n; return pn; }
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); else f3(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)
C语言第四章课后答案
return 0;
}
case 2:
case 1:
case 0: grade='E';
}
printf("成绩是%5.1f,相应的等级是%c\n ",score,grade);
return 0;
}
xt4-9
#include <stdio.h>
#include <math.h>
int main()
{
int num,indiv,ten,hundred,thousand,ten_thousand,place; //分别代表个位,十位,百位,千位,万位和位数
{ case 0:bonus=i*0.1;break;
case 1:bonus=bon1+(i-100000)*0.075;break;
case 2:
case 3: bonus=bon2+(i-200000)*0.05;break;
case 4:
case 5: bonus=bon4+(i-400000)*0.03;break;
printf("奖金是: %10.2f\n",bonus);
return 0;
}
xt4-10-2
#include <stdio.h>
int main()
{
int i;
double bonus,bon1,bon2,bon4,bon6,bon10;
int branch;
bon1=100000*0.1;
bon2=bon1+100000*0.075;
C语言第4章习题参考答案
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语言第四章习题答案
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语言第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语言第四章基础练习题
第四章基础练习题知识点: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。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
练习4-1答案一、选择题1.已知:char c='A'; int i=1, j;,执行语句j=!c&&i++;,则i和j的值是( B )。
A.1,1 B.1,0 C.2,1 D.2,02.已知:int x=1, y=2, z;,则执行z=x>y?++x:++y;,则z的值为( C )。
A.1 B.2 C.3 D.43.已知:int a=4, b=5, c;,则执行表达式c=a=a>b后变量a的值为( A )。
A.0 B.1 C.4 D.54.已知:char ch='A';,则表达式ch=(ch>='A'&&ch<='Z')?(ch+32):ch;的值是( B )。
A.'A' B.'a' C.'Z' D.'z'5.若w=1, x=2, y=3, z=4;,则条件表达式w>x?w:y<z?y:z的结果为( B )。
A.4 B.3 C.2 D.16.已知:int w=3, x=10, z=7;,则执行下面语句后的结果为( C )。
printf("%d",x>10?x+100:x-10);printf("%d",w++||z++);printf("%d",!w>z);printf("%d",w&&z);A.0111 B.1111 C.0101 D.01007.已知:a=b=c=1且a、b、c均为int型变量,执行以下语句:++a||++b&&++c;则变量a值为( ①C ),b值为( ②A )。
①A.不正确B.0 C.2 D.1②A.1 B.2 C.不正确D.08.执行下面语句后x的值为( D )。
int a=14, b=15, x;char c='A';x=((a&b)&&(c<'a'));A.TRUE B.FALSE C.0 D.19.要判断char型变量m是否是数字,可以使用下列表达式( B )。
A.0<=m&&m<=9 B.'0'<=m&&m<='9'C."0"<=m&&m<="9" D.前面三个答案均是错误的10.能正确表示“当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)11.设x、y和z是int型变量,且x=3, y=4, z=5,则下面表达式中值为0的是( D )。
A.'x'&&'y'B.x<=y C.x||y+z&&y-z D.!((x<y)&&!z||1) 12.已知x=43, ch='A', y=0;,则表达式x>=y&&ch<'B'&&!y的值是( C )。
A.0 B.语法错C.1 D.“假”13.判断char型变量c1是否为小写字母的正确表达式为( D )。
A.'a'<=c1<='z' B.(c1>=a)&&(c1<=z)C.('a'>=c1)||('z'<=c1) D.(c1>='a')&&(c1<='z')二、读程序、写结果14.下面程序的运行结果:①( 17 )、②( 102 )、③( 9 )、④( 127 )、⑤( 00-1 )。
#include <stdio.h>main(){ int i=16, j, x=6, y, z;j=i+++1; printf("%d\n", j); /*输出①*/x*=i=j; printf("%d\n", x); /*输出②*/x=1; y=2; z=3;x+=y+=z;printf("%d\n", z+=x>y?x++:y++); /*输出③*/x=0x02ff; y=0xff00;printf("%d\n", (x&y)>>4|0x005f); /*输出④*/x=y=z=-1;++x||++y&&++z;printf("%d%d%d\n", x, y, z); /* ⑤*/}练习4-2答案一、选择题1.下面程序的输出是( A )。
#include <stdio.h>main(){int x=1, y=0, a=0, b=0;switch (x){ case 1: switch (y){ case 0: a++; break;case 1:b++; break;}case 2: a++; b++; break;}printf("a=%d, b=%d\n", a, b);}A .a=2, b=1B .a=1, b=1C .a=1, b=0D .a=2, b=22.若有说明:int x ,y;,不能实现以下函数关系的程序段是( B )。
()()()⎪⎩⎪⎨⎧>=<-=000101x x x y A .if (x<0) y=-1; B .y=-1; C .y=0; D .if (x>=0) else if (x==0) y=0; if (x!=0) if (x>=0) if (x>0) y=1; else y=1; if (x>0) y=1; { if (x>0) y=1; } else y=0; else y=0; else y=-1; else y=-1;3.已知:int x, a, b;,下列选项中错误的if 语句是( B )。
A .if (a=b) x++;B .if (a=<b) x++;C .if (a-b) x++;D .if (x) x++;4.若int i=10;,执行下列程序后,变量i 的正确结果是( D )。
switch (i){case 9: i+=1;case 10:i+=1;case 11:i+=1;default:i+=1;}A .10B .11C .12D .135.设有说明语句:int a=1, b=0;,则执行以下语句后输出为( B )。
switch (a){case 1: switch (b){ case 0: printf("**0**"); break;case 1: printf("**1**"); break;}case 2: printf("**2**"); break;}A.**0** B.**0****2** C.**0****1****2** D.有语法错误6.阅读下列程序,其运行结果是( A )。
#include <stdio.h>main(){char c='A';if ('0'<=c<='39') printf("YES");else printf("NO");}A.YES B.NO C.YESNO D.语句错误7.下列程序的运行结果为( C )。
#include <stdio.h>main(){int a=2, b=-1, c=2;if (a<b)if (b<0) c=0;else c+=1;printf("%d\n", c);}A.0 B.1 C.2 D.38.阅读程序,其运行结果是( C )。
#include <stdio.h>main(){int a=-1, b=1, k;if ((++a<0)&&(b--<=0)) printf("%d %d\n", a, b);else printf("%d %d\n", b, a);}A.-1 1 B.0 1 C.1 0 D.0 09.选择运行结果。
#include <stdio.h>main(){char ch;ch=getch();switch (ch){ case 65: printf("%c", 'A');case 66: printf("%c", 'B');default:printf("%s\n", "other");}}如程序可以正常运行,当从键盘输入字母A时,输出结果为( B )。
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 )。