当前位置:首页 » 编程语言 » c语言大型代码
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言大型代码

发布时间: 2022-07-27 21:40:58

c语言程序代码

例如:输入某年某月某日,判断这一天是这一年的第几天。
1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊
情况,闰年且输入月份大于3时需考虑多加一天。
2.程序源代码:

复制代码 代码如下:

main()
{
int day,month,year,sum,leap;
printf("\nplease input year,month,day\n");
scanf("%d,%d,%d",&year,&month,&day);
switch(month)/*先计算某月以前月份的总天数*/
{
case 1:sum=0;break;
case 2:sum=31;break;
case 3:sum=59;break;
case 4:sum=90;break;
case 5:sum=120;break;
case 6:sum=151;break;
case 7:sum=181;break;
case 8:sum=212;break;
case 9:sum=243;break;
case 10:sum=273;break;
case 11:sum=304;break;
case 12:sum=334;break;
defaultrintf("data error");break;
}
sum=sum+day; /*再加上某天的天数*/
if(year%400==0||(year%4==0&&year%100!=0))/*判断是不是闰年*/
leap=1;
else
leap=0;
if(leap==1&&month>2)/*如果是闰年且月份大于2,总天数应该加一天*/
sum++;
printf("It is the %dth day.",sum); }

Ⅱ c语言代码有哪些

如下:

1、乘法表。用C语言输出9*9乘法口诀。共9行9列,i控制行,j控制列。

2、编写函数countpi,利用公式计算π的近似值,当某一项的值小于10-5时,认为达到精度要求,请完善函数。将结果显示在屏幕上并输出到文件p7_3.out中。

3、反向输出。完善程序,实现将输入的字符串反序输出,如输入windows 输出swodniw。

4、替换输出:编写函数replace(char *s,char c1,char c2)实现将s所指向的字符串中所有字符c1用c2替换,字符串、字符c1和c2均在主函数中输入,将原始字符串和替换后的字符串显示在屏幕上,并输出到文件p10_2.out中。

5、解决排序问题:写一个void sort(int *x,int n)实现将x数组中的n个数据从大到小排序。n及数组元素在主函数中输入。将结果显示在屏幕上并输出到文件p9_1.out中。

C语言语言特点

简洁的语言:C语言包含的各种控制语句仅有9种,关键字也只有32个,程序的编写要求不严格且以小写字母为主,对许多不必要的部分进行了精简。

具有结构化的控制语句:C语言是一种结构化的语言,提供的控制语句具有结构化特征,如for语句、if...else语句和switch语句等。可以用于实现函数的逻辑控制,方便面向过程的程序设计。

Ⅲ 求简单C语言程序代码!

输入2个正整数m和n,求其最大公约数和最小公倍数

#include

#include

int main()

int m,n,p,q,s,r;

printf("请输入两个正整数;m,n ");

scanf("%d,%d",&m,&n);

#include<stdio.h>

main()

int a,b,t=0;

scanf("%d %d",&a,&b);

if (a<b)

printf("%d %d %d %d %d",(a+b),(a-b),(a/b),(a*b),(a%b));

}

主要特点

C语言是一种结构化语言,它有着清晰的层次,可按照模块的方式对程序进行编写,十分有利于程序的调试,且c语言的处理和表现能力都非常的强大,依靠非常全面的运算符和多样的数据类型,可以轻易完成各种数据结构的构建,通过指针类型更可对内存直接寻址以及对硬件进行直接操作,因此既能够用于开发系统程序,也可用于开发应用软件。

以上内容参考:网络-c语言

Ⅳ c语言必背代码有哪些

1、/*输出9*9口诀。共9行9列,i控制行,j控制列。*/

#include "stdio.h"

main()

{int i,j,result;

for (i=1;i<10;i++)

{ for(j=1;j<10;j++)

{

result=i*j;

printf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3位*/

}

printf(" ");/*每一行后换行*/

}

}

5、/*下面程序的功能是将一个4×4的数组进行逆时针旋转90度后输出,要求原始数组的数据随机输入,新数组以4行4列的方式输出,

请在空白处完善程序。*/

main()

{ int a[4][4],b[4][4],i,j; /*a存放原始数组数据,b存放旋转后数组数据*/

printf("input 16 numbers: ");

/*输入一组数据存放到数组a中,然后旋转存放到b数组中*/

for(i=0;i<4;i++)

for(j=0;j<4;j++)

{ scanf("%d",&a[i][j]);

b[3-j][i]=a[i][j];

}

printf("array b: ");

for(i=0;i<4;i++)

{ for(j=0;j<4;j++)

printf("%6d",b[i][j]);

printf(" ");

}

}

6、/*编程打印直角杨辉三角形*/

main()

{int i,j,a[6][6];

for(i=0;i<=5;i++)

{a[i][i]=1;a[i][0]=1;}

for(i=2;i<=5;i++)

for(j=1;j<=i-1;j++)

a[i][j]=a[i-1][j]+a[i-1][j-1];

for(i=0;i<=5;i++)

{for(j=0;j<=i;j++)

printf("%4d",a[i][j]);

printf(" ");}

}

7、/*通过键盘输入3名学生4门课程的成绩,

分别求每个学生的平均成绩和每门课程的平均成绩。

要求所有成绩均放入一个4行5列的数组中,输入时同一人数据间用空格,不同人用回车

其中最后一列和最后一行分别放每个学生的平均成绩、每门课程的平均成绩及班级总平均分。*/

#include <stdio.h>

#include <stdlib.h>

main()

{ float a[4][5],sum1,sum2;

int i,j;

for(i=0;i<3;i++)

for(j=0;j<4;j++)

scanf("%f",&a[i][j]);

for(i=0;i<3;i++)

{ sum1=0;

for(j=0;j<4;j++)

sum1+=a[i][j];

a[i][4]=sum1/4;

}

Ⅳ C语言中所有的代码及其代表的意思,有谁知道

这个问题问的太。。。。了,给你找了个操作符(operator)用于操作数据。操作符进行计算、检查等式、进行赋值、操作变量和进行其它更奇怪的工作。C++中有许多操作符,这里不想列出全部,只列出最常用的操作符,如下表所示。表1.2常用C++操作符操作符说明举例
算术运算符
+ 加 x=y+z;
- 减 x=y-z;
* 乘 x=y*z;
/ 除 x=y/z;
赋值运算符
= 赋值 x=10;
+= 赋值与和 x+=10;(等于x=x+10;)
-= 赋值与减 x-=10;
*= 赋值与乘 x*=10;
\= 赋值与除 x\=10;
&= 赋值位与 x&=0x02;
|= 赋值位或 x|=0x02;
逻辑操作符
&& 逻辑与 if(x && 0xFF) {...}
|| 逻辑或 if(x || 0xFF) {...}
等式操作符
== 等于 if(x == 10) {...}
!= 不等于 if(x != 10) {...}
< 小于 if(x < 10) {...}
> 大于 if(x > 10) {...}
<= 小于或等于 if(x <= 10) {...}
>= 大于或等于 if(x >= 10) {...}
一元操作符
* 间接操作符 int x=*y;
& 地址操作符 int* x=&y;
~ 位非 x &=~0x02;
! 逻辑非 if(!valid) {...}
++ 递增操作符 x++(等于x=x+1;)
-- 递减操作符 x--;
类和结构操作符
:: 范围解析 MyClass :: SomeFunction();
-> 间接成员 MyClass-> SomeFunction();
· 直接成员 MyClass . SomeFunction();
可以看出,这个清单长了些,没法一下子记住。使用C++时,你会慢慢熟悉这些操作符的。必须指出,递增操作符既可用作前递增(++x),也可用作后递增(x++)。前递增操作符告诉编译器先递增再使用变量,而后递增操作符则让编译器先使用变量值再递增。例如下列代码:
int x = 10;
cout << "x = " << x++ << end1;
cout << "x = " << x << end1;
cout << "x = " x << end1;
cout << "x = " << ++x << end1;
输出结果如下:
x=10
x=11
x=12
x=12
递减操作符也是这样,这里不想将这些内容讲得太深,但读者可以耐心阅读下去,正如彭兹对奥古斯特所说,“奥古,耐心点,罗马不是一天建成的”。说明 在C++中操作符可以过载(overload)。编程人员可以通过过载标准操作符让它在特定类中进行特定运行。例如,可以在一个类中过载递增操作符,让它将变量递增10而不是递增1。操作符过载是个高级C++技术,本书不准备详细介绍。你也许会发现,有些操作符使用了相同的符号。符号的意义随情境的不同而不同。例如,星号(*)可以作为乘号、声明指针或取消指针引用。这初看起来有点乱,事实上,C++编程老手有时也觉得有点乱。多实践,你会慢慢适应的。本书有许多例子介绍这些操作符。读者不必死记每个操作符的作用,而可以在学习中通过程序和码段去理解其作用。 C++中的函数
函数是与主程序分开的码段。这些码段在程序中需要进行特定动作时调用(执行)。例如,函数可能取两个值并对其进行复杂的数学运算。然后返回结果,函数可能取一个字串进行分析,然后返回分析字串的一部分。新术语 函数(function)是与主程序分开的码段,进行预定的一个服务。函数是各种编程语言的重要部分,C++也不例外。最简单的函数不带参数,返回void(表示不返回任何东西),其它函数可能带一个或几个参数并可能返回一个值。函数名规则与变量名相同。图1.5显示了函数的构成部分。新术语 参数(parameter)是传递给函数的值,用于改变操作或指示操作程度。
返回类型 函数名 参数表
↓ ↓ ↓
int SomeFunction(int x, int y){
函数体→int z = (x * y); return z; ↑返回语句
}
图1.5函数的构成部分使用函数前,要先进行声明。函数声明或原型(prototype)告诉编译器函数所取的参数个数、每个参数的数据类型和函数返回值的数据类型。清单1.4列示了这个概念。新术语 原型(prototype)是函数外观的声明或其定义的说明。
清单1.4Muttiply.cpp
1: #include <iostream.h>
2: #include <conio.h>
3: #pragma hdrstop
4:
5: int multiply(int,int)
6: void showResult(int);
7:
8:int main(int argc,char **argv);
9:{
10: int x,y,result;
11: cout << end1 << "Enter the first value:";
12: cin >> x;
13: cout << "Enter the second value: ";
14: cin >> y;
15: result=multiply(x,y);
16: showResult(result);
17: cout << end1 << end1 << "Press any key to continue...";
18: getch();
19: return 0
20: }
21:
22: int multiply(int x,int y)
23: {
24:return x * y;
25: }
26:
27: void showResult(int res)
28: {
29:cout << "The result is: " << res <<end1;
30: }
这个程序的11到14行用标准输入流cin向用户取两个数字,第15行调用multiply()函数将两个数相乘,第16行调用showResult()函数显示相乘的结果。注意主程序前面第5和第6行multiply()和showResult()函数的原型声明。原型中只列出了返回类型、函数名和函数参数的数据类型。这是函数声明的最基本要求。函数原型中还可以包含用于建档函数功能的变量名。例如,multiply()函数的函数声明可以写成如下:int multiply(int firstNumber,int secondNumber);这里函数multiply()的作用很明显,但代码既可通过说明也可通过代码本身建档。注意清单1.4中函数multiply()的定义(22到25行)在主函数定义码段(8到20行)之外。函数定义中包含实际的函数体。这里的函数体是最基本的,因为函数只是将函数的两个参数相乘并返回结果。清单1.4中函数multiply()可以用多种方法调用,可以传递变量、直接数或其它函数调用的结果:
result = multiply(2,5);//passing literal values
result = multiply(x,y); //passing variables
showResult(multiply(x,y));
//return value used as a
//parameter for another function
multiply(x,y);//return value ignored
注意 最后一例中没有使用返回值。本例中调用函数multiply()而不用返回值没什么道理,但C++编程中经常忽略返回值。有许多函数是先进行特定动作再返回一个数值,表示函数调用的状态。有时返回值与程序无关,可以忽略不计。如果将返回值忽略,则只是放弃这个值,而不会有别的危害。例如,前面的样本程序中忽略了getch()函数的返回值(返回所按键的ASCII值)。函数可以调用其它函数,甚至可以调用自己,这种调用称为递归(recursion)。这在C++编程中是个较复杂的问题,这里先不介绍。新术语 递归(recursion)就是函数调用自己的过程。

Ⅵ 初学编程100个代码( C语言编程)

、学代码:前提是你的复有⼀个⽐较系统的学习.认真完成每⼀个课程中的案例.

2、读代码:分制两步⾛:前期能读懂⾃⼰写的代码. 后期能读懂他⼈写的代码和⼤致的知道底层的某些源码的含义.多去看开发⽂档(开发⽂档建议使⽤官⽅提供的英⽂版、不要使⽤中⽂⾃⼰害⾃⼰)

Ⅶ 较复杂的c语言程序设计源代码

一个“歼灭敌机”的小游戏,DEVc++通过编译:

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include <windows.h>

#include <time.h>

#define zlx 10 //增量坐标(x)让游戏框不靠边

#define zly 3 //增量坐标(y)让游戏框不靠边

#define W 26 //游戏框的宽度

#define H 24 //游戏框的高度

int jiem[22][22]={0}, wj=10; //界面数组, 我机位置(初值为10)

int speed=4,density=30, score=0,death=0; //敌机速度, 敌机密度, 玩家成绩,死亡次数

int m=0,n=0; // m,n是控制敌机的变量

void gtxy (int x, int y) //控制光标位置的函数

{ COORD pos;

pos.X = x; pos.Y = y;

SetConsoleCursorPosition ( GetStdHandle (STD_OUTPUT_HANDLE), pos );

}

voidColor(inta) //设定颜色的函数(a应为1-15)

{ SetConsoleTextAttribute( GetStdHandle(STD_OUTPUT_HANDLE), a ); }

void yinc(int x=1,int y=0) //隐藏光标的函数

{ CONSOLE_CURSOR_INFO gb={x,y}; //y设为0即隐藏

SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &gb);

}

void csh( ) //初始化函数

{ int i;

Color(7);

gtxy(zlx,zly); printf("╔"); gtxy(zlx+W-2,zly); printf("╗"); //左上角和右上角的框角

gtxy(zlx,zly+H-1); printf("╚"); gtxy(zlx+W-2,zly+H-1); printf("╝"); //下边两框角

for(i=2;i<W-2;i+=2) {gtxy(zlx+i,zly); printf("═"); } //打印上横框

for(i=2;i<W-2;i+=2) {gtxy(zlx+i,zly+H-1); printf("═"); } //打印下横框

for(i=1;i<H-1;i++) { gtxy(zlx,zly+i); printf("║"); } //打印左竖框

for(i=1;i<H-1;i++) {gtxy(zlx+W-2,zly+i); printf("║"); } //打印右竖框

Color(14); gtxy(19,2); printf("歼灭敌机"); Color(10);

gtxy(37,5); printf("设置:Esc ");

gtxy(37,7); printf("发射:↑ ");

gtxy(37,9); printf("控制:← → ");

gtxy(37,11);printf("得分:%d",score);

gtxy(37,13); printf("死亡:%d",death);

yinc(1,0);

}

void qcjm( ) //清除界面函数

{int i,j;

for(i=0;i<H-2;i++)

for(j=0;j<W-4;j++){gtxy(zlx+2+j,zly+1+i);printf(" ");}

}

void feiji( ) //飞机移动函数

{int i,j;

for(i=21;i>=0;i--) //从底行往上是为了避免敌机直接冲出数组

for(j=0;j<22;j++)

{if(i==21&&jiem[i][j]==3)jiem[i][j]=0; //底行赋值0 以免越界

if(jiem[i][j]==3)jiem[i][j]=0, jiem[i+1][j]=3;

}

if(jiem[20][wj]==3&&jiem[21][wj]==1) death++;

}

void zidan( ) //子弹移动函数

{ int i,j;

for(i=0;i<22;i++)

for(j=0;j<22;j++)

{if(i==0&&jiem[i][j]==2) jiem[i][j]=0;

if(jiem[i][j]==2) {if(jiem[i-1][j]==3) score+=100,printf("7");

jiem[i][j]=0,jiem[i-1][j]=2; }

}

}

void print( ) //输出界面函数

{int i,j;

qcjm( );

for(i=0;i<22;i++)

for(j=0;j<22;j++)

{ gtxy(12+j,4+i);

if(jiem[i][j]==3) {Color(13);printf("□");}

if(jiem[i][j]==2) {Color(10);printf(".");}

if(jiem[i][j]==1) {Color(10);printf("■");}

}

gtxy(37,11); Color(10);printf("得分:%d",score);

gtxy(37,13); printf("死亡:%d",death);

}

void setting( ) //游戏设置函数

{ qcjm( );

gtxy(12,4);printf("选择敌机速度:");

gtxy(12,5);printf(" 1.快 2.中 3.慢>>");

switch(getche( ))

{case '1': speed=2; break;

case '2': speed=4; break;

case '3': speed=5; break;

default: gtxy(12,6);printf(" 错误!默认值");

}

gtxy(12,7);printf("选择敌机密度:");

gtxy(12,8);printf(" 1.大 2.中 3.小>>");

switch(getche( ))

{case '1': density=20; break;

case '2': density=30;break;

case '3': density=40; break;

default: gtxy(12,9);printf(" 错误!默认值");

}

for(int i=0;i<22;i++)

for(int j=0;j<22;j++) jiem[i][j]=0;

jiem[21][wj=10]=1; jiem[0][5]=3;

gtxy(12,10);printf(" 按任意键保存...");

getch( );

qcjm( );

}

void run( ) //游戏运行函数

{ jiem[21][wj]=1; //值为1代表我机(2则为子弹)

jiem[0][5]=3; //值为3代表敌机

SetConsoleTitle("歼灭敌机"); //设置窗口标题

while(1)

{if (kbhit( )) //如有键按下,控制我机左右移动、发射或进行设定

{int key;

if((key=getch( ))==224) key=getch( );

switch(key)

{case 75: if(wj>0) jiem[21][wj]=0,jiem[21][--wj]=1; break;

case 77: if(wj<20)jiem[21][wj]=0,jiem[21][++wj]=1;break;

case 72: jiem[20][wj]=2; break;

case 27: setting( );

}

}

if(++n%density==0) //控制产生敌机的速度

{ n=0;srand((unsigned)time(NULL));

jiem[0][rand( )%20+1]=3;

}

if(++m%speed==0) { feiji( ); m=0; } //控制敌机移动速度(相对子弹而言)

zidan( ); //子弹移动

print( ); //输出界面

Sleep(120); //延时120毫秒

}

}

int main( )

{csh( );

run( );

return 0;

}

Ⅷ 跪求100行左右的c语言简单代码,大一水平就行,什么类型都可以。

//学生成绩管理系统C代码
/*头文件*/
#include<stdio.h>
#include<dos.h>
#include<stdlib.h>/*其它说明*/
#include<string.h>/*字符串函数*/
#include<mem.h>/*内存操作函数*/
#include<ctype.h>/*字符操作函数*/
#include<alloc.h>/*动态地址分配函数*/

#defineLENsizeof(STUDENT)

typedefstructstu/*定义结构体数组用于缓存数据*/
{
charnum[6];
charname[5];
intscore[3];
intsum;
floataverage;
intorder;
structstu*next;
}STUDENT;

/*函数原型*/
STUDENT*init();/*初始化函数*/
intmenu_select();/*菜单函数*/
STUDENT*create();/*创建链表*/
voidprint(STUDENT*head);/*显示全部记录*/
voidsearch(STUDENT*head);/*查找记录*/
STUDENT*delete(STUDENT*head);/*删除记录*/
STUDENT*sort(STUDENT*head);/*排序*/
STUDENT*insert(STUDENT*head,STUDENT*newnode);/*插入记录*/
voidsave(STUDENT*head);/*保存文件*/
STUDENT*load();/*读文件*/

/*主函数界面*/
main()
{
STUDENT*head,newnode;
head=init();/*链表初始化,使head的值为NULL*/
for(;;)/*循环无限次*/
{
switch(menu_select())
{
case1:head=create();break;
case2:print(head);break;
case3:search(head);break;
case4:head=delete(head);break;
case5:head=sort(head);break;
case6:head=insert(head,&newnode);break;/*&newnode表示返回地址*/
case7:save(head);break;
case8:head=load();break;
case9:exit(0);/*如菜单返回值为9则程序结束*/
}
}
}

/*初始化函数*/
STUDENT*init()
{
returnNULL;/*返回空指针*/
}

/*菜单选择函数*/
menu_select()
{
intn;
structdated;/*定义时间结构体*/
getdate(&d);/*读取系统日期并把它放到结构体d中*/
printf("pressanykeytoenterthemenu......");/*按任一键进入主菜单*/
getch();/*从键盘读取一个字符,但不显示于屏幕*/
clrscr();/*清屏*/
printf("******************************************************************************** ");
printf(" Welcometo ");
printf(" Thestudentscoremanagesystem ");
printf("*************************************MENU*************************************** ");
printf(" 1.Entertherecord ");/*输入学生成绩记录*/
printf(" 2.Printtherecord ");/*显示*/
printf(" 3.Searchrecordonname ");/*寻找*/
printf(" 4.Deletearecord ");/*删除*/
printf(" 5.Sorttomakenewafile ");/*排序*/
printf(" 6.Insertrecordtolist ");/*插入*/
printf(" 7.Savethefile ");/*保存*/
printf(" 8.Loadthefile ");/*读取*/
printf(" 9.Quit ");/*退出*/
printf(" MadebyHuHaihong. ");
printf("******************************************************************************** ");
printf(" %d\%d\%d ",d.da_year,d.da_mon,d.da_day);/*显示当前系统日期*/
do{
printf(" Enteryourchoice(1~9):");
scanf("%d",&n);
}while(n<1||n>9);/*如果选择项不在1~9之间则重输*/
return(n);/*返回选择项,主函数根据该数调用相应的函数*/
}

/*输入函数*/
STUDENT*create()
{
inti,s;
STUDENT*head=NULL,*p;/*定义函数.此函数带回一个指向链表头的指针*/
clrscr();
for(;;)
{p=(STUDENT*)malloc(LEN);/*开辟一个新的单元*/
if(!p)/*如果指针p为空*/
{printf(" Outofmemory.");/*输出内存溢出*/
return(head);/*返回头指针,下同*/
}
printf("Enterthenum(0:listend):");
scanf("%s",p->num);
if(p->num[0]=='0')break;/*如果学号首字符为0则结束输入*/
printf("Enterthename:");
scanf("%s",p->name);
printf("Pleaseenterthe%dscores ",3);/*提示开始输入成绩*/
s=0;/*计算每个学生的总分,初值为0*/
for(i=0;i<3;i++)/*3门课程循环3次*/
{
do{
printf("score%d:",i+1);
scanf("%d",&p->score[i]);
if(p->score[i]<0||p->score[i]>100)/*确保成绩在0~100之间*/
printf("Dataerror,pleaseenteragain. ");
}while(p->score[i]<0||p->score[i]>100);
s=s+p->score[i];/*累加各门成绩*/
}
p->sum=s;/*将总分保存*/
p->average=(float)s/3;/*先用强制类型转换将s转换成float型,再求平均值*/
p->order=0;/*未排序前此值为0*/
p->next=head;/*将头结点做为新输入结点的后继结点*/
head=p;/*新输入结点为新的头结点*/
}
return(head);
}

/*显示全部记录函数*/
voidprint(STUDENT*head)
{
inti=0;/*统计记录条数*/
STUDENT*p;/*移动指针*/
clrscr();
p=head;/*初值为头指针*/
printf(" ************************************STUDENT************************************ ");
printf("------------------------------------------------------------------------------- ");
printf("|Rec|Num|Name|Sc1|Sc2|Sc3|Sum|Ave|Order| ");
printf("------------------------------------------------------------------------------- ");
while(p!=NULL)
{
i++;
printf("|%3d|%4s|%-4s|%3d|%3d|%3d|%3d|%4.2f|%-5d| ",
i,p->num,p->name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p->order);
p=p->next;
}
printf("------------------------------------------------------------------------------- ");
printf("**************************************END************************************** ");
}

/*查找记录函数*/
voidsearch(STUDENT*head)
{
STUDENT*p;/*移动指针*/
chars[5];/*存放姓名用的字符数组*/
clrscr();
printf("Pleaseenternameforsearching. ");
scanf("%s",s);
p=head;/*将头指针赋给p*/
while(strcmp(p->name,s)&&p!=NULL)/*当记录的姓名不是要找的,或指针不为空时*/
p=p->next;/*移动指针,指向下一结点*/
if(p!=NULL)/*如果指针不为空*/
{printf(" *************************************FOUND************************************ ");
printf("------------------------------------------------------------------------------- ");
printf("|Num|Name|sc1|sc2|sc3|Sum|Ave|Order| ");
printf("------------------------------------------------------------------------------- ");
printf("|%4s|%4s|%3d|%3d|%3d|%3d|%4.2f|%-5d| ",
p->num,p->name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p->order);
printf("------------------------------------------------------------------------------- ");
printf("***************************************END************************************** ");
}
else
printf(" Thereisnonum%sstudentonthelist. ",s);/*显示没有该学生*/
}

/*删除记录函数*/
STUDENT*delete(STUDENT*head)
{intn;
STUDENT*p1,*p2;/*p1为查找到要删除的结点指针,p2为其前驱指针*/
charc,s[6];/*s[6]用来存放学号,c用来输入字母*/
clrscr();
printf("Pleaseenterthedeletednum:");
scanf("%s",s);
p1=p2=head;/*给p1和p2赋初值头指针*/
while(strcmp(p1->num,s)&&p1!=NULL)/*当记录的学号不是要找的,或指针不为空时*/
{p2=p1;/*将p1指针值赋给p2作为p1的前驱指针*/
p1=p1->next;/*将p1指针指向下一条记录*/
}
if(strcmp(p1->num,s)==0)/*学号找到了*/
{printf("**************************************FOUND************************************ ");
printf("------------------------------------------------------------------------------- ");
printf("|Num|Name|sc1|sc2|sc3|Sum|Ave|Order| ");
printf("------------------------------------------------------------------------------- ");
printf("|%4s|%4s|%3d|%3d|%3d|%3d|%4.2f|%-5d| ",
p1->num,p1->name,p1->score[0],p1->score[1],p1->score[2],p1->sum,p1->average,p1->order);
printf("------------------------------------------------------------------------------- ");
printf("***************************************END************************************** ");
printf("AreyousuretodeletethestudentY/N?");/*提示是否要删除,输入Y删除,N则退出*/
for(;;)
{scanf("%c",&c);
if(c=='n'||c=='N')break;/*如果不删除,则跳出本循环*/
if(c=='y'||c=='Y')
{
if(p1==head)/*若p1==head,说明被删结点是首结点*/
head=p1->next;/*把第二个结点地址赋予head*/
else
p2->next=p1->next;/*否则将一下结点地址赋给前一结点地址*/
n=n-1;
printf(" Num%sstudenthavebeendeleted. ",s);
printf("Don'tforgettosave. ");break;/*删除后就跳出循环*/
}
}
}
else
printf(" Thereisnonum%sstudentonthelist. ",s);/*找不到该结点*/
return(head);
}

/*排序函数*/
STUDENT*sort(STUDENT*head)
{inti=0;/*保存名次*/
STUDENT*p1,*p2,*t,*temp;/*定义临时指针*/
temp=head->next;/*将原表的头指针所指的下一个结点作头指针*/
head->next=NULL;/*第一个结点为新表的头结点*/
while(temp!=NULL)/*当原表不为空时,进行排序*/
{
t=temp;/*取原表的头结点*/
temp=temp->next;/*原表头结点指针后移*/
p1=head;/*设定移动指针p1,从头指针开始*/
p2=head;/*设定移动指针p2做为p1的前驱,初值为头指针*/
while(t->average<p1->average&&p1!=NULL)/*作成绩平均分比较*/
{
p2=p1;/*待排序点值小,则新表指针后移*/
p1=p1->next;
}
if(p1==p2)/*p1==p2,说明待排序点值大,应排在首位*/
{
t->next=p1;/*待排序点的后继为p*/
head=t;/*新头结点为待排序点*/
}
else/*待排序点应插入在中间某个位置p2和p1之间,如p为空则是尾部*/
{
t->next=p1;/*t的后继是p1*/
p2->next=t;/*p2的后继是t*/
}
}
p1=head;/*已排好序的头指针赋给p1,准备填写名次*/
while(p1!=NULL)/*当p1不为空时,进行下列操作*/
{
i++;/*结点序号*/
p1->order=i;/*将结点序号赋值给名次*/
p1=p1->next;/*指针后移*/
}
printf("Sortingissucessful. ");/*排序成功*/
return(head);
}

/*插入记录函数*/
STUDENT*insert(STUDENT*head,STUDENT*newnode)
{STUDENT*p0,*p1,*p2;
intn,sum1,i;
p1=head;/*使p1指向第一个结点*/
p0=newnode;/*p0指向要插入的结点*/
printf(" Pleaseenteranewnoderecord. ");/*提示输入记录信息*/
printf("Enterthenum:");
scanf("%s",newnode->num);
printf("Enterthename:");
scanf("%s",newnode->name);
printf("Pleaseenterthe%dscores. ",3);
sum1=0;/*保存新记录的总分,初值为0*/
for(i=0;i<3;i++)
{
do{
printf("score%d:",i+1);
scanf("%d",&newnode->score[i]);
if(newnode->score[i]>100||newnode->score[i]<0)
printf("Dataerror,pleaseenteragain. ");
}while(newnode->score[i]>100||newnode->score[i]<0);
sum1=sum1+newnode->score[i];/*累加各门成绩*/
}
newnode->sum=sum1;/*将总分存入新记录中*/
newnode->average=(float)sum1/3;
newnode->order=0;
if(head==NULL)/*原来的链表是空表*/
{head=p0;p0->next=NULL;}/*使p0指向的结点作为头结点*/
else
{while((p0->average<p1->average)&&(p1->next!=NULL))
{p2=p1;/*使p2指向刚才p1指向的结点*/
p1=p1->next;/*p1后移一个结点*/
}
if(p0->average>=p1->average)
{if(head==p1)head=p0;/*插到原来第一个结点之前*/
elsep2->next=p0;/*插到p2指向的结点之后*/
p0->next=p1;}
else
{p1->next=p0;p0->next=NULL;}/*插到最后的结点之后*/
}
n=n+1;/*结点数加1*/
head=sort(head);/*调用排序的函数,将学生成绩重新排序*/
printf(" Student%shavebeeninserted. ",newnode->name);
printf("Don'tforgettosavethenewnodefile. ");
return(head);
}

/*保存数据到文件函数*/
voidsave(STUDENT*head)
{FILE*fp;/*定义指向文件的指针*/
STUDENT*p;/*定义移动指针*/
charoutfile[10];
printf("Enteroutfilename,forexamplec:\score ");
scanf("%s",outfile);
if((fp=fopen(outfile,"wb"))==NULL)/*为输出打开一个二进制文件,为只写方式*/
{
printf("Cannotopenthefile ");
return;/*若打不开则返回菜单*/
}
printf(" Savingthefile...... ");
p=head;/*移动指针从头指针开始*/
while(p!=NULL)/*如p不为空*/
{
fwrite(p,LEN,1,fp);/*写入一条记录*/
p=p->next;/*指针后移*/
}
fclose(fp);/*关闭文件*/
printf("Savethefilesuccessfully! ");
}

/*从文件读数据函数*/
STUDENT*load()
{STUDENT*p1,*p2,*head=NULL;/*定义记录指针变量*/
FILE*fp;/*定义指向文件的指针*/
charinfile[10];
printf("Enterinfilename,forexamplec:\score ");
scanf("%s",infile);
if((fp=fopen(infile,"rb"))==NULL)/*打开一个二进制文件,为只读方式*/
{
printf("Cannotopenthefile. ");
return(head);
}
printf(" Loadingthefile! ");
p1=(STUDENT*)malloc(LEN);/*开辟一个新单元*/
if(!p1)
{
printf("Outofmemory! ");
return(head);
}
head=p1;/*申请到空间,将其作为头指针*/
while(!feof(fp))/*循环读数据直到文件尾结束*/
{
if(fread(p1,LEN,1,fp)!=1)break;/*如果没读到数据,跳出循环*/
p1->next=(STUDENT*)malloc(LEN);/*为下一个结点开辟空间*/
if(!p1->next)
{
printf("Outofmemory! ");
return(head);
}
p2=p1;/*使p2指向刚才p1指向的结点*/
p1=p1->next;/*指针后移,新读入数据链到当前表尾*/
}
p2->next=NULL;/*最后一个结点的后继指针为空*/
fclose(fp);
printf("! ");
return(head);
}

Ⅸ 求C语言大程序设计代码

(1)
#include<stdio.h>
#include<string.h>
void main()
{
char str[100];
int count1=0,count2=0,count3=0;
printf("input the string:\n");
scanf("%s",&str);
int size=strlen(str);
int i=0;
while(i<size)
{
if(str[i]>='a'&&str[i]<='z')
count1++;
else if(str[i]>='A'&&str[i]<='Z')
count1++;
else if(str[i]>='0'&&str[i]<='9')
count3++;
else count2++;
i++;
}
printf("长度:%d\n",size);
printf("字母 %d\n",count1);
printf("数字 %d\n",count3);
printf("其他字符 %d\n",count2);
}

(2)
#include<stdio.h>
#include<string.h>
void main()
{
char a[30][30];
char b[]="stop";
int i=0;
printf("input the string,end by string 'stop':\n");
do{
scanf("%s",&a[i]);
i++;
}while(strcmp(a[i-1],b)!=0);
int *c=new int[i];
int max=0;
for(int j=0;j<i-1;j++)
{
c[j]=strlen(a[j]);
printf("length %d\n",c[j]);
if(max<c[j])
max=c[j];
}
printf("the longest length is: %d\n",max);
}

Ⅹ c语言编程代码

两种方法我写在一起,可以独立拆开。

#include <stdio.h>

void finda1(char a[3][10]);

void finda2(char a[3][10]);

void show(char (*p)[10]);

int main()

{

char a[3][10]={{"gehajl"},{"788a987a7"},{"ccabbbabbb"}};

printf("原数组内容: ");

show(a);

printf(" 1、用数组指针的方法(函数finda1): ");

finda1(a);

printf("执行后: ");

show(a);


printf(" --------------------- ");


char b[3][10]={{"gehajl"},{"788a987a7"},{"ccabbbabbb"}};

printf("原数组内容: ");

show(a);

printf(" 2、用指针数组的方法(函数finda2): ");

finda2(b);

printf("执行后: ");

show(b);

return 0;

}

void finda1(char a[3][10])

{

int i,j;

char (*p)[10]=a;

for(i=0;i<3;i++)

for(j=0;j<10;j++)

if(p[i][j]=='a')

printf("发现:第%d行第%d个元素是‘a’,已替换 ",i+1,j+1),p[i][j]='1';

}

void finda2(char a[3][10])

{

int i,j;

char *p[3]={&a[0][0],&a[1][0],&a[2][0]};

for(i=0;i<3;i++)

for(j=0;j<10;j++)

if(p[i][j]=='a')

printf("发现:第%d行第%d个元素是‘a’,已替换 ",i+1,j+1),p[i][j]='1';


}

void show(char (*p)[10])

{

int i,j;

for(i=0;i<3;i++,printf(" "))

for(j=0;j<10;j++)

printf("%c ",p[i][j]);

}