Ⅰ 大一软件c语言项目,求源代码
第一种方法:
#include
int main()
{
int x,ge,shi,;
printf("请输入一个三位数:\n");
scanf("%d",&x);
ge=x%10;
shi=x/10%10;
=x/100;
printf("这个三位数的逆序是:\n%d\n",ge*100+shi*10+);
return 0;
}
第二种方法:
#include
#include
int main()
{
char str[10];
printf("请输入一个三位数:\n");
scanf("%s",str);
printf("这个三位数的逆序是:\n");
for(int i=strlen(str)-1;i>=0;i--)
printf("%c",str[i]);
printf("\n");
return 0;
}
Ⅱ C语言编程问题要完整的源代码
#include<iostream.h>
#include<stdio.h>
#include<ctype.h>
struct ca {
char c;
ca *next;
};
void InitList(ca *L) {
cout<<"输入一页文字(以#结束): "<<endl;
while((L->c = getchar()) != '#') {
L->next = new ca;
L = L->next;
}
L->next = NULL;
}
void StrNo(ca *L) {
int n = 0;
char s[80], *q;
ca *p;
cout<<"输入一字符串: ";
cin>>s;
while(L->next) {
for (p = L, q = s; *q != '\0' && p->next; p = p->next, q++)
if (p->c != *q) break;
if (*q == '\0') n++;
L = L->next;
}
cout<<"字符串 "<<s<<" 出现 "<<n<<" 次\n";
}
ca *DelStr(ca *L) {
ca *H = L;
char s[80], *q;
ca *p;
cout<<"输入该子串: ";
cin>>s;
if (H->c == *s) {
for (p = H->next, q = s+1; *q != '\0' && p->next; p = p->next, q++)
if (p->c != *q) break;
if (*q == '\0') H = p;
}
while(L->next) {
for (p = L->next, q = s; *q != '\0' && p->next; p = p->next, q++)
if (p->c != *q) break;
if (*q == '\0') L->next = p;
else L = L->next;
}
return H;
}
void print1(ca *L) {
while(L->next) {
cout<<L->c;
L = L->next;
}
cout<<endl;
}
void print2(ca *L, int &p1, int &p2, int &p3, int &n) {
n = p1 = p2 = p3 = 0;
for( ; L->next; L = L->next, n++)
if(isalpha(L->c)) p1++;
else if(isdigit(L->c)) p2++;
else if(L->c == ' ') p3++;
else if(L->c == '\n') n--;
cout<<"\n全部字母数: "<<p1;
cout<<"\n数字个数: "<<p2;
cout<<"\n空格个数: "<<p3;
cout<<"\n文章总字数: "<<n<<endl;
}
void main() {
ca *L = new ca;
int p1, p2, p3, n, c;
InitList(L);
do {cout<<"\n0:退出\n"
"1:统计中英文字母和空格数以及整篇文章总字数\n"
"2:统计某一字符串在文章中出现次数\n"
"3:删除某一子串\n"
"4:分行输出用户输入的各行字符\n";
cin>>c;
switch(c) {
case 1:print2(L, p1, p2, p3, n);break;
case 2:StrNo(L);break;
case 3:DelStr(L);
case 4:print1(L);
}
}while(c);
Ⅲ c语言程序 课程设计 求大神给个源代码
int Conversion(char num[20], int t, int n)
{
int i,ii,j,k,m,x,b[30],h[30],c;
double d,r;
ii=0;
p=0;
memset(out,0,20);
m=strlen(num);//求字符串的长度
x=m;
for(k=0,j=0;k<m;k++)//主要是分段,以小数点为界限,只转换整数部分
{
if(num[k]=='.')
{
x=k;
break;
}
}
for(j=x-1;j>=0;j--)
{
if(num[j]=='-') break; //符号的处理
if(num[j]=='A') r=10;
else if(num[j]=='B')
r=11;
else if(num[j]=='C')
r=12;
else if(num[j]=='D')
r=13;
else if(num[j]=='E')
r=14;
else if(num[j]=='F')
r=15;
else
r=num[j]-'0';//将字符转换成数字
p=p+r*(pow ((double)t,(double)(x-j-1)));//计算结果
}
if(num[x]=='.')
{
for(j=x+1;j<m;j++)
{
if(num[j]=='A') r=10;
else if(num[j]=='B')
r=11;
else if(num[j]=='C')
r=12;
else if(num[j]=='D')
r=13;
else if(num[j]=='E')
r=14;
else if(num[j]=='F')
r=15;
else
r=num[j]-'0';//将字符转换成数字
p=p+r*(pow ((double)t, (double)(x-j)));
}
}
//g_print("%f",p);
if(n==10)//如果要转换成十进制
{
if(num[0]=='-')
{
p=-p;
}
return 0;
}
else //如果要转换成其他进制
{
k=(int)p;
i=0;
while(k)//判定需要转换的数是否变为0
{
h[i++]=k%n;//取余,进行进制转换,但是顺序与正确值相反
k/=n;//转换一位之后进行相应的变化
}
c=0;
if(p!=(int)p)//选择性计算,如果是整数就不用进行这一步的计算了
{
d=p-(int)p;//取小数部分
while(d!=0)
{
b[c]=(int)(d*n);//算法为×N取整
d=d*n-b[c];
c++;
if(c>=10)
break;//主要是控制小数后面万一出现无限小数的时候好跳出循环以免出现死循环
}
}
if(num[0]=='-')
{
out[0]='-';
ii++;
}
for(j=i-1;j>=0;j--,ii++)//反序输出,大于10的数字进行相应的变化
{
if(h[j]==10) out[ii]='A';
else if(h[j]==11) out[ii]='B';
else if(h[j]==12) out[ii]='C';
else if(h[j]==13) out[ii]='D';
else if(h[j]==14) out[ii]='E';
else if(h[j]==15) out[ii]='F';
else if(h[j]==9) out[ii]='9';
else if(h[j]==8) out[ii]='8';
else if(h[j]==7) out[ii]='7';
else if(h[j]==6) out[ii]='6';
else if(h[j]==5) out[ii]='5';
else if(h[j]==4) out[ii]='4';
else if(h[j]==3) out[ii]='3';
else if(h[j]==2) out[ii]='2';
else if(h[j]==1) out[ii]='1';
else out[ii]='0';
}
if(p!=(int)p)//选择性输出,这样可以节约输出时间和程序的运行时间
{
out[ii++]='.';
for(j=0;j<c;j++)//正序输出
{
if(b[j]==10) out[ii]='A';
else if(b[j]==11) out[ii]='B';
else if(b[j]==12) out[ii]='C';
else if(b[j]==13) out[ii]='D';
else if(b[j]==14) out[ii]='E';
else if(b[j]==15) out[ii]='F';
else if(b[j]==9) out[ii]='9';
else if(b[j]==8) out[ii]='8';
else if(b[j]==7) out[ii]='7';
else if(b[j]==6) out[ii]='6';
else if(b[j]==5) out[ii]='5';
else if(b[j]==4) out[ii]='4';
else if(b[j]==3) out[ii]='3';
else if(b[j]==2) out[ii]='2';
else if(b[j]==1) out[ii]='1';
else out[ii]='0';
ii++;
}
}
//puts(out);
return 0;
}
}
参考 http://www.cnblogs.com/kongtiao斜杠archive/2012/04/20/2459523.html
Ⅳ 用C语言编程,要完整的源代码;谢谢!
/*万年历*/
#include<stdio.h>
#include<stdlib.h>
int isLeap(int year) //判断闰年
{
if(year%4!=0)
{
return 0;
}
else if(year%100!=0)
{
return 1;
}
else if(year%400!=0)
{
return 0;
}
else
{
return 1;
}
}
int GetMonthDays(int year,int month)//判断天数
{
switch(month){
case 1:case 3:case 5:case 7:case 8:case 10:case 12:return 31;break;
case 4:case 6:case 9:case 11:return 30;break;
case 2:if(isLeap(year)==1)
{
return 29;
}
else
{
return 28;
};break;
default:return 0;
}
}
int GetWeekDay(int year,int month,int day)//判断days天是星期几
{
int days;//总天数
int i=1;//计月份
int weekday;
days=(year-1)*365+(year-1)/4+(year-1)/400-(year-1)/100;
while(i<month)
{
days+=GetMonthDays(year,i);
i++;
}
days+=day;
weekday=days%7;
return weekday;
}
void PrintMonthCalender(int startDay,int days)//输出日历
{
int m=0;//计数空
int n=1;//计日期
while(m<startDay)
{
printf(" ");
m++;
}
while(n<=days)
{
printf("%d ",n);
if((n+m)%7==0)
{
printf("\n");
}
n++;
}
}
main()
{
int year,month,startDay,days;
printf("Please input year and month:");
scanf("%d %d",&year,&month);
startDay=GetWeekDay(year,month,1)%7;
days=GetMonthDays(year,month);//取得起始天和天数
printf("The result is:\n %d-%d\nSun. Mon. Tue. Wed. Thu. Fri. Sat.\n",year,month);
PrintMonthCalender(startDay,days);
system("pause");
return 0;
}
哇咔咔。。终于找到了,我们上个月的作业,哦哦呵呵。。。给我分吧
Ⅳ 开发一个c语言程序要经过哪四个步骤
开发一个C语言程序需要经过的四个步骤:编辑、编译、连接、运行。
C语言程序可以使用在任意架构的处理器上,只要那种架构的处理器具有对应的C语言编译器和库,然后将C源代码编译、连接成目标二进制文件之后即可运行。
1、预处理:输入源程序并保存(.C文件)。
2、编译:将源程序翻译为目标文件(.OBJ文件)。
3、链接:将目标文件生成可执行文件( .EXE文件)。
4、运行:执行.EXE文件,得到运行结果。
(5)c语言项目开发全程实录源码扩展阅读:
C语言代码变为程序的几个阶段:
1、首先是源代码文件test.c和相关的头文件,如stdio.h等被预处理器cpp预处理成一个.i文件。经过预编译后的.i文件不包含任何宏定义,因为所有的宏已经被展开,并且包含的文件也已经被插入到.i文件中。
2、编译过程就是把预处理完的文件进行一系列的词法分析、语法分析、语义分析以及优化后产生相应的汇编代码文件,这个过程往往是我们所说的整个程序的构建的核心部分,也是最复杂的部分之一。
3、汇编器不直接输出可执行文件而是输出一个目标文件,汇编器可以调用ld产生一个能够运行的可执行程序。即需要将一大堆文件链接起来才可以得到“a.out”,即最终的可执行文件。
4、在链接过程中,对其他定义在目标文件中的函数调用的指令需要被重新调整,对实用其他定义在其他目标文件的变量来说,也存在同样问题。
参考资料来源:网络-c语言
Ⅵ 跪求C语言项目实例及源码
给你一个输出乘法表和除法表的代码。
#include<stdio.h>
#include<stdlib.h>
void main()
{
int i,j,m,cs;
printf("we are going to show your table no more than 10\n,for sum table press 1,for mulity talbe press 2\n\n");
scanf("%d",&cs);
switch(cs)
{
case 1:
for(i=1;i<10;i++)
{printf("\n");
for(j=1;j<10-i;j++)
{
m=i+j;
printf("%d+%d=%d\t",i,j,m);
}
}
break;
case 2:
printf("M\t");
for(i=1;i<10;i++)
printf("%d\t",i);
for(i=1;i<10;i++)
{printf("\n%d\t",i);
for(j=1;j<10;j++)
{
m=i*j;
printf("%d*%d=%d\t",i,j,m);
}
}
break;
default: printf("You are a fool,press only 1 or 2");
}
getchar();
printf("Isn't it a great thing?");
getchar();
}
再给你个贪吃蛇源代码。绝对可以通过,不过环境是TC
#define N 200
#include <graphics.h>
#include <stdlib.h>
#include <dos.h>
#define LEFT 0x4b00
#define RIGHT 0x4d00
#define DOWN 0x5000
#define UP 0x4800
#define ESC 0x011b
int i,key;
int score=0;/*得分*/
int gamespeed=50000;/*游戏速度自己调整*/
struct Food
{
int x;/*食物的横坐标*/
int y;/*食物的纵坐标*/
int yes;/*判断是否要出现食物的变量*/
}food;/*食物的结构体*/
struct Snake
{
int x[N];
int y[N];
int node;/*蛇的节数*/
int direction;/*蛇移动方向*/
int life;/* 蛇的生命,0活着,1死亡*/
}snake;
void Init(void);/*图形驱动*/
void Close(void);/*图形结束*/
void DrawK(void);/*开始画面*/
void GameOver(void);/*结束游戏*/
void GamePlay(void);/*玩游戏具体过程*/
void PrScore(void);/*输出成绩*/
/*主函数*/
void main()
{
Init();/*图形驱动*/
DrawK();/*开始画面*/
GamePlay();/*玩游戏具体过程*/
Close();/*图形结束*/
system("pause");
}
/*图形驱动*/
void Init(void)
{
int gd=DETECT,gm;
initgraph(&gd,&gm,"d:\\tc");
cleardevice();
}
/*开始画面,左上角坐标为(50,40),右下角坐标为(610,460)的围墙*/
void DrawK(void)
{
/*setbkcolor(LIGHTGREEN);*/
setcolor(11);
setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*设置线型*/
for(i=50;i<=600;i+=10)/*画围墙*/
{
rectangle(i,40,i+10,49); /*上边*/
rectangle(i,451,i+10,460);/*下边*/
}
for(i=40;i<=450;i+=10)
{
rectangle(50,i,59,i+10); /*左边*/
rectangle(601,i,610,i+10);/*右边*/
}
}
/*玩游戏具体过程*/
void GamePlay(void)
{
randomize();/*随机数发生器*/
food.yes=1;/*1表示需要出现新食物,0表示已经存在食物*/
snake.life=0;/*活着*/
snake.direction=1;/*方向往右*/
snake.x[0]=100;snake.y[0]=100;/*蛇头*/
snake.x[1]=110;snake.y[1]=100;
snake.node=2;/*节数*/
PrScore();/*输出得分*/
while(1)/*可以重复玩游戏,压ESC键结束*/
{
while(!kbhit())/*在没有按键的情况下,蛇自己移动身体*/
{
if(food.yes==1)/*需要出现新食物*/
{
food.x=rand()%400+60;
food.y=rand()%350+60;
while(food.x%10!=0)/*食物随机出现后必须让食物能够在整格内,这样才可以让蛇吃到*/
food.x++;
while(food.y%10!=0)
food.y++;
food.yes=0;/*画面上有食物了*/
}
if(food.yes==0)/*画面上有食物了就要显示*/
{
setcolor(GREEN);
rectangle(food.x,food.y,food.x+10,food.y-10);
}
for(i=snake.node-1;i>0;i--)/*蛇的每个环节往前移动,也就是贪吃蛇的关键算法*/
{
snake.x[i]=snake.x[i-1];
snake.y[i]=snake.y[i-1];
}
/*1,2,3,4表示右,左,上,下四个方向,通过这个判断来移动蛇头*/
switch(snake.direction)
{
case 1:snake.x[0]+=10;break;
case 2: snake.x[0]-=10;break;
case 3: snake.y[0]-=10;break;
case 4: snake.y[0]+=10;break;
}
for(i=3;i<snake.node;i++)/*从蛇的第四节开始判断是否撞到自己了,因为蛇头为两节,第三节不可能拐过来*/
{
if(snake.x[i]==snake.x[0]&&snake.y[i]==snake.y[0])
{
GameOver();/*显示失败*/
snake.life=1;
break;
}
}
if(snake.x[0]<55||snake.x[0]>595||snake.y[0]<55||
snake.y[0]>455)/*蛇是否撞到墙壁*/
{
GameOver();/*本次游戏结束*/
snake.life=1; /*蛇死*/
}
if(snake.life==1)/*以上两种判断以后,如果蛇死就跳出内循环,重新开始*/
break;
if(snake.x[0]==food.x&&snake.y[0]==food.y)/*吃到食物以后*/
{
setcolor(0);/*把画面上的食物东西去掉*/
rectangle(food.x,food.y,food.x+10,food.y-10);
snake.x[snake.node]=-20;snake.y[snake.node]=-20;
/*新的一节先放在看不见的位置,下次循环就取前一节的位置*/
snake.node++;/*蛇的身体长一节*/
food.yes=1;/*画面上需要出现新的食物*/
score+=10;
PrScore();/*输出新得分*/
}
setcolor(4);/*画出蛇*/
for(i=0;i<snake.node;i++)
rectangle(snake.x[i],snake.y[i],snake.x[i]+10,
snake.y[i]-10);
delay(gamespeed);
setcolor(0);/*用黑色去除蛇的的最后一节*/
rectangle(snake.x[snake.node-1],snake.y[snake.node-1],
snake.x[snake.node-1]+10,snake.y[snake.node-1]-10);
} /*endwhile(!kbhit)*/
if(snake.life==1)/*如果蛇死就跳出循环*/
break;
key=bioskey(0);/*接收按键*/
if(key==ESC)/*按ESC键退出*/
break;
else
if(key==UP&&snake.direction!=4)
/*判断是否往相反的方向移动*/
snake.direction=3;
else
if(key==RIGHT&&snake.direction!=2)
snake.direction=1;
else
if(key==LEFT&&snake.direction!=1)
snake.direction=2;
else
if(key==DOWN&&snake.direction!=3)
snake.direction=4;
}/*endwhile(1)*/
}
/*游戏结束*/
void GameOver(void)
{
cleardevice();
PrScore();
setcolor(RED);
settextstyle(0,0,4);
outtextxy(200,200,"GAME OVER");
getch();
}
/*输出成绩*/
void PrScore(void)
{
char str[10];
setfillstyle(SOLID_FILL,YELLOW);
bar(50,15,220,35);
setcolor(6);
settextstyle(0,0,2);
sprintf(str,"score:%d",score);
outtextxy(55,20,str);
}
/*图形结束*/
void Close(void)
{
getch();
closegraph();
}
Ⅶ 求C语言写程序,求源代码
写一个简单程序给你参考。
用 C 写的第一个一个窗口程序
作为编程的开始,我们还是以一个Hello World来开始我们的学习之旅。代码如下:
#include <stdio.h>
void main()
{
printf("Hello World!");
}
这是一个再简单不过的C程序了,只要有点C语言的知识就能够懂的,不过这里估计还有些人,到现在还不知道#include
<stdio.h>中的头文件stdio.h到底是什么东西,我就来说下了,stdio.h是一个文本文件,存在于磁盘上的,已VC为例
由于上不了图就这样吧。
stdio.h中定义printf函数,我在引用了stdio.h头文件后就可以在程序中调用printf函数了。
上面是在命令行中显示一个“Hello World!”,没什么意思,下面我写一个窗口程序,显示个Hello World!
#include <windows.h>
void main()
{
MessageBox(NULL,"Hello World!","我的第一个窗口程序",MB_OK);
}
弹出的是一个对话框,上面有Hello World,还有一个标题和一个“确定”按钮。
当然你会说这对话框也算个窗口吗?这里肯定的告诉你:是的,对话框是窗口程序的一个子集。你可能还会这样问,这样一个简单的窗口有啥用呢,其实这样的窗口非常有用,我们在操作计算机的时候,会出现一些警告或提示的对话框,都是基本是这种方法写出来的。就算是这个很简单,学习本来不就是有易向难,有浅显深奥去的过程吗。
整个效果几乎就是靠一个函数MessageBox的功劳。这里也先不介绍这个函数了,说些其他的
Ⅷ 在哪里可以找到C语言标准库的实现源代码
Linux下的glic库的源码链接:
http://ftp.gnu.org/gnu/glibc/,你可以下载最新版本的glibc-2.24.tar.gz这个压缩文件,在Windows系统下直接用WinRAR解压即可,如果在Linux系统下用命令行解压的话,命令如下:tar -xzvf glibc-2.24.tar.gz。
Ⅸ 求C语言课程设计源代码 急~!!
#include "stdio.h"
#define MAX 100 /*定义输入数据的最大长度*/
void countmax(int a[MAX],int N){ /*计算最值的函数*/
int minn=a[0],maxx=a[0]; /*minn表最小值,maxx表最大值*/
for(int i=0;i<=N;i++){ /*N是实际输入数组的长度*/
if(a[i]<minn) /*循环求最值*/
minn=a[i];
else
if(a[i]>maxx)
maxx=a[i];
}
printf("\n最小值:%d\n最大值:%d\n",minn,maxx);
printf("\n————————————————————————\n");
}
void found(int a[MAX],int N){ /*查找函数*/
int Flag = 1,x; /*Flag用来标记是否查找成功,0表成功,1表未成功*/
printf("请输入你要查找的数: ");
scanf("%d",&x); /*x是待查找的数*/
for(int i=0;i<=N;i++){
if(a[i]==x){
printf("所找的数在数组中的位置是第 %d 位\n",i+1);
Flag = 0;
break;
}
}
if(Flag == 1)
printf("Not Found!\n");
printf("————————————————————————\n");
}
void deletedata(int a[MAX],int N){ /*删除操作函数*/
int Flag = 1,x,pos; /*Flag用来标记是否删除成功,0表成功,1表未成功,pos用来记录删除的位置*/
printf("请输入你要删除的数: ");
scanf("%d",&x);
for(int i = 0;i <= N;i++){ /*在数组中循环查找所要删除的数*/
if(a[i]==x){
for(int j=i;j<=N;j++) /*删除位置后的数全部向前移动一位*/
a[j]=a[j+1];
Flag = 0;
N--; /*数组长度减1*/
pos = i; /*记录删除位置*/
break;
}
}
if(Flag==1)
printf("Not Found!");
else{
printf("删除成功!\n");
printf("所删除的数在数组中的位置是第 %d 位\n",pos+1);
}
printf("删除操作后的数据为:\n");
for(int j=0;j<=N;j++)
printf("%d ",a[j]);
printf("\n————————————————————————\n");
}
void sumdata(int a[MAX],int N){ /*求奇数和偶数函数*/
int SUM1=0,SUM2=0,N1=0,N2=0;
/*SUM1表示偶数之和,N1表偶数个数
**SUM2表示奇数之和,N2表奇数个数
*/
for(int i=0;i<=N;i++){
if(a[i]%2==0){
N1++;
SUM1 = SUM1 + a[i];
}
else{
N2++;
SUM2 = SUM2 + a[i];
}
}
printf("数据中的偶数个数为: %d 个,平均值为: %d\n",N1,SUM1/N1);
printf("数据中的奇数个数为: %d 个,平均值为: %d\n",N2,SUM2/N2);
printf("————————————————————————\n");
}
int main(){
int i=0,k,N,a[MAX],data;
/*k用来标记所选择的操作,data表示输入的数据,a数组用来存储输入的数据*/
printf("请输入数据:\n");
scanf("%d",&data);
while(data!=0){
a[i]=data;
scanf("%d",&data);
N=i++;
}
printf("\n您输入了%d个数据,如下所示:\n",N+1);
for(i=0;i<=N;i++)
printf("%d ",a[i]);
printf("\n————————————————————————");
printf("\n\n请选择下面的一个项目:\n");
printf("1、求最值\n2、查找\n3、删除\n4、统计及平均\n5、退出\n");
printf("————————————————————————\n");
scanf("%d",&k);
switch(k){
case 1:
countmax(a,N);
break;
case 2:
found(a,N);
break;
case 3:
deletedata(a,N);
break;
case 4:
sumdata(a,N);
break;
case 5:
break;
default:
break;
}
return 0;
}