一:
Q1如何用printf打印出双引号?
众所周知,在c语言中想用printf打印出内容的格式是printf("xxxxxxxxxx");这样就可以打印出双引号里的全部东西,但是我们这里会发现双引号就像是一个标志,让编码器不管什么其他的,看到以双引号为标记点打印出双引号里的全部内容。那么既然是打印双引号里的全部内容,如何打印双引号呢
A1:\"xxxxxxx"\ ; 以这样的格式便可以打印出双引号。eg printf("xxxxxxxxx\"asdfg"\"):
输出结果为 xxxxxxxx"asdfg"
---------------------------------------------------------------------------------------------------------------------------------
二:
Q2如何是输出结果出现在你想要控制器界面的位置?
在学习谭浩强《程序设计基础中》有一道上机题,这道题要求让*组成菱形图案。在做这道题是老师要求编译结果让图案居中,由于涉及到for循环,两种实现方式不相同。在这个地方实现题目要求就比较简单。补充一下知识点
point1:以打印数字为例printf(“xxxxx%d",number)
在%后输入数字可以实现空几格eg printf(“xxxxx%2d",number)
输出结果就为xxxxx 66
如果想输出带小数点的数字可以以.number的形式 eg printf(“xxxxx%.2d",number)
输出结果为xxxxxx66.00
第二题的第四小问”在比姓名宽度宽3的字段中打印名和姓“需要我们先知道姓名的字符长度。而这时我们就需要用到strlen函数和sizeof函数
Q2.1:strlen函数与sizeof函数有什么区别?
A2.1:还在学
Q2.2:如何使用strlen函数
A2.2:char str[] = "Hello World";
int len = strlen(str)
point2:修饰符“*”
在scanf中意为跳过几个字符(*4)会从头跳过四个字符
在printf中意为空开几个位置 eg:
int a, b; a = 66, b = 2; printf("%*d\n", b + 2, a);
输出结果为xx66;相当于%4d;
---------------------------------------------------------------------------------------------------------------------------------code如下
/*
第一题
#include
int main() {
char first,last;
printf("please enter your first name: ");
scanf("%s", &first);
printf("please enter your last name: ");
scanf("%s", &last);
printf("your full name is %s %s", &first, &last);
return 0;
}*/
/*
第二题
#include
#include
int main() {
char name;
printf("please enter your name: ");
scanf("%s", &name);
printf("your name is \"%20s\"\n" , &name);
printf("your name is \"%20s\"\n" , &name);
char len = strlen(&name);
char placeholder[20] = "your name is \"%*s\"\n";
printf(placeholder, len + 3 & name);
return 0;
}*/
/*
第三题
#include
int main() {
float num;
printf("please enter a number: ");
scanf("%f", &num);
printf("the number is %.1f or %.1e\n", num, num);
return 0;
}*/
/*
第四题
#include
int main() {
float height;
char name[40];
printf("Enter your name: ");
scanf("%s", name);
printf("Hi %s, how tall are you? ", name);
scanf("%f", &height);
printf("%s, you are %.3f feet %d inches.\n", name, height/12.0, (int)(height - height/12.0*12.0)*12);
return 0;
}
*/
/*
第五题
#include
int main(void) {
char name[40], surname[40];
int wname, wsurname;
printf("Please input your first name: ");
scanf("%s", name);
printf("Please input your last name: ");
scanf("%s", surname);
// 通过 scanf() 函数分别读取用户的名和姓
wname = printf("%s", name);
printf(" ");
wsurname = printf("%s", surname);
//分别打印用户的名和姓,通过返回值记录其字符数量
printf("\n%d %d", wname, wsurname);
//打印其字符数量,由于数量不确定,因此使用 * 号修饰符和参数的形式。
//如果使用 strlen() 函数,则可以不用定义 wname 和 wsurname 变量,
//直接使用以下代码
//printf("\n%d %d", strlen(name), strlen(surname));
return 0;
}
*/
/*
第七题
#include
#include
int main(void) {
double d_third = 1.0 / 3.0;
float f_third = 1.0 / 3.0;
printf("float of one third(6) = %.6f\n", f_third); //float类型,有6位有效数字
printf("float of one third(12) = %.12f\n", f_third); //float类型,有12位有效数字
printf("float of one third(16) = %.16f\n", f_third); // float类型,有16位有效数字
printf("double of one third(6) = %.6f\n", d_third); //double类型,有6位有效数字
printf("double of one third(12) = %.12f\n", d_third); // double类型,有12位有效数字
printf("double of one third(16) = %.16f\n", d_third); // double类型,有16位有效数字
printf("FLT_DIG in float.h is %d\n", FLT_DIG); //float类型精度
printf("DBL_DIG in float.h is %d\n", DBL_DIG); //double类型精度
return 0;
}
*/
/*
第八题
#include
#define GALLON_TO_LITER 3.785
#define MILE_TO_KM 1.609
int main(void) {
float range, oil;
printf("Please input the range you traveled(in mile): ");
scanf("%f", &range);
printf("Please input the oil you spend(in gallon): ");
scanf("%f", &oil);
printf("In US, your oil wear is %.1f M/G\n", range / oil);
printf("In Europe, your oil wear is %.1f L/100KM", (oil * GALLON_TO_LITER * 100) / (range * MILE_TO_KM));
return 0;
}
*/