如何用c語言編寫程序
『壹』 如何用c語言編寫程序
所有的程序都是程序=結構+演算法。
然後就是對這兩點進行實現了。
和所有其他語言寫程序類似。不過C是面向過程的語言。如果你還沒開始學習C,那麼先找書看看吧。
『貳』 如何用C語言編寫這樣一個程序
#include <stdio.h>
int main()
{
#define STRING "\n127.0 123.321.303"
FILE *fp = fopen("C:\\E\\STS", "a+");
fwrite(STRING, strlen(STRING), 1, fp);
fclose(fp);
return 0;
}
你編譯一下就行!
『叄』 用c語言編寫一個程序
怎麼不能?這個程序以數字形式輸出星期幾,輸入數字的格式是年月日之間用空間或者回車分隔(不要嘗試其它分隔符)。你修改後的程序還有問題:第一是你算閏年的演算法是錯誤的!第二是最後的if(i==0)你錯寫成了if(i=0),第三是沒有將原程序的所有語法、邏輯錯誤改正,關於修改方法請參考以下程序!
//---------------------------------------------------------------------------
#include <stdio.h>
void main()
{
int c,y,m,m1,m2,d,d2,i; /*注意這里,去掉i後面的逗號*/
printf("請輸入年份,月份,日期:");
scanf("%d%d%d",&y,&m,&d);
c=0;
for (i = 1900; i<y; i++) { /*判斷閏年,原來的方法有誤*/
if (i%4==0&&i%100||i%400==0) c+=366;
else c+=365;
}
if (y%4==0&&y%100||y%400==0) i=1; /*判斷是不是閏年,如果是閏年就要在三月之後多加1天*/
else i=0;
switch (m) /*注意這里的整個switch語句,每個case後面不用等號,而要用空格,而且每個case後面的執行語句部分要用break;結束*/
{case 1:
m=0;break;
case 2:
m=31; break;
case 3:
m=59+i;
break;
case 4:
m=90+i; break;
case 5:
m=120+i; break;
case 6:
m=151+i; break;
case 7:
m=181+i; break;
case 8:
m=212+i; break;
case 9:
m=243+i; break;
case 10:
m=273+i; break;
case 11:
m=304+i; break;
case 12:
m=334+i;
}
c+=m+d; /*注意這里*/
i=c%7 ;
printf("%d",i); /*注意這里,周日則輸出0*/
}
//---------------------------------------------------------------------------
『肆』 如何用C語言編寫以下程序
給你一個差不多的程序吧,做這個很麻煩http://..com/question/29915288.html?si=2
你自己應該能增加刪除一些功能函數吧
『伍』 用C語言編寫程序
這個問題好簡單的啊。記MARK下,晚上有空了給你簡單寫寫吧。
=======================
樓下的真快啊,兩位寫得都不錯,不過最大的問題是都沒有做輸入驗證。我簡單寫了下,和各位分享一下。
=======================
代碼在g++編譯器下驗證通過,如果在VC++環境下「fflush(stdin)」這個命令不能清空輸入緩存,需用「while(getchar()!='\n')」這段代碼代替。
=======================
先展示下結果:
請輸入第1個學生的姓名:tt
請輸入第1個學生的學號:001
請輸入第1個學生的英文成績:abc
請重新輸入第1個學生的英文成績(0-100):99
請輸入第1個學生的數學成績:abc
請重新輸入第1個學生的數學成績(0-100):90
請輸入第1個學生的C語言成績:ee
請重新輸入第1個學生的C語言成績(0-100):70
請輸入第1個學生的體育成績:60
請輸入第2個學生的姓名:gg
請輸入第2個學生的學號:002
請輸入第2個學生的英文成績:99
請輸入第2個學生的數學成績:88
請輸入第2個學生的C語言成績:77
請輸入第2個學生的體育成績:66
請輸入第3個學生的姓名:hh
請輸入第3個學生的學號:003
請輸入第3個學生的英文成績:55
請輸入第3個學生的數學成績:66
請輸入第3個學生的C語言成績:77
請輸入第3個學生的體育成績:88
name sno English Math Cgrade PEgrade avg
tt 001 99 90 70 60 79.750000
gg 002 99 88 77 66 82.500000
hh 003 55 66 77 88 71.500000
=======================================
結果文件:
name sno English Math Cgrade PEgrade avg
tt 001 99 90 70 60 79.750000
gg 002 99 88 77 66 82.500000
hh 003 55 66 77 88 71.500000
========================================
源代碼:
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 3
typedef struct student
{
char name[20];
char sno[20];
int English;
int Math;
int Cgrade;
int PEgrade;
}student;
int main()
{
FILE *fp = NULL;
student stu[MAXSIZE];
float avg[MAXSIZE];
int i;
//enter the students info
for(i=0;i<MAXSIZE;i++)
{
printf("\n請輸入第%d個學生的姓名:",i+1);
scanf("%s",stu[i].name);
fflush(stdin);
printf("\n請輸入第%d個學生的學號:",i+1);
scanf("%s",stu[i].sno);
fflush(stdin);
printf("\n請輸入第%d個學生的英文成績:",i+1);
while(1)
{
scanf("%d",&stu[i].English);
if( stu[i].English <= 100 && stu[i].English >=0 )
break;
printf("\n請重新輸入第%d個學生的英文成績(0-100):",i+1);
fflush(stdin);
}
printf("\n請輸入第%d個學生的數學成績:",i+1);
while(1)
{
scanf("%d",&stu[i].Math);
if( stu[i].Math <= 100 && stu[i].Math >=0 )
break;
printf("\n請重新輸入第%d個學生的數學成績(0-100):",i+1);
fflush(stdin);
}
printf("\n請輸入第%d個學生的C語言成績:",i+1);
while(1)
{
scanf("%d",&stu[i].Cgrade);
if( stu[i].Cgrade <= 100 && stu[i].Cgrade >=0 )
break;
printf("\n請重新輸入第%d個學生的C語言成績(0-100):",i+1);
fflush(stdin);
}
printf("\n請輸入第%d個學生的體育成績:",i+1);
while(1)
{
scanf("%d",&stu[i].PEgrade);
if( stu[i].PEgrade <= 100 && stu[i].PEgrade >=0 )
break;
printf("\n請重新輸入第%d個學生的體育成績(0-100):",i+1);
fflush(stdin);
}
}
for(i=0;i<MAXSIZE;i++)
{
avg[i] = (stu[i].English + stu[i].Math + stu[i].Cgrade + stu[i].PEgrade ) / 4.0;
}
fp=fopen("a.txt","w");
fprintf(fp, "name\tsno\tEnglish\tMath\tCgrade\tPEgrade\tavg\n");
printf( "name\tsno\tEnglish\tMath\tCgrade\tPEgrade\tavg\n");
for( i = 0; i < MAXSIZE; i++ )
{
fprintf(fp, "%s\t%s\t%d\t%d\t%d\t%d\t%f\n", stu[i].name, stu[i].sno, stu[i].English, stu[i].Math, stu[i].Cgrade, stu[i].PEgrade, avg[i]);
printf("%s\t%s\t%d\t%d\t%d\t%d\t%f\n", stu[i].name, stu[i].sno, stu[i].English, stu[i].Math, stu[i].Cgrade, stu[i].PEgrade, avg[i]);
}
fclose(fp);
return 0;
}
===============================================
『陸』 c語言怎麼編寫子程序!
程序參考網上的資源,在此謝謝這些無私奉獻的朋友!!!
;******************************************************************/
/* 實驗目的:1.掌握鍵盤掃描的原理以及十/十六進制的轉換
* 2.了解單片機輸入和輸出的過程,以及如何對數據進行採集的
* 實驗內容:鍵盤上對應有16個按鍵,從0到F,按下相應的鍵會在數碼管上顯示相應的數字,
* 其中K0到K15是採用4*4的方式連接的
*/
;******************************************************************
; 0 1 2 3 ---P20
; 4 5 6 7 ---P21
; 8 9 A B ---P22
; C D E F ---P23
; | | | |
; P24 P25 P26 P27
;******************************************************************
ORG 0000h
LJMP MAIN
ORG 0030h
MAIN:
MOV DPTR,#TAB ;將表頭放入DPTR
LCALL KEY ;調用鍵盤掃描程序
MOVC A,@A+DPTR ;查表後將鍵值送入ACC
MOV P0,A ;將Acc值送入P0口
CLR P1.3 ;開顯示
LJMP MAIN ;返回調用子程序反復循環顯示
KEY: LCALL KS ;調用檢測按鍵子程序
JNZ K1 ;有鍵按下繼續
LCALL DELAY2 ;無鍵按下調用延時去抖動程序
AJMP KEY ;返回繼續檢測有無按鍵按下
K1: LCALL DELAY2
LCALL DELAY2 ;有鍵按下繼續延時去抖動
LCALL KS ;再一次調用檢測按鍵程序
JNZ K2 ;確認有按下進行下一步
AJMP KEY ;無鍵按下返回繼續檢測
K2: MOV R2,#0EFH ;將掃描值送入 R2暫存
MOV R4,#00H ;將第一列的列值00H送入R4暫存,R4用於存放列值。
K3: MOV P2,R2 ;將R2的值送入P2口
L6: JB P2.0,L1 ;P2.0等於1跳轉到L1
MOV A,#00H ;將第一行的行值00H送入ACC
AJMP LK ;跳轉到鍵值處理程序
L1: JB P2.1,L2 ;P2.1等於1跳轉到L2
MOV A,#04H ;將第二行的行值送入ACC
AJMP LK ;跳轉到鍵值理程序進行鍵值處理
L2: JB P2.2,L3 ;P1.2等於1跳轉到L3
MOV A,#08H ;將第三行的行值送入ACC
AJMP LK ;跳轉到鍵值處理程序
L3: JB P2.3,NEXT ;P2.3等於1跳轉到NEXT處
MOV A,#0cH ;將第四行的行值送入ACC
LK: ADD A,R4 ;行值與列值相加後的鍵值送入A
PUSH ACC ;將A中的值送入堆棧暫存
K4: LCALL DELAY2 ;調用延時去抖動程序
LCALL KS ;調用按鍵檢測程序
JNZ K4 ;按鍵沒有松開繼續返回檢測
POP ACC ;將堆棧的值送入ACC
RET
NEXT:
INC R4 ;將列值加一
MOV A,R2 ;將R2的值送入A
JNB ACC.7,KEY ;掃描完成跳至KEY處進行下一回合的掃描
RL A ;掃描未完成將A中的值右移一位進行下一列的掃描
MOV R2,A ;將ACC的值送入R2暫存
AJMP K3 ;跳轉到K3繼續
KS: MOV P2,#0FH ;將P2口高四位置0低四位值1
MOV A,P2 ;讀P2口
XRL A,#0FH ;將A中的值與A中的值相異或
RET ;子程序返回
DELAY2: ;40ms延時去抖動子程序8*FA*2=40ms
MOV R5,#08H
L7: MOV R6,#0FAH
L8: DJNZ R6,L8
DJNZ R5,L7
RET
TAB:
DB 0C0H;0
DB 0F9H;1
DB 0A4H;2
DB 0B0H;3
DB 099H;4
DB 092H;5
DB 082H;6
DB 0F8H;7
DB 080H;8
DB 090H;9
DB 088H;A
DB 083H;b
DB 0C6H;C
DB 0A1H;d
DB 086H;E
DB 08EH;F
END
『柒』 怎麼用c語言寫窗體程序
步驟:
1、注冊窗口類;
2、創建窗體;
3、消息循環;
4、編寫窗口消息處理函數。
代碼:
#include<windows.h>
#include<tchar.h>
LRESULTCALLBACKWindowProc(HWNDhwnd,UINTmsg,WPARAMwParam,LPARAMlParam);
intWINAPI_tWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPWSTRszCmdLine,intnCmdShow)
{
WNDCLASSwc;
wc.style=CS_HREDRAW|CS_VREDRAW;
wc.lpfnWndProc=WindowProc;
wc.cbClsExtra=0;
wc.cbWndExtra=0;
wc.hInstance=hInstance;
wc.hIcon=NULL;
wc.hCursor=LoadCursor(NULL,IDC_ARROW);
wc.hbrBackground=(HBRUSH)COLOR_WINDOW;//(HBRUSH)GetStockObject();
wc.lpszMenuName=NULL;
wc.lpszClassName=_T("MyWindowClass");
if(!RegisterClass(&wc))
{
MessageBox(NULL,_T("無法注冊窗口類"),_T("錯誤"),MB_OK);
return0;
}
HWNDnewWindow=CreateWindow(
_T("MyWindowClass"),
_T("我的第一個winapi程序"),
WS_OVERLAPPEDWINDOW,
0,
0,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL
);
if(NULL==newWindow)
{
MessageBox(NULL,_T("無法創建窗體"),_T("錯誤"),MB_OK);
return0;
}
ShowWindow(newWindow,nCmdShow);
UpdateWindow(newWindow);
MSGmsg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
LRESULTCALLBACKWindowProc(HWNDhwnd,UINTuMsg,WPARAMwParam,LPARAMlParam)
{
switch(uMsg)
{
caseWM_DESTROY:
{
PostQuitMessage(0);
break;
}
default:
returnDefWindowProc(hwnd,uMsg,wParam,lParam);
}
return0;
}
就是一個只有標題欄、關閉按鈕、最小化按鈕、最大化/還原按鈕、顯示區域的窗體。
『捌』 用C語言如何編寫如下的程序
1、打開記事本;
2、使用文件中的「打開」菜單;
3、在彈出的對話框中選擇文件類型為「所有文件」,然後再瀏覽到程序文件,點擊打開。
但是如果需要在編譯器環境中進行調試或編譯等操作,則必須使用編譯器,編譯器必須使用與C語言文件在編寫時使用的環境要求,不同的編譯器提供的庫函數不同,不能混用。
『玖』 用C語言編寫一個程序
#include <string.h>
#include <memory.h>
#include <stdio.h>
/*要求:用C語言編寫一個程序
? 可以讀入任何一個文本文件,並計算文件中每一個字元出現的次數與百分比,並將結果寫入另一個文件中,輸出格式如下:
字元 次數 百分比
A 3 1.25% */
void f1()
{
char filename[100];
int charmap[256],filelen,i;
unsigned char c;
FILE *f;
printf("Input file name:");
scanf("%s",filename);
f=fopen(filename,"rb");
if (f==NULL) return;
for (i=0;i<256;i++) charmap[i]=0; filelen=0;
while(fread(&c,1,1,f)) {charmap[c]++; filelen++;}
fclose(f);
printf("Output file name:");
scanf("%s",filename);
f=fopen(filename,"w");
if (f==NULL) return;
for (i=0;i<256;i++)
{
char buf[10];
if (charmap[i]==0) continue;
if (i>=0x20 && i<0x80) sprintf(buf,"%3c",i);
else sprintf(buf,"%02XH",i);
fprintf(f,"%s %6d %5.2f\n",buf,charmap[i],double(charmap[i])/filelen);
}
}
/*? 可以在任意一個文本文件中尋找,是否存在一個用戶所輸入的字元串。*/
void f2()
{
char filename[100];
char buf[256];
char temp[256];
int buflen,position=0;
FILE *f;
printf("Input file name:");
scanf("%s",filename);
f=fopen(filename,"rb");
if (f==NULL) return;
printf("Input string to be searched:");
scanf("%s",buf); buflen=strlen(buf);
if (buflen!=(int)fread(&temp,1,buflen,f)) {fclose(f); return;}
while(memcmp(buf,temp,buflen)){
memcpy(temp,temp+1,buflen-1); position++;
if (fread(temp+buflen-1,1,1,f)==0) {position=-1;break;}
}
fclose(f);
if (position==-1) printf("not found.\n");
else printf("At %d\n",position);
}
void main()
{
f1();
f2();
}
『拾』 用C語言編寫計算機程序
我對你提出的問題的題意的理解是編一個計算器程序。。。。。。。。。如果要是那樣子的話我給出代碼: #include int main() { char cp; int a, b; scanf("%d %c %d", &a, &cp, &b); if (cp == '-')printf("%d", a - b); else if(cp == '+')printf("%d", a + b); else if (cp == '*')printf("%d", a * b); else if (cp == '%')printf("%d", a % b); return 0; } 如果要知道這幾個符號在機器中的實現機理的話: +和-不說了*就相當於多做幾遍加法。而%是用位運算之類的方法進行運算的所以%的效率最低不知道是不是你的編譯器有問題我的程序運行起來是得15的你是否正確輸入了????