相关推荐recommended
C语言5道编程题简单介绍(二)
作者:mmseoamin日期:2024-03-20

1、输出9*9口诀。

分析:分行与列考虑,共 9 行 9 列,i 控制行,j 控制列。

代码如下:

#include
int 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 既不是素数,也不是合数。

代码如下:

#include
int 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

然后则对一串字符进行逐个比较判断

代码如下:

#include
int 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循环,第一层控制行,第二层控制列。

代码如下:

#include 
int 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]累加后输出。

代码如下:

#include
int 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
请按任意键继续. . .