C语言 学习记录5 第七章 分支和跳转

C Primer Plus 第七章 C控制语句:分支和跳转

复习题(我的答案):

a.100>3&&'a'>'c' is false
b.100>3||'a'>'c' is true
c.!(100>3) is false
a.number>=90&&number<100
b.ch!='q'&&ch!='k'
c.number>=1&&number<=9&&number!=5//(number>=1 && number<=9) && number!=5
d.number<1&&number>9//number<1 || number>9
#include<stdio.h>
int main(void)
{
	int weight,height;
	scanf("%d %d",&weight,&height);
	if(weight>100&&weight<300)
	{
		if(height>=72)
		{
			printf("You are very tall for your weight.\n");
		}
		if(height>64&&height<72)
		{
			printf("You are tall for your weight.\n");
		}
	} 
	if(weight>300)
	{
		if(height>48&&height<=64)
		{
			printf("Your weight is ideal.\n");
		}
		if(height<=48)
		{
			printf("You are quite short for your weight.\n");
		}
	}
	return 0;
} 
a.1
b.0
c.1
d.d=6
e.10
f.表达式:x>y?y>x:x>y  结果:x>y//结果应该为0,如果x>y为真,
表达式的值就是y>x,这种情况下它为假,如果x>y为假,
那么表达式的值就是x>y,这种情况为假
**$**$**$**#%//*#%*#%$#%*#%*#%$#%*#%*#%$#%*#%*#%
fat hat cat Oh no!
//错了,应该是:
fat hat cat Oh no!
hat cat Oh no!
cat Oh no!
#include<stdio.h>
int main(void)
{
	char ch;
	int lc=0;
	int uc=0;
	int oc=0;
	
	while((ch=getchar())!='#')
	{
		if(ch>='a' && ch<='z')
		{
			lc++;
		}
		else if(ch>='A' && ch<='Z')
		{
			uc++;
		}
		else
		oc++;
	}
	printf("%d lowercase, %d uppercase, %d other\n",lc,uc,oc);
	return 0;
}
You are 20. Here is a raise.
You are 40. Here is a raise.
You are 60. Here is a raise.
You are 65. Here is your gold watch.//错,应该不断打印这一行,因为代码中出现
了age=65这样的赋值语句

9.10.

编程练习:
1.编写一个程序读取输入,读到字符#停止,然后报告读取的空格数、换行符数和所有其他字符的数量。

#include<stdio.h>
int main(void)
{
	char ch;
	int space=0,line=0,charactor=0;
	while((ch=getchar())!='#')
	{
		if(ch==' ')//注意,这里读取空格字符不需要用双引号! 
		space++;
		else if(ch=='\n')
		line++;
		else
		charactor++;
	}
	printf("There are %d spaces, %d lines, and %d charactors.\n",space,line,charactor);
	return 0;
}

2.编写一个程序读取输入,读到#字符停止。程序要打印每个输入的字符及对应的ASCII码(十进制)。每行打印8个“字符-ASCII码”组合。建议:使用字符计数和求模运算符在每8个循环周期打印一个换行符。
#include<stdio.h>

int main(void)
{
	char ch;
	int number=0;
	printf("Please enter some letters:");
	while((ch=getchar())!='#')
      {
	      printf("%c-%d ",ch,ch);
	      number++;
	      if(number%8==0)
      	{
	      	printf("\n");
        }
	  }
    printf("\n");
	return 0;
}

3.编写一个程序,读取整数直到用户输入0。输入结束后,程序应报告用户输入的偶数(不包括0)个数、这些偶数的平均值、输入的奇数个数和奇数平均值。

#include<stdio.h>
int main(void)
{
	int n;
	double avgEven,avgOdd;
	double iEven=0,iOdd=0;
	double sEven=0,sOdd=0;
	printf("Please enter some integer(0 to quit):");
	scanf("%d",&n);
	while(n!=0)
	{
		scanf("%d",&n);
		if(n%2==0)
		{
			sEven+=n;
			iEven++;
		}
		if(n%2!=0)
		{
			sOdd+=n;
			iOdd++;
		}
	}
	printf("There are %.0lf even numbers. The average of all even number is %lf\n",iEven,sEven/iEven);
	printf("There are %.0lf odd numbers. The average of all odd number is %lf\n",iOdd,sOdd/iOdd);
	return 0;
}

4.使用if else语句编写一个程序读取输入,读到#停止。用感叹号代替句号,用两个感叹号替换原来的感叹号,最后报告进行了多少次替换。

#include<stdio.h>
int main(void)
{
	char ch;
	int count=0;
	printf("Please enter some letters(# to quit):");
	while((ch=getchar())!='#')
	{
		if(ch=='.')
		{
			printf("!");
			count++;
		}
		else if(ch=='!')
		{
			printf("!!");//不能ch='!!'; 
			count++;
		}
		else
		{
			printf("%c",ch);//可以用putchar()
		}
	}
	printf("\n");
	if(count==1)
	{
		printf("%d time change.\n",count);
	}
	else 
	{
		printf("%d times change.\n",count);
	}
	return 0;
}

5.用switch重写练习4。

#include<stdio.h>
int main(void)
{
	char ch;
	int count=0;
	printf("Please enter some letters(# to quit):");
	while((ch=getchar())!='#')
	{
		switch(ch)
		{
			case '.':printf("!");
			         count++;
			         break;
            case '!':printf("!!");
                     count++;
                     break;
            default:printf("%c",ch);
                    break;
		}
	}
	printf("\n");
	if(count==1)
	{
		printf("%d time change.\n",count);
	}
	else 
	{
		printf("%d times change.\n",count);
	}
	return 0;
}

6.编写程序读取输入,读到#为止,报告ei出现的次数。

#include<stdio.h>
int main(void)
{
	char ch;
	int count=0;//一定要记得给变量赋值 
	printf("Please enter some letters(# to qiut):");
	while((ch=getchar())!='#')
	{
		if(ch=='e')
		{
			ch=getchar();
			if(ch=='i')
			{
				count++;
			}
		}
	}
	printf("There are %d 'ei' here.\n",count);
	return 0;
}

7.编写一个程序,提示用户输入一周工作的小时数,然后打印工资总额、税金和净收入。(基本工资=10美元/小时,加班(超过40小时)=基本工资的1.5倍,税率:前300美元为15%,续150美元为20%,余下的为25%,用#define定义符号常量)

#include<stdio.h>
#define BASESEL 10.00
#define EXTRASAL 15.00
#define TEX1 0.15
#define TEX2 0.20
#define TEX3 0.25
int main(void)
{
	double sal;
	int hours;
	double grossPayroll,expensesOfTaxation,netReceipt;
	printf("Please enter your working hours in one week:");
	scanf("%d",&hours);
	if(hours<=40)
	{
		grossPayroll=hours*BASESEL;
	}
	if(hours>40)
	{
		grossPayroll=400+(hours-40)*EXTRASAL;
	}
	if(grossPayroll<=300)
	{
		expensesOfTaxation=grossPayroll*TEX1;
	}
	if(grossPayroll<=450&&grossPayroll>300)
	{
		expensesOfTaxation=grossPayroll*TEX2;
	}
	if(grossPayroll>450)
	{
		expensesOfTaxation=grossPayroll*TEX3;
	}
	printf("Your gross payroll is $%.2lf, expenses of taxation is $%.2lf, net receipt is $%.2lf.\n",grossPayroll,expensesOfTaxation,grossPayroll-expensesOfTaxation);
	return 0;
}

8.修改第7题的基本工资,让程序可以给出一个供选择的工资等级菜单。使用switch完成工资等级的选择。

#include<stdio.h>
#define TEX1 0.15
#define TEX2 0.20
#define TEX3 0.25
int main(void)
{
	double sal;
	double basesal;
	int hours;
	int choose;
	double grossPayroll,expensesOfTaxation,netReceipt;
	printf("**********************************************************************\n");
	printf("Enter the number corresponding to the desired pay rate of action:\n");
	printf("1) $8.75/hr                    2) $9.33/hr\n");
	printf("3) $10.00/hr                   4) $11.20/hr\n");
	printf("5) quit\n");
	printf("**********************************************************************\n");
	scanf("%d",&choose);
	while(choose!=5)
	{
		switch(choose)
		{
			case 1:
			  basesal=8.75;
			  break;
     	    case 2:
			  basesal=9.33;
			  break;
	  	    case 3:
			  basesal=10.00;
			  break;
	   	    case 4:
			  basesal=11.20;
			  break;
	        default:break;
		}
		printf("Please enter your working hours in one week:");
	scanf("%d",&hours);
	if(hours<=40)
	{
		grossPayroll=hours*basesal;
	}
	if(hours>40)
	{
		grossPayroll=40*basesal+(hours-40)*basesal*1.5;
	}
	if(grossPayroll<=300)
	{
		expensesOfTaxation=grossPayroll*TEX1;
	}
	if(grossPayroll<=450&&grossPayroll>300)
	{
		expensesOfTaxation=grossPayroll*TEX2;
	}
	if(grossPayroll>450)
	{
		expensesOfTaxation=grossPayroll*TEX3;
	}
	printf("Your gross payroll is $%.2lf, expenses of taxation is $%.2lf, net receipt is $%.2lf.\n",grossPayroll,expensesOfTaxation,grossPayroll-expensesOfTaxation);
	printf("\n");
	printf("**********************************************************************\n");
	printf("Enter the number corresponding to the desired pay rate of action:\n");
	printf("1) $8.75/hr                    2) $9.33/hr\n");
	printf("3) $10.00/hr                   4) $11.20/hr\n");
	printf("5) quit\n");
	printf("**********************************************************************\n");
	scanf("%d",&choose);
	}
	
	return 0;
}

9.编写一个程序,只接受正整数输入,然后显示所有小于或等于该数的素数。

#include<stdio.h>
int main(void)
{
	int n;
	int isPrime;
	int i,j;
	printf("Please enter an integer:");
	scanf("%d",&n);//可以加一个while循环限定整数输入:while(scanf("%d",&n)==1&&n>0)
	printf("2 ");
    for(i=3;i<=n;i++)// for(i=2;i<=n;i++)
    {
    	isPrime=1;
    	for(j=2;j<i;j++)//for (j = 2, isPrime = true; (j * j) <= i;j++)对照上面的for循环,这种方法能把2也算出来
    	{
	    	if(i%j==0)
	    	isPrime=0;
	    }
	    if(isPrime==1)
	    {
    		printf("%d ",i);
    	}
    }
    printf("\n");
    return 0;
}

10.1988年的美国联邦税收计划是近代最简单的税收方案。它分为4个类别,每个类别有两个等级。(不同类别不同等级税收详见书本)编写一个程序,让用户指定那水晶的种类和应纳税收入,然后计算税金。程序应通过循环让用户多次输入。

#include<stdio.h>
int main(void)
{
	double income;
	double incomeOne;
	int choose;
	printf("**********************************************************************\n");
	printf("Enter the number corresponding to the desired pay rate of action:\n");
	printf("1) 单身                         2) 户主\n");
	printf("3) 已婚,共有                   4) 已婚,离异\n");
	printf("5) quit\n");
	printf("**********************************************************************\n");
	scanf("%d",&choose);
	while(choose!=5)
	{
		switch(choose)
		{
			case 1:
			  incomeOne=17850;
			  break;
     	    case 2:
			  incomeOne=23900;
			  break;
	  	    case 3:
			  incomeOne=29750;
			  break;
	   	    case 4:
			  incomeOne=14875;
			  break;
	        default:break;
		}
	printf("Please enter your income:");
	scanf("%lf",&income);
	printf("Your tex is $%.2lf.\n",0.15*incomeOne+0.28*(income-incomeOne));
	printf("\n");
	printf("**********************************************************************\n");
	printf("Enter the number corresponding to the desired pay rate of action:\n");
	printf("1) 单身                         2) 户主\n");
	printf("3) 已婚,共有                   4) 已婚,离异\n");
	printf("5) quit\n");
	printf("**********************************************************************\n");
	scanf("%d",&choose);
	}
	return 0;
}

11.题目太长了不想写

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言之基础 1) C语言之简介 2) C语言之搭建开发环境 3) C语言之第一个简单程序的结构详解 4) C语言之书写规范和注释 5) C语言之数据类型 字符串和格式化输入输出 6) C语言之使用字符串 7) C语言之格式化输出 8) C语言之格式化输入 9) C语言之格式化输入输出整理 10) C语言之基本运算符 11) C语言之其他运算符 12) C语言之表达式和语句 循环语句 13) C语言之while循环语句 14) C语言之do-while循环语句 15) C语言之for循环语句 16) C语言之使用关系运算符和表达式 17) C语言之赋值运算+=、-=、*=、/=、%= 18) C语言之循环嵌套 分支跳转 19) C语言分支跳转 if 20) C语言分支跳转 if-else 21) C语言之条件运算符 ?: 22) C语言之循环辅助手段:continue 和 break 23) C语言分支跳转 switch和break 24) C语言分支跳转 goto语句 25) C语言之字符输入/输出和输入确认 指针 26) C语言之初识指针 27) C语言之指针的简单用法 28) C语言之字符串指针详解 数组 29) C语言之定义数组 30) C语言之一维数组的使用 31) C语言之二维数组和多维数组 32) C语言之指向数组的指针 33) C语言之保护数组内容const的使用 34) C语言之指向多维数组的指针 函数 35) C语言之函数的定义和调用 36) C语言之定义带参数的函数 37) C语言之函数之形参和实参 38) C语言之函数之返回值和函数类型 39) C语言之指针做函数参数 40) C语言之数组做函数参数 41)c语言之递归 字符串和字符串函数 42)c语言之字符串I/O 43) C语言之字符串输入/输出 44) C语言之字符串处理函数 文件操作 45) C语言之文件是什么 46) C语言之用fopen() 打开文件,关闭文件 fclose() 47) C语言之getc() 和 putc 读写文件 48) C语言之文件结尾 49) C语言之fgets() 和 fputs() 50) C语言之文件内部指针 51) C语言之rewind() 52) C语言之随机存取 fseek() 和 ftell() 函数 53) C语言之fsetpos和fgetpos 54) C语言之fread() 和 fwrite() 函数 结构体和其他数据形式 55) C语言之结构体的定义和初始化 56) C语言之访问结构体成员 57) C语言之结构数组 58) C语言之结构体指针 59) C语言之结构体做函数参数 60) C语言之把结构体保存到文件 已更新至此 61)C语言之联合简介 62)C语言之枚举类型 63)C语言之函数和指针 位操作 64) C语言之二进制、位和字节 65)C语言之位运算 66)C语言之打开位 67) C语言之转置位及查看位 68) C语言之左移右移(大结局)

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值