1、输出9*9口诀。
分析:分行与列考虑,共 9 行 9 列,i 控制行,j 控制列。
代码如下:
#includeint main() { int i,j,s; for (i=1;i<10;i++) { for(j=1;j<=i;j++) { s=i*j; printf("%d*%d=%-3d",i,j,s); //%-3d ——以10进制显示,3表示输出的数字占3个字符的位置,-表示左对齐; // %3d——以10进制显示,3表示输出的数字占3个字符的位置,+或者不写表示右对齐; } printf("\n"); /*每一行后换行*/ } }
结果:
1*1=1 2*1=2 2*2=4 3*1=3 3*2=6 3*3=9 4*1=4 4*2=8 4*3=12 4*4=16 5*1=5 5*2=10 5*3=15 5*4=20 5*5=25 6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81 请按任意键继续. . .
2、判断 101 到 200 之间的素数。
分析:素数(Prime number),又称质数,是指在大于1的自然数中,除了1和它自身外,不能被任何其他自然数整除的数叫做质数;否则称为合数。
值得注意的是,0 与 1 既不是素数,也不是合数。
代码如下:
#includeint main() { int i,j,m=0,flag=1; for (i = 101;i < 201;i++) { for (j = 2;j < i;j++) { if (i % j == 0)//如果余数是零则表示不是素数 { flag = 0; break; } } if (j==i)//从2到i-1取余操作的余数都不是0,则是素数 { m++; //素数个数加一 printf(" %d ", i); //把这个素数输出 if (m % 10 == 0) //每10个素数一行 printf("\n"); } } printf("\n一共有%d个素数\n", m); return 0; }
结果:
101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199 一共有21个素数 请按任意键继续. . .
3、输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
分析:首先需要判断各自所出的范围
中英文字母:a到z、A到Z
空格:空一个字符
数字:1~9
然后则对一串字符进行逐个比较判断
代码如下:
#includeint main() { char c; int letters=0,spaces=0,digits=0,others=0; printf("请输入字符:\n"); while((c=getchar())!='\n') { if((c>='a'&&c<='z')||(c>='A'&&c<='Z')) letters++; else if(c>='0'&&c<='9') digits++; else if(c==' ') spaces++; else others++; } printf("字母=%d,数字=%d,空格=%d,其他=%d\n",letters,digits,spaces,others); return 0; }
结果:
请输入字符: ashfv及你太忙1322 232qw 字母=7,数字=7,空格=2,其他=8 请按任意键继续. . . //英文和数字占一个字节 //中文占一个字符,也就是两个字节 //字符 不等于 字节。
4、打印出如下图案(菱形)
* *** ***** ******* ***** *** *
分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重for循环,第一层控制行,第二层控制列。
代码如下:
#includeint main() { int i,j,k; for(i=0;i<=3;i++) { for(j=0;j<=2-i;j++) { printf(" "); } for(k=0;k<=2*i;k++) { printf("*"); } printf("\n"); } for(i=0;i<=2;i++) { for(j=0;j<=i;j++) { printf(" "); } for(k=0;k<=4-2*i;k++) { printf("*"); } printf("\n"); } }
结果:
* *** ***** ******* ***** *** * 请按任意键继续. . .
5、求一个3*3矩阵对角线元素之和
分析:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。
代码如下:
#includeint main() { int i,j,a[3][3],sum=0; printf("请输入矩阵(3*3):\n"); for(i=0;i<3;i++) for(j=0;j<3;j++) scanf("%d",&a[i][j]); for(i=0;i<3;i++) sum+=a[i][i]; printf("对角线之和为:%d\n",sum); return 0; }
结果:
请输入矩阵(3*3): 1 2 3 4 5 6 7 8 9 对角线之和为:15 请按任意键继续. . .
上一篇:java面试题之mybatis篇