程序设计入门-C语言 翁恺 第3周 判断与循环

第3周 判断与循环 翁恺

/* /会被替换为什么?老师参与
这个讨论是深入的讨论,第一次学习C语言的同学可以围观一下,看不懂也没关系。
/
*/是注释,编译器不管其中的内容。但是有没有想过编译器会把它替换成什么呢?是一个空格?还是不留痕迹?可以写代码来测试你用的编译器吗?

#include <stdio.h>
int main()
{
int/test/a; // 编译成功
in/test/t b; // 编译出错,[Error] unknown type name ‘in’ [Error] expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘attribute’ before ‘b’
// 证明注释被替换成了空格。
return 0;
}
语句前的注释会被转换为等长空格
语句中的注释会被转换为一个空格

语句后的注释会被直接删除

#include <stdio.h>

int main()
{

const int MINOR = 35;

int age = 0;

printf(“请输入你的年龄: “);
scanf(”%d”, &age);

printf(“你的年龄是%d岁。\n”, age);

if ( age < MINOR ) {
printf(“年轻是美好的,”);
}

printf(“年龄决定了你的精神世界,好好珍惜吧。\n”);

return 0;
}

#include <stdio.h>

int main()
{
// 初始化
int price = 0;
int bill = 0;
// 读入金额和票面
printf(“请输入金额:”);
scanf("%d", &price);
printf(“请输入票面:”);
scanf("%d", &bill);
// 计算找零
printf(“应该找您:%d\n”, bill - price);

return 0;
}
#include <stdio.h>

int main()
{
// 初始化
int price = 0;
int bill = 0;
// 读入金额和票面
printf(“请输入金额:”);
scanf("%d", &price);
printf(“请输入票面:”);
scanf("%d", &bill);
// 计算找零
if ( bill >= price ) {
printf(“应该找您:%d\n”, bill - price);
} else {
printf(“你的钱不够\n”);
}

return 0;
}
#include <stdio.h>

int main()
{
int hour1, minute1;
int hour2, minute2;

scanf("%d %d", &hour1, &minute1);
scanf("%d %d", &hour2, &minute2);

int ih = hour2 - hour1;
int im = minute2 - minute1;
if ( im <0 ) {
im = 60 + im;
ih --;
}
printf(“时间差是%d小时%d分。\n”, ih, im);
return 0;
}
// max3.c
#include <stdio.h>

int main()
{
int a,b,c;
scanf("%d %d %d", &a, &b, &c);

int max = 0;

if ( a>b ) {
if ( a>c ) {
max = a;
} else {
max = c;
}
} else {
if ( b>c ) {
max = b;
} else {
max = c;
}
}

printf(“The max is %d\n”, max);

return 0;
}
#include <stdio.h>

int main()
{
const double RATE = 8.25;
const int STANDARD = 40;
double pay = 0.0;
int hours;

printf(“请输入工作的小时数: “);
scanf(”%d”, &hours);
printf("\n");
if (hours > STANDARD)
pay = STANDARD * RATE +
(hours-STANDARD) * (RATE * 1.5);
else
pay = hours * RATE;
printf(“应付工资: %f\n”, pay);

return 0;
}
#include <stdio.h>

int main()
{
const int PASS=60;
int score;

printf(“请输入成绩: “);
scanf(”%d”, &score);
printf(“你输入的成绩是%d.\n”, score);
if ( score < PASS )
printf(“很遗憾,这个成绩没有及格。”);
else {
printf(“祝贺你,这个成绩及格了。”);
printf(“再见\n”);
}

return 0;
}
/数位数/
#include <stdio.h>
int main()
{ int x,n; scanf("%d",&x);
x=256;
n++;
x=x/10;
while(x>0) //可以用do’’'while
{
n++;
x=x/10;
}
return 0;
}
for循环和while循环都是先判断条件再进行循环。while循环语法接近自然语言,简单易读,相比起来for循环在括号中,设置了3个位置,分别写初始条件、判断式和累加器。for循环一般用于计数型循环,一般有明确的循环次数,使用while循环能用相似的语句来实现功能;但是对于判断比较复杂的条件、循环次数不直观的循环,由于只能用1句代码来实现条件判断功能,for循环就力不从心了,而while循环的判断式中的值可以通过若干行代码得到。

  1. 从应用场景来看:
    for循环用于已知循环次数;while循环适用于未知循环次数。
  2. 从内存角度来看:
    局部变量在栈内存中存在,当for循环语句结束,那么变量会及时被gc(垃圾回收器)及时释放掉,不浪费空间。若使用循环之后还想去访问循环语句中控制那个变量,用while循环。

for和while都是循环语句,但for一般是明确的循环次数,而while则是在达成目的条件之前一直进行循环

f
/数位数/
#include <stdio.h>
int main()
{
int n;
scanf("%d",&n);
int fact = 1;
int i = n;
//for(i=1;i<=n;i++){
//fact*=i;
//}
for(;n>1;n–){
fact *=n;
}
printf("%d!=%d\n",i,fact);
return 0;
}
/奇数输出最后一个不是空格/
#include <stdio.h>
int main()
{
int i,n;
scanf("%d",&n);
for(i=1;i<=n;i=i+2)
{
printf("%d",i);
if(in||in-1) break;
printf(" “);
}
return 0;
}
/时区换算/
#include <stdio.h>
int main()
{
int bjt,utc;
scanf(”%d",&bjt);
utc=bjt-800;
if(utc<0) utc=utc+2400;
printf("%d",utc);

return 0;

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值