您的位置:首页 > 移动开发 > IOS开发

IOS开发之路-C 学习笔记7.15

2013-07-16 09:15 369 查看
今天听的还是挺轻松的,但是还是学到了以前不知道的东西.

比如:

++i 先自增 再使用

i++ 先使用 再自增

高精度忘低精度转 不四舍五入直接舍掉

例: printf("%d",(int)3.14);

还有幻影回车符.

例用scanf输入时:

void getChar()
{
int a,b,c,d;
scanf("%d%d%d%d",&a,&b,&c,&d);
printf("%d %d %d %d\n",a,b,c,d);
char c1,c2,c3;
scanf("%c %c %c",&c1,&c2,&c3);
printf("%c %c %c",c1,c2,c3);
}


其中输入完4个数字之后(如输入1 2 3 4)之后回车,输入3个英文如(a b c)

之后回车输出 会发现 结果为

1 2 3 4

b c

因为scanf接受完4个数之后,默认会把回车符也加进去作为c1的值了.所以就产生了结果那样.

那如何解决这个问题呢.其实很简单

只需要在输入完数字之后加上getchar(); 就ok了;

getchar();是C的从键盘接收一个字符的函数,这样就把回车符被getchar()接受了.所以输出就没有问题了.

今天没写什么东西.哎 玩的时间浪费了.

1.使用数组,编写一个任意进制转换为十进制的转换工具

void convert_10()
{
long int number = 0;
int con_ = 0;
int num[16];
int ram = 0 ;
int len  = 1 ;
int sum = 0 ;
printf("请选择要转换的类型:\n");
printf("(1)2进制转10进制\t");
printf("(2)8进制转10进制\t\n");
printf("请输入编号进行选择:");
scanf("%d",&con_);
if(con_ == 1)
{
printf("请输入要转换的2进制数:");
scanf("%ld",&number);
long int temp = number;
while(temp>=10)
{
len++;
temp = temp/10;
}
for(int i = 0 ; i<len;i++)
{
ram = number%10;
number = number/10;
num[i] = ram*pow(2, i);

sum += num[i];
}
printf("转换为10进制后为:%d\n",sum);
}
else if(con_ == 2)
{
printf("请输入要转换的8进制数:");
scanf("%ld",&number);
long int temp = number;
while(temp>=10)
{
len++;
temp = temp/10;
}
for(int i = 0 ; i<len;i++)
{
ram = number%10;
number = number/10;
num[i] = ram*pow(8, i);
sum += num[i];
}
printf("转换为10进制后为:%d\n",sum);
}
else
{
printf("您的输入有误!");
}
}


2.计算粉刷某图形所需涂料用量。

某公司想要粉刷一个户外广告,这个广告本身很简单,是一个同心圆,里面的小圆的半径是外面的大圆半径的四分之一。分别用两种不同的颜色来粉刷,外面使用黄色,里面使用紫色。涂料1夸脱(1夸脱=1.1365升)可以粉刷250平方英尺(1英尺=0.3048米),但是为了效果显著特要求粉刷两遍。要求编写一个C程序,然后输入外面同心圆的直径(单位:米),然后计算出黄色和紫色的涂料分别需要多少升?



//
//  main.c
//  work15
//
//  Created by X's on 13-7-15.
//  Copyright (c) 2013年 X‘s. All rights reserved.
//

#include <stdio.h>
#include <math.h>
#define pi 3.14
#define tk 1.1365
#define yc 0.3048
void work_1()
{
float r = 0;
float max_area = 0;
float min_area = 0;
float dope_min = 0;
float dope_max = 0;
printf("请输入外面同心圆的直径(米):");
scanf("%f",&r);
float lettle_r = (r/2)/4;
getchar();
max_area = pi * pow((r/2), 2);
min_area = pi * pow(lettle_r,2);
//250平方英尺  1英尺 = 0.3048
float area_1 = (sqrt(250)*yc)*(sqrt(250)*yc);
dope_min = (tk/(area_1/min_area)*2);
dope_max = (tk/(area_1/max_area)*2);
printf("大圆面积:%.2f平方米\n",max_area);
printf("小圆面积:%.2f平方米\n",min_area);
printf("一夸脱可以涂:%.2f平方米\n",area_1);
printf("大圆需要: %.2f升\n",(dope_max-dope_min));
printf("小圆需要: %.2f升\n",dope_min);
}
int main(int argc, const char * argv[])
{
work_1();
return 0;
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: