实验2 C语言表达式编程应用及输入输出函数
任务1:
// ex1.cpp #include <stdio.h> #include <stdlib.h> int main(){ int a = 5, b = 7, c = 100, d, e, f; d = a/b*c; e = a*c/b; f = c/b*a; printf("d = %d, e = %d, f = %d, ", d, e, f); system("pause"); return 0; }
因为定义的a,b,c,d,e,f均为整型,所以当C语言从左往右进行运算时,所得的商将小数部分舍弃掉,就会出现现在的结果;
任务2:
// ex2.cpp #include <stdio.h> #include <stdlib.h> int main(){ int x = 1234; float f = 123.456; double m = 123.456; char ch = 'a'; char 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); system("pause"); return 0; }
%d :用来输出十进制整型数据的实际长度输出;
\n :换行;
%8d :按照有符号十进制整数格式输出,输出数据位宽为8,如果不足8位默认右对齐;
%2d :按照有符号十进制整数格式输出,输出数据位宽为2,如果大于2位,按照原来数据的位宽输出;
%f :以float型格式输入或输出变量的值默认保留6位小数;
%8f :按照float格式输出,输出数据位宽为8,保留6位小数,如果不足8位默认右对齐,如果大于8位,按照原来数据的位宽输出;
%8.1f :按照float格式输出,输出数据位宽为8,保留1位小数,如果不足8位默认右对齐,如果大于8位,按照原来数据的位宽输出;
%0.2f :按照float格式输出,保留2位小数;
%.2e :以科学计数法形式输出,保留两位小数;
%lf :以double型格式输入或输出变量的值,保留6位小数;
%3c :按照字符型格式输出,输出数据位宽为3,如果不足3位默认右对齐,如果大于3位,按照原来数据的位宽输出;
%s :按照字符串型格式输出;
%15s :按照字符串型格式输出,输出数据位宽为15,如果不足15位默认右对齐,如果大于15位,按照原来数据的位宽输出;
%10.5s :按照字符串型格式输出,输出数据位宽为10,且只输出字符串的前5个字符,如果不足10位默认右对齐,如果大于10位,按照原来数据的位宽输出;
%2.5s :按照字符串型格式输出,输出数据位宽为2,且只输出字符串的前5个字符,如果不足2位默认右对齐,如果大于2位,按照原来数据的位宽输出;
%.3s :按照字符串型格式输出,且只输出字符串的前3个字符
任务3:
// ex3.cpp #include <stdio.h> #include <stdlib.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("%.1lf, %.1lf\n", x, y); system("pause"); return 0; }
任务4:
// ex4.cpp // #include <stdio.h> #include <stdlib.h> int main() { char x; x = getchar(); if(x >= 48 && x<= 57) printf("%c是数字字符\n", x); else if(x >= 65 &&x <= 90 || x >= 97 && x <= 122) printf("%c是字母字符\n", x); else printf("%c是其他字符\n", x); system("pause"); return 0; }
任务5:
// ex5.cpp #include <stdio.h> #include <stdlib.h> 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' || ans1 == 'Y') && (ans2 == 'y' || ans2 == 'Y')) // 待补足,判断用户回答ans1和ans2都是小写y或大写Y printf("\n罗马不是一天建成的:)\n"); else printf("\n罗马不是一天毁灭的。。。\n"); system("pause"); return 0; }
如果没有getchar()这个函数,就无法运行第二个问题,应该是getchar()这个函数只能输入一个字符,不知道说的对不对。
任务6:
// ex6.cpp #include <stdio.h> #include <stdlib.h> #include <math.h> int main(){ int a1 = 1, q = 2, n; double sum; scanf("%d", &n); sum = (a1*(1-pow(q,n)))/(1-q); printf("n = %d 时, sum = %.0lf", n, sum); system("pause"); return 0; }
实验结论:通过这次实验,我了解了多种函数的用法,收获颇丰;但还是要多上机练习才可。