『壹』 三道c語言題目,求大神(用指針的方法)。
(1)
#include"stdio.h"
intmain(intargv,char*argc[]){
intn,i,k;
printf("Inputn(n殲洞mustbeanaturalnumber褲州lessthan10000)):");
if(scanf("%d",&n)!=1||n<1||n>9999){
printf("胡改蔽%disoutofrangeofvalidvalues. ",n);
return0;
}
k=0;
for(i=1;i<=n;i++)
k=(k+3)%i;
printf("LastNo.is:%d ",k%n+1);
return0;
}
運行樣例:
『貳』 C語言編程 量水問題
先兩個空的。然後用三升的杯子裝滿水,倒入五升的杯中。再取三升水倒入五升的杯中,倒滿後,三升杯里就是一升水了。再把5升水的杯子里的水倒了。將1升水倒入5升水的杯子里,再裝滿3升水倒入5升水的杯子里。這樣5升水的杯子里就有4升水了。
這種題目編程序有點麻煩啊!
『叄』 C語言的三個問題(我是初學)
1:(1)是(2)不是,字元串也可以(3)是
2:嚴格的說不是一個意思,不過通常編譯優化之後都是一樣的
3:一般是有不丟失信息的原則
稍等,我繼續詳解
很高興不是問考試題答案,贊一個。所以呢,我盡量詳細的回答一下。
1(1)單引號雙引號在編譯過程中的處理是不一樣的。單引號直接會變成字元對應的數值,通常是按照ascii表規定的數值;雙引號會在字元串最後多加一個0作為結尾標識。所以例如"abcde"5個字元的字元串實際上在內存中佔了6個字元的空間。
1(2)字元可以直接用數值表示,字元串實際上也可以:char c[]={97, 98, 99, 100, 101,0}
1(3)首先了解一下為什麼c語言定義一個變數需要有 char, int之類的類型說明符存在。作用主要有這么幾個:讓編譯器知道要給這個變數預留多大空間;為如何處理類型轉換提供依據;用於查錯。
一個char變數只保留1個位元組的空間,通常是8位。你不能用這個變數存儲超過一個位元組的數據。
而字元串就不一定有多少個字元了,所以需要更大的空間。編譯器會另外分配足夠的空間給這段字元串並將內容初始化成字元缺褲串內容。char*或者char[]本質上是一個4位元組(32位系統)的指針,裡面保存了一個地址,這個地址是編譯器用來保存字元串的那段內存的第一個位元組的位置。
因為指針這個東西展開的話就沒完了,這里就不詳細解釋了,遲早會學到的。
2,為何說嚴格的說不是一個意思,首先int和char預分配的空間實際上是不一樣的,通常int是4位元組,中碰char是1位元組。而編譯器遇到'c'這樣的表示的時候,會認為這是一個char類型常量,將這個1位元組常量賦值給int這個4位元組變數空間的時候,會進行一次類型轉換。賣扮談實際執行的過程是將4位元組餘下的3位元組清零,CPU有專用的指令干這個。而遇到數字的時候,默認是int類型,沒有轉換過程。不過通常優化以後直接就變成int了,省下一步轉換。
3,隱性類型轉換我記得可以找到個表的,裡面有各種組合運算時的轉換原則。這個事後自行網路。不過轉換通常有個原則,可以認為就是你說的那個優先順序,叫類型級,自動轉換只會將低級類型轉換成高級類型之後進行運算。
這個東西的本質第一個你在上面看到了,不同類型佔用空間大小不同。比如char佔用1位元組,int佔用4位元組。char轉換成int的時候實際上是保留符號之後其他位用0填充即可,不會丟失任何信息,但是倒過來就不得不丟掉3位元組的信息,很顯然會有信息丟失,默認轉換不允許。這是低級向高級轉換原則的具體情況之一。
另外浮點和定點的轉換,這個不但長度不一樣,連表示方式都不一樣,但基本上還是可以理解為整數轉換成浮點數的時候,小數點後都是0;而浮點轉換成整數的時候就不得不丟棄小數部分。所以只可以自動將整數轉換成浮點,而倒過來不行。即是說浮點比定點級別高,低級向高級轉換是安全的。想要將高級別類型轉換成低級類型,就得使用強制類型轉換了,相當於告訴編譯器,我知道會丟東西,但我樂意。
『肆』 c語言課程設計-水壺問題
演算法如或知攜下了:
1、向三升壺裝滿,然後將三升壺水倒入七升中,再裝滿三升壺,此時為4,3,3
2、將三升壺水倒入七升壺中,再用10升壺中水裝滿三升壺,此時為1,3,6
3、用三升壺將七升壺裝滿,將七升壺全部衫伏倒入十升壺,此時為8,2,0
4、將三升壺里水倒入七升壺中,將十升壺水裝滿三升壺,那麼此時為,5,3,猛弊2
5,十升壺中就是要的5升水了
『伍』 c語言問題: 什麼是演算法試從日常生活中找3個例子,描述它們的演算法。 詳細點,謝謝!
c語言中的演算法是指:一系列解決問題的清晰指令,用系統的方法描述解決問題的策略機制。也就是說,能夠對一定規范的輸入,在有限時間內獲得所要求的輸出。通俗說就是解決問題的方法和步驟。
描述演算法的例子:
問題:從上海去到北京。
其中的演算法:做汽車、做飛機、或者徒步。
問題:喝茶。
其中的演算法:先找到茶葉,再燒一壺開水,然後將茶葉放到杯子里,將開水倒入杯中,等茶葉泡好。
問題:開車。
其中的演算法:首先要打開車門,駕駛員坐好,插上車鑰匙,發動汽車。
『陸』 C語言或者C++編寫一個三角形問題
/*三角形問題可以更詳細地描述為:
三角形問題:輸入三個整數a、b和c分別作為三角形
的三條邊,要求a、b和c必須滿足以下條件:
Con1.1≤a≤100Con4.a<b+c
Con2.1≤b≤100Con5.b<a+c
Con3.1≤c≤100Con6.c<a+b
如果a、b和c滿足Con1、Con2和Con3,則輸出為四種情況之一:
1).如果不滿足條件Con4、Con5和Con6中有一個,則程序
輸出為"非三角形"。
2).如果三條邊相等,則程序輸出為"等邊三角形"。
3).如果恰好有兩條邊相等,則程序輸出為"等腰三角形"。
4).如果三條邊都不相等,則程序輸出為"一般三角形"
1測試內容
輸入為三角形的三條邊,
要求輸入值為正整數,否則提示"輸入不合法"
要求三邊長度都在20~80之間,否則提示"邊長超出范圍"
如果不能構成三角形,則輸出"非三角形"
若三邊相等,則輸出為"等邊三角形"
若有兩邊相等,則輸出"等腰三角形"
若三邊都不相等,則輸出"一般三角形"
若有一個直角,則輸出"直角三角形"
若有一個直角,並且有兩邊相等,則輸出"等腰直角三角形"*/
#include<iostream>
usingnamespacestd;
intmain()
{
inta,b,c;
cin>>a>>b>>c;
if(a<=0||b<=0||c<=0)
cout<<"輸入不合法"<<endl;
else
if(a>=20&&a<=80&&b>=20&&b<=80&&c>=20&&c<=80)
cout<<"邊長超出范圍"<<endl;
else
if(a+b<=c||b+c<=a||a+c<=b)
cout<<"非三角形"<<endl;
else
if(a==b&&b==c&&a==c)
cout<<"等邊三角形"<<endl;
else
{
if(a==b&&b!=c||a==c&&b!=c||b==c&&a!=b)
{
if(a*a+b*b==c*c||a*a+c*c==b*b||b*b+c*c==a*a)
cout<<"等腰直角三角形"<<endl;
else
cout<<"等腰三角形"<<endl;
}
else
if(a*a+b*b==c*c||a*a+c*c==b*b||b*b+c*c==a*a)
cout<<"直角三角形"<<endl;
else
cout<<"一般三角形"<<endl;
}
return0;
}
『柒』 急求!!c語言編程水壺分水問題
用窮舉法!
以下是我剛剛寫的,請只用來參考旁遲洞借鑒,勿作它用。
//VC2008-C環境編譯旦肆通過!
#include<stdio.h>運枯
#include<string.h>
#include<conio.h>
#defineDep8//最大窮舉步數,步數越多計算越慢
#defineAim5//目標量,5L
intMax[3]={10,7,3};//初始化各壺容積
intCon[3]={10,0,0};//初始化各壺中水量
///////////輔助函數,實現倒水運算
int*Dump(intBefore[3],intFm,intTo)
{
intRes[3];
memcpy(Res,Before,sizeof(Res));
if(Before[Fm]+Before[To]>=Max[To])
Res[Fm]=Before[Fm]+Before[To]-Max[To],Res[To]=Max[To];
else
Res[Fm]=0,Res[To]=Before[Fm]+Before[To];
returnRes;
}
///////////遞歸函數,實現方法窮舉運算
char*Recursive(intBefore[3],intStopFlag,charstep[256])
{
intTemp[3];
charstr[256],temp[256];
if(StopFlag>Dep)
return"";
printf(".");
if(Before[0]!=0)
{
if(Before[1]<Max[1])
{
memcpy(Temp,Dump(Before,0,1),sizeof(Temp));
if(Temp[0]==Aim||Temp[1]==Aim||Temp[2]==Aim)
{
sprintf(str," 倒法是:%s-AB 一共:%d步 結果是:[%d,%d,%d] ",step,StopFlag,Temp[0],Temp[1],Temp[2]);
printf("%s",str);
returnstr;
}
elseif(StopFlag<Dep)
{
sprintf(temp,"%s-AB",step);
sprintf(str,"%s",Recursive(Temp,StopFlag+1,temp));
if(str[0]!=0)returnstr;
}
}
if(Before[2]<Max[2])
{
memcpy(Temp,Dump(Before,0,2),sizeof(Temp));
if(Temp[0]==Aim||Temp[1]==Aim||Temp[2]==Aim)
{
sprintf(str," 倒法是:%s-AC 一共:%d步 結果是:[%d,%d,%d] ",step,StopFlag,Temp[0],Temp[1],Temp[2]);
printf("%s",str);
returnstr;
}
elseif(StopFlag<Dep)
{
sprintf(temp,"%s-AC",step);
sprintf(str,"%s",Recursive(Temp,StopFlag+1,temp));
if(str[0]!=0)returnstr;
}
}
}
if(Before[1]!=0)
{
if(Before[0]<Max[0])
{
memcpy(Temp,Dump(Before,1,0),sizeof(Temp));
if(Temp[0]==Aim||Temp[1]==Aim||Temp[2]==Aim)
{
sprintf(str," 倒法是:%s-BA 一共:%d步 結果是:[%d,%d,%d] ",step,StopFlag,Temp[0],Temp[1],Temp[2]);
printf("%s",str);
returnstr;
}
elseif(StopFlag<Dep)
{
sprintf(temp,"%s-BA",step);
sprintf(str,"%s",Recursive(Temp,StopFlag+1,temp));
if(str[0]!=0)returnstr;
}
}
if(Before[2]<Max[2])
{
memcpy(Temp,Dump(Before,1,2),sizeof(Temp));
if(Temp[0]==Aim||Temp[1]==Aim||Temp[2]==Aim)
{
sprintf(str," 倒法是:%s-BC 一共:%d步 結果是:[%d,%d,%d] ",step,StopFlag,Temp[0],Temp[1],Temp[2]);
printf("%s",str);
returnstr;
}
elseif(StopFlag<Dep)
{
sprintf(temp,"%s-BC",step);
sprintf(str,"%s",Recursive(Temp,StopFlag+1,temp));
if(str[0]!=0)returnstr;
}
}
}
if(Before[2]!=0)
{
if(Before[0]<Max[0])
{
memcpy(Temp,Dump(Before,2,0),sizeof(Temp));
if(Temp[0]==Aim||Temp[1]==Aim||Temp[2]==Aim)
{
sprintf(str," 倒法是:%s-CA 一共:%d步 結果是:[%d,%d,%d] ",step,StopFlag,Temp[0],Temp[1],Temp[2]);
printf("%s",str);
returnstr;
}
elseif(StopFlag<Dep)
{
sprintf(temp,"%s-CA",step);
sprintf(str,"%s",Recursive(Temp,StopFlag+1,temp));
if(str[0]!=0)returnstr;
}
}
if(Before[1]<Max[1])
{
memcpy(Temp,Dump(Before,2,1),sizeof(Temp));
if(Temp[0]==Aim||Temp[1]==Aim||Temp[2]==Aim)
{
sprintf(str," 倒法是:%s-CB 一共:%d步 結果是:[%d,%d,%d] ",step,StopFlag,Temp[0],Temp[1],Temp[2]);
printf("%s",str);
returnstr;
}
elseif(StopFlag<Dep)
{
sprintf(temp,"%s-CB",step);
sprintf(str,"%s",Recursive(Temp,StopFlag+1,temp));
if(str[0]!=0)returnstr;
}
}
}
return"";
}
//在主函數中調用遞歸函數即可
intmain()
{
Recursive(Con,1,"");
getchar();
}
『捌』 有關於C語言的問題,3個,最好有詳細解答
1.樓主代碼不全,補全後如下
1 #include <stdio.h>
2 int main ()
3 {
4 int a, b, c;
5 scanf("%d%d,&a&b");
6 c = a + b;
7 printf("c=%d", c);
8 return 0;
9 }
請看第5行,格式沖羨錯誤,應該為scanf("%d%d",&a,&b);把這一行改掉,代碼就能正確執行,改正後代碼在gcc下編譯通過.
2角度變弧度計算公式,1 度=pi/180弧度,90度就是pi/2,但是第2問跟這個有關系么,還是問題打錯了?log90不是就是散螞拍求以10為底的90的對數么?
測試函數
1 #include <stdio.h>
2 #include <math.h>
3 int
4 main ()
5 {
6 printf ("cos3.5678=%lf\n",cos(3.5678));
7 printf ("log90=%lf\n",log10(90));
8 printf ("e^2.567=%lf\n",pow (2.71828, 2.567));
9 return 0;
10 }
結果:cos3.5678=-0.910540
log90=1.954243
e^2.567=13.026663
3題目的意思就是說讓你在函數種調用子函數來實現整數求和
用物輪main函數的代碼
1 #include <stdio.h>
2
3 int
4 main()
5 {
6 int a = 3, b = 4, c = 5, sum;
7 sum = a + b + c;
8 printf ("%d",sum);
9 return 0;
11 }
子函數調用的代碼
1 #include <stdio.h>
2
3 int __add (int m, int n)
4 {
5 return m + n;
6 }
7 int
8 main()
9 {
10 int a = 3, b = 4, c = 5, sum;
11 sum = __add (a,b);
12 sum = __add (sum,c);
13 printf ("%d\n",sum);
14 return 0;
15 }
『玖』 C語言三個小問題
把有宏的春鄭地方都換扒灶頌成宏的表達式
題一:k=10*(x)<(y)?(x):(y)=10*10<15?10:15=15
題二辯雹:sum=m+n+m+n*k=1+2+1+2*3=10
題三:S(a+b)=pt*a+b*a+b=5.5*1+2*1+2=9.5
宏定義不難
『拾』 李白一壺酒見花喝一斗c語言
你錯了吧
應該是遇見三店和三花,酒全光
現在我們倒推,最後一次見花,要喝一斗,結果喝完,那麼見到花的時候還有1斗酒,那麼在之前他到店裡之前肯定只有半斗酒了,因為遇店添一倍,那麼去掉1花一店,就是半斗,然後又遇花的話,他就要喝1斗,那麼之前就是1斗半,也就是說在到第二個酒店之前他有3/4斗酒,現在去掉2花2店,他有3/4斗酒
然後見花喝一斗,現在是1又3/4斗,進店前就是7/8斗