1. 如何用c語言編譯求函數最大值急!急!急!
#include<stdio.h>
int max,x,y;
int getmax(int a,int b,int c,int d,int e,int f)
{
return (50+550*(d>f?(d-1):(f-1))+9150);
}
void main()
{
int a,b,c,d,e,f;
scanf("%d%d%d%d%d%d",&a,&b,&c,&d,&e,&f);
int r = getmax(a,b,c,d,e,f);
printf("%d 1 %d\n",r,(d>f?(d-1):(f-1)));
}
2. linux C下vi編譯,用鍵盤賦值函數怎麼寫
奇怪,這么多高手怎麼看到vi了就不回復了?
要用到stdio.h這個頭文件
首先你這個set函數要傳入指針,否則set函數里是無法改變這個參數的值的
其次,用scanf這個函數就可以獲取鍵盤輸入了.
#include<stdio.h>
int set(int * a)
{
return scanf("%d",a);
}
3. ccs中調用自編譯函數為什麼數值沒法返回
1.是否進去了死循環沒有設置退出死循環的條件;
2.中斷不能用返回語句,中斷程序盡可能的短;
3.檢查堆棧的使用情況,51單片機的堆棧是和RAM復用的,不是一個獨立的空間,檢查你的堆棧預留量是否夠用,每次調用函數都會做壓棧動作;
4.檢查是否使用了goto語句,如果有的話查看跳轉的標號處有無返回機制。
5.如果是用匯編寫的程序檢查你的程序段中有無改變DPTR的指令,有無忘寫RET指令。
4. C語言 編譯函數 輸入一段字元,求其中空格的個數
貌似幾個方面有問題:
1.接收有空格的字元串用gets(str);
scanf遇到空格自動結束接收。
2.scanf語句中,數組名就是它的地址,所以不要加&。
3.兩個函數中,getchar();這句是多餘的。
4.後一個函數中,for語句有問題(當你輸入的字元中有0時會出錯)。
5.下面代碼可以供你參考。
代碼一:
#include<stdio.h>
void main()
{
char str[30];
int i,a=0;
printf("Input string:\n");
gets(str);
for(i=0;str[i]!='0';i++)
{
if (str[i]==' ')
a++;
}
printf("%d\n",a);
}
代碼二:
#include<stdio.h>
void main()
{
char str[30];
int i,t,b=0;
printf("Input string:\n");
gets(str);
t=strlen(str);
for(i=0;i<t;i++)
{
if (str[i]>='a'&& str[i]<='z')
b++;
}
printf("%d\n",b);
}
5. 用C語言編寫函數:求一批整數中最大值和最小值的差。
根據程序的要求,我們應該要求出這批數中的最大和最小值,然後進行做差的操作,這樣就可以得出最大值與最小值的差值。
你程序的問題是函數輸入的參數有問題max_main(a[],10)應該修改成max_main(a,10),這樣才能正確的調用函數。
處理函數正確代碼如下:
int max_main(int a[], int e) {
max = a[0];
min = a[0];
for (int i = 0; i < e; i++) {
if (a[i + 1] > max)
max = a[i + 1];
if (a[i + 1] < min)
min = a[i + 1];
}
t = max - min;
return (t);
}
(5)編譯函數值擴展閱讀:
函數的分類:
庫函數,它是由系統提供的,用戶不必自己定義,可直接使用它們。應該說明,不同的c語言編譯系統提供的庫函數的數量和功能會有一些不同,當然許多基本的函數是共同的。
用戶自己定義的函數。它是以解決用戶專門需求的函數。
從函數的形式來看,函數分為兩類:
無參函數,無參函數可以帶回或不帶回函數值,但一般不帶回函數值較多。
有參函數,在調用函數時,主調函數在調用被調函數時,通過參數向被調函數傳遞數據。執行調用函數時會得到一個函數值,供主調函數使用。
C語言函數的注意事項:
C語言中不允許作嵌套的函數定義。因此各函數之間是平行的,不存在上一級函數和下一級函數的問題。
C語言允許在一個函數的定義中出現對另一個函數的調用。這樣就出現了函數的嵌套調用。即在被調函數中又調用其它函數。
參考資料來源:網路-函數調用
6. linux編譯的main函數的參數是怎麼傳值進來
方法1.
C/C++語言中的main函數,經常帶有參數argc,argv,如下:
int main(int argc, char** argv)
int main(int argc, char* argv[])
這兩個參數的作用是什麼呢?argc 是指命令行輸入參數的個數,argv存儲了所有的命令行參數。假如你的程序是hello.exe,如果在命令行運行該程序,(首先應該在命令行下用 cd 命令進入到 hello.exe 文件所在目錄) 運行命令為:
hello.exe Shiqi Yu
那麼,argc的值是 3,argv[0]是"hello.exe",argv[1]是"Shiqi",argv[2]是"Yu"。
下面的程序演示argc和argv的使用:
7. c語言問題 函數與編譯預處理
#include<stdio.h>
intk;
main()
{
intfun(intk);//如果函數定義在使用位置之後要提前聲明函數
k=3;
k=fun(k);//將k初始值傳遞過去再將返回來的函數值重新賦值給k
printf("k=%d ",k);
}
intfun(intk)
{
k=k*k;
returnk;//要返回計算得出的k值
}
建議:為了方便閱讀,建議更改一下
#include<stdio.h>
intk;
main()
{
intn;
intfun(intk0);//如果函數定義在使用位置之後要提前聲明函數,而且函數要有返回值類型
k=3;
n=fun(k);//用n接收返回來的函數值
printf("k=%d ",n);
}
intfun(intk0)
{
intk1;
k1=k0*k0;
returnk1;//要返回計算得出的k值
}
補充:函數定義格式: 返回值類型 函數名(形參);形參可要可不要,形參類型個數和函數返回值類型視情況而定
8. 在c語言中凡是未在調用前定義的函數,c語言編譯程序都默認函數返回值為整形 解釋解釋這句
就是如果返回值類型如果不寫的話,默認返回Int類數據。所以,自定義函數需要標注返回類型,否則得到的值不正確。
#include <stdio.h>
#include <stdlib.h>
#include <stddef.h>
#include <stdbool.h>
#include <string.h>
#include <math.h>
#include <stdarg.h>
float sum(int a,int b,int m,...);
main (void)
{
int x=100;
int y=200;
int z=300;
int r=400;
float t=sum(x,y,z,r,0);
printf("the resulet is %f ,",t);
return 0;
}
float sum(int a, int b,int m,...)
{
va_list p;
int c=2;
float sun=a+b+m;
int i=0;
va_start(p,m);
while ((i=va_arg(p,int))!=0)
{
sun=sun+i;
c++;
}
return sun;
}
比如這個程序,你復制,然後編譯,消除開始定義的 float ,結果完全不一樣,你多試驗,多改動幾次返回值類型,你就明白了
9. 凡是未在調用前定義的函數,c編譯程序都默認函數的返回值類型為int 給個例子
這個不對,現在的標准如果調用沒有定義沒有原型聲明的是沒法通過編譯的
倒是另外一個情況是這樣的,調用沒有顯式聲明返回值類型的函數,就認為其是整型的
比如int main()
和main()
10. 在Linux下C語言編程應用數學函數求值時編譯錯誤
你都把頭文件math.h注釋了...把注釋去掉編譯就沒有警告了.
還有你的scanf的x是int類型的,你是要一個float類型的x還是int類型的呢,你這個格式給的不對.