[c/c++] programming之路(8)、汇编、求模、自增自减

一、插入汇编

 1 #include<stdio.h>
 2
 3 void main(){
 4     int num=10;
 5     num=num+5;
 6     //插入汇编语言
 7     _asm{
 8         mov eax,num;//eax是一个存储器,将num的值移动到eax
 9         add eax,5    //eax值+5
10         mov num,eax    //eax值赋给num
11     }
12     printf("%d",num);
13     getchar();
14 }

二、求模运算,颠覆数

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3
 4 void main1(){
 5     //int num=5%9.0;//报错,求模运算只能是整数
 6     //int num=‘A‘%3;//65%3=2
 7     printf("%d",3%5);//3=0*5+3
 8     printf("\n%d",5%3);//5=1*3+2
 9     printf("\n%d",3%-5);//3=1*-5+3
10     printf("\n%d",-3%-5);//-3=0*-5-3
11     printf("\n%d",-3%5);//-3=0*5-3
12     printf("\n%d",5%-3);//5=-1*-3+2
13     getchar();
14 }
15 //面试题:不准用求模运算
16 /*
17     120%19->6=120-120/19*19
18     100%40->20=100-100/40*40
19     x%y=x-x/y*y
20 */
21 void main2(){
22     int x,y;
23     scanf("%d%d",&x,&y);
24     printf("x=%d,y=%d",x,y);
25     //printf("\n%d",x%y);
26     printf("\n%d",x-x/y*y);
27
28     system("pause");
29 }
30 //颠覆数    123->321    456->654
31 void main(){
32     int num,ge,shi,bai;
33     scanf("%d",&num);
34
35     ge=num%10;
36     shi=num/10%10;
37     bai=num/100;
38
39     printf("%d",ge*100+shi*10+bai);
40     system("pause");
41 }

练习:四位数颠覆,不允许使用求模运算

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 void main(){
 4     int num,ge,shi,bai,qian;
 5     scanf("%d",&num);
 6
 7     ge=num-num/10*10;
 8     shi=num/10-num/100*10;
 9     bai=num/100-num/1000*10;
10     qian=num/1000;
11
12     printf("%d",ge*1000+shi*100+bai*10+qian);
13     system("pause");
14 }

三、自增自减

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3
 4 void main2(){
 5     //++--高于乘除,乘除高于+-
 6     int num=3;
 7     printf("%d",-num++);//-3
 8     printf("\n%d",num);//4
 9     system("pause");
10 }
11 void main(){
12     int a=3;
13     int b=4;
14     int num=10;
15     printf("%d",a+++b);//->(a++)+b
16     printf("\n%d",a);//4
17
18     //printf("\n%d",(10*num)++);//报错,“++”需要左值(表达式不能用++--)
19     printf("\n%d",10*num++);//100
20     system("pause");
21 }
时间: 2024-10-28 16:48:11

[c/c++] programming之路(8)、汇编、求模、自增自减的相关文章

nyoj 次方求模

次方求模 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 求a的b次方对c取余的值 输入 第一行输入一个整数n表示测试数据的组数(n<100) 每组测试只有一行,其中有三个正整数a,b,c(1=<a,b,c<=1000000000) 输出 输出a的b次方对c取余之后的结果 样例输入 3 2 3 5 3 100 10 11 12345 12345 样例输出 3 1 10481 #include<cstdio> #include<cstdlib

杭电ACM 二 数学求模

Font Size: ← → Problem Description A number sequence is defined as follows: f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7. Given A, B, and n, you are to calculate the value of f(n). Input The input consists of multiple test cases. Ea

sql 求模 实现 贪婪算法

背景: 最近在维护一个项目, 因新功能需求拓展.  有一个字段存储 一个星期中的几天,可能是全部,也有可能只是其中的星期一, 星期三,等. 因为项目中有一个枚举值, 已作好初始化赋值工作, 而且 客户端开发时直接把组合值合并成一个早已存入这个字段到DB. 我在项目别的地方(动态批量生成月报表时,又需要得到这个具体的频率值. 因为每个月有几个星期一,星期三,不是固定的, 需要动态计算.),  所以, 又需要将其还原为 其中具体对应的 星期一,星期三 等. 这里就需要对这个组合值,进行求模操作. 于

NYOJ 102 次方求模

次方求模 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 求a的b次方对c取余的值 输入 第一行输入一个整数n表示测试数据的组数(n<100) 每组测试只有一行,其中有三个正整数a,b,c(1=<a,b,c<=1000000000) 输出 输出a的b次方对c取余之后的结果 样例输入 3 2 3 5 3 100 10 11 12345 12345 样例输出 3 1 10481 算法分析: 大数问题,需要利用快速幂取模算法. 所谓的快速幂,实际上是快速幂取模的缩

组合数求模

适用于mod为素数 o(N) void init() { int i; pp[0] = 1; for(i = 1; i <= N-10 ; i++) { pp[i] = (pp[i-1]*i)%mod; } } LL fastmod(LL a,LL k) { LL b = 1; while(k) { if(k&1) b = a*b%mod; a = (a%mod)*(a%mod)%mod; k/=2; } return b; } LL calc(int n,int m) { return (

求模和求余(附加C语言实现)

求模和求余的总体计算步骤如下: 1.求整数商  c = a/b 2.计算模或者余数 r = a - c*b 求模和求余的第一步不同,求余在取c的值时向0方向舍入;取模在计算c的值时向无穷小方向舍入. C语言实现 //取余 int rem(int a, int b) { int c = a * 1.0 / b; return (a - c * b); } //求模 int mod(int a, int b) { int c = floor(a * 1.0 / b); //#include <mat

NYOJ--102--次方求模(快速求幂取模)

次方求模 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 求a的b次方对c取余的值 输入 第一行输入一个整数n表示测试数据的组数(n<100)每组测试只有一行,其中有三个正整数a,b,c(1=<a,b,c<=1000000000) 输出 输出a的b次方对c取余之后的结果 样例输入 3 2 3 5 3 100 10 11 12345 12345 样例输出 3 1 10481 1 /* 2 Name: NYOJ--102--次方求模 3 Copyright: ?

SDUT 2164-Binomial Coeffcients(组合数求模)

Binomial Coeffcients Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 输入 输出 示例输入 3 1 1 10 2 954 723 示例输出 1 45 3557658 提示 来源 山东省第二届ACM大学生程序设计竞赛 详情:组合数求模讲解 #include <stdio.h> #include <math.h> #include <string.h> #include <std

次方求模 NYOJ 102

1 #include<stdio.h>//次方求模(102) 2 long long power(int a,int b,int c) 3 { 4 long long t; 5 if(b==0)return 1%c; 6 if(b==1)return a%c; 7 t=power(a,b/2,c); 8 t=t*t%c; 9 if(b&1)return t*a%c; 10 else return t; 11 } 12 int main() 13 { 14 int x; 15 long