❶ 編程c語言一個數除2減2
public class watermelon {
/**
* 有1020個西瓜,第一天賣一半多2個,以後每天賣剩下的一半多2個,
* 問幾天以後能賣完
*/
public static void main(String[] args) {
int x1,x2,day;
x1=1020;
day=0;
while(x1!=0){
x2=x1/2-2;
x1=x2;
day++;}
System.out.println( "the day is "+day);
// TODO Auto-generated method stub
}
}
答案是8天
❷ c語言,編寫程序,要求對兩個實數實現簡單的加減乘除運算的功能(用switch)語句
#include<stdio.h>
void main()
{
float num1,num2;
char ch;
printf("請輸入運算符(+-*/):");
scanf("%c",&ch);
printf("請輸入第一個數字:");
scanf("%f",&num1);
printf("請輸入第二個數字:");
scanf("%f",&num2);
switch(ch)
{
case '+':
printf("%f+%f=%f ",num1,num2,num1+num2);
break;
case '-':
printf("%f-%f=%f ",num1,num2,num1-num2);
break;
case '*':
printf("%fx%f=%f ",num1,num2,num1*num2);
break;
case '/':
printf("%f/%f=%f ",num1,num2,num1/num2);
break;
default:
printf("錯誤輸入! ");
break;
}
}
❸ 用C語言編寫一個計算器程序,實現加,減,乘,除,求平方根(正數),倒數等功能.
#include<iostream>
#include<cmath>
#include<string>
using namespace std;
const double pi = 3.14159265; const double e = 2.718281828459; const int SIZE = 1000;
typedef struct node//為了處理符號而建立的鏈表(如: 1+(-2)) { char data; node *next; }node;
typedef struct stack_num//存儲 數 的棧 { double *top; double *base; }stack_num;
typedef struct stack_char//存儲 運算符號 的棧 { char *top; char *base; }stack_char;
stack_num S_num;//定義 stack_char S_char;//定義
char fu[18] = {'\n', ')', '+', '-', '*', '/', '%', '^', 'Q', 'L', 'C', 'S', 'T', 'c', 's', 't', '('};
int compare[1000];//表現出各運算符號的優先順序 double shu[1000];//存儲 "數" 的數組
double dai_result;//運算的結果,是為了處理 M 運算(簡介函數里有M的定義) int biao = 0;//和dia_result 一樣,為了處理 M 運算 char line[SIZE];//輸入的所要計算的表達式
void init()//初始化 { compare[fu[0]] = -2;//用數字的大小表現出符號的優先順序
compare[fu[1]] = -1; compare[fu[2]] = 2; compare[fu[3]] = 2; compare[fu[4]] = 4; compare[fu[5]] = 4; compare[fu[6]] = 4; compare[fu[7]] = 5; for(int i = 8; i <= 15; i++) compare[fu[i]] = 6; compare[fu[16]] = 7; S_num.base = (double*)malloc(sizeof(double)*SIZE);//為棧開辟空間 S_char.base = (char*)malloc(sizeof(char)*SIZE);//同上 S_num.top = S_num.base; S_char.top = S_char.base; }
void push_num(double n)//數字進棧 { * ++S_num.top = n; }
void push_char(char c)//運算符號進棧 { * ++S_char.top = c; }
double pop_num()//數字出棧 { double m = *S_num.top; S_num.top--; return m; }
char pop_char()//運算符號出棧 { char cc = *S_char.top; S_char.top--; return cc; }
char get_top_char()//得到運算符號的棧中最頂端的運算符號 { return *S_char.top;
}
double operate(double y, char c, double x)//
對兩個數計算
(
含是雙目運算符
:
如
*, /
等等
)
{
double r;
if(c == '-')
r = x - y;
else if(c == '+')
r = x + y;
else if(c == '/' && y != 0)
r = x / y;
else if(c == '*')
r = x * y;
else if(c == '^')
{
r = 1;
for(int i = 1; i <= y; i++)
r *= x;
}
else if(c == '%')
{
int r0 = (int)x % (int)y;
r = double(r0);
}
return r;
}
double operate_one(double one, char cc)//
對一個數運算
(
含單目運算符
:
如
log(L), sin(S)
等等
)
{
double r;
if(cc == 'Q')
r = sqrt(one);
else if(cc == 'C')
r = cos(one);
else if(cc == 'S')
r = sin(one);
else if(cc == 'T')
r = tan(one);
else if(cc == 'c')
i++;
}
i++;
}
if(ge >= 3)
return 0;
else
return 1;
}
void output(double result)//
打出結果
{
printf("
所得結果是
: ");
cout<<result<<endl;
}
void check()//
檢查表達式是否合法
{
void introce();
char cc;//
決定計算器按哪種功能進行計算
double result;//
結果
void input();//
定義
if( check_kuohao() && check_char() )//
看是否合法
,
合法則計算
{
result = compute();
output(result);
cout<<"
輸入一個字元
'M'
或
'D'
或
'F',
決定是否繼續
: "<<endl;
while(cin>>cc)
{
if(cc == 'M')
{
system("cls");
introce();
printf("
您上次所得結果為
: ");
cout<<result<<endl;
cout<<"
在上次計算結果的基礎上
,
請繼續輸入想計算的表達式
"<<endl;
dai_result = result;
biao = 1;
input();//
輸入表達式
break;
}
else if(cc == 'D')
{
system("cls");
introce();
cout<<"
計算器已清零
,
請輸入您所要計算的表達式
"<<endl;
input();//
輸入表達式
break;
}
else if(cc == 'F')
{
system("cls");
cout<<"
計算器關閉
,
謝謝使用
!"<<endl;
break;
}
else
{
cout<<"
所輸入字元無效
,
請輸入一個字元
'M'
或
'D'
或
'F'!"<<endl;
continue;
}
}
}
else//
不合法,分兩種不合法
{
if(check_kuohao() == 0 && check_char() == 1)
{
cout<<"
您所輸入的表達式括弧不匹配
,
請重新輸入
:"<<endl;
input();//
輸入表達式
}
else
{
cout<<"
您所輸入的表達式不合法
,
請重新輸入
:"<<endl;
input();//
輸入表達式
}
}
}
void tackle_fuhao()//
處理負號
{
node *root, *head, *p, *q, *p1;
root = head = new node;
head->next = NULL;
int i;
for(i = 0; line[i] != '\0'; i++)//
建立鏈表
{
p = new node;
p->data = line[i];
p->next = head->next;
head->next = p;
head = p;
}
// delete p;
q = (node*)malloc(sizeof(node));
head = root;
if(root->next->data == '+' || root->next->data == '-')//
處理第一個字元
{
p = new node;
p->data = '0';
p->next = head->next;
head->next = p;
}
if(root->next != NULL)
{
for(q = root->next; q; q = q->next)
{
if(q->data == '(' && (q->next->data == '-' || q->next->data == '+'))
{
p = new node;
p->data = '0';
p->next = q->next;
q->next = p;
}
}
}
// delete q;
p1 = new node;
int qi = -1;
for(p1 = root->next; p1; p1 = p1->next)
{
line[++qi] = p1->data;
}
line[++qi] = '\0';
}
void input()//
輸入
{
cin>>line;
if(biao == 0)
tackle_fuhao();//
處理負號
check();//
檢查表達式是否合法
}
void introce()//
對計算器的符號功能的簡要介紹
{
cout<<"
計算器簡要介紹
"<<endl;
cout<<"C(cos)
S(sin)
T(tan)
a(arccos)
c(arcsin) "<<endl;
cout<<"7
8
9
/
on
t(arctan) "<<endl;
cout<<"4
5
6
*
%
L(log)"<<endl;
cout<<"1
2
3
-
M(M+)
Q(sqrt)
"<<endl;
cout<<"0
.
+
^(
乘方
) F(off)
Enter(=) "<<endl;
cout<<"
對於對數輸入
L2_5
表示以
2
為底
5
的對數
"<<endl;
cout<<"M(
在前面結果的基礎上繼續計算,
如:
上次結果為
10
,
現輸入
+10.5*2)"<<endl;
cout<<"D(
清零並繼續輸入
)"<<endl;
cout<<"F(
計算機關閉
)"<<endl;
cout<<"
輸入
P
就代表輸入圓周率
,
輸入
E
代表輸入自然對數
"<<endl<<endl;
}
void print()
{
system("color 2");
cout<<"
歡迎使用本計算器
"<<endl;
cout<<"
輸入一個字元串
on,
計算器開始啟動
"<<endl;
}
void if_start()//
是否啟動計算器
{
string start;
print();
while(cin>>start)
{
if(start != "on")
{
cout<<"
您所輸入的字元無效
,
請按照介紹的繼續輸入
:"<<endl;
continue;
}
else
break;
}
if(start == "on")
{
system("color 5");//
顏色的處理
system("cls");//
刷屏
}
introce();//
對計算器的簡要介紹
cout<<"
現在
,
請輸入您所要計算的表達式
"<<endl;
input();//
輸入所要計算的表達式
}
int main()
{
if_start();//
調用是否啟動計算器函數
return 0;
}
r = acos(one);
else if(cc == 's')
r = asin(one);
else if(cc == 't')
r = atan(one);
❹ 一道C語言的編程題
判斷素數的原理是:
素數是只能被1和本身整除的數。例如 3隻能被1和3整除,17隻能被1和17整除等等,想9就不是素數(能被1,3,9整除)。
編程的演算法是:
窮舉法,就是將需要判斷的數除2、除3....一直除到這個數減1.
例如:判斷7是不是素數的演算法是進行如下運算 7/2,7/3,7/4,7/5,7/6,在上述除的過程中如果都不能被除盡則可以斷定7是素數,否則就說明7不是素數。
注意:編程時使用求余運算,判斷是否能被除盡。
參考程序如下:
#include<stdio.h>
void main()
{ int i,j,x;
for(i=2;i<=1000;i++) //1不是素數,所以從2算起
{
for(j=2;j<=999;j++)
if(i%j==0) break; //能被除盡則退出循環
if(j==i) printf("%d\n",i); //正常除盡時被除數和除數相等,說明是素數
}
}
當然程序還可以被優化,例如不一定非除到n-1,完全可以除到根號下n,
舉例一:判斷25是不是素數的話,只需要除到5即可
舉例二:對於開根後是小數的可以取整,如判斷15是不是素數只需要除到3即可。
簡化後的程序運行速度會更快的。
❺ c語言的一道編程題
66877
第一次輸入2,c-'2',因為是跟字元2相減,系統把c當做字元看,'2'-'2'轉換為asc瑪,結果為0,執行case 0
直到遇到break;第一次結果為case 0:不需要輸出case 1: putchar(c+4);計算得6 case 2: putchar(c+4);break計算得6
第二次輸入7 c-'2',得5,沒有case 5這個選中,跳過,無輸出
第三次輸入4,計算方法同第一次
第四次輸入3,計算方法同第一次
❻ 用C語言編程222222-22222-...-2,for語句,怎樣實現減
這是加法的
#include<stdio.h>
intmain()
{
intn=6,a=0,s=0,i;
for(i=0;i<n;i++)
{
a=a*10+2;
s+=a;
}
printf("%d ",s);
return0;
}
以下上減法的
#include<stdio.h>
intmain()
{
intn=6,a=0,s=0,i;
for(i=0;i<n-1;i++)
{
a=a*10+2;
s-=a;
}
a=a*10+2;
s+=a;
printf("%d ",s);
return0;
}
❼ 怎樣用C語言編寫一個簡單的可以進行加減乘除運算混合運算的計算器
用C語言編寫一個簡單的可以進行加減乘除運算混合運算的計算器的方法:
1、打開visual C++ 6.0-文件-新建-文件-C++ Source File;
❽ c語言編程、一個二位數加減法測驗程序
Score= 3, Right= 2,Wrong= 0,Total= 2
66 + 60 =?
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
main()
{
int i,j,tmp,num1,num2,op,answer,flag,cnt,right=0,wrong=0,score=0,quest[10][3]={0};
srand((unsigned)time(NULL));
for (i=0;score<100;i++)
{
num1 = rand()%89+11;
num2 = rand()%89+11;
op = rand()%2;
num1<num2?tmp=num1,num1=num2,num2=tmp:NULL;
op>0?op='+':op='-';
for (j=0;j<i;j++)
{
if (quest[i][0]==num1 && quest[i][1]==op && quest[i][2]==num2)
{
i--;
}
else
{
quest[i][0]=num1;
quest[i][1]=op;
quest[i][2]=num2;
system("cls");
printf("Score=%2d, Right=%2d,Wrong=%2d,Total=%2d\n",score,right,wrong,i);
printf("%2d %c %2d =?",num1,op,num2);
cnt=0;
do
{
flag=0;
scanf("%d",&answer);
if ((op=='+' && answer==num1+num2) || (op=='-' && answer==num1-num2))
{
if (cnt==0)
{
score+=2;
}else
{
score++;
}
right++;
printf("Right!\n");
flag=1;
}else
{
printf("Wrong!\n");
if(cnt==1)
{
wrong++;
break;
}
}
cnt++;
} while (!flag);
}
}
}
}
望採納
❾ 怒求一個能有加減乘除的C語言編程
#include <stdio.h>
int main()
{
int a,b,s,c;
printf("這是你用 c語言寫出來的一個加,減,乘,除。的程序");
printf("這里是一些這個程序的使用方法介紹,和使用的示例。");
printf("請您從鍵盤上輸入兩個整數比如1003,兩個整數之間要用空格鍵割開\n比如1000 10注意一千和十之間要用一個空格鍵隔開。");
printf("如果 你想要做加法請在第二個整數後面再打一個空隔鍵,然後輸入數字1 像這樣:50 20 1");
printf("加法計算:50 20 1,減法計算:50 20 2,乘法計算:50 20 3,除法計算:50 20 4。");
for ( c=1; c<10; ++c ) {
scanf("%d%d%d",&a,&b,&s);
if( s == 1 )
printf("%d+%d=%d",a,b,a+b);
if( s == 2 )
printf("%d-%d=%d",a,b,a-b);
if( s == 3 )
printf("%d*%d=%d",a,b,a*b);
if ( s == 4 )
printf("%d/%d=%d",a,b,a/b);
}
return 0;
}
網路為你解答
❿ C語言問題 1、編寫程序,輸入2個數以及加、減、乘、除中的某運算符號,並調用自己編寫的函數計算相應的結
已經測試,運行正常,先輸入兩個數,然後輸入+-*/中的一個:接著就有結果
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
float a, b;
char c;
float res;
scanf("%f %f\n", &a, &b);
c = getchar();
switch (c)
{
case '+':
res = a + b;
break;
case '-':
res = a - b;
break;
case '*':
res = a * b;
break;
case '/':
res = a / b;
break;
default:
printf("input error\n");
}
printf("result is: %f\n", res);
return 0;
}