如何用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的你是否正确输入了????