Ⅰ 求編寫一個c語言程序

根據題目要求定義結構類型,比如:
typedef struct stuInfo
{
int id;//學號
char name[20];//學生姓名
int type;//上機類別0:上課1:普通上機2:上網
char logTime[50];//上機時回間答
char outTime[50];//下機時間
………等等其它成員變數,如想用鏈表,還可以再加一個指針:struct stuInfo *next;
}STUINFO;
然後就可以用該類型STUINFO定義結構數組變數或者是鏈表。
用fopen函數打開文件獲得文件流FILE*,然後用fscanf函數把文件流中的數據讀取到結構變數中就能達到題目要求。

Ⅱ C語言的基本格式是什麼

c語言最基本的格式,可以參考最基本的hello
world程序。hello
world程序雖然小,但是幾乎包含和計算機軟體技術相關的各種基礎知識。
#include
int main()
{
printf("hello world\n");
return 0;
}1、#include
預處理操作,談到預處理操作,就需要了解c語言編譯器生成二進制可執行文件的過程,一般為預處理階斷、編譯階斷、匯編階斷、鏈接階斷。
預處理階斷:進行預處理操作,有預處理器來完成。
編譯階斷:有c語言編譯器完成,它負責將c語言源碼轉換成匯編指令。要深入下去就是編譯原理知識。
匯編階斷:有匯編器完成,它負責將匯編指令轉換成二進制機器碼。要深入下去就是匯編語言以及反匯編、調試技術的內容
鏈接階斷:有鏈接器完成,它負責將二進制機器碼裝載成一個可執行文件,如果要深入的探索下去,就是windows或者linux平台上的庫編程以及相可執行文件格式的學習,比如windows平台的pe文件格式,如果把pe格式搞明白,自己可以直接用二進制編寫一個程序,這沒有不可思議,實際上是網上有這方面的帖子。
2、int
main()
每個c語言程序有且只有一個main函數,一般的教科書上只有一句:「有系統調用main函數」,
那麼到底
是系統中的誰調用了此函數,如此深入下去,可以加深對應用程序執行的理解,實際上在linux平台上有,_start()函數調用main函數,在windows平台上有啟動函數maincrtstartup函數來調用main函數。
3、printf("hello
world\n")
這是c語言的成功之處之一,c語言將輸入、輸出操作設置為一個標准,這大大方便了應用程序開發,也提高了應用程序的可稱植性。自己有興趣可以深入的去探索。
4、return
0
return
0,返回值的0表示程序執行成功了。

Ⅲ c語言程序模板

//考慮在輸入非數字或非純數字的時候要報錯
main()
{
char str[100];
int i;
float c, f; //聲明攝氏和華氏溫回度答變數

printf("請輸入華氏溫度:"); //提示輸入華氏溫度
scanf("%s", str); //將輸入的字元串保存到變數str數組中

for (i = 0; i < strlen(str); i++) {
if (str[i] < '0' || str[i] > '9') {
printf("輸入不是純數字");
return;
}
} //判斷輸入的字元串里是否只有數值字元
f = atof(str); //將數值字元轉換成浮點數
c = 5.0 / 9 * (f - 32); //計算攝氏溫度
printf("攝氏溫度是%0.2f", c); //保留兩位小數輸出
}
//直接運行通過

Ⅳ 在c語言中如何實現函數模板

各種用 C 語言實現的模板可能在使用形式上有所不同。現以一個求和函數 Sum 為例,用 C++ Template 可寫如下:
template R Sum(const T *array, int n)
{
R sum = 0;
for (int i = 0 ; i < n ; ++i)
sum += i;
return sum;
}

如果不是內置類型,該模板隱式地需要 有R R::operator+=(T)運算符可用。
1. 使用函數指針作為 Functor 替換者

Typedef struct tagAddClass
{
Void (*add)(char* r1, const char* r2);
Int elemSize;
Char sum[MAX_ELEM_SIZE];
} AddClass;
void Sum(AddClass* self, const char* array, int n)
{
for (int i = 0 ; i < n ; ++i)
self->add(self->sum, array + i*self->elemSize);
}
使用時:
Void AddInt(char* r1, const char* r2) {
*(long*)r1 += *(int*)r2; }
AddClass addClass = {AddInt, 2, 0 };
Int array[100];
Read(array);
Sum(&addClass, array, 100); …..
2. 用宏作為Functor的替換者
#define GenSumFun(SumFunName, Add, RetType, ElemType)
RetType SumFunName (const ElemType *array, int n) \
{
RetType sum = 0;
for (int i = 0 ; i < n ; ++i)
Add(sum, i);
return sum; }
使用時:
#define AddInt(x, y) ((x) += (y))
GenSumFun(SumInt, AddInt, long, int) …..
Int array[100];
Read(array);
Long sum = SumInt(array, 100); …..
3. 所有可替換參數均為宏
至少需要一個額外的文件(實現文件)為 impsum.c
/* impsum.c */
RetType FunName(const ElemType *array, int n)
{
RetType sum = 0;
for (int i = 0 ; i < n ; ++i)
Add(sum, i);
return sum; }
使用時:
#undef RetType
#undef FunName
#undef ElemType
#undef Add
#define AddInt(x, y) ((x) += (y))
#define RetType long
#define FunName SumInt
#define ElemType int
#define Add AddInt
#include impsum.c …..
Int array[100];
Read(array);
Long sum = SumInt(array, 100);

4. 總結:
第一種方法,易於跟蹤調試,但是效率低下,適用於對可變函數(函數指針)的效率要求不高,但程序出錯的可能性較大(復雜),模板函數(Sum)本身很復雜,模板參數也比較復雜(add)的場合。
第二種方法,效率高,但很難跟蹤調試,在模板函數和模板參數本身都很復雜的時候更是如此。
第三種方法,是我最近幾天才想出的,我認為是最好的,在模板參數(Add)比較復雜時可以用函數(第二種也可以如此),簡單時可以用宏,並且,易於調試。在模板函數本身很復雜,而模板參數比較簡單時更為優越。但是,可能有點繁瑣。

Ⅳ 有用c語言編寫程序的模板嗎

#include"stdio.h"
#include"stdlib.h"
typedef struct Node
{
int data;
struct Node *next;
}NODE;
typedef struct
{
NODE *top;
}Stack;
#define TRUE 1
#define FALSE 0
#define OK 1
#define OVERFLOW -2
typedef int Status;
void InitStack(Stack &S)
{
S.top=(NODE *)malloc(sizeof(NODE));
if(!S.top)
(OVERFLOW);
S.top->next=NULL;
}
Status StackEmpty(Stack S)
{
if(S.top->next==NULL)
return(TRUE);
else return(FALSE);
}
void Push(Stack &S,int e)
{
NODE *p;
p=(NODE *)malloc(sizeof(NODE));
if(!p)
return;
p->data=e;
p->next=S.top->next;
S.top->next=p;
}
void Pop(Stack &S,int &e)
{
NODE *p;
if(StackEmpty(S))
return;
else
{
p=S.top->next;
e=p->data;
S.top->next=p->next;
free(p);
}
}
int Gettop(Stack &S)
{
NODE *p;
if(StackEmpty(S))
return(0);
else
{
p=S.top->next;
return(p->data);
}
}

#include "linksq.h"
void main()
{
int select;
int num=1,e;
Stack S;
InitStack(S);
do{
printf("\n1 Push 2 Pop\n");
printf("0 exit\n please select(0--2)\n");
scanf("%d",&select);
switch(select)
{
case 1:
printf("Push%2d",num);
Push(S,num++);
break;
case 2:
if(!StackEmpty(S))
{
Pop(S,e);
printf("Pop %2d ",e);
}
else
printf("Empty!\n");
break;
case 0:
break;
}
}
while(select);
}
這是c語言版的數據結構的一段程序

Ⅵ c語言編程時的模板裡面{跟//是什麼意思

{和}是匹配的
表示一個單獨的程序段。
當if while for等 這類控制語句,要包含多餘一句的語句時 需要用{}括起來。

//表示注釋 。 //之後到行末 只給編寫程序的人看, 編譯器不會處理。

Ⅶ 編寫c語言程序時構成程序的基本模板叫什麼

編寫c語言程序時構成程序的基本模板叫:函數

Ⅷ 51單片機C語言編程模板,就是C語言編程萬用的框架... 哪位有的發一份給我 謝謝了...

難道是從電腦開發過來的?

這個一條代碼都能有效果的……框架……如果是搞不懂寄存器什麼的,弄一個51單片機小精靈~

Ⅸ c語言實現模板

只有想不到,沒有做不到,等待解答

Ⅹ c語言編程在線急(用標簽里的代碼模板)

#include"stdio.h"
voidoutput(inta[],intn);
main()
{
intn,i,j,x,pos;
intc=0;//c表示有效的數據個數
inta[20];
scanf("%d",&n);
for(i=0;i<n;i++)//插入n個數據
{
scanf("%d",&x);
//查找插入的位置pos,並且向後移動數據
for(pos=c;pos>0;pos--)
if(x<a[pos-1])
a[pos]=a[pos-1];
else
break;

a[pos]=x;//在pos位置插入數據
c++;//個數加1
}
output(a,n);
return0;
}

voidoutput(inta[],intn)
{
inti;
for(i=0;i<n;i++)
printf("%d",a[i]);
printf(" ");
}