Get清风C语言程序设计第3何钦铭颜晖第6章回顾数据类型和表达式.docx

上传人:b****5 文档编号:5234496 上传时间:2022-12-14 格式:DOCX 页数:12 大小:18.24KB
下载 相关 举报
Get清风C语言程序设计第3何钦铭颜晖第6章回顾数据类型和表达式.docx_第1页
第1页 / 共12页
Get清风C语言程序设计第3何钦铭颜晖第6章回顾数据类型和表达式.docx_第2页
第2页 / 共12页
Get清风C语言程序设计第3何钦铭颜晖第6章回顾数据类型和表达式.docx_第3页
第3页 / 共12页
Get清风C语言程序设计第3何钦铭颜晖第6章回顾数据类型和表达式.docx_第4页
第4页 / 共12页
Get清风C语言程序设计第3何钦铭颜晖第6章回顾数据类型和表达式.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

Get清风C语言程序设计第3何钦铭颜晖第6章回顾数据类型和表达式.docx

《Get清风C语言程序设计第3何钦铭颜晖第6章回顾数据类型和表达式.docx》由会员分享,可在线阅读,更多相关《Get清风C语言程序设计第3何钦铭颜晖第6章回顾数据类型和表达式.docx(12页珍藏版)》请在冰豆网上搜索。

Get清风C语言程序设计第3何钦铭颜晖第6章回顾数据类型和表达式.docx

Get清风C语言程序设计第3何钦铭颜晖第6章回顾数据类型和表达式

C语言程序设计(第3版)何钦铭-颜-晖-第6章--回顾数据类型和表达式

第6章回忆数据类型和表达式

【练习6-1】输入一个十进制数,输出相应的八进制数和十六进制数。

例如:

输入31,输出37和1F。

解答:

#include

intmain(void)

{

intx;

scanf("%d",&x);

printf("%o%x\n",x,x);

return0;

}

【练习6-2】在程序段:

printf("inputa,b:

");

scanf("%o%d",&a,&b);

printf("%d%5d\n",a,b);/*%5d指定变量b的输出宽度为5*/

中,如果将scanf("%o%d",&a,&b)改为scanf("%x%d",&a,&b),仍然输入__17___17__,输出是什么?

解答:

2317(中间有三个空格)

【练习6-3】如果字符型变量ch的值是大写字母,怎样的运算可以把它转换为小写字母?

解答:

ch=ch-‘A’+‘a’;

【练习6-4】证明以下等价关系。

〔1〕a&&(b||c)等价于a&&b||a&&c。

〔2〕a||(b&&c)等价于〔a||b〕&&(a||c)。

〔3〕!

〔a&&b〕等价于!

a||!

b。

〔4〕!

〔a||c〕等价于!

a&&!

b。

解答:

(1)

abca&&(b||c)a&&ba&&ca&&b||a&&c

0(假)0(假)0(假)0000

0(假)0(假)非0(真)0000

0(假)非0(真)0(假)0000

0(假)非0(真)非0(真)0000

非0(真)0(假)0(假)0000

非0(真)0(假)非0(真)1011

非0(真)非0(真)0(假)1101

非0(真)非0(真)非0(真)1111

(2)

abcb&&ca||(b&&c)a&&ba||c(a||b)&&(a||c)

0(假)0(假)0(假)00000

0(假)0(假)非0(真)00010

0(假)非0(真)0(假)00100

0(假)非0(真)非0(真)11111

非0(真)0(假)0(假)01111

非0(真)0(假)非0(真)01111

非0(真)非0(真)0(假)01111

非0(真)非0(真)非0(真)11111

(3)

aba&&b!

a&&b!

a!

b!

a||b

0(假)0(假)01111

0(假)非0(真)01101

非0(真)0(假)01011

非0(真)非0(真)10000

(4)

aba||b!

(a||b)!

a!

b!

a&&!

b

0(假)0(假)01111

0(假)非0(真)10100

非0(真)0(假)10010

非0(真)非0(真)10000

习题6

1.设floatx=2.5,y=4.7;inta=7;,printf(“%.1f〞,x+a%3*(int)(x+y)%2/4)的结果为A

B.2.8C.3.5

2.执行以下程序段的输出结果是D。

intnum=1234,s=0;

while(num!

=0){

s+=num%10;

num/=10;

}

printf("%d",s);

A.4321B.1234C.0D.10

3.设字符型变量x的值是064,表达式“~x^x<<2&x〞的值是A。

A.0333B.333C.0x333D.020

4.设a为整型变量,不能正确表达数学关系:

10

A.10

B.a==11||a==12||a==13||a==14

C.a>10&&a<15

D.!

(a<=10)&&!

(a>=15)

5.设以下变量均为int类型,表达式的值不为9的是C。

A.(x=y=8,x+y,x+1)

B.(x=y=8,x+y,y+1)

C.(x=8,x+1,y=8,x+y)

D.(y=8,y+1,x=y,x+1)

二.填空题

 

2.逻辑表达式x&&1等价于关系表达式x!

=0。

3.设inta=5,b=6;那么表达式(++a==b--)?

++a:

--b的值是7。

4.设c='w',a=1,b=2,d=-5,那么表达式'x'+1>c,'y'!

=c+2,-a-5*b<=d+1,b==(a=2)的值分别为1、0、1、1。

5.运行以下程序后,如果从键盘上输入china#<回车>,那么输出结果为c1=2,c2=5。

#include

intmain(void)

{

intc1=0,c2=0;charch;

while((ch=getchar())!

=’#’)

switch(ch)

{case‘a’:

case‘h’:

c1++;

default:

c2++;

}

printf(“c1=%d,c2=%d\n〞,c1,c2);

return0;

}

三.程序设计题

1.分类统计字符个数:

输入一行字符,统计出其中的英文字母、空格、数字和其他字符的个数。

试编写相应程序。

解答:

#include

intmain(void)

{

charop;

intletter,blank,digit,other;

printf("Inputcharacters:

");

op=getchar();

letter=blank=0;

digit=other=0;

while(op!

='\n'){

if(op=='')blank++;

elseif(op>='a'&&op<='z'||op>='A'&&op<='Z')letter++;

elseif(op>='0'&&op<='9')digit++;

elseother++;

op=getchar();

}

printf("blank=%d,other=%d,letter=%d,digit=%d",blank,other,letter,digit);

return0;

}

2.使用函数累加由n个a构成的整数之和:

输入两个正整数a和n,求a+aa+aaa+aa…a(n个a)之和。

要求定义和调用函数fn〔a,n〕,它的功能是返回aa……a〔n个a〕。

例如,fn〔3,2〕的返回值是33。

试编写相应程序。

解答:

#include

intmain(void)

{

inta,i,n;

longsn;

longfn(inta,intn);

scanf("%ld%d",&a,&n);

sn=0;

for(i=1;i<=n;i++)

sn=sn+fn(a,i);

printf("%ld\n",sn);

return0;

}

longfn(inta,intn)

{

inti;

longtn;

tn=0;

for(i=1;i<=n;i++)

tn=10*tn+a;

returntn;

}

3.使用函数输出指定范围内的函数:

输入两个正整数m和n(1<=m,n<=1000),输出m~n之间的所有完数,完数就是因子和与它本身相等的数。

要求定义并调用函数factorsum(number),它的功能是返回number的因子和。

例如,factorsum(12)的返回值是16〔1+2+3+4+6〕。

试编写相应程序。

解答:

#include

intfactorsum(intnumber);

intmain(void)

{

intm,n;

printf("Inputm:

");

scanf("%d",&m);

printf("Inputn:

");

scanf("%d",&n);

printf("完全数是:

")

for(;m<=n;m++)

if(factorsum(m)==1)

printf("%d",m);

return0;

}

intfactorsum(intnumber)

{

inti,sum;

if(number==1)return1;

sum=0;

for(i=1;i<=number/2;i++)

if(number%i==0)

sum=sum+i;

if(sum==number)return1;

return0;

}

4.使用函数输出指定范围内的Fibonacci数:

输入两个正整数m和n(1<=m,n<=10000),输出m~n之间所有的Fibonacci数。

Fibonacci序列〔第1项起〕:

1123581321……要求定义并调用函数fib(n),它的功能是返回第n项Fibonacci数。

例如,fib(7)的返回值是13。

试编写相应程序。

解答:

#include

intfib(intn);

#include

intmain(void)

{

inti,m,n,f;

printf("Inputm:

");

scanf("%d",&m);

printf("Inputn:

");

scanf("%d",&n);

i=f=1;

while(f<=n){

if(f>=m)printf("%d",f);

i++;

f=fib(i);

}

return0;

}

intfib(intn)

{

inti,x1,x2,x;

if(n==1||n==2)return1;

else{

x1=x2=1;

for(i=3;i<=n;i++){

x=x1+x2;

x1=x2;

x2=x;

}

}

returnx;

}

5.使用函数验证哥德巴赫猜想:

任何一个不小于6的偶数均可表示为两个奇素数之和。

例如6=3+3,8=3+5,…,18=5+13。

将6~100之间的偶数都表示成两个素数之和,打印时一行打印5组。

试编写相应程序。

解答:

#include

intprime(intm);

intmain(void)

{

intcount,i,number;

count=0;

for(number=6;number<=100;number=number+2){

for(i=3;i<=number/2;i=i+2)

if(prime(i)&&prime(number-i)){

printf("%d=%d+%d",number,i,number-i);

count++;

if(count%5==0)printf("\n");

}

}

return0;

}

intprime(intm)

{

intk,i;

for(i=2;i<=m/2;i++)

if(m%i==0)return0;

if(i>m/2&&m!

=1)return1;

}

6.使用函数输出一个整数的逆序数:

输入一个整数,将它逆序输出。

要求定义并调用函数reverse(number),它的功能是返回number的逆序数。

例如,reverse(12345)的返回值是54321。

试编写相应程序。

解答:

#include

intreverse(intnumber);

intmain(void)

{

intnumber;

printf("Inputnumber:

");

scanf("%d",&number);

printf("%d",reverse(number));

return0;

}

intreverse(intnumber)

{

intres,a;

res=0;

while(number!

=0){

a=number;

number=number%10;

res=res*10+number;

number=a/10;}

returnres;

}

7.简单计算器:

模拟简单运算器的工作:

输入一个算式〔没有空格〕,遇等号"="说明输入结束,输出结果。

假设计算器只能进行加、减、乘、除运算,运算数和结果都是整数,4种运算符的优先级相同,按从左到右的顺序计算。

例如,输入“1+2*10-10/2=〞后,输出10。

试编写相应程序。

解答:

#include

intmain(void)

{

charop;

intoperand1,operand2,res;

scanf("%d",&operand1);

op=getchar();

while(op!

='='){

scanf("%d",&operand2);

switch(op){

case'+':

res=operand1+operand2;break;

case'-':

res=operand1-operand2;break;

case'*':

res=operand1*operand2;break;

case'/':

res=operand1/operand2;break;

default:

res=0;

}

operand1=res;

op=getchar();

}

printf("%d",res);

return0;

}

8.统计一行文本的单词个数:

输入一行字符,统计其中单词的个数。

各单词之间用空格分隔,空格数可以是多个,试编写相应程序。

解答:

#include

intmain(void)

{

charop;

intcount,word;

printf("Inputwords:

");

op=getchar();

count=word=0;

while(op!

='\n'){

if(op=='')

word=0;

elseif(word==0){

count++;

word=1;

}

op=getchar();

}

printf("count=%d\n",count);

return0;

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 艺术

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1