/*
从键盘上输入一个四位整数,
计算各个位上的数字之和。
*/
#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输入一个字符型和整型数据。