C语言程序设计基础

/*
从键盘上输入一个四位整数,
计算各个位上的数字之和。
*/
#include <stdio.h>
int main(void)
{
	int a,ge,shi,bai,qian;
	printf("请输入一个四位整数:");
	scanf("%d",&a);
	qian = a/1000;
	bai = a/100%10;
	shi = a/10%100%10;
	ge = a%1000%100%10;
	printf("各个位置上的和:sum=%d\n",ge+shi+bai+qian);
	return 0;
} 

总结:

        ①优化:"ge=a%10","shi=a/10%10"。

/*
x(x只考虑整数int且必须定义为int,
但F(x) 完全可能超过int的表示范围)通过键盘输入
(输入前给出提示“Please input x:”),
然后计算并在屏幕上输出函数值。
*/
#include <stdio.h>
int main(void)
{
	int x;
	double y;
	printf("Please input x:");
	scanf("%d",&x);
	if(x<0)
		y = (-5)*(double)x+27;
	else 
		if(x==0)
			y = 7909;
		else
			y = 2*(double)x-1;
	
	printf("F(%d) = %.0lf\n",x,y);
	return 0;
}

总结:

        ①在判断语句“if(x==0)”中,千万不要写为“if(x=0)”。

/*
已知某银行整存整取存款不同期限的年息利率分别为:
3.15% 期限一年,3.63% 期限二年,
4.02% 期限三年,4.69% 期限五年,5.36% 期限八年。
从键盘上输入存钱的本金
(以元为单位,必须定义为int且应考虑金额很大的情况)和
存款期限(只考虑1、2、3、5、8),
求到期时能从银行得到的利息(以元为单位,应考虑有小数,不计复利)。
*/
#include <stdio.h>
int main(void)
{
	int money,year;
	double y;
	printf("请输入本金,年限:");
	scanf("%d,%d",&money,&year);
	switch(year)
	{
		case 1:
			y = money*0.0315;
			printf("利息 = %0.2lf 元\n",y);
			break;
		case 2:
			y = money*0.0363*2;
			printf("利息 = %0.2lf 元\n",y);
			break;
		case 3:
			y = money*0.0402*3;
			printf("利息 = %0.2lf 元\n",y);
			break;
		case 5:
			y = money*0.0469*5;
			printf("利息 = %0.2lf 元\n",y);
			break;
		case 8:
			y = money*0.0536*8;
			printf("利息 = %0.2lf 元\n",y);
			break;
		default:
			printf("输入有误,请按要求输入。\n");
	}
	return 0;
}

总结:

        ①原来不计复利是这样算的,复利习惯了还不知道啥意思

        ②使用了switch语句实现多分枝选择结构。

/*
编写一个简单计算器程序,
输入格式为:data1 op data2。
其中data1和data2是参加运算的两个数
(data1、data2,必须定义为int,但二者相加或相乘可能超出int能表示的范围),
op为运算符,它的取值只能是“+”“-”“*”“/”“%”。
*/ 
#include <stdio.h>
int main(void)
{
	int data1,data2;
	double result;
	char op;
	printf("Please input data1 op data2:");
	scanf("%d %c %d",&data1,&op,&data2);
	switch(op)
	{
		case '+':
			result = (double)data1+(double)data2;
			printf("%d%c%d=%lf\n",data1,op,data2,result);
			break;
		case '-':
			result = data1-data2;
			printf("%d%c%d=%lf\n",data1,op,data2,result);
			break;
		case '*':
			result = (double)data1*(double)data2;
			printf("%d%c%d=%lf\n",data1,op,data2,result);
			break;
		case '/':
			if(data2==0)
				printf("除数不能为0\n");
			else{
				result = (double)data1/(double)data2;
				printf("%d%c%d=%lf\n",data1,op,data2,result);
				break;
			}
			
		case '%':
			if(data2==0)
				printf("除数不能为0\n");
			else{
				result = data1%data2;
				printf("%d%c%d=%lf\n",data1,op,data2,result);
				break;
			}
		default:
			printf("ERROR,输入的运算符有误,请重新输入!\n");
		
		return 0;
			
			
			
	}
}

总结:

        ①data1和data2相加可能超过int范围,所以将result定义为double型。

        ②在运算中整型相加或相乘结果依然是整型,所以将data1和data2强转为double型。

        ③在除法运算中,除数不能为0,因此加一个条件语句判断除数是否为0。

        ④总体使用switch多分枝结构。

/*
从键盘读入两个字符cBegin和cEnd,
要求输出 ≥ cBegin且 ≤ cEnd的所有字符。
*/ 
#include <stdio.h>
int main(void)
{
	char cBegin,cEnd;
	int i;
	printf("Please Input two char:");
	scanf("%c%c",&cBegin,&cEnd);
	printf("Result:");
	for(i=cBegin;i<cEnd+1;i++){
		printf("%c",i);	
	}
	putchar('\n');
	return 0;
	
} 

 总结:

        ①字符型赋值给整型,与之对应的是ASCII码。

        ②输入字符可以使用getchar()函数。

        ③这里使用了一个for循环输出结果。

/*
从键盘读入两个字符cBegin和cEnd,
要求输出 ≤ cBegin且 ≥ cEnd的所有字符。
*/ 
#include <stdio.h>
int main(void)
{
	char cBegin,cEnd;
	int i;
	printf("Please Input two char:");
	cBegin=getchar();
	cEnd=getchar();
	printf("Result:");
	for(i=cBegin;i>=cEnd;i--){
		printf("%c",i);
	}
	putchar('\n');
	return 0;
	
} 

总结:

        ①这里使用getchar()函数获取字符。

        ②同理,按照倒序输出字符。

/*
从键盘读入一个字符cBegin和一个数iCount,
要求输出 ≥ cBegin的iCount个字符。
*/ 
#include <stdio.h>
int main(void)
{
	char cBegin;
	int iCount;
	printf("Please Input a char and a number:");
	scanf("%c%d",&cBegin,&iCount);
	printf("Result:");
	for(int i=0;i<iCount;i++){
		printf("%c",cBegin+i);
	}
	putchar('\n');
	return 0;
	
} 

总结:

        ①这里的for循环控制的是输出字符的个数,然后通过printf("%c",cBegin+i);输出相应的字符。

        ②通过scanf输入一个字符型和整型数据。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值