『壹』 c語言在線編譯
#include<stdio.h>//頭文件補上
int max(int x,int y)//定義聲明函數
{
int z;
z=(x>y)?x:y;
return(z);
}
int main()
{
int a,b,c;
scanf("%d,%d",&a,&b);
c=max(a,b);//函數調用
printf("%d",c);
return 0;
}
『貳』 如何用java調用c語言編譯器實現在線編譯c語
要在java中調用c語言的庫,需要使用Java提供了JNI。
舉例說明
在c語言中定義一個 void sayHello()函數(列印Hello World);然後在Java中調用這個函數顯示Hello Word.
現在分別從Java和C語言兩部分說明:
1. Java 部分
首先定義一個HelloNative,在其中申明sayHello函數,函數要申明為Native 類型的.如下:
public class HelloNative {
public native void sayHello();
}
編譯這個類,生成class文件:
javac HelloWorld.java
利用javah生成需要的h文件
javah HelloNative
生成的 h文件大概如下:
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class HelloNative */
#ifndef _Included_HelloNative
#define _Included_HelloNative
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: HelloNative
* Method: sayHello
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_HelloNative_sayHello
(JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif
可以看一下上面自動生成的程序,程序include了jni.h,這個頭文件在 $JAVA_HOME下的include文件夾下. 還可以發現生成的函數名是在之前的函數名前面加上了Java_HelloNative。
2. C語言部分
根據上面生成的h文件編寫相應的代碼實現,建立一個 HelloNative.cpp用來實現顯示Hello World的函數.如下:
#include <stdio.h>
#include "HelloNative.h"
JNIEXPORT void JNICALL Java_HelloNative_sayHello(JNIEnv *, jobject)
{
printf("Hello World!\n");
}
代碼編寫完成之後,我們再用gcc編譯成庫文件,命令如下;
gcc -fPIC -I/usr/lib/jvm/java-7-openjdk-i386/include -I/usr/lib/jvm/java-7-openjdk-i386/include/linux -shared -o libHelloNative.so HelloNative.cpp
這樣就會在當前目錄下生成一個libHelloNative.so的庫文件.這時需要的庫已經生成,在C語言下的工作已經完成了.
接下來需要在Java中編寫一個程序測試一下.在程序前,需要將我們的庫載入進去.載入的方法是調用Java的 System.loadLibrary("HelloNative");
public class TestNative
{
static {
try {
System.loadLibrary("HelloNative");
}
catch(UnsatisfiedLinkError e) {
System.out.println( "Cannot load hello library:\n " + e.toString() );
}
}
public static void main(String[] args) {
HelloNative test = new HelloNative();
test.sayHello();
}
}
但是再編譯後,運行的時候,問題又出現了.
Cannot load hello library:
java.lang.UnsatisfiedLinkError: no HelloNative in java.library.path
Exception in thread "main" java.lang.UnsatisfiedLinkError: HelloNative.sayHello()V
at HelloNative.sayHello(Native Method)
at TestNative.main(TestNative.java:13)
載入庫失敗,但是庫明明就是放在當前文件夾下的,怎麼會載入失敗呢?
用System.getProperty("java.library.path")查看,發現java.library.path中並不u存在當前的目錄.主要有以下的幾個解決辦法:
1) 將生成的庫復制到java.library.path有的路徑中去,當然這樣不是很好
2) 設置環境變數export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH ,將當前的目錄加入到LD_LIBRARY_PATH中
3) 設置java 的選項,將當前的目錄加入到其中 .java -Djava.library.path=. $LD_LIBRARY_PATH
這樣之後程序就能夠成功的運行了.可以看見顯示的"Hello World!"了
『叄』 誰有C語言在線編譯的網址給個功能齊全的網站。
學習的話CSDN蠻不錯的,在線編譯估計是沒有的,不然還要程序員幹啥呢?C語言的學習關鍵在於自己動手編寫程序!
『肆』 能實現輸入函數的C/C++在線編譯器有哪些
我認為目前最好用的在線編譯器; http://www.mcqyy.com/RunCode/cpp/
『伍』 在線嗎請教個問題。我想用asp。net開發一個c語言在線編譯器,就是c#直接調用c編譯器實現編譯運行
類似ACM的判定平台是么
本質上還是調用C編譯器或編譯庫
把字元穿進去
你可以嘗試在網頁上起個線程直接調用外面的DLL 把字元串傳進去試試
『陸』 關於C語言程序問題,在線等編譯時提示錯誤
#include<stdio.h>
#include<stdlib.h>
main()
{
FILE *fp1,*fp2,*fp3;
char pic[20],file[20],result[20];
char ch;
printf("請輸入所要合成的圖片和文件的文件名:\n");
printf("圖片的名字:");
scanf("%s",pic);
printf("請輸入文件的名字:");
scanf("%s",file);
printf("請輸入你所要合成後的文件的名字:");
scanf("%s",result);
if(!(fp1=fopen(pic,"rb")))
{
printf("不能打開這個文件!");
exit(0);
}
if(!(fp2=fopen(file,"rb")))
{
printf("不能打開這個文件!");
exit(0);
}
if(!(fp3=fopen(result,"wb")))
{
printf("不能打開這個文件!");
exit(0);
}
while(!feof(fp1))
{
ch=fgetc(fp1);
fputc(ch,fp3);
}
fclose(fp1);
while(!feof(fp2))
{
ch=fgetc(fp2);
fputc(ch,fp3);
}
fclose(fp2);
fclose(fp3);
printf("恭喜你,合成成功!\n");
}
『柒』 C語言編譯,在線等!!!!
你好!!
首先你的代碼有基礎錯誤:
修改如下:
#include<stdio.h>
main()
{
int
i
,k=0,s[10]={1,2,3,4,5,6,7,8,9,10};
for(i=0;i<10;i++)
if(i%2)
k+=s[i];
for(i=i-1;i>=0;i--)
if(i%5==0)
printf("%d
",s[i]);
printf("%d
",k);
}
代碼中的第一個循環就是把數組s中的偶數加在一起故k=2+4+6+8+10=30,輸出k的值就是30;
第二個循環:顯示判斷下標是5的倍數,下標中只有0
5
滿足條件
然後就是輸出s[5],s[0],即6
1
所以答案是6130
『捌』 c語言在線編譯判題系統用java怎麼實現
java 生成一個.c文件, 里的 Runtime.exec 調用一個C的批處理來編譯,返回結果給頁面
『玖』 能在網上在線編譯C語言,並編譯呈現出來的網站是什麼
http://acm.h.e.cn/