求助:用C语言帮我写几个“算数”程序

求助:用C语言帮我写几个“算数”程序,第1张

第一题

#include "stdio.h"

int fn(int x)

int main()

{

int x, y

scanf("%d", &x)

y=fn(x)

printf("%d\n", y)

return 0

}

int fn(int x)

{

if(x<0) return -1

else if(x==0) return 0

else return 1

}

第二题

#include "stdio.h"

int main()

{

char ch

scanf("%c", &ch)

/*判断ch是否大写字母*/

if( ch >= 'A' &&ch <= 'Z')

{

ch += 32 /*加上32转化为小写字母*/

printf("%c\n", ch)

}

else

{

printf("%c\n", ch)

}

return 0

}

第三题

#include "stdio.h"

/* max函数,返回a,b,c当中最大者 */

int max(int a, int b, int c)

int main()

{

int m, a, b, c

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

m=max(a,b,c)

printf("%d\n", m)

return 0

}

int max(int a, int b, int c)

{

int temp

/*先判断a,b,将a,b中较大的存进temp*/

if(a>=b)

temp = a

else

temp = b

/*再判断temp和c的大小*/

if(c>temp)

temp = c

return temp

}

第四题

#include "stdio.h"

int main()

{

int a=3, b=4, c=5

int x, y

/*每个表达式都返回一个bool值,0或1,直接输出就行了*/

printf("%d\n", a+b>c&&b==c)

printf("%d\n", a||b+c&&b-c)

printf("%d\n", !(a>b)&&!c||1)

printf("%d\n", !(x=a)&&(y=b)&&0)

printf("%d\n", !(a+b)+c-1&&b+c/2 )

return 0

}

有什么不懂的尽管问我,我会尽力帮助你的^_^

代码如下:

#include "pch.h"

#include <iostream>

#include <functional>

#include <map>

#include <string>

using namespace std

int add(int i, int j)

{

return i + j

}

// 使用函数调用运算符

struct divide

{

int operator()(int i, int j)

{

return i / j

}

}

auto mod = [](int i, int j) {return i % j}

map<string, function<int(int, int)>>binops =

{

  {"+", add},                                  // 使用函数指针

  {"-", minus<int>()},                         // 使用标准库函数对象

  {"*", [](int i, int j) {return i * j}},    // 使用未命名的lambda表达式

  {"/", divide()},                             // 使用函数调用运算符

  {"%", mod}                                   // 命名了的lambda表达式

}

int main()

{

int num1, num2

string s

while (cin >>num1)

{

cin >>s >>num2

cout <<num1 <<s <<num2 <<"=" <<binops[s](num1, num2) <<endl

}

return 0

}

扩展资料

Switch用在编程中,如C语言中它经常跟Case一起使用,是一个判断选择代码。其功能就是控制流程流转的。

直线翻译:switch语句,即“切换”语句;case即“情况”。

switch语句的语法如下(switch,case,break和default是关键字):

switch ( 变量表达式 )

{

case 常量1 :语句break

case 常量2 :语句break

case 常量3 :语句break

...

case 常量n:语句break

default :语句break

}

当变量表达式所表达的量与其中一个case语句中的常量相符时,就执行此case语句后面的语句,并依次下去执行后面所有case语句中的语句,除非遇到break语句跳出switch语句为止。如果常量表达式的量与所有case语句的常量都不相符,就执行default语句中的语句。

#include <stdio.h>

#include <math.h>

enum state

int ctoi( char c)

bool isNum( char a)

bool isOp(char op)

{

switch(op)

{

case '+':

return true

break

case '-':

return true

break

case '*':

return true

break

case '/':

return true

break

default:

return false

break

}

}

bool isDot(char dot)

int checkString( char str[], double *a, double * b, char* op, int num)

{

enum state s = BEGIN

int a_i = 0

int b_i = 0

double num1 = 0

double num2 = 0

int pointNum = 0

for( int i = 0i <num++i)

{

if(str[i] == ' ')continue

switch(s)

{

case BEGIN:

if(isNum(str[i]))

elses = ERROR

break

case P2:

if(isNum(str[i]))

else if(isDot(str[i]))

{

s = P3

}

else if(isOp(str[i]))

{

*op = str[i]

s = P5

}

else

s = ERROR

break

case P3:

if(isNum(str[i]))

{

num1 = num1 + ctoi(str[i]) * pow(0.1, ++pointNum)

s = P4

}

else

s = ERROR

break

case P4:

if(isNum(str[i]))

{

num1 = num1 + ctoi(str[i]) * pow(0.1, ++pointNum)

s = P4

}

else if(isOp(str[i]))

{

*op = str[i]

s = P5

}

else

s = ERROR

break

case P5:

if(isNum(str[i]))

{

num2 = num2 * 10 + ctoi(str[i])

s = P6

}

else

s = ERROR

break

case P6:

pointNum = 0

if(isNum(str[i]))

{

num2 = num2 * 10 + ctoi(str[i])

s = P6

}

else if(isDot(str[i]))

{

s = P7

}

else

s = END

break

case P7:

if(isNum(str[i]))

{

num2 = num2 + ctoi(str[i]) * pow(0.1, ++pointNum)

s = P8

}

else

s = END

break

case 8:

if(isNum(str[i]))

{

num2 = num2 + ctoi(str[i]) * pow(0.1, ++pointNum)

s = P8

}

else if(isOp(str[i]))

{

s = END

}

else

s = END

break

case ERROR:

printf("express error. \n")

break

}

if (s == END || s == ERROR)

break

}

if(s==END)

else

}

int main()

{

char op

double a

double b

char string[128] =

scanf("%s", &string)

printf("the expression you input is : %s. \n", string)

getchar()

if (-1 == checkString(string, &a, &b, &op, 128))

{

printf("error occur while checking expression. Be sure no space in your expression when input\n")

getchar()

return 0

}

double result

switch(op)

{

case '+':

result = a + b

break

case '-':

result = a - b

break

case '*':

result = a * b

break

case '/':

if(b != 0)

result = a / b

else

{

printf(" error! %d/%d", a, b)

return -1

}

break

default:

printf("undefined expression.\n")

break

}

printf("%f %c %f = %f\n", a, op, b, result)

return 0

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12031339.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存