當前位置:首頁 » 編程語言 » c語言程序設計海燕
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言程序設計海燕

發布時間: 2022-06-15 17:25:11

c語言程序設計,設計一個簡單的程序,能完成加減乘除運算,網上搜的答案運行都出現很多錯誤,解釋一下程

1、簡單版本的,輸入兩個數一個操作符:「1 + 2」類似這種,直接獲取兩個數以及操作符,用switch語句來分別對不同操作符進行操作。
2、復雜版本的,隨意輸入表達式,可以有括弧以及其他運算符,「1+2*8+(6/7)^3」類似這種,有四種解決辦法:
2.1、一遍一遍地掃描字元串,優先順序越高的運算符越先做,每掃描一次減少一點,直到表達式只剩一個數值。
2.2、將表達式通過棧轉換為逆波蘭表達式,並計算逆波蘭表達式。
2.3、遞歸求解,使用類似BNF的定義來使用遞歸將表達式一點一點剝離成小表達式,計算完小表達式後,將多個小表達式綜合起來,即為整個表達式的值。
2.4、直接使用lex和yacc來寫一個計算器,需要寫的代碼量很少,自動生成的代碼量比較多。
主要就這幾種思路,細節問題你可以自己上網查。

❷ 《C語言程序設計》第17章在線測試

1、D 因為#define C(x) ((x)*(x))宏中需要使用完備的括弧才不會有引用錯誤
2、D 認真區分char a[]和char *p的區別,a是數組的首地址,也是指針,但是p僅僅是指向一個字元串的首地址的指針,雖然也是指針,但是你並不知道p指針具體在什麼代碼段的什麼位置,從而p+=2的位置你也無法確定。
3、C extern本來就是外部的意思嘛
4、A 僅僅在主函數中有效,這是對的。
5、B 局部變數優先,給你舉個例子:
int a=1;
int main()
{
int a=2;
cout<<a;
return 0;
}
就是類似這樣的例子,你在main函數外定義了一個全局變數a,在main內部又定義了一個變數名也是a的局部變數,那麼你在main中用cout輸出的時候就是輸出了局部變數a的值,要輸出全局變數a的值時則要使用::a,實際上是局部變數將全局變數屏蔽了,可以看做局部變數的優先於全局變數
/**********************************************************************************/
第二題1、ABC
2、ABD
3、CD
4、AB
5 、AD
/**********************************************************************************/
第三題
正確
錯誤,可改為int *p=&x
錯誤,不是指向結構體的指針,不可以用->
正確,因為數組名那可是一個指針,是數組的首地址
正確 當然可以遞歸了,網上多的是那種遞歸的小程序
如果有什麼不清楚,咱們可以後續交流哦@—@

❸ c語言程序設計. 由鍵盤輸入兩個整數,分別計算這兩個數的和、差、積、商,並輸出結果。

具體輸入如下:

  1. #include "stdio.h"

  2. main()

  3. { int a,b;

  4. printf("請輸入兩個整數(a,b):");

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

  6. printf("和:%d ",a+b);

  7. printf("差:%d ",a-b);

  8. printf("積:%d ",a*b);

  9. printf("商:%f ",(float)a/b);}

❹ c語言程序設計例題

題目1
#include "stdio.h"
void main(void)
{
int n=5,m=10,i=1;
long sum=1;
for(;i<=n;i++)
{
sum*=i;
}
printf("\n5!=%d",sum);
for(i=1;i<=10;i++)
{
sum*=i;
}
printf("\n10!=%d",sum);
}
題目2
#include "stdio.h"
#include "string.h"
struct Student
{
char s_Name[25];
long n_Code;
int n_English;
int n_Math;
int n_Computer;
}student_1,student_2;
void main(void)
{
printf("\nStudent1:\nName:");
scanf("%s",&student_1.s_Name);
printf("StudentNum:");
scanf("%d",&student_1.n_Code);
printf("English Score:");
scanf("%d",&student_1.n_English);
printf("Math Score:");
scanf("%d",&student_1.n_Math);
printf("Computer Score:");
scanf("%d",&student_1.n_Computer);

printf("\nStudent2:\nName:");
scanf("%s",&student_2.s_Name);
printf("StudentNum:");
scanf("%d",&student_2.n_Code);
printf("English Score:");
scanf("%d",&student_2.n_English);
printf("Math Score:");
scanf("%d",&student_2.n_Math);
printf("Computer Score:");
scanf("%d",&student_2.n_Computer);

printf("\nStudent1:\nName:%s\nStudent Number:%d\nEnglish Score:%d\nMath Score:%d\nComputer Score:%d\n",student_1.s_Name,student_1.n_Code,student_1.n_English,student_1.n_Math,student_1.n_Computer);
printf("\nStudent2:\nName:%s\nStudent Number:%d\nEnglish Score:%d\nMath Score:%d\nComputer Score:%d\n",student_2.s_Name,student_2.n_Code,student_2.n_English,student_2.n_Math,student_2.n_Computer);

}

❺ c語言程序設計 很急!!!

第一個問題 if((ch>='a')||(ch<='z'))
這個式子永遠為真應該把||該成&&
第二個問題 如果用戶輸入8那麼你的程序就列印9了要該成
if (x==6||x==4) printf("%d",x);
第三個問題
if (c>b)
{ if (b>a) max=c;} /* c>b>a */
else /* b>c */
{if (c>a) max=b;} /* b>c>a */
你的判斷不完全 如果輸入a=11 b=10 c=12 那麼就無法判斷了
最好該成max=((a>b)?b:a)>c?((a>b)?b:a):c

填空
1 (scanf("%c",&c);) (printf("0-9\n");)
(if('A'<=c&&c<='Z')) (else if) (else)
2 (y%4==0) (f=0)

編程第一個題不知道你什麼意思

2
void sanjiaoxing(){
int d1,d2,d3;
scanf("%d%d%d",&d1,&d2,&d3);
if(d1>=0&&d2>=0&&d3>=0){
if(d1*d1+d2*d2==d3*d3){
printf("%d",d1*d2*0.5);
}else if(d1*d1+d3*d3==d2*d2){
printf("%d",d1*d3*0.5);
}else if(d2*d2+d3*d3==d1*d1){
printf("%d",d3*d2*0.5);
}else{
printf("你輸入的不是一個直角三角形");
}
}else{
printf("你輸入的不是一個三角形");
}
}

❻ C語言程序設計 (學生選修課程設計)

這是我做的,你看是否滿意?可能有點大,但也沒辦法呀,你的題目也比較大,呵呵!所以,如果滿意,多給我追加點分!
#include
"stdio.h"
#include
"stdlib.h"
#include
"string.h"
typedef
struct
course
{
char
number[15],name[25];
int
kind,time,lessontime,practicetime,credit,term;
}type;
FILE
*fp1;
void
overview();
//瀏覽函數,負責瀏覽整個課程信息
void
seek();
//查詢函數,負責查詢課程信息
void
choose_course();//選課函數,負責讓用戶選課
void
out(type
temp);
void
input();
int
main()
{
int
n,i;
if((fp1=fopen("course_information.txt","wb"))==NULL)
{printf("創建文件失敗!\n");exit(0);}
printf("請輸入要存儲的課程數目:\n");
scanf("%d",&n);
printf("開始創建文件,請輸入課程信息:\n\n");
for(i=0;i<n;i++)
{
printf("請輸入第%d門課程的信息:\n",i+1);
input();
printf("\n");
}
printf("如想瀏覽整個課程信息,請輸入1;如想查詢課程信息,請輸入2;
如想進行選課,請輸入3;如想結束選修課系統,請輸入0!\n");
while((scanf("%d",&n))!=EOF)
{
if(n==1)
overview();
if(n==2)
seek();
if(n==3)
choose_course();
if(n==0)
exit(0);
printf("\n\n如想繼續操作,只要按規則輸入你要進行的操作即可!\n規則:如想瀏覽整個課程信息,請輸入1;如想查詢課程信息,請輸入2;如想進行選課,請輸入3!\n");
}
printf("歡迎您使用此程序進行選課,謝謝!\n");
fclose(fp1);
return
0;
}
void
input()
{
course
c_a;
printf("請輸入課程編碼:
");
scanf("%s",c_a.number);
printf("請輸入課程名:
");
scanf("%s",c_a.name);
printf("請輸入課程性質:限選課,請輸入1;選修課,請輸入2;必修課,請輸入3!
");
scanf("%d",&c_a.name);
printf("請輸入課程總學時:
");
scanf("%d",&c_a.time);
printf("請輸入課程授課時間:
");
scanf("%d",&c_a.lessontime);
printf("請輸入課程實驗或實踐時間:
");
scanf("%d",&c_a.practicetime);
printf("請輸入課程學分:
");
scanf("%d",&c_a.credit);
printf("請輸入課程所在的學期,比如第二學期,就輸入2即可。");
scanf("%d",&c_a.term);
fwrite(&c_a,sizeof(struct
course),1,fp1);//將一個結構體元素寫入文件中
}
void
out(type
temp)
{
printf("課程代碼:
%s\n課程名:
%s\n",temp.number,temp.name);
printf("課程名:
%s\n",temp.name);
if(temp.kind==1)
printf("課程性質:
Limited
optional
course\n");
else
if(temp.kind==2)
printf("課程性質:
Optional
course\n");
else
if(temp.kind==3)
printf("課程性質:
Required
Courses\n");
else
printf("該編碼系統不認識,即無對應的課程性質存在!\n");
printf("課程總學時:
%d\n課程授課學時:
%d\n實驗或上機學時:
%d\n學分:
%d\n課程開課學期:
%d\n\n",temp.time,temp.lessontime,temp.practicetime,temp.credit,temp.term);
}
void
overview()
{
rewind(fp1);
course
temp;
printf("整個課程信息如下:\n");
while((fread(&temp,sizeof(type),1,fp1))!=0)
out(temp);
}
void
seek()
{
int
judge,credit=0,kind=0;
char
a='N';
course
temp;
printf("如想按學分查詢,請輸入1;如想按課程性質,請輸入2:\n");
scanf("%d",&judge);
rewind(fp1);
//將文件指針位置置為開頭
if(judge==1)
{
printf("請輸入要查詢的學分:\n");
scanf("%d",&credit);
while((fread(&temp,sizeof(type),1,fp1))!=0)
if(credit==temp.credit)
out(temp);
}
else
if(judge==2)
{
printf("請輸入你要查找課程的性質(限選課,請輸入1;選修課,請輸入2;必修課,請輸入3):");
scanf("%d",&kind);
while((fread(&temp,sizeof(type),1,fp1))!=0)
if(temp.kind==kind)
out(temp);
}
else
printf("不好意思,無此類查詢!\n");
}
void
choose_course()
{
rewind(fp1);
course
temp;
int
judge=1,n=0,time=0,credit=0;
char
choose[20][20];
r1:
printf("請開始填寫課程編號進行選課:\n");
while(judge==1)
{
printf("請輸入你所選課程的標號:
");
scanf("%s",choose[n]);
n++;
printf("如想繼續選課,請輸入1;如想提交,請輸入0!\n");
scanf("%d",&judge);
}
while((fread(&temp,sizeof(type),1,fp1))!=0)
{
for(int
i=0;i<n;i++)
if(strcmp(temp.number,choose[i])==0)
{time=time+temp.time;credit=temp.credit;break;}
}
if(time<270||credit<40)
goto
r1;
printf("你所選的課為:\n");
while((fread(&temp,sizeof(type),1,fp1))!=0)
{
for(int
i=0;i<n;i++)
if(strcmp(temp.number,choose[i])==0)
{out(temp);break;}
}
}

❼ C語言程序設計課後習題答案(田淑清 周海燕版)

瘋,把題目貼出來啊!

❽ C語言程序設計編寫程序問題

C語言實現,通過展開式求exp(x),參考代碼如下:
#include<stdio.h>
int main()
{
int n=1;
double x,e=1,t=1;
scanf("%lf",&x);
do{
t=t*x/n;
e=e+t;
n=n+1;
}while(t>1e-6);
printf("exp(%g)=%.6lf",x,e);
return 0;
}

❾ 跪求C語言程序設計(高等教育出版社)的課後習題解

仔細看書的簡介或序言中,可能會有相應的網站下載答案的!

❿ 求C語言程序設計

#include <stdio.h>
#define M 10
main()
{
int a[M][M],b[M][M],c[M][M],i,j,k,m,n,p;
printf("請輸入矩陣A以及矩陣B的行、列數(其中A的列數等於B的行數,不重復輸入):\n");
scanf("%d %d %d",&m,&n,&p);
printf("請輸入矩陣A(%d行%d列):\n",m,n); /*矩陣A的各元素存入二維數組a中,B和C同理。*/
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
printf("請輸入矩陣A(%d行%d列):\n",n,p);
for(i=0;i<n;i++)
for(j=0;j<p;j++)
scanf("%d",&b[i][j]);

for(i=0;i<m;i++)
for(j=0;j<p;j++)
{
c[i][j]=0; /*先對矩陣C每個元素賦予初值0。*/
for(k=0;k<n;k++) /*應用了矩陣相乘公式。*/
c[i][j]+=a[i][k]*b[k][j];
}

printf("矩陣A左乘於B的積C(%d行%d列)為:\n",m,p);
for(i=0;i<m;i++)
for(j=0;j<p;j++)
{
if(j==p-1)
printf("%d\n",c[i][j]); /*仔細體會此語句! 用於換行時。*/
else
printf("%d\t",c[i][j]); /*正常輸出不換行時。符號「\t」的作用是:令輸出的一系列數字「按橫向製表」。*/

}

printf("\n");
}