实验2
一、.实验任务1
1、
//格式化输入、输出函数的简单运用 #include<stdio.h> int main() { int num; scanf("%d",&num); printf("2049%04d\n",num); scanf("%d",&num); printf("2049%04d\n",num); scanf("%d",&num); printf("2049%04d\n",num); return 0; }

2、总结%4d的作用:控制了数据输出的宽度,%4d就是数据占四位,缺的在数据左边补位。
3、循环语句改写
//格式化输入、输出函数的简单运用 #include<stdio.h> int main() { int num,i; i=0; do{ scanf("%d",&num); printf("2049%04d\n",num); i++; }while(i!=3); return 0;

二、实验任务2
1、
//格式化输入、输出函数及各种格式控制符的使用 #include<stdio.h> int main() { int x=1234; float f=123.456; double m=123.456; char ch='a'; char a[]="Hello,world!";//定义一个字符型数组a,数组中存放字符串常量hello,world! int y=3,z=4; printf("%d %d\n", y,z); printf("y=%d,z=%d\n",y,z); printf("%8d,%2d\n",x,x); printf("%f, %8f, %8.1f, %0.2f, %.2e\n",f,f,f,f,f); printf("%lf\n",m); printf("%3c\n", ch); printf("%s\n%15s\n%10.5s\n%2.5s\n%.3s\n",a,a,a,a,a); return 0; }

2、总结:%d的作用是按十进制整数输出 %f的作用是按单精度浮点数输出 %c是按字符输出 %s是按字符串输出
%8.1f意思是以浮点数输出,然后保留一位小数,数据长度为8位,在数据左边补位
%.2f意思是以浮点数输出,并且保留两位小数
%lf是以双精度浮点型输出
%ld是按十进制长型整数输出
三、实验任务3
#include<stdio.h> int main() { double x,y; char c1,c2,c3; int a1,a2,a3; scanf("%d%d%d",&a1,&a2,&a3); printf("%d,%d,%d\n",a1,a2,a3); scanf("%c%c%c",&c1,&c2,&c3); printf("'%c''%c''%c'\n",c1,c2,c3); scanf("%lf,%lf",&x,&y); printf("%lf,%lf\n",x,y); return 0; }

四、实验任务四
int main() { char ans1, ans2; printf("复习了没? (输入y或Y表示复习了,输入n或N表示没复习) : "); ans1 = getchar(); // 从键盘输入一个字符,赋值给ans1 getchar(); // 思考这里为什么要加这一行。试着去掉这一行,看看对运行有没有影响。 printf("\n动手敲代码了没? (输入y或Y表示敲了,输入n或N表示木有敲) : "); ans2 = getchar(); if(ans1=='y'&&ans2=='y'||ans1=='Y'&&ans2=='Y'||ans1=='y'&&ans2=='Y'||ans1=='Y'&&ans2=='y') // 待补足,判断用户回答ans1和ans2都是小写y或大写Y printf("\n罗马不是一天建成的:)\n"); else printf("\n罗马不是一天毁灭的。。。\n"); return 0; }



五、实验任务五
#include<stdio.h> int main() { char x; x = getchar(); if(x>='0'&&x<='9') // 待补足①,判断x是数字字符表达式 printf("%c是数字字符\n", x); else if( x>='A'&&x<='z') // 待补足②,判断x是大写或小写英文字母的表达式 printf("%c是英文字母\n", x); else printf("%c是其它字符\n", x); return 0; }



六、实验任务六
#include<stdio.h> #include<math.h> int main() { int sum,a0,n; double q; q=2,a0=1; scanf("%d",&n); sum=a0*(1-pow(q,n+1))/(1-q); printf("n=%d时,sum=%d\n",n,sum); return 0; }



七、实验任务七
//就只会做到打印一行字符小人了....TAT #include<stdio.h> int main() { int line; for(line=0;line<9;line++) printf(" 0 "); printf("\n"); for(line=0;line<9;line++) printf(" <H> "); printf("\n"); for(line=0;line<9;line++) printf(" I I "); printf("\n"); return 0; }

Ps:想了一下如果是我要写打印最后的字符小人阵列,应该就是用好几个for循环一直写,然后打空格,但是感觉这个代码过于复杂了,而且需要数空格,头秃, 应该之后会有什么方法简化流程。
实验总结:
1、输入的时候double型必须是%lf,float型必须是%f,输出的时候就没有这么严格,都可以用
2、实验任务四中if的框内感觉我写的有点复杂了,看了一下还有一种写法比较简便(也许),是if((ans1=='y'||ans1=='Y')&&(ans2=='y'||ans2=='Y'))
3、对%10.5s %2.5s %.3s为什么输出结果是那个我还有点疑惑(太菜了)

浙公网安备 33010602011771号