第二次学习总结

一 、打印九九口诀表

1x1=1
1x2=2 2x2=4
1x3=3 2x3=6 3x3=9
1x4=4 2x4=8 3x4=12 4x4=16
1x5=5 2x5=10 3x5=15 4x5=20 5x5=25
1x6=6 2x6=12 3x6=18 4x6=24 5x6=30 6x6=36
1x7=7 2x7=14 3x7=21 4x7=28 5x7=35 6x7=42 7x7=49
1x8=8 2x8=16 3x8=24 4x8=32 5x8=40 6x8=48 7x8=56 8x8=64
1x9=9 2x9=18 3x9=27 4x9=36 5x9=45 6x9=54 7x9=63 8x9=72 9x9=81
结果:用循环方式,格式如上
本题要求对任意给定的一位正整数N,输出从11到NN的部分口诀表。

1、题目分析

:用嵌套循环做,乘号前面的数字在每一行里面依次加一,乘号后面的数据过一行加一。

代码:

#include <stdio.h>
int main(void)
{
	int n;
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=i;j++)
		{
			printf("%d*%d=%d    ",j,i,j*i); 
		}
		printf("\n");
	}
	return 0;
}

3、总结

:注意题目要求的格式是上三角还是下三角,上述为下三角。
还有每一个式子之间的空格以及换行符的打印。
上三角代码如下:

#include<stdio.h>
int main(){
	int i,j;
	for(i=1; i<=9; i++) {
		for(j=1; j<=9; j++) {
			if(j<i)
				printf("       ");
			else
				printf("%d*%d=%2d ",i,j,i*j); 
		}
		printf("\n");
	}
	return 0;
}

二、 两个数的简单计算器

对2个整数进行加、减、乘、除或求余运算
输入样例1:
-2 / 2
输出样例1:
-1
输入样例2:
3 …… 6
输出样例2:
ERROR
要求如下:保证除法和求余的分母非零。

1、题目分析

:可以直接用if分支语句判断输入的符号,每个符号各写一个分支语句,进而对输入的数据进行计算,从而达到简易计算器的功能

#include <stdio.h>
int main(void)
{
	int m,c,n;
	scanf("%d %c %d",&m,&c,&n);
	if(c=='+')
	{
		printf("%d",m+n);
	 } 
	else if(c=='-')
	{
		printf("%d",m-n);
	}
	else if(c=='*')
	{
		if(n==0)
		printf("ERROR");
		printf("%d",m*n);
	}
	else if(c=='/')
	{
		if(n==0)
		printf("ERROR");
		printf("%d",m/n);
	}
	else
	{
		printf("ERROR");
	}
}

也可以使用switch语句实现多分支选择(此处没有体现保证除法和求余的分母非零的要求)

#include<stdio.h>

int main() {
	int x, y;
	char a;
	scanf("%d %c %d",&x,&a,&y);
	switch (a)
	{
		case'+':
			printf("%d",x+y);
			break;
		case'-':
			printf("%d",x-y);
			break;
		case'*':
			printf("%d",x*y);
			break;
		case'/':
				printf("%d",x/y);
			break;
		case'%':
				printf("%d",x%y);
			break;
		default:
			printf("ERROR");
	}

	return 0;
}

2、总结

:要多使用自己不熟悉的一些语法或者方法,才能有进步,比如此题的switch分支语句。

三、求整数段和

给定两个整数A和B,输出从A到B的所有整数以及这些数的和。
输出格式: 首先顺序输出从A到B的所有整数,每5个数字占一行。
最后在一行中按Sum = X的格式输出全部数字的和X。

1、题目分析

:看清题目的所有问题和要求,先有大致思路再动手。本题要求输出A到B的所有整数,并且是五个数一行。所以可以定义一个变量,每打印一个数字就用循环使其加一,当这个变量对五取余为零的时候就换行,就是每五个换一行。

#include <stdio.h>
int main(void)
{
	int m,n,min,max,j,sum=0;
	j=0;
	scanf("%d %d",&m,&n);
	if(m>n)
	{
		min = n;
		max = m;
	}
	else if(m<n)
	{
		min = m;
		max = n;
	}
	for(int i=min;i<=max;i++)
	{
		printf("%d ",i);
		sum += i;
		j++;
		if(j%5==0)
		{
			printf("\n");
		 } 
	}
	printf("\n%d",sum);
	return 0;
}

2、总结

:难点在于输出五个就换一行,至于m和n的大小判断,一般输入的时候都是先输入小的再输入大的,所以这个判断过程貌似可有可无。

四、个位数统计

输入一个N(100000>N>10000),统计每个数出现的次数

输入样例:
100311
输出样例:
0:2
1:3
3:1

要求:用数组
代表0的个数为2,1的个数为3,3的个数为1

1、题目分析

:用数组和循环结合实现,取出这个数的最后一位数字,然后在相应数字个数后面加一,然后将这个数字除以十,然后再带入循环继续计算。

#include <stdio.h>
int main() {
    int n;
    scanf("%d", &n);
    int nums[10] = {0};
    while (n) {
        int digit = n % 10;
        nums[digit]++;
        n /= 10;
    }
    for (int i = 0; i < 10; i++) {
        if (nums[i] > 0) {
            printf("%d:%d \n", i, nums[i]);
        }
    }
    return 0;
}

2、总结

:难点1在于对数组的定义和使用不熟悉,比如nums[digit]++可以计算出每个数字的个数。还要注意和字符串数组的输入输出方式的差异。不需要输入空格隔开的字符时可以用char定义字符串数组,然后使用gets进行输入。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值