① c語言 難題
#include<stdio.h>
double _a,_i;
void fun(char op,double a,double b,double c,double d)
{
if(op=='+'){
_a=a+c;
_i=b+d;
printf("(%.2lf+%.2lfi)%c(%.2lf+%.2lfi)=%.2lf+%.2lfi\n",a,b,op,c,d,_a,_i);
}
else if(op=='-'){
_a=a-c;
_i=b-d;
printf("(%.2lf+%.2lfi)%c(%.2lf+%.2lfi)=%.2lf+%.2lfi\n",a,b,op,c,d,_a,_i);
}
else if(op=='*'){
_a=a*c;
_i=b*d;
printf("(%.2lf+%.2lfi)%c(%.2lf+%.2lfi)=%.2lf+%.2lfi\n",a,b,op,c,d,_a,_i);
}
else if(op=='/'){
_a=a/c;
_i=b/d;
printf("(%.2lf+%.2lfi)%c(%.2lf+%.2lfi)=%.2lf+%.2lfi\n",a,b,op,c,d,_a,_i);
}
else printf("ERROE!\n");
}
int main()
{
char op;
double a,b,c,d;
while(1){
scanf("%lf%lf%lf%lf",&a,&b,&c,&d);
getchar();
scanf("%c",&op);
fun(op,a,b,c,d);
}
return 0;
}
② C語言難題怎麼做
#include <stdio.h>
int conv(int n)
{
int x[4]={1,1,1,1},h[6]={6,5,4,3,2,1},sum,i;
for(sum=0,i=0;i<4;++i)
{
sum+=x[i]*(n-i>=0&&n-i<=5?h[n-i]:0);
}
return sum;
}
int main()
{
int n;
scanf("%d",&n);
printf("%d ",conv(n));
return 0;
}
③ c語言難題 請高手進來幫忙解決 在線等
#include <stdio.h>
int main()
{
char sex,sports,diet;
double faHeight,moHeight,yourHeight;
printf("輸入你的性別(F女/M男):");
scanf("%c",&sex);
getchar();
printf("輸入你父親的身高(cm):");
scanf("%lf",&faHeight);
getchar();
printf("輸入你母親的身高(cm):");
scanf("%lf",&moHeight);
getchar();
printf("你喜愛體育運動嗎?(y/n)");
scanf("%c",&sports);
getchar();
printf("你有有良好的飲食習慣嗎?(y/n)");
scanf("%c",&diet);
getchar();
if (sex=='F')
yourHeight=(faHeight*0.923 + moHeight) / 2;
else if (sex=='M')
yourHeight=(faHeight + moHeight)*0.54;
else printf("性別錯誤\n");
if (sports=='y') yourHeight=yourHeight*1.02;
if (diet=='y') yourHeight=yourHeight*1.015;
printf("你的身高為:%lfcm",yourHeight);
return 0;
}
你把程序改成這樣就可以了!就是double和float的類型轉換!
④ C語言難題,求解決啊 只要編寫子函數。
void findmax(int a[m][N], int n[m]){
for(int i=0;i<m;i++){
int max=a[i][0];
n[i]=0;
for(int j=0;j<N;j++){
if(a[i][j]>max){
n[i]=j;
max=a[i][j]
}
}
}
}
⑤ 如何解決c語言難題。 某餐廳有18個包廂,編號為1到18。其中a[i]存儲第i個包廂的
a[19];//各個包廂的座位數
int GuestNum[4];//每組的客人數
bool UsedFlag[19]={false};//包廂已經使用標志
int AllocRoom(int GuestNum){//分配最合適包廂函數
int BestRoom=20;//初始設定為不存在的包廂號,用於後面判斷是否有合適包廂
int Temp=20;//用於保存包廂座位數與客人數的差值
for(int i=0;i<19;i++)
{
if(a[i]>0&&//無預定的房間
a[i]-GuestNum>=0&&//確保每一位客人都能就座
Temp>=a[i]-GuestNum&&//判斷有更合適的包廂
UsedFlag[i]==false)//判斷包間處於空閑狀態
{
Temp=a[i]-GuestNum;//保存差值用於下一次判斷有更合適的包廂
BestRoom=i;//更新最合適包廂號
}
}
UsedFlag[BestRoom]=true;//最合適包廂找出,將該包廂標為已使用
return BestRoom+1;//輸出包廂序號
}
main()
{
INPUT(GuestNum[4]);//獲取每組客人數
int Number=0;//最合適包廂序號
for(int i=0;i<4;i++)
{
Number=AllocRoom(GuestNum[i]);
if(Number==21)
OUTPUT(第i組家庭 沒有合適的包廂);//輸出
else
OUTPUT(第i組家庭在Number號包廂就餐);//輸出
}
}
這是一個想法骨架,你看著改。
⑥ C語言的問題怎麼解決
第一條語句應該沒問題,不清楚的可能是while循環開始。
首先while語句先執行條件里的賦值,即i=k-1;這時i=18。並且條件為真。只要是不為零,都為真。因為條件里的是賦值語句而不是關系語句(是=號,而不是==號)。
進入循環後執k=k-3,此時k=16.
然後是if語句。16%5=1,不等於0,因此執行else部分。
此時else中的if的條件是16<5,不成立。執行下面的語句i++。i的值為19.
進入下一次循環。
此時k=16,while條件中i=15,然後k=13,13%5=3,i=16,進入下一次循環。
此時k=13,while條件中i=12,然後k=10,10%5=0,條件成立,i=13,continue直接進入下一次循環。
此時k=10,while條件中i=9,然後k=7,7%5=2,i=10,進入下一次循環。
此時k=7,while條件中i=6,然後k=4,4%5=4,此時else中的if語句條件(k<5)成立,break語句跳出循環。
最後執行printf語句。
i=6,k=4
寫這么多很辛苦,希望給予採納!
⑦ C語言難題
typedef struct stu{
char * name,gender;
int score;
}STU;
void f(char *p)
{
//p=(char *)malloc(10);
strcpy(p,"Qian");
}
int main(void)
{
STU a={NULL,'m',290},b;
a.name=(char *)malloc(10);
strcpy(a.name,"Zhao");
b = a;
f(b.name);
b.gender ='f';
b.score =350;
printf("%s,%c,%d
\n",a.name,a.gender,a.score);
printf("%s,%c,%d
\n",b.name,b.gender,b.score);
return 0;
}
為啥注釋掉了以後的答案變成:Qian,m,290,Qian,f,
350,?
而不注釋掉答案卻是: Zhao,m,290,Zhao
,f,350?
你的目的是通過函數去修改另外一個結構體對象b中成員name
的值。
觀察到成員中的gender和score基本上沒有什麼值得研究 ,
所以只研究第一個成員name。
在你執行了代碼b=a的時候,b和a分別在內存條上佔用
sizeof(stu)的空間大小。而且,這兩個空間中的值都是一
模一樣的。
當你執行了函數f()的時候,分兩種情況。
第一沒有注釋:函數f會在棧上分配4個位元組的內存(sizeof
(char*),因為p的類型就是char*)。那麼p的值就是等於
b.name。
b.name的值我們假設是0x1234567,那麼現在p的值也就是
0x1234567。沒有注釋的情況下,p的值馬上被修改成malloc
的返回值,所以現在p的值一定不是0x1234567。
假如malloc的返回值是0x7654321,那麼現在p的值也就是
0x7654321。你使用了strcpy,那麼0x7654321首地址開始的
內容就變成了zhao。
所以,你沒有改變0x1234567所指向的內容。結果就是
0x1234567指向的內容還是為zhao。
第二有注釋:函數f會在棧上分配4個位元組的內存(sizeof
(char*),因為p的類型就是char*)。那麼p的值就是等於
b.name。
b.name的值我們假設是0x1234567,那麼現在p的值也就是
0x1234567。有注釋的時候。p的值沒有被malloc改變,還是
0x1234567.你使用了strcpy,就修改了0x1234567所指向的
內存。
最開始的內存中值是zhao,你修改後就變成了qian.
你的這個例子錯誤很多,但是基於你是實驗的目的,我就不指
正了。針對不注釋的情況,如果你要改變的話,我認為比較正
確的做法應該是這樣的。
typedef struct stu{
char * name,gender;
int score;
}STU;
void f(char **p)
{
*p=(char *)malloc(10);
strcpy(*p,"Qian");
}
int main(void)
{
STU a={NULL,'m',290},b;
a.name=(char *)malloc(10);
strcpy(a.name,"Zhao");
b = a;
f(&b.name);
free(a.name);
a.name=NULL:
return 0;
}
⑧ C語言學不會怎麼辦
C語言學不會怎麼辦?我大一的時候也需要學C語言,C語言學習方法有很多,下面是我的建議。
1.首先應該記住基礎知識點,如數組,結構體,指針等相關內容,如果在編程過程中遇到想不起來的知識點,一定要及時去翻書或者上網搜索。
_
⑨ c語言中數據溢出的問題怎麼解決
需要准備的材料分別有:電腦、C語言編譯器。
1、首先,打開C語言編譯器,新建一個初始.cpp文件,例如:test.cpp,輸入問題基礎代碼。
⑩ C語言問題,求大神解決,謝謝啦,我是小白,最好能夠解釋下原因
已修改,看注釋
#include<stdio.h>
int main()
{
char a[20],b[20],c[50],*p1,*p2,*p3;
p1=a,p2=b,p3=c;
gets(a);
while(*p1)
{
*p2 = (*p1)+3; //對字元串中的每個字元用加3的方法加密並存入數組b
p1++;
p2++;
}
*p2='\0'; //串結束符
p2=b ; //p2重新指向b的開始位置
while(*p2)
{
*p3 = (*p2)-3; //對b中的字元串解密存入數組c
p3++;
p2++;
}
*p3='\0';
puts(a); //puts是輸出一個串
puts(b);
puts(c);
return 0;
}