求简单C语言程序代码!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求简单C语言程序代码!相关的知识,希望对你有一定的参考价值。

输入2个正整数m和n,求其最大公约数和最小公倍数

#include

#include

int main()

int m,n,p,q,s,r;

printf("请输入两个正整数;m,n\\n");

scanf("%d,%d",&m,&n);

#include<stdio.h>

main()

int a,b,t=0;

scanf("%d %d",&a,&b);

if (a<b)

printf("%d %d %d %d %d",(a+b),(a-b),(a/b),(a*b),(a%b));

主要特点

C语言是一种结构化语言,它有着清晰的层次,可按照模块的方式对程序进行编写,十分有利于程序的调试,且c语言的处理和表现能力都非常的强大,依靠非常全面的运算符和多样的数据类型,可以轻易完成各种数据结构的构建,通过指针类型更可对内存直接寻址以及对硬件进行直接操作,因此既能够用于开发系统程序,也可用于开发应用软件。

以上内容参考:百度百科-c语言

参考技术A

小游戏2048源码:

#include<stdio.h>

#include<stdlib.h>

#include<conio.h>

#include<time.h>

#include<windows.h>

int  jsk( );   //计算空格数

void rsgm( );  //重置游戏

void inkey( );  //按键输入

void left( );   //向左移动

void right( );  //向右移动

void up( );  //向上移动

void down( );  //向下移动

void show( );   //输出界面

void adnum( ); //添加随机数

void yes( );   //游戏是否结束(1是0否)

void gtxy(int x, int y); //控制光标位置的函数

int a[4][4];   //存储16个格子中的数字

int score = 0;  //每局得分

int best = 0;  //最高得分

int ifnum;  //是否需要添加数字(1是0否)

int over;   //游戏结束标志(1是0否)

int i,j,k;

int main( )

rsgm( );  //重置游戏

 inkey( );  //按键输入

 return 0;

void setColor(unsigned short ForeColor = 7, unsigned short BackGroundColor = 0)

HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);

SetConsoleTextAttribute(handle, ForeColor + BackGroundColor * 0x10);

  //用于控制字符颜色的函数

void rsgm( )  //重置游戏

score = 0; ifnum = 1; over = 0; srand((unsigned)time(0)); //启动随机数发生器

 int n = rand( ) % 16;  //随机函数产生0-15的数字

 for (i = 0; i < 4; i++)

 for (j = 0; j < 4; j++)

    if (n == 0) int k = rand( ) % 3; if (k == 0 || k == 1) a[i][j] = 2;

                         else a[i][j] = 4; n--;

      else a[i][j] = 0; n--;

  

 

 adnum( );

 system("cls");

 CONSOLE_CURSOR_INFO cursor_info=1,0;  //以下两行是隐藏光标的设置

SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);

setColor(14, 0);  //设置字体淡红色,背景为黑色

printf("\\n\\n\\t\\t  2048小游戏"); setColor(7, 0);  //恢复白字黑底

printf("\\n\\t┌──────┬──────┬──────┬──────┐");

printf("\\n\\t│      │      │      │      │");

printf("\\n\\t├──────┼──────┼──────┼──────┤");

printf("\\n\\t│      │      │      │      │");

printf("\\n\\t├──────┼──────┼──────┼──────┤");

printf("\\n\\t│      │      │      │      │");

printf("\\n\\t├──────┼──────┼──────┼──────┤");

printf("\\n\\t│      │      │      │      │");

printf("\\n\\t└──────┴──────┴──────┴──────┘");

 show( );

void show( )  //输出界面

for(i=0;i<4;i++)

    for(j=0;j<4;j++)

       gtxy(7*j+9,2*i+4);   //gtxy(7*j+9, 2*i+4)是光标到指定位置输出数字

         if(a[i][j]==0)printf("      "); setColor(7, 0); printf("│");

         else if(a[i][j]<10) if (a[i][j] == 2) setColor(14, 0);

                                     else if (a[i][j] == 4) setColor(13, 0);

                                     else if (a[i][j] == 8) setColor(12, 0);

                                    printf("   %d  ", a[i][j]); setColor(7, 0); printf("│");

                                 

        else if (a[i][j] < 100)if (a[i][j] == 16) setColor(12, 0);

                                        else if (a[i][j] == 32) setColor(10, 0);

                                       else if (a[i][j] == 64) setColor(2, 0);

                                      printf("  %d  ", a[i][j]); setColor(7, 0); printf("│");

                                   

      else if (a[i][j] < 1000) if (a[i][j] == 128) setColor(9, 0);

                                         else if (a[i][j] == 256) setColor(1, 0);

                                         else if (a[i][j] == 512) setColor(13, 0);

                                         printf("  %d ", a[i][j]); setColor(7, 0); printf("│");

                                      

       else if (a[i][j] < 10000) if (a[i][j] == 1024) setColor(5, 0);

                                             else setColor(15, 0);

                                            printf(" %d ", a[i][j]); setColor(7, 0); printf("│");

                                         

     

     if (jsk( ) == 0)

          yes( ); if (over) gtxy(9,12); setColor(10, 0);

                                      printf("\\n\\n  游戏结束!是否继续? [ Y/N ]:");

  

void inkey( )   //按键输入

int key;

 while (1)

     key = getch( );

       if (over) if (key == 89|| key == 121) rsgm( ); continue;

                       else  if (key == 78|| key == 110) return;

                       else  continue;

       ifnum = 0;

       if(key==224)key=getch( );

       switch (key)

             case 75: left( ); break;

               case 77: right( ); break;

               case 72: up( ); break;

               case 80: down( );break;

             

        if (score > best) best = score;

        if (ifnum) adnum( ); show( );

     

int jsk( )   //计算空格数

int n = 0;

 for (i = 0; i < 4; i++)

    for (j = 0; j < 4; j++) if ( a[i][j] == 0) n++;  

      return n;

void left( )   //向左移动

for (i = 0; i < 4; i++)

     for (j = 1, k = 0; j < 4; j++)

        if (a[i][j] > 0)

            if ( a[i][k] == a[i][j])

                 a[i][k] *= 2;  k++;

                   score = score + 2 * a[i][j];

                   a[i][j] = 0;  ifnum = 1;

               else if ( a[i][k] == 0) a[i][k] = a[i][j]; a[i][j] = 0; ifnum = 1;

               else a[i][k + 1] = a[i][j]; if ((k + 1) != j) a[i][j] = 0; ifnum = 1;

               k++;

          

       

    

void right( )   //向右移动

for (i = 0; i < 4; i++)

   for (j = 2, k = 3; j >= 0; j--)

       if (a[i][j] > 0)

           if (a[i][k] == a[i][j])

                a[i][k] *= 2; k--; score = score + 2 * a[i][j]; a[i][j] = 0; ifnum = 1;

            else if ( a[i][k] == 0) a[i][k] = a[i][j]; a[i][j] = 0; ifnum = 1;

            else a[i][k - 1] = a[i][j]; if ((k - 1) != j) a[i][j] = 0; ifnum = 1; k--;

         

     

 

void up( )   //向上移动

for (i = 0; i < 4; i++)

   for (j = 1, k = 0; j < 4; j++)

      if (a[j][i] > 0)

           if ( a[k][i] == a[j][i]) a[k][i] *= 2; k++;score = score + 2 * a[j][i];

                                              a[j][i] = 0; ifnum = 1;

            else if ( a[k][i] == 0) a[k][i] = a[j][i]; a[j][i] = 0; ifnum = 1;

            else a[k + 1][i] = a[j][i]; if ((k + 1) != j) a[j][i] = 0; ifnum = 1;

            k++;

         

     

  

void down( )   //向下移动

for (i = 0; i < 4; i++)

   for (j = 2, k = 3; j >= 0; j--)

       if (a[j][i] > 0)

           if (a[k][i] == a[j][i])

                 a[k][i] *= 2; k--;score = score + 2 * a[j][i]; a[j][i] = 0; ifnum = 1;

            else if (a[k][i] == 0) a[k][i] = a[j][i]; a[j][i] = 0; ifnum = 1;

            else a[k - 1][i] = a[j][i];

            if ((k - 1) != j) a[j][i] = 0; ifnum = 1; k--;

          

      

  

void adnum( )   //添加随机数

srand(time(0));   //启动随机数发生器

  int n = rand( ) % jsk( );

 for (int i = 0; i < 4; i++)

   for (int j = 0; j < 4; j++)

        if (a[i][j] == 0) if (n != 0) n--;

                                    else int k = rand() % 3;

                                           if (k == 0 || k == 1) a[i][j] = 2; return;

                                           else a[i][j] = 4; return;

                                

        

 

void yes( )   //游戏是否结束

for (int i = 0; i < 4; i++)

   for (int j = 0; j < 3; j++)

         if (a[i][j] == a[i][j + 1] || a[j][i] == a[j + 1][i]) over = 0; return;

  

 over = 1;

void gtxy(int x, int y)   //控制光标位置的函数

COORD coord;

  coord.X = x;

  coord.Y = y;

  SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);

参考技术B 回答

1、由键盘任意输入1个4位数整数,分别输出其中的个位、十位、百位、千位。/*expe3-10*/#include #include void main(void)intmun,ab,c,d;scanf(%d&mun);a=mun/1000;/*千位*/b=(mun%1000)/100;/*百位*/c=(mun%100)/10;/*+位*/d=(mun%10);/*个位*/printf(千位数字为=%dna);printf(百位数字为=%dnb);printf(+位数字为=%dnc);printf(个位数字为=%dnd);由键盘任意输入。2 3个数据,找出其中的最大数和最小数。#include void main(void)float a,b,c,k,g;/*k小 g大*/printf(请输入三个数);scanf(%f%f%f&a&b,&c);if(ac)/*最大*/printf(n最大的数=%52fg);elseprintf(n最大的数=%52fc);判断三角形的形状#include#include void m\\x09APP内打开\\x09请输入三角形三\\x09边);float

参考技术C

程序源码及运行结果如下所示(系统会自动去掉句首空格,排版较乱请见谅):

#include<stdio.h>
int main()

int max,min;
int sum=0;
printf("请输入一个整数:");
scanf("%d",&max);
printf("请再输入一个整数:");
scanf("%d",&min);
if(min>max)

int temp;
temp = max;
max = min;
min = temp;

for(int i=min;i<=max;i++)

sum += i;

printf("两数之间的整数和是:%d\\n",sum);
return 0;

参考技术D #include <stdio.h>

int fun(int num1, int num2);

void main()

int num1, num2;
int sum;
printf("请输入两个整数:\\n");
scanf("%d %d", &num1, &num2);
if(num1 > num2)

int tmp = num1;
num1 = num2;
num2 = tmp;

sum = fun(num1, num2);
printf("大于等于%d小于等于%d的所有整数和是%d\\n", num1, num2, sum);


int fun(int num1, int num2)

int i, sum = 0;
for(i=num1; i<=num2; i++)

sum += i;

return sum;

本回答被提问者采纳

C语言数据结构算法——简单表达式求值(支持计算小数及负数)


样例输入输出

输入为一段简单表达式(中缀),表达式中的数据可以是小数以及整数负数前后都有括号分隔,以下是一段输入样例:

4.5*(3.8-0.9*2)+2.5*(9.6/(-2.4))

输出为计算结果即 -1


中缀表达式转后缀表达式

代码如下,算法思路在注释里了,改进了算法加入了对小数以及负数的支持:

/*
以下为中缀表达式转后缀表达式:

while (从exp读取字符ch,ch!='\\0')

    ch为数字:
        将后续的所有数字均依次存放到postexp中,并以字符'#'标志数值串结束;
    ch为左括号'(':
        将此括号进栈到Optr中;
    ch为右括号')':
        将Optr中出栈时遇到的第一个左括号'('以前的运算符依次出栈并存放到postexp中,然后将左括号'('出栈;
    ch为'+'或'-':
        出栈运算符并存放到postexp中,直到栈空或者栈顶为'(',然后将'+'或'-'进栈;
    ch为'*'或'/':
        出栈运算符并存放到postexp中,直到栈空或者栈顶为'('、'+'或'-',然后将'+'或'-'进栈;


若exp扫描完毕,则将Optr中所有运算符依次出栈并存放到postexp中。

增添内容:

负数的判断:
    表达式首出现减号一定为负数,左括号后为减号该减号代表负数

小数点的处理:
    小数点直接进postexp,小数点前的数每次乘10,小数点后的数每次除以10
*/
void trans(char *exp, char postexp[])

    char e;
    SqStack *Optr;			//定义运算符栈指针
    InitStack(Optr);		//初始化运算符栈
    int i=0;				//i作为postexp的下标
    while (*exp != '\\0')	//exp表达式未扫描完时循环
    
        switch(*exp)
        
        case '(':           //判定为左括号
            exp++;	        //获取左括号后字符
            if (*exp == '-')//左括号后为减号则一定为负数
            
                postexp[i++] = *exp;    //减号进postexp
                exp++;
                while(*exp != ')')      //依次读取完负数的数值部分
                
                    postexp[i++] = *exp;
                    exp++;
                
                postexp[i++]='#';
                exp++;      //将负数对应的右括号处理掉(无需进栈)
                break;
            
            else
            
                Push(Optr,'('); //左括号进栈
                break;
            
        case ')':		   	//判定为右括号
            Pop(Optr,e);	//出栈元素e
            while (e!='(')	//不为'('时循环
            
                postexp[i++]=e;	//将e存放到postexp中
                Pop(Optr,e);	//继续出栈元素e
            
            exp++;		    //继续扫描其他字符
            break;
        case '+':			//判定为加号
            while (!StackEmpty(Optr))	//栈不空循环
            
                GetTop(Optr,e);		//取栈顶元素e
                if (e!='(')			//e不是'('
                
                    postexp[i++]=e;	//将e存放到postexp中
                    Pop(Optr,e);	//出栈元素e
                
                else				//e是'(时退出循环
                    break;
            
            Push(Optr,*exp);	//将'+'或'-'进栈
            exp++;				//继续扫描其他字符
            break;
        case '-':
            if (i == 0)         //减号出现在表达式首位一定为负数
            
                postexp[i++] = *exp;
                exp++;
                while(*exp != ')')
                
                    postexp[i++]=*exp;
                    exp++;
                
                postexp[i++]='#';
                exp++; // ')'
                break;
            
            else //以下内容同加号
            
                while (!StackEmpty(Optr))   //栈不空循环
                
                    GetTop(Optr,e);     //取栈顶元素e
                    if (e!='(')         //e不是'('
                    
                        postexp[i++]=e; //将e存放到postexp中
                        Pop(Optr,e);    //出栈元素e
                    
                    else             //e是'(时退出循环
                        break;
                
                Push(Optr,*exp);    //将'+'或'-'进栈
                exp++;              //继续扫描其他字符
                break;
            
        case '*':	//判定为'*'或'/'号
        case '/':
            while (!StackEmpty(Optr))   //栈不空循环
            
                GetTop(Optr,e);		//取栈顶元素e
                if (e=='*' || e=='/')
                
                    postexp[i++]=e;	//将e存放到postexp中
                    Pop(Optr,e);	//出栈元素e
                
                else	//e为非'*'或'/'运算符时退出循环
                    break;
            
            Push(Optr,*exp);    //将'*'或'/'进栈
            exp++;			   //继续扫描其他字符
            break;
        default:	//处理数字字符和点
            while ((*exp>='0' && *exp<='9') || *exp=='.') 	//判定为数字字符或点
            
                postexp[i++]=*exp;  //全部进postexp即可
                exp++;
            
            postexp[i++]='#';	  //用#标识一个数值串结束
        
    
    while (!StackEmpty(Optr))	  //此时exp扫描完毕,栈不空时循环
    
        Pop(Optr,e);	   //出栈元素e
        postexp[i++]=e;	  //将e存放到postexp中
    
    postexp[i]='\\0';	   //给postexp表达式添加结束标识
    DestroyStack(Optr);	  //销毁栈


后缀表达式求值

代码如下:

/*
后置表达式求值算法如下:

while (从postexp读取字符ch,ch!='\\0')

    ch为'+':
        从Opnd栈中出栈两个数值a和b,计算c=b+a;将c进栈;
    ch为'-':
        从Opnd栈中出栈两个数值a和b,计算c=b-a;将c进栈;
    ch为'*':
        从Opnd栈中出栈两个数值a和b,计算c=b*a;将c进栈;
    ch为'/':
        从Opnd栈中出栈两个数值a和b,若a不零,计算c=b/a;将c进栈;
    ch为数字字符:
        将连续的数字串转换成数值d,将d进栈;


返回Opnd栈的栈顶操作数即后缀表达式的值;

增添内容:
    利用flag增添对负数的处理以及对小数点的处理
*/
double compvalue(char *postexp)

    int flag = 1;
    double a, b, c, d, e, i;
    SqStack1 *Opnd;			//定义操作数栈
    InitStack1(Opnd);		//初始化操作数栈
    while (*postexp != '\\0')	//postexp字符串未扫描完时循环
    
        switch (*postexp)
        
            case '+':			//判定为'+'号
                Pop1(Opnd, a);	//出栈元素a
                Pop1(Opnd, b);	//出栈元素b
                c = b + a;		//计算c
                Push1(Opnd, c);	//将计算结果c进栈
                postexp++;
                break;
            case '-':			//判定为'-'号
                postexp++;      //获取减号后元素
                if (*postexp >= '0' && *postexp <= '9') //若减号后为数字则为负数
                
                    flag = -1;  //记flag为-1记录数值符号
                    break;
                
                else
                
                    Pop1(Opnd, a);	//出栈元素a
                    Pop1(Opnd, b);	//出栈元素b
                    c = b - a;		//计算c
                    Push1(Opnd, c);	//将计算结果c进栈
                    break;
                
            case '*':			//判定为'*'号
                Pop1(Opnd, a);	//出栈元素a
                Pop1(Opnd, b);	//出栈元素b
                c = b*a;		//计算c
                Push1(Opnd, c);	//将计算结果c进栈
                postexp++;
                break;
            case '/':			//判定为'/'号
                Pop1(Opnd, a);	//出栈元素a
                Pop1(Opnd, b);	//出栈元素b
                if (a != 0)
                
                    c = b / a;		//计算c
                    Push1(Opnd, c);	//将计算结果c进栈
                    postexp++;
                    break;
                
                else    //错误处理
                
                    printf("\\n\\t除零错误!\\n");
                    exit(0);	//异常退出
                
                postexp++;
                break;
            default:		//处理数字字符
                d = 0;		//转换成对应的数值存放到d中
                i = 1.0;    //处理小数用以每往后一位数除以10
                while ((*postexp >= '0' && *postexp <= '9') || *postexp == '.')
                
                    if (*postexp == '.')    //小数点后没往后一位数其值除以10
                    
                        i /= 10;
                        postexp++;
                        continue;
                    
                    if (i >= 1)     //小数点前的情况
                    
                        d = 10 * d + (*postexp - '0');
                        postexp++;
                    
                    else            //小数点后的情况
                    
                        d += i * (*postexp - '0');
                        postexp++;
                    
                
                Push1(Opnd, flag * d);	//将数值d进栈
                flag = 1;   //重新记符号为正号
                postexp++;
                break;
        
    
    GetTop1(Opnd, e);	//取栈顶元素e
    DestroyStack1(Opnd);//销毁栈
    return e;			//返回e


运行示例

编写主函数如下:

int main(int argc, char const *argv[])

    char exp[]="4.5*(3.8-0.9*2)+2.5*(9.6/(-2.4))";
    char postexp[MaxSize];
    trans(exp, postexp);
    cout << "中缀表达式 : " << exp << endl;
    cout << "后缀表达式 : " << postexp << endl;
    cout << "表达式的值 : " << compvalue(postexp) << endl;
	return 0;

运行结果如下:


想要完整代码(就是顺序栈部分你们也可以自行百度)可下载我上传的资源:C语言数据结构算法-简单表达式求值(支持计算负数及小数)

主要重要的部分已经在这啦~

以上是关于求简单C语言程序代码!的主要内容,如果未能解决你的问题,请参考以下文章

求C语言和API拖动无标题窗口代码

求C语言程序:如何获得一个程序运行的时间? 最好带一段简单的代码 新人学不懂 呵呵 谢谢大家啦

c语言简单求和,编写程序:输入两个数,求两个数的和

C语言编一个实现简单的算术表达式求值的代码。

求C语言代码

求C语言内存数据读取代码