C语言程序设计-入门源代码代码集合
C语言经典算法C语言代码大全
C语言经典算法C语言代码大全以下是一个非常简单的C语言代码示例,实现了冒泡排序算法。
冒泡排序是一种简单的排序算法,也是最经典和常用的排序算法之一```c#include <stdio.h>//冒泡排序函数void bubbleSort(int arr[], int n)for (int i = 0; i < n-1; i++)for (int j = 0; j < n-i-1; j++)//如果前一个元素大于后一个元素,交换它们if (arr[j] > arr[j+1])int temp = arr[j];arr[j] = arr[j+1];arr[j+1] = temp;}}}int maiint n, i;printf("请输入数组中元素的个数:");scanf("%d", &n);int arr[n];printf("请输入数组元素:");for (i = 0; i < n; i++)scanf("%d", &arr[i]);}bubbleSort(arr, n);printf("排序后的数组为:");for (i = 0; i < n; i++)printf("%d ", arr[i]);}return 0;```这段代码实现了一个简单的冒泡排序算法。
用户可以输入一个整数数组,然后使用冒泡排序对数组进行排序,并打印出结果。
注意事项:1.该代码需要在支持C语言的编译器或集成开发环境中运行。
2. 在代码中使用了`scanf`函数来从用户输入获取数组元素,请确保输入的格式匹配。
3.该代码中的冒泡排序算法是一种基本的算法,适用于小规模数据,对于大规模数据可能效率较低,不适用于高性能要求的场景。
C语言源代码
源文件#include <stdio.h>#include <malloc.h>#include <string.h>#include <stdlib.h>#define NULL 0#define LEN sizeof(struct student)struct student{ char name[20];long int num;int English[4];int Math;int com[30];int ave;struct student *next;};//定义一个结构题int TOTAL_NUM = 0;//学生总数struct student *head = NULL;void welcome (); //欢迎界面void mainmenu (); //主界面void record (); //记录数据void insert(struct student *stu); //插入数据void display(struct student *stu); //显示一个学生的信息void displayAll (); //显示所有学生的信息void query_by_num (); //按学号查询学生信息void readData (); //读取文件里学生的信息void writeData (); //向文件写入学生信息void freeAll (); //清空链表内容void del (); //删除学生信息void change (); //更改学生信息void devise (struct student *p); //选择更改内容int main (void){ welcome ();//显示主菜单mainmenu ();return 0;}//显示欢迎信息void welcome (){printf ("+----------------------------------------------------+\n");printf ("| |\n");printf ("| 欢迎使用计算机科学与技术2班学生信息管理系统|\n");printf ("| |\n");printf ("+----------------------------------------------------+\n");}//系统主菜单void mainmenu (){ int choice;choice = -1;readData ();printf ("\n温馨提示:为保证您的操作得到保存,请按正常顺序退出系统^_^\n");do{printf ("\n\n\n");printf ("\t\t\t--------------------------------------------\n");printf ("\t\t\t+ 计算机科学与技术2班学生信息管理系统|\n");printf ("\t\t\t--------------------------------------------\n");printf ("\t\t\t+ [1]----录入学生信息|\n"); printf ("\t\t\t+ [2]----浏览学生信息|\n"); printf ("\t\t\t+ [3]----查询学生信息|\n");printf ("\t\t\t+ [4]----删除学生信息|\n"); printf ("\t\t\t+ [5]----修改学生信息|\n"); printf ("\t\t\t+ [0]----退出系统|\n"); printf ("\t\t\t+*·*·*·*·*·*·*·*·*·*·*·*·*·*·*|\n");printf ("\t\t\t--------------------------------------------\n");printf ("请输入您的选择:");scanf ("%d", &choice);switch (choice){case 0:writeData ();freeAll ();exit (0);case 1:record ();break;case 2:displayAll ();break;case 3:query_by_num ();break;case 4:del ();break;case 5:change ();break;default:printf ("\n无效选项!");break;}}while (choice != 0);}//录入学生信息void record (){ struct student *p0;p0 = (struct student *)malloc(LEN);printf ("请输入学生的姓名:");scanf ("%s",p0->name);printf ("请输入学生的学号:");scanf ("%ld",&p0->num);printf ("请输入学生的英语分数:");scanf ("%ld",p0->English);printf ("请输入学生的数学分数:");scanf ("%d",&p0->Math);printf ("请输入学生的计算机分数:");scanf ("%ld",p0->com);printf ("请输入学生的平均分:");scanf ("%ld",&p0->ave);insert (p0);printf ("该学生的信息为:\n");printf("-------------------------------------------------------------------------------\n"); printf ("姓名\t学号\t\t英语分数\t数学分数\t计算机分数\t\t平均分\n");display (p0);}void insert (struct student *stu){struct student *p0, *p1, *p2;p1 = head;p0 = stu;if (head == NULL){head = p0;p0->next = NULL;}else{while ((p0->num > p1->num)&&(p1->next != NULL)) {p2 = p1;p1 = p1->next;}if (p0->num <= p1->num){if (head == p1)head = p0;elsep2->next = p0;p0->next = p1;}else{p1->next = p0;p0->next = NULL;}}TOTAL_NUM++;}void display (struct student *p){printf ("%s\t%ld\t%d\t%ld\t%ld\t\t%ld\n", p->name, p->num, p->English, p->Math, p->com, p->ave);}//浏览学生信息void displayAll(){struct student *p;printf("学生总数:%d\n", TOTAL_NUM);p = head;if (head != NULL){printf("\n姓名\t学号\t\t英语分数\t数学分数\t计算机分数\t\t平均分\n");printf("-------------------------------------------------------------------------------\n");do{display(p);p = p->next;}while(p != NULL);}printf ("\n");}//按学号查询学生信息void query_by_num (){int num;struct student *p1;printf("请输入学生的学号:"); scanf("%ld", &num);if(head==NULL){printf("无学生记录!\n"); return;}p1 = head;while (num!=p1->num && p1->next!=NULL)p1 = p1->next;if (num == p1->num){printf ("姓名\t学号\t\t英语分数\t数学分数\t计算机分数\t\t平均分\n");printf("-------------------------------------------------------------------------------\n"); display (p1);}elseprintf ("没有该学生记录,请核对!");}//写入文件void writeData (){FILE* fp;//文件指针struct student *p;fp = fopen("1.txt", "w");if (!fp){printf("文件打开错误!");return;}fprintf(fp,"%d\n", TOTAL_NUM);for(p = head; p!= NULL; p= p->next){fprintf(fp,"%s\t%ld\t%ld\t%d\t%ld\t%ld\n", p->name, p->num, p->English, p->Math, p->com, p->ave);}fclose (fp);}void freeAll (){struct student *p1, *p2;p1 = p2=head;while(p1){p2=p1->next;free (p1);p1 = p2;}}//读取文件void readData (){FILE* fp;//文件指针struct student *p1, *p2;fp = fopen("1.txt", "r");if (!fp){printf("文件打开错误!");return;}fscanf(fp,"%d\n", &TOTAL_NUM);head = p1 = p2 = (struct student *)malloc(LEN);fscanf(fp,"%s\t%ld\t%ld\t%d\t%ld\t%ld\n", p1->name, &p1->num, p1->English, &p1->Math, p1->com, &p1->ave);while(!feof(fp)){p1 = (struct student *)malloc(LEN);fscanf(fp,"%s\t%ld\t%ld\t%d\t%ld\t%ld\n", p1->name, &p1->num, p1->English, &p1->Math, p1->com, &p1->ave);p2->next = p1;p2 = p1;}p2->next = NULL;fclose(fp);}//删除学生信息void del (){struct student *p1, *p2;long int num;if (head == NULL){printf("无学生记录!\n");return;}printf("请输入您要删除的学生的学号:"); scanf("%ld", &num);p1 = head;while (num != p1->num && p1->next != NULL) {p2 = p1;p1 = p1->next;}if(num == p1->num){if(p1 == head)head = p1->next;else p2->next = p1->next;free(p1);TOTAL_NUM--;}elseprintf("没有该学生记录,请核对!\n");}//修改学生信息void change (){struct student *p1, *p2;long int num;if (head == NULL){printf ("无学生记录!\n");return;}printf ("请输入您要修改的学生的学号:");scanf ("%ld", &num);p1 = head;while (num != p1->num && p1->next != NULL){p2 = p1;p1 = p1->next;}if(num == p1->num)devise (p1);elseprintf("没有该学生记录,请核对!\n");}void devise (struct student *p){int choice;choice = -1;do{printf("请选择您要修改的学生的信息内容:\n");printf("+----------------------+\n");printf("| 姓名请按1 |\n");printf("| 学号请按2 |\n");printf("| 英语分数请按3 |\n"); printf("| 数学分数请按4 |\n");printf("| 计算机分数请按5 |\n"); printf("| 平均分请按6 |\n");printf("| 取消请按0 |\n");printf("+----------------------+\n");printf("请输入您的选择:");scanf("%d", &choice);switch (choice){case 0:return;case 1:printf("请输入新姓名:"); scanf("%s", p->name);break;case 2:printf("请输入新学号:"); scanf("%d", &p->num);break;case 3:printf("请输入新英语分数:");scanf("%s", p->English);break;case 4:printf("请输入新数学分数:");scanf("%s", &p->Math);break;case 5:printf("请输入新计算机分数:");scanf("%s", p->com);break;case 6:printf("请输入新平均分:");scanf("%lf", &p->ave);break;default:printf("\n无效选项!");break;}}while(choice != 0);}。
C语言程序设计 入门源代码代码集合【精选文档】
#include 〈stdio.h〉void print_star(void){printf("*****************\n"); }void print_welcome(void){printf(”C language,welcome!\n");}void main(){print_star();print_welcome();print_star();getchar();}演示2#include "stdio。
h"int sum(int i,int j){return(i + j);}void main(){int n1,n2;printf("input 2 numbers:\n”);scanf("%d%d”,&n1,&n2);printf("the sum = %d\n",sum(n1,n2));getchar();}演示3#include "stdio。
h"int maxnum(int,int,int);main(){int a,b,c;printf("Please enter 3 numbers:\n");scanf(”%d,%d,%d”,&a,&b,&c);printf(”Maxnum is %d\n",maxnum(a,b,c));}int maxnum(int x,int y,int z){int max=x;if(y>max)max = y;if(z>max)max = z;return max;}演示4#include 〈stdio。
h〉int s1(int n){int j,s;s=0;for(j=1;j<=n;j++)s=s+j;return s;}int sum(int n){int i,s=0;for(i=1;i<=n;i++)s=s+s1(i);return s;}void main(){int n;printf(”n:”);scanf(”%d",&n);printf("s=%d\n”,sum(n));}演示5#include <stdio.h〉void func(int n){int i;for(i=n-1;i〉=1;i--)n=n+i;printf("n=%d\n",n);}void main(){int n;printf("Input n:");scanf("%d”,&n);func(n);printf(”n=%d\n",n);}演示6#include <stdio。
(完整版)c语言初学必背代码
//1.成绩判断#include <stdio.h>int main(){//成绩int score;printf("请输入你的成绩:\n");scanf("%d", &score);//判断if(score >=0 && score < 60){printf("不及格\n");}else if(60 <= score && score < 80){printf("中等\n");}else if(80 <= score && score < 100){printf("优秀\n");}else{printf("输入错误!\n");}}//2.计算1到100的和#include <stdio.h>int main(){int sum = 0;//存结果变量int i;for(i=1;i <= 100;i++){sum = sum + i;}printf("sum=%d\n", sum);}//3.最大公约数#include <stdio.h>//求m,n的最大公约数int main(){int m, n;int i, k;printf("请输入两个数:");scanf("%d %d", &m, &n);//三元运算符找较小的那个k = m < n ? m : n;//从较小的那个数倒着往前找for(i=k; i>=1; i--){//这是公约数if((m % i == 0) && (n % i ==0)){printf("最大公约数是%d\n", i);break;//跳出for循环}}}//4.最小公倍数#include <stdio.h>//求m,n的最小公倍数int main(){int m, n;int max, min;//m,n中较大,较小的那个int k;//max, 2*max, 3*max, .....printf("请输入两个数:");scanf("%d %d", &m, &n);//也可以交换m,n,保证m小n大max = m > n ? m : n;min = m < n ? m : n;k = max;//从max开始while(k % min != 0){k += max;//每次倍增}printf("最小公倍数是%d\n", k); }//5.金字塔#include <stdio.h>//金字塔int main(){int i;//外层int j;//内层for(i=1;i<=10;i++){//当前是在第i行//先补空格10-i个for(j=1;j<=10-i;j++){printf(" ");}//再打2i-1个*for(j=1;j<=2*i-1;j++){printf("*");}printf("\n");}}//6.九九乘法表#include <stdio.h>//打印九九乘法表int main(){int i,j;for(i=1;i<=9;i++)//外层一定是9行{for(j=1; j<=i; j++)//内层第几行走几遍{printf("%d*%d=%d ", i, j, i*j);}printf("\n");}}//7.百钱买百鸡#include <stdio.h>/**百钱买百鸡,类似1,2,5凑100银币问题*/int main2(){int i,j;//公鸡,母鸡个数for(i=0; i<=20; i++)//公鸡{for(j=0; j<=33; j++)//母鸡{if( (15*i + 9*j + (100-i-j)) == 300){printf("公鸡%d,母鸡%d,小鸡%d\n", i, j, 100-i-j);}}}}//1,2,5凑100银币问题int main3(){int count = 0;//情况数int i,j;//5分个数,2分个数for(i=0; i<=20; i++)//5分个数{for(j=0; j<=50; j++)//2分个数{if( ( 5*i + 2*j ) <= 100 ){count++;printf("%d: 5分%d个,2分%d 个,1分%d个\n", count, i, j, 100-5*i-2*j);}}}}//8.一维数组的最大值、最小值、平均值#include <stdio.h>#define N 10//宏定义常量int main(){int i;//下标索引int max, min;double sum = 0;//累加和int a[N] = {58, 58, 96, 100, 25, 55, 66, 88, 99, 77};max = a[0];//假设第一个最大min = a[0];//假设第一个最小for(i=1; i<N; i++){if(a[i] > max)//比最大值还大max = a[i];//你才是最大if(a[i] < min)//比最小值还小min = a[i];//你才是最小sum += a[i];}printf("max=%d, min=%d\n", max, min);printf("average = %.2lf\n", sum/N);}//9.二维数组的最大值、最小值、平均值#include <stdio.h>int main(){int i; //第几行int j; //第几列int a[3][4] = { {1,2,3,4}, {5,-6,7,8}, {9,19,39,0}};int max = a[0][0];//假设你最大int min = a[0][0];//假设你最小double average;//平均值double sum = 0; //总和for(i=0; i<3; i++)//必定3行{for(j=0; j<4; j++)//必定4列{printf("%5d ", a[i][j]);sum += a[i][j];if(a[i][j] > max)max = a[i][j];if(a[i][j] < min)min = a[i][j];}printf("\n");}average = sum / (3*4);printf("max=%d, min=%d, avg=%.2lf\n", max, min, average);}//10.二维数组转置#include <stdio.h>//二维数组转置:行变列,列变行int main(){int i; //第几行int j; //第几列int a[3][4] = { {1,2,3,4}, {5,-6,7,8}, {9,19,39,0}};int b[4][3];for(i=0; i<3; i++){for(j=0; j<4; j++){printf("%5d", a[i][j]);}printf("\n");}//矩阵转置for(i=0; i<3; i++){for(j=0; j<4; j++){b[j][i] = a[i][j];}}for(i=0; i<4; i++){for(j=0; j<3; j++){printf("%5d", b[i][j]);}printf("\n");}}//11.冒泡排序#include <stdio.h>#define N 10//宏定义常量int main(){int i;//下标索引int j;int tmp;//临时交换用int a[N] = {58, 58, 96, 100, 25, 55, 66, 88, 99, 77};//外层循环一定是N-1for(i=0; i<N-1; i++){//两两交换,大的往后走for(j=0; j<N-i-1; j++){//交换if(a[j] > a[j+1]){tmp = a[j];a[j] = a[j+1];a[j+1] = tmp;}}}for(i=0; i<N; i++){printf("%d ", a[i]);;}printf("\n");}//12.结构冒泡排序#include <stdio.h>//结构定义,用户自定义类型typedef struct student{char sno[20];//学号char name[20];//姓名int age;//年龄char gender;//性别char tel[20];//电话};int main(){int i;int j;double sum = 0;struct student tmp;//两两交换临时用;//结构数组struct student team[5];for(i=0; i<5; i++){printf("请输入第%d个队员的信息:\n", i+1);scanf("%s %s %d %c %s", team[i].sno, team[i].name, &team[i].age, &team[i].gender, team[i].tel);}//按年龄冒泡排序for(i=0; i<5; i++){for(j=0; j<5-i-1; j++){//两两交换if(team[j].age > team[j+1].age){tmp = team[j];team[j] = team[j+1];team[j+1] = tmp;}}}//取值printf("%-12s %-10s %-5s %-5s %-15s\n", "学号", "姓名", "年龄", "性别", "电话");for(i=0; i<5; i++){printf("%-12s %-10s %-5d %-5c %-15s\n", team[i].sno, team[i].name, team[i].age, team[i].gender, team[i].tel);}}//13.结构数组找年龄最大值#include <stdio.h>//结构定义,用户自定义类型typedef struct student{char sno[20];//学号char name[20];//姓名int age;//年龄char gender;//性别char tel[20];//电话};int main(){int i;struct student tmp;//找最大临时用//结构数组struct student team[5];for(i=0; i<5; i++){printf("请输入第%d个队员的信息:\n", i+1);scanf("%s %s %d %c %s", team[i].sno, team[i].name, &team[i].age, &team[i].gender, team[i].tel);}//取值printf("%-12s %-10s %-5s %-5s %-15s\n ", "学号", "姓名", "年龄", "性别", "电话");for(i=0; i<5; i++){printf("%-12s %-10s %-5d %-5c %-15s\ n", team[i].sno, team[i].name, team[i].age, team[i].gender, team[i].tel);}//找学号最大的那一个tmp = team[0];for(i=1; i<5; i++){if(strcmp(team[i].sno,tmp.sno) >0 ){tmp = team[i];}}printf("学号最大的队员如下:\n");printf("%-12s %-10s %-5d %-5c %-15s\ n", tmp.sno, , tmp.age, tmp.gender, tmp.tel);}//14.文件读写#include <stdio.h>#include <stdlib.h>//结构定义,用户自定义类型typedef struct student{char sno[20];//学号char name[20];//姓名int age;//年龄char gender;//性别char tel[20];//电话};//文件读写int main(){struct student * s, * p1;//个数未知FILE * fp;int i, n = 0;char buf[1024];//fgets缓冲区//打开文件fp = fopen("e:\\test.txt", "r");while(fgets(buf, 1024, fp) != NULL)n++;fclose(fp);//指向一个可以存储n个student结构的内存空间s = (struct student *)malloc(sizeof(struct student) * n);p1 = s;//不要动头位置s的值//打开文件fp = fopen("e:\\test.txt", "r");for(i=0; i<n; i++){//从文件中读入一行fscanf(fp, "%s %s %d %c %s", p1->sno, p1->name, &p1->age, &p1->gender, p1->tel);p1++;}fclose(fp);p1 = s;for(i=0; i<3; i++){printf("%s %s %d %c %s\n", p1->sno, p1->name, p1->age, p1->gender, p1->tel);}free(s);}//15.输入三角形三边长计算周长和面积#include<stdio.h>#include<math.h>int main(){double area,perimeter,s,a,b,c;printf("请输入三边长a b c:");scanf("%lf%lf%lf",&a,&b,&c);if((a+b>c) && (a+c>b) && (b+c>a)){s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c));perimeter=a+b+c;printf("area=%.2f,perimeter=%.2f\ n",area,perimeter);}else{printf("三边长无法构成三角形。
C语言入门基础代码(20条案例)
C语言入门基础代码(20条案例)下面是20条基础案例:1. 输出Hello, World!#include <stdio.h> // 使用标准输入输出库int main() {printf("Hello, World!\n"); // 输出字符串return 0; // 返回程序执行成功}2. 判断一个数是否为偶数#include <stdio.h> // 使用标准输入输出库int main() {int num; // 定义变量printf("请输入一个整数:");scanf("%d", &num); // 从控制台输入一个整数if(num % 2 == 0) { // 如果余数为0说明是偶数printf("%d 是偶数\n", num);} else {printf("%d 是奇数\n", num);}return 0;}3. 计算两个数的和#include <stdio.h> // 使用标准输入输出库int main() {int a, b; // 定义变量int sum; // 定义变量printf("请输入两个整数:");scanf("%d%d", &a, &b); // 从控制台输入两个整数sum = a + b; // 求和printf("%d + %d = %d\n", a, b, sum); // 输出结果return 0;}4. 求一个数的平方#include <stdio.h> // 使用标准输入输出库int main() {int num; // 定义变量int square; // 定义变量printf("请输入一个整数:");scanf("%d", &num); // 从控制台输入一个整数square = num * num; // 求平方printf("%d 的平方是%d\n", num, square); // 输出结果return 0;}5. 判断一个字符是否为数字#include <stdio.h> // 使用标准输入输出库#include <ctype.h> // 使用字符函数库int main() {char ch; // 定义变量printf("请输入一个字符:");scanf("%c", &ch); // 从控制台输入一个字符if(isdigit(ch)) { // 判断是否为数字printf("%c 是数字\n", ch);} else {printf("%c 不是数字\n", ch);}return 0;}6. 计算数组元素的平均值#include <stdio.h> // 使用标准输入输出库int main() {int arr[] = {1, 2, 3, 4, 5}; // 定义数组int len = sizeof(arr) / sizeof(int); // 数组长度int sum = 0; // 定义变量int avg; // 定义变量for(int i = 0; i < len; i++) { // 遍历数组sum += arr[i]; // 累加求和}avg = sum / len; // 求平均值printf("数组的平均值是%d\n", avg); // 输出结果return 0;}7. 按照下标访问数组元素#include <stdio.h> // 使用标准输入输出库int main() {int arr[] = {1, 2, 3, 4, 5}; // 定义数组int len = sizeof(arr) / sizeof(int); // 数组长度for(int i = 0; i < len; i++) { // 遍历数组printf("arr[%d] = %d\n", i, arr[i]); // 输出每个元素}return 0;}8. 使用指针访问数组元素#include <stdio.h> // 使用标准输入输出库int main() {int arr[] = {1, 2, 3, 4, 5}; // 定义数组int len = sizeof(arr) / sizeof(int); // 数组长度int *p = arr; // 把数组首地址赋给指针变量for(int i = 0; i < len; i++) { // 遍历数组printf("arr[%d] = %d\n", i, *(p + i)); // 输出每个元素}return 0;}9. 求Fibonacci 数列的第n 项#include <stdio.h> // 使用标准输入输出库int main() {int n; // 定义变量int a = 0, b = 1, c; // 定义变量printf("请输入一个正整数:");scanf("%d", &n); // 从控制台输入一个整数for(int i = 1; i <= n; i++) { // 求Fibonacci 数列的第n 项c = a + b;a = b;b = c;}printf("Fibonacci 数列的第%d 项是%d\n", n, a); // 输出结果return 0;}10. 使用递归计算阶乘#include <stdio.h> // 使用标准输入输出库int factorial(int n) { // 定义递归函数if(n == 0 || n == 1) {return 1;} else {return n * factorial(n - 1);}}int main() {int n; // 定义变量printf("请输入一个非负整数:");scanf("%d", &n); // 从控制台输入一个整数int result = factorial(n); // 调用递归函数计算阶乘printf("%d 的阶乘是%d\n", n, result); // 输出结果return 0;}11. 判断一个数是否是质数#include <stdio.h>#include <stdbool.h>bool isPrime(int num) {if(num <= 1) {return false; // 小于等于1的数都不是质数}for(int i = 2; i * i <= num; i++) { // 只要从2到根号num遍历就可以了if(num % i == 0) {return false; // 如果存在因子,则不是质数}}return true;}int main() {int num;printf("请输入一个整数:");scanf("%d", &num);bool result = isPrime(num); // 调用isPrime函数if(result) {printf("%d 是质数\n", num);} else {printf("%d 不是质数\n", num);}return 0;}12. 计算圆的面积和周长#include <stdio.h>const double PI = 3.1415926;int main() {double r, area, perimeter;printf("请输入圆的半径:");scanf("%lf", &r);area = PI * r * r; // 计算面积perimeter = 2 * PI * r; // 计算周长printf("圆的面积是%.2f,周长是%.2f\n", area, perimeter);return 0;}13. 计算斐波那契数列的前n 项#include <stdio.h>int main() {int n;printf("请输入要输出的斐波那契数列项数:");scanf("%d", &n);int a = 0, b = 1, c; // 定义三个变量for(int i = 1; i <= n; i++) { // 输出前n项斐波那契数列printf("%d ", a);c = a + b;a = b;b = c;}printf("\n"); // 换行return 0;}14. 嵌套循环输出九九乘法表#include <stdio.h>int main() {for(int i = 1; i <= 9; i++) { // 控制行数for(int j = 1; j <= i; j++) { // 控制列数printf("%d*%d=%-2d ", j, i, i * j); // 左对齐输出}printf("\n"); // 换行}return 0;}15. 获得数组的最大值和最小值#include <stdio.h>int main() {int arr[] = {3, 5, 8, 1, 4, 9, 6, 2, 7};int len = sizeof(arr) / sizeof(int);int max = arr[0], min = arr[0]; // 假设第一个元素既是最大值也是最小值for(int i = 1; i < len; i++) {if(arr[i] > max) { // 更新最大值max = arr[i];}if(arr[i] < min) { // 更新最小值min = arr[i];}}printf("数组的最大值是%d,最小值是%d\n", max, min);return 0;}16. 判断一个数是否为回文数```c#include <stdio.h>#include <stdbool.h>bool isPalindrome(int num) {if(num < 0) { // 负数不是回文数return false;}int temp = num, reversed = 0; // 定义需要用到的变量while(temp != 0) { // 反转整数reversed = reversed * 10 + temp % 10;temp /= 10;}return (num == reversed); // 如果反转后等于原来的数,则为回文数}int main() {int num;printf("请输入一个整数:");scanf("%d", &num);bool result = isPalindrome(num);if(result) {printf("%d 是回文数\n", num);} else {printf("%d 不是回文数\n", num);}return 0;}17. 将字符串反转输出#include <stdio.h>#include <string.h>int main() {char str[100];printf("请输入一个字符串:");scanf("%s", str);int len = strlen(str);for(int i = len - 1; i >= 0; i--) { // 倒序输出printf("%c", str[i]);}printf("\n"); // 换行return 0;}18. 将一个二维数组按列排序#include <stdio.h>void sortCols(int arr[][3], int rows) {for(int j = 0; j < 3; j++) { // 按列排序for(int i = 0; i < rows - 1; i++) {for(int k = i + 1; k < rows; k++) {if(arr[i][j] > arr[k][j]) { // 比较大小并交换int temp = arr[i][j];arr[i][j] = arr[k][j];arr[k][j] = temp;}}}}}int main() {int arr[][3] = {{2, 5, 9}, {7, 6, 1}, {4, 3, 8}};int rows = sizeof(arr) / sizeof(arr[0]); // 计算数组的行数sortCols(arr, rows); // 调用函数排序for(int i = 0; i < rows; i++) { // 输出排序后的数组for(int j = 0; j < 3; j++) {printf("%d ", arr[i][j]);}printf("\n"); // 换行}return 0;}19. 判断一个字符串是否为回文串#include <stdio.h>#include <string.h>#include <stdbool.h>bool isPalindrome(char str[]) {int len = strlen(str);for(int i = 0; i < len / 2; i++) { // 判断左右字符是否一样if(str[i] != str[len - i - 1]) {return false;}}return true;}int main() {char str[100];printf("请输入一个字符串:");scanf("%s", str);bool result = isPalindrome(str); // 调用函数判断是否为回文串if(result) {printf("%s 是回文串\n", str);} else {printf("%s 不是回文串\n", str);}return 0;}20. 将一个整数转换成二进制数并输出#include <stdio.h>void decToBin(int num) {if(num > 1) { // 递归调用decToBin(num / 2);}printf("%d", num % 2); // 每次输出余数}int main() {int num;printf("请输入一个十进制数:");scanf("%d", &num);printf("%d 的二进制数为", num);decToBin(num); // 调用函数输出二进制数printf("\n"); // 换行return 0;}。
C语言代码大全
------------------------------------------------------------------------摘自宋鲁生程序设计大赛乘法口诀表#include <stdio.h>#include <conio.h>void main(void){int i,j,x,y;clrscr();printf("\n\n * * * 乘法口诀表* * * \n\n");x=9;y=5;for(i=1;i<=9;i++){gotoxy(x,y);printf("%2d ",i);x+=3;}x=7;y=6;for(i=1;i<=9;i++){gotoxy(x,y);printf("%2d ",i);y++;}x=9;y= 6;for(i=1;i<=9;i++){for(j=1;j<=9;j++){gotoxy(x,y);printf("%2d ",i*j);y++;}y-=9;x+=3;}printf("\n\n");}用一维数组统计学生成绩#include <stdio.h>void main(){char SelectKey,CreditMoney,DebitMoney;while(1){do{clrscr();puts("=========================");puts("| Please select key: |");puts("| 1. Quary |");puts("| 2. Credit |");puts("| 3. Debit |");puts("| 4. Return |");puts("=========================");SelectKey = getch();}while( SelectKey!='1' && SelectKey!='2' && SelectKey!='3' &&SelectKey!='4' );switch(SelectKey){case '1':clrscr();puts("================================");puts("| Your balance is $1000. |");puts("| Press any key to return... |");puts("================================");getch();break;case '2':do{clrscr();puts("==================================");puts("| Please select Credit money: |");puts("| 1. $50 |");puts("| 2. $100 |");puts("| 3. Return |");puts("==================================");CreditMoney = getch();}while( CreditMoney!='1' && CreditMoney!='2' && CreditMoney!='3' );switch(CreditMoney){case '1':clrscr();puts("=========================================");puts("| Your Credit money is $50,Thank you! |");puts("| Press any key to return... |");puts("=========================================");getch();break;case '2':clrscr();puts("==========================================");puts("| Your Credit money is $100,Thank you! |");puts("| Press any key to return... |");puts("==========================================");getch();break;case '3':break;}break;case '3':do{clrscr();puts("====================================");puts("| Please select Debit money: |");puts("| 1. $50 |");puts("| 2. $100 |");puts("| 3. $500 |");puts("| 4. $1000 |");puts("| 5. Return |");puts("====================================");DebitMoney = getch();}while( DebitMoney!='1' && DebitMoney!='2' && DebitMoney!='3' &&DebitMoney!='4' && DebitMoney!='5' );switch(DebitMoney){case '1':clrscr();puts("===========================================");puts("| Your Debit money is $50,Thank you! |");puts("| Press any key to return... |");puts("===========================================");getch();break;case '2':clrscr();puts("===========================================");puts("| Your Debit money is $100,Thank you! |");puts("| Press any key to return... |");puts("===========================================");getch();break;case '3':clrscr();puts("===========================================");puts("| Your Debit money is $500,Thank you! |");puts("| Press any key to return... |");puts("===========================================");getch();break;case '4':clrscr();puts("===========================================");puts("| Your Debit money is $1000,Thank you! |");puts("| Press any key to return... |");puts("===========================================");getch();break;case '5':break;}break;case '4':clrscr();puts("================================");puts("| Thank you for your using! |");puts("| Good bye! |");puts("================================");return;}}模拟ATM(自动柜员机)界面#include <stdio.h> void main(){int Password=0,Number=0,price=58,i=0;while( Password != 1234 ){if( i >= 3 )return;i++;puts("Please input Password: ");scanf("%d",&Password);}i=0;while( Number!=price ){do{puts("Please input a number between 1 and 100: ");scanf("%d",&Number);printf("Your input number is %d\n",Number);}while( !(Number>=1 && Number<=100) );if( Number >= 90 ){printf("Too Bigger! Press any key to try again!\n");}else if( Number >= 70 && Number < 90 ){printf("Bigger!\n");}else if( Number >= 1 && Number <= 30 ){printf("Too Small! Press any key to try again!\n");}else if( Number > 30 && Number <= 50 ){printf("Small! Press any key to try again!\n");}else{if( Number == price ){printf("OK! You are right! Bye Bye!\n");}else if( Number < price ){printf("Sorry,Only a little smaller! Press any key to try again!\n");}else if( Number > price ){printf(" Sorry, Only a little bigger! Press any key to try again!\n");}getch();}}用二维数组实现矩阵转置/* 用二维数组实现矩阵的转置*/#include <stdio.h>#define ROW 3#define COL 4main(){int matrixA[ROW][COL],matrixB[COL][ROW];int i,j; clrscr();printf("Enter elements of the matrixA,");printf("%d*%d:\n",ROW,COL);for( i=0; i<ROW; i++ ){for( j=0; j<COL; j++ ){scanf("%d",&matrixA[i][j]);}}for( i=0; i<ROW; i++ ){for( j=0; j<COL; j++ ){matrixB[j][i] = matrixA[i][j];}}printf("MatrixB,");printf("%d*%d:\n",COL,ROW);for( i=0; i<COL; i++ ){for( j=0; j<ROW; j++ ){printf("%8d",matrixB[i][j]);}printf("\n");}printf("\n Press Any Key to Quit... \n");getch();}求解二维数组的最大/最小元素#define MAXN 20int a[MAXN][MAXN];main(){int min, /* 存储最小值*/max; /* 存储最大值*/int row,col,n;clrscr();printf("Please input the order of the matrix:\n");/* 输入方阵的阶次*/ scanf("%d",&n);printf("Please input the elements of the matrix,\n from a[0][0] to a[%d][%d]:\n",n-1,n-1);for(row=0;row<n;row++)for(col=0;col<n;col++)scanf("%d",&a[row][col]);for(min=a[0][0],row=0;row<n;row++){/* 从每行选出最大数*/for(max=a[row][0],col=1;col<n;col++)/*从row行选出最大数*/if(max<a[row][col])max=a[row][col];if(min>max)/* 保存至row行的最小数*/min=max;}printf("The minimum of maximum number is %d\n",min);for(max=a[0][0],row=0;row<n;row++){/* 每行选出最小数*/for(min=a[row][0],col=1;col<n;col++)/* 从row行选出最小数*/ if(min>a[row][col])min=a[row][col];if(max<min)/*保存至row行的最大数*/max=min;}printf("The maximum of minimum numbers is %d\n",max);printf("\nPress any key to quit...\n");getch();}利用数组求前n个质数#define N 50main(){int primes[N];int pc,m,k; clrscr();printf("\n The first %d prime numbers are:\n",N);primes[0]=2;/*2是第一个质数*/pc =1;/*已有第一个质数*/m =3;/*被测试的数从3开始*/while(pc<N){/*调整m使它为下一个质数*/k=0;while(primes[k]*primes[k]<=m)if(m%primes[k]==0){/*m是合数*/m+=2;/*让m取下一个奇数*/k=1;/*不必用primes[0]=2去测试m,所以k从一开始*/}elsek++;/*继续用下一个质数去测试*/primes[pc++]=m;m+=2;/*除2外,其余质数均是奇数*/}/*输出primes[0]至primes[pc-1]*/for(k=0;k<pc;k++)printf("%4d",primes[k]);printf("\n\n Press any key to quit...\n ");getch();}编制万年历#include "stdio.h"long int f(int year,int month){/*f(年,月)=年-1,如月<3;否则,f(年,月)=年*/if(month<3) return year-1;else return year;} long int g(int month){/*g(月)=月+13,如月<3;否则,g(月)=月+1*/if(month<3) return month+13;else return month+1;} long int n(int year,int month,int day){/*N=1461*f(年、月)/4+153*g(月)/5+日*/return 1461L*f(year,month)/4+153L*g(month)/5+day;} int w(int year,int month,int day){/*w=(N-621049)%7(0<=w<7)*/return(int)((n(year,month,day)%7-621049L%7+7)%7);} int date[12][6][7];int day_tbl[ ][12]={{31,28,31,30,31,30,31,31,30,31,30,31},{31,29,31,30,31,30,31,31,30,31,30,31}};main(){int sw,leap,i,j,k,wd,day;int year;/*年*/char title[]="SUN MON TUE WED THU FRI SAT";clrscr();printf("Please input the year whose calendar you want to know: ");/*输入年*/scanf("%d%*c",&year);/*输入年份值和掠过值后的回车*/sw=w(year,1,1);leap=year%4==0&&year%100||year%400==0;/*判闰年*/for(i=0;i<12;i++)for(j=0;j<6;j++)for(k=0;k<7;k++)date[i][j][k]=0;/*日期表置0*/for(i=0;i<12;i++)/*一年十二个月*/for(wd=0,day=1;day<=day_tbl[leap][i];day++){/*将第i+1月的日期填入日期表*/date[i][wd][sw]=day;sw=++sw%7;/*每星期七天,以0至6计数*/if(sw==0) wd++;/*日期表每七天一行,星期天开始新的一行*/} printf("\n|==================The Calendar of Year %d=====================|\n|",year);for(i=0;i<6;i++){/*先测算第i+1月和第i+7月的最大星期数*/for(wd=0,k=0;k<7;k++)/*日期表的第六行有日期,则wd!=0*/wd+=date[i][5][k]+date[i+6][5][k];wd=wd?6:5;printf("%2d %s %2d %s |\n|",i+1,title,i+7,title);for(j=0;j<wd;j++){printf(" ");/*输出四个空白符*//*左栏为第i+1月,右栏为第i+7月*/for(k=0;k<7;k++)if(date[i][j][k])printf("%4d",date[i][j][k]);else printf(" ");printf(" ");/*输出十个空白符*/for(k=0;k<7;k++)if(date[i+6][j][k])printf("%4d",date[i+6][j][k]);else printf(" ");printf(" |\n|");}/*scanf("%*c");/*键入回车输出下一个月的日历*/}puts("=================================================================|") ;puts("\n Press any key to quit...");getch();}对数组元素排序rest(int a[], int n){int i,low,high,t; for(i=0,low=0,high=n-1;i<=high;) {if(a[i]>0){/*a[i]与a[high]交换,随之high减1*/t=a[i];a[i]=a[high];a[high]=t;high--;}else if(a[i]==0)i++; /* 掠过该元素*/else{/*a[i]与a[low]交换,随之low增1, i增1*/t=a[i];a[i]=a[low];a[low]=t;low++;i++;}}}int s[]={8,4,0,-1,6,0,-5};main(){int i;clrscr();printf("\n The arry before rest is:\n");for(i=0;i<sizeof(s)/sizeof(s[0]);i++)printf("%4d",s[i]);rest(s,sizeof(s)/sizeof(s[0]));printf("\n The arry after rest is:\n");for(i=0;i<sizeof(s)/sizeof(s[0]);i++)printf("%4d",s[i]);printf("\n Press any key to quit...\n");getch();}任意进制数的转换/* 函数trans将无符号整数n翻译成d(2<=d<=16)进制表示的字符串s */ #define M sizeof(unsigned int)*8int trans(unsigned n, int d, char s[]){static char digits[] ="0123456789ABCDEF"; /* 十六进制数字的字符*/char buf[M+1];int j, i = M;if(d<2||d>16){s[0]='\0'; /* 不合理的进制,置s为空字符串*/return 0; /* 不合理的进制,函数返回0 */}buf[i]='\0';do{buf[--i]=digits[n%d]; /*译出最低位,对应字符存入对应工作数组中*/n/=d;}while(n);/* 将译出在工作数组中的字符串复制到s */for(j=0;(s[j]=buf[i])!='\0';j++,i++);/* 其中控制条件可简写成s[j]=buf[i] */return j;}/* 主函数用于测试函数trans() */main(){unsigned int num = 253;int scale[]={2,3,10,16,1};char str[33];int i;clrscr();for(i=0;i<sizeof(scale)/sizeof(scale[0]);i++){if(trans(num,scale[i],str))printf("%5d = %s(%d)\n",num,str,scale[i]);elseprintf("%5d => (%d) Error! \n",num,scale[i]);}printf("\n Press any key to quit...\n");getch();}判断回文数/* 函数circle用于判断正整数n的d进制数表示形式是否是回文数*/ int circle(int n, int d){int s=0,m=n;while(m){s=s*d+m%d;m/=d;}return s==n;}/* main函数用于测试circle函数*/int num[]={232,27,851};int scale[]={2,10,16};main(){int i,j;clrscr();for(i=0;i<sizeof(num)/sizeof(num[0]);i++)for(j=0;j<sizeof(scale)/sizeof(scale[0]);j++)if(circle(num[i],scale[j]))printf("%d -> (%d) is a Circle Number!\n",num[i],scale[j]);elseprintf("%d -> (%d) is not a Circle Number!\n",num[i],scale[j]);printf("\n Press any key to quit...\n");getch();}求解钢材切割的最佳订单#include <stdio.h>#define N 20#define DELTA 2int bestlen;int bestsele[N];int sele[N];int n;int orderlen[N];int total;main(){int i;clrscr();printf("\n Please enter total length of the steel:\n");/* 输入钢材总长*/scanf("%d",&total);printf("\n Please enter number of order:\n"); /* 输入定单数*/ scanf("%d",&n);printf("\n Please enter the orders:\n"); /* 输入各定单*/for(i=0;i<n;i++)scanf("%d",&orderlen[i]);bestlen=0; /*最佳解用料的初值*/for(i=0;i<n;i++)sele[i]=bestsele[i]=0; /*置当前选择和最佳选择初值*/try(); /* 调用函数求解*/for(i=0;i<n;i++) /* 输出结果*/if(bestsele[i])printf("order %d length = %d\n",i+1,orderlen[i]);printf("\n Press any key to quit...");getch();}try(){int i,len;for(len=i=0;i<n;i++) /* 求当前选中的用料量*/if(sele[i])len+=orderlen[i]+DELTA;if(len-DELTA<=total) /* 注意最后一段可能不需要切割*/{if(bestlen < len){/* 找到一个更好的解*/bestlen = len;for(i=0;i<n;i++)bestsele[i]=sele[i];}for(i=0;i<n;i++) /* 对所有未选定单逐一作选中尝试循环*/if(!sele[i]){sele[i]=1; /* 做选中尝试*/try();sele[i]=0;}}}指向数组的指针main(){int x,y,z; /* 定义三个int型变量*/int *xp = &x, /* 定义指针变量xp,并赋值为x的地址,使xp指向x */ *yp = &y, /* 定义指针变量yp,并赋值为y的地址,使yp指向y */*zp = &z; /* 定义指针变量zp,并赋值为z的地址,使zp指向z */int t;printf("\nPlease input x,y,z:\n");scanf("%d%d%d",xp,yp,zp); /* 通过变量的指针,为变量输入值*/ if(*xp>*yp) /* 通过指向变量的指针引用变量的值*/{t=*xp; /* 通过指向变量的指针引用变量的值*/*xp=*yp;/* 通过指向变量x的指针xp,引用变量x的值*/*yp=t; /* 通过指向变量y的指针yp,引用变量y的值*/}if(*xp>*zp) /* 通过指向变量的指针,引用变量的值*/{t=*xp; /* 通过指向变量x的指针xp,引用变量x的值*/*xp=*zp;/* 通过指向变量x的指针xp,引用变量x的值*/*zp=t; /* 通过指向变量z的指针zp,引用变量z的值*/}if(*yp>*zp) /* 通过指向变量的指针,引用变量的值*/{t=*yp; /* 通过指向变量的指针,引用变量的值*/*yp=*zp;/* 通过指向变量y的指针yp,引用变量y的值*/*zp=t;/* 通过指向变量z的指针zp,引用变量z的值*/}printf("x = %d\ty = %d\tz = %d\n",x,y,z);printf("\nPress any key to quit...\n");getch();}阿拉伯数字转换为罗马数字#include <stdio.h>#define ROWS 4#define COLS 4int nums[ROWS][COLS]={{1000,1000,1000,1000},{900,500,400,100},{90,50,40,10},{9,5,4,1}};char *roms[ROWS][COLS]={{"m","m","m","m"}, {"cm","d","cd","c"},{"xc","l","xl","x"},{"ix","v","iv","i"}}; main(int argc,char *argv[ ]){int low,high;char roman[25]; if(argc<2){ printf("Usage:roman decimal_number\n");/*运行程序需带整数参数*/}high=low=atoi(argv[1]);/*将第一个参数转换成整数*/checknum(low);if(argc>2){/*带两个参数*/high=atoi(argv[2]);checknum(high);if(low>high){low=high;high=atoi(argv[1]);}}elselow=1;for(;low<=high;low++){to_roman(low,roman);printf("%d\t%s\n",low,roman);}} checknum(int val)/*检查参数合理性*/{if(val<1||val>9999){printf("The number must be in range 1..9999.\n");exit(0);}}to_roman(int decimal,char roman[ ])/*将整数转换成罗马数字表示*/ {int power,index;roman[0]='\0';for(power=0;power<ROWS;power++)for(index=0;index<COLS;index++)while(decimal>=nums[power][index]){strcat(roman,roms[power][index]);decimal-=nums[power][index];}}通讯录的输入输出#include <stdio.h>#define ZIPLEN 10#define PHONLEN 15/*struct addr类型定义*/ struct addr{char *name;/*姓名*/char *address;/*地址*/char zip[ZIPLEN];/*邮政编码*/char phone[PHONLEN];/*电话号码*/}; main()/*本主函数示意上述输入输出函数的用法*/{struct addr p[100];int i,j;clrscr();for(i=0;readaddr(p+i);i++);for(j=0;j<i;j++) writeaddr(p+j);puts("\n Press any key to quit...");getch();} /* 函数readaddr用于输入一个通信录函数*/int readaddr(struct addr *dpt){int len;char buf[120];/*输入字符串的缓冲区*/ printf("\nPlease input theName:\n");/*输入姓名*/if(scanf("%s",buf)==1){len=strlen(buf);dpt->name=(char *)malloc(len+1);/*申请存贮姓名的空间*/ strcpy(dpt->name,buf);}else return 0;/*Ctrl+Z结束输入*/printf("Please input the Address:\n");/*输入地址*/if(scanf("%s",buf)==1){len=strlen(buf);dpt->address=(char *)malloc(len+1);/*申请存贮地址的空间*/ strcpy(dpt->address,buf);}else{/*Ctrl+Z结束输入*/free(dpt->name);/*释放存贮姓名的空间*/return 0;}printf("Please input the Zip code:\n");/*输入邮编*/if(scanf("%s",buf)==1)strncpy(dpt->zip,buf,ZIPLEN-1);else{free(dpt->name);/*释放存贮姓名的空间*/free(dpt->address);/*释放存贮地址的空间*/return 0;/*Ctrl+Z结束输入*/}printf("Please input the Phone number:\n");/*输入电话号码*/ if(scanf("%s",buf)==1)strncpy(dpt->phone,buf,PHONLEN-1);else{free(dpt->name);free(dpt->address);return 0;/*Ctrl+Z结束输入*/}return 1;} /* 函数writeaddr用于输出通讯录*/int writeaddr(struct addr*dpt){printf("Name : %s\n", dpt->name);/*输出姓名*/printf("Address : %s\n", dpt->address);/*输出地址*/printf("Zip : %s\n", dpt->zip);/*输出邮编*/printf("Phone : %s\n\n", dpt->phone);/*输出电话号码*/}扑克牌的结构表示enum suits{CLUBS,DIAMONDS,HEARTS,SPADES}; struct card{enum suits suit;char value[3];};struct card deck[52];char cardval[][3]= {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};char suitsname[][9]={"CLUBS","DIAMONDS","HEARTS","SPADES"}; main() {int i,j;enum suits s;clrscr();for(i=0;i<=12;i++)for(s=CLUBS;s<=SPADES;s++){j=i*4+s;deck[j].suit=s;strcpy(deck[j].value,cardval[i]);}for(j=0;j<52;j++)printf("(%s%3s)%c",suitsname[deck[j].suit],deck[j].value,j%4==3?'\n':'\t');puts("\nPress any key to quit...");getch();}用“结构”统计学生成绩#include <stdio.h>#define N 200#define SCORES 5#define NUMLEN 10struct std_type{char no[NUMLEN];/*学号*/char *name;/*名字符串指针*/int scores[SCORES];/*五门功课的成绩*/};struct std_type students[N];int order[N];int total[N]; /*[函数]输入一个学生信息函数*/int readastu(struct std_type *spt){int len,j;char buf[120];/*输入字符串的缓冲区*/ printf("\nNumber : ");/*输入学号*/if(scanf("%s",buf)==1)strncpy(spt->no,buf,NUMLEN-1);elsereturn 0;/*Ctrl+Z结束输入*/printf("Name : ");/*输入姓名*/if(scanf("%s",buf)==1){len=strlen(buf);spt->name=(char *)malloc(len+1);/*申请存贮姓名的空间*/ strcpy(spt->name,buf);}else return 0;/*Ctrl+Z结束输入*/printf("Scores : ");/*输入成绩*/for(j=0;j<SCORES;j++)if(scanf("%d",spt->scores+j)!=1)break;if(j==0)/*一个成绩也未输入*/{free(spt->name);/*释放存贮姓名的空间*/return 0;}for(;j<SCORES;j++)/*少数未输入的成绩用0分代之*/ spt->scores[j]=0;return 1;} /*[函数]输出一个学生信息的函数*/int writeastu(struct std_type *spt){int i; printf("Number : %s\n",spt->no);/*输出学号*/printf("Name : %s\n",spt->name);/*输出姓名*/printf("Scores : ");/*输出成绩*/for(i=0;i<SCORES;i++)printf("%4d",spt->scores[i]);printf("\n\n");} main(){int n,i,j,t; clrscr();for(n=0;readastu(students+n);n++);/*采用冒泡法对学生信息数组排序*/for(i=0;i<n;i++){order[i]=i;/*预置第i个输入的学生*/for(t=0,j=0;j<SCORES;j++)/*求第i个学生的总分*/t+=students[i].scores[j];total[i]=t;}/*冒泡排序*/for(i=0;i<n-1;i++)/*共扫视n-1遍*/for(j=0;j<n-1-i;j++)if(total[order[j]]<total[order[j+1]]){/*交换名次*/t=order[j];order[j]=order[j+1];order[j+1]=t;}for(j=0;j<n;j++)/*输出*/writeastu(students+order[j]);printf("\n Press any key to quit...\n");getch();}报数游戏#include <stdio.h>struct ele{int no;struct ele *link;}main(){int n,m,i;struct ele *h,*u,*p;clrscr();printf("Please input n&m:\n");scanf("%d%d",&n,&m);/*输入n和m*/h=u=(struct ele *)malloc(sizeof(struct ele));/*形成首表元*/ h->no=1;for(i=2;i<=n;i++)/*形成其余的n-1个表元*/{u->link=(struct ele *)malloc(sizeof(struct ele));u=u->link;u->no=i;/*第i个表元置编号i*/}u->link=h;/*末表元后继首表元,形成环*/puts("\nThe numbers of who will quit the cycle in turn are:"); while(n){for(i=1;i<m;i++)/*掠过m-1个表元*/u=u->link;p=u->link;/*p指向第m个表元*/u->link=p->link;/*第m个表元从环中脱钩*/printf("%4d",p->no);free(p);/*释放第m个表元占用的空间*/n--;}printf("\n\n Press any key to quit...\n");getch();}学生成绩管理程序/*学生成绩管理程序编制一个统计学生考试分数的管理程序。
c语言课程设计+报告+源代码
西安郵電大學C语言课程设计报告题目: 职工工资管理系统院系名称: 计算机学院专业名称: 软件工程班级:学生姓名:学号(8位):指导教师:设计起止时间: 2013年06月03日~2013年06月12日一.设计目的1.通过本课程设计, 强化上机动手能力, 使学生在理论和实践的基础上进一步巩固《c语言程序设计》课程学习的内容, 掌握工程软件设计的基本方法.2.学会将知识应用于实际的方法, 提高分析和解决问题的能力, 增加综合能力.3.为后续各门计算机课程的学习打下坚实基础; 为毕业设计和以后工作打下必要基础。
二.设计内容本设计主要包括了用户登录和主菜单,其中用户登录包括了一下几个功能1.新用户的注.2.用户登.3。
用户密码的修改。
而主菜单包括: 1.职工信息的录.2.职工信息的修.3.选择性排.4.统计人数和工.5. 输出现有的信.6.自定义查询信息。
三. 概要设计1. 功能模块图;1.2. 各个模块详细的功能描述。
2.修改密码的时候, 需要输入原密码, 并且输入两次新的密码必须相同才能完成密码的修改。
3.用户登录: 需要输入用户名和密码, 如果用户名不存在或密码错误会给出相应的提醒, 当输入正确的时候会进入主菜单。
4.新用户注册:需要输入注册的用户和密码, 如果用户明已被注册过会给出相应的提醒。
5.职工信息的输入:是从无开始输入职工的信息, 同样也会给出输入内容的提醒, 当输入最后一次职工的信息为零时结束输入, 同是会将输入的信息写入到文件里。
6.修改职工信息其中包括a.添加职工信息和输入职工信息相同在添加完会提醒是否继续添加。
b.修改员工信息: 此时会出现选择性修改职工的哪项信息,先进行选择再进行修改。
C.删除员工信息: 需要输入所要删除员工的姓名或id进行删除!如果删除不成功或者删除者不存在会给出相应的提醒。
7.统计信息: 会自动的统计现有员工的总人数和现有员工的总工资。
8.输出现有职工的信息: 会显示现在记录的职工的各项信息。
c语言课程设计及源代码
c语言课程设计及源代码一、教学目标本课程旨在让学生掌握C语言的基本语法、数据结构、算法和编程思想,培养学生具备基本的程序设计能力。
通过本课程的学习,学生将能够:1.理解C语言的基本语法和编程规则;2.熟练使用C语言进行简单的程序设计;3.掌握常用的数据结构和算法;4.培养良好的编程习惯和问题解决能力。
二、教学内容教学内容将按照教材的章节进行,主要包括:1.C语言的基本语法和编程规则;2.数据类型的定义和运算;3.控制语句和函数的使用;4.常用的数据结构和算法;5.指针和内存管理;6.文件操作和编程实践。
三、教学方法为了激发学生的学习兴趣和主动性,将采用多种教学方法:1.讲授法:通过讲解和演示,让学生掌握C语言的基本语法和编程规则;2.讨论法:通过小组讨论和实践,让学生深入理解和运用数据结构和算法;3.案例分析法:通过分析实际案例,让学生学会解决实际编程问题;4.实验法:通过上机实验,让学生动手实践,巩固所学知识。
四、教学资源为了支持教学内容和教学方法的实施,将准备以下教学资源:1.教材:选用权威、实用的C语言教材;2.参考书:提供相关的参考书籍,供学生自主学习;3.多媒体资料:制作PPT和教学视频,辅助讲解和演示;4.实验设备:提供计算机实验室,让学生进行上机实验。
通过以上教学设计,相信学生能够顺利完成本课程的学习,掌握C语言编程的基本技能。
五、教学评估为了全面、客观、公正地评估学生的学习成果,将采用多种评估方式:1.平时表现:通过课堂参与、提问和讨论,评估学生的学习态度和理解程度;2.作业:布置适量的作业,评估学生的编程能力和实践能力;3.考试:进行期中和期末考试,评估学生对课程知识的掌握程度;4.项目实践:课程项目,让学生综合运用所学知识解决问题,评估学生的综合能力。
六、教学安排教学安排将根据课程内容和学生的实际情况进行设计:1.教学进度:按照教材的章节顺序,合理安排每一节课的教学内容;2.教学时间:根据学生的作息时间,选择合适的时间段进行授课;3.教学地点:选择适宜的教室或实验室,保证教学环境的舒适和设施的齐全;4.教学活动:结合学生的兴趣爱好,安排一些实践活动,提高学生的学习积极性。
华科计算机学院C语言课设源代码
#include <stdio.h>#include <stdlib.h>#include <ctype.h>#include <conio.h>#include <string.h>#include <stddef.h>#include <dos.h>#define SUM 100/*菜单内容*/char *menu[]={"File", /*文件*/"Edit ", /*修改*/"Insert", /*插入*/"Delete", /*删除*/"Query", /*查询*/"Statistic", /*统计*/"Help"};/*将首字母设为红色*/char *red[]={"F","E","I","D","Q","S","H"};/*File菜单*/char *F[]={"Create", /*新建*/"Save", /*保存*/"Load", /*载入*/"Exit"}; /*删除*//*Edite菜单*/char *E[]={"Province","City","Town"};/*Insert菜单*/char *I[]={"Province","City","Town"};/*Delete菜单*/char *D[]={"Province","City","Town"};/*Query菜单*/char *Q[]={"Province","City","Town"};/*Statistic菜单*/char *S[]={"Province mode","City mode","Town mode"}; /*Help菜单*/char *H[]={"About..."};/*缓冲区*/char buf[18*10*2],buf1[17*2];/*乡镇受灾信息链结点结构*/typedef struct town{char town_id[4]; /*乡镇编号*/char town_name[7]; /*乡镇名称*/char city_id[5]; /*所属地市编号*/char prov_id[2]; /*所属省自治区编号*/float land_area; /*耕地面积*/float lake_area; /*湖泊面积*/int sum3; /*该地市输入的乡镇数*/int vill_dro_num; /*旱灾自然村数*/int vill_flo_num; /*洪灾自然村数*/int popu_disa_num; /*受灾人口*/float dro_area; /*旱灾面积*/float flo_area; /*洪灾面积*/float prodro_area; /*抗旱面积*/float proflo_area; /*抗洪面积*/float dro_fund; /*抗旱投入资金*/float flo_fund; /*抗洪投入资金*/float relief; /*救济金额*/struct town *next; /*指向下一乡镇的指针*/} town; /*定义结构名*//*地市受灾信息链结点结构*/typedef struct city{char city_id[5]; /*地市编号*/char city_name[10]; /*地市名称*/char prov_id[2]; /*所属省自治区编号*/float land_area; /*耕地面积*/float lake_area; /*湖泊面积*/int sum2; /*该省自治区输入的地市数*/ int town_num; /*所辖乡镇数*/int town_disa_num; /*受灾乡镇数*/int town_dro_num; /*旱灾乡镇数*/int town_flo_num; /*洪灾乡镇数*/int popu_disa_num; /*受灾人口*/float dro_area; /*旱灾面积*/float flo_area; /*洪灾面积*/float prodro_area; /*抗旱面积*/float proflo_area; /*抗洪面积*/float dro_fund; /*抗旱投入资金*/float flo_fund; /*抗洪投入资金*/float relief; /*救济金额*/struct town *tnext; /*指向乡镇受灾信息的头指针*/ struct city *next; /*指向下一地市的指针*/} city;/*省自治区受灾信息链结点结构*/typedef struct prov{char prov_id[2]; /*省自治区编号*/char prov_name[20]; /*省自治区名称*/float land_area; /*耕地面积*/float lake_area; /*湖泊面积*/int sum1; /*输入的自治区数*/int city_num; /*所辖市县数*/int city_disa_num; /*受灾市县数*/int popu_disa_num; /*受灾人口*/float dro_area; /*旱灾面积*/float flo_area; /*洪灾面积*/float prodro_area; /*抗旱面积*/float proflo_area; /*抗洪面积*/float dro_fund; /*抗旱投入资金*/float flo_fund; /*抗洪投入资金*/float relief; /*救济金额*/struct city *cnext; /* 指向地市受灾信息的头指针*/struct prov *next; /* 指向下一省自治区的指针*/} prov;char prov_id[2]; /*全局变量,记录省自治区编号*/char city_id[5]; /*全局变量,记录地市编号*/prov * head; /*省自治区链表头指针*/city * head2; /*地市链表头指针*/town * head3; /*乡镇链表头指针*/int sum1; /*存储省自治区总个数*/int sum2; /*存储地市个数*/int sum3; /*存储乡镇个数*/void frame(int startx,int starty,int width,int height) ; /* 画边框函数*/ void welcome(void) ; /*欢迎界面函数*/int mainmenu(void); /*主菜单界面函数*/int get_key(void); /* 得到按键值函数*/int ShowAbout(void); /*显示帮助函数*/void CreateProv(prov ** ); /*创建省自治区链表函数*/void CreateCity(city ** ); /*创建地市链表函数*/void CreateTown(town ** ); /*创建乡镇链表函数*/void Save(prov*); /*保存信息函数*/void Load(prov **); /*载入信息函数*/void QueryProv(prov **); /*显示查询省自治区信息函数*/ void QueryCity(prov **,city **); /*显示查询地市信息函数*/void QueryTown(prov **,city **,town **); /*显示查询乡镇信息函数*/void InsertProv(prov *); /*显示插入省自治区信息函数*/ void InsertCity(prov *,city *); /*显示插入地市信息函数*/void InsertTown(prov *,city *,town *);/*显示插入乡镇信息函数*/void DeleteProv(prov *); /*显示删除省自治区信息函数*/ void DeleteCity(prov *,city *); /*显示删除地市信息函数*/void DeleteTown(prov *,city *,town *);/*显示删除乡镇信息函数*/void EditProv(prov **); /*显示修改省自治区信息函数*/ void EditCity(prov **,city **); /*显示修改地市信息函数*/void EditTown(prov **,city **,town **);/*显示修改乡镇信息函数*/void StatProv(prov **,city **,town **); /*显示统计省自治区信息函数*/ void StatCity(prov **,city **,town **); /*显示统计地市信息函数*/void StatTown(prov **,city **,town **); /*显示统计乡镇信息函数*/void main(){int i,j,key,x,y,back;welcome();clrscr();menu:do{textbackground(BLACK);/* 设置屏幕背景颜色,并清除屏幕*/clrscr();window(1,1,80,1);/* 创建窗口用于显示菜单栏*//* 设置文本属性:白底蓝字*/textbackground(WHITE); /* 白色背景*/textcolor(BLUE); /* 蓝色字体*/clrscr(); /* 清屏*/window(1,1,80,1); /*设置活动菜单窗口*/clrscr(); /* 清屏*//* 显示菜单*/for(i=0,j=0;i<7;i++){/* 保存菜单第一个字母的位置,后面要用红色再打一次菜单的第一个字母*/x=wherex(); /* 当前光标X坐标*/y=wherey(); /* 当前光标Y坐标*/cprintf(" %s",menu[i]); /* 打印输出菜单*/j=strlen(menu[i]);gotoxy(x,y);textcolor(RED); /* 用红色输出菜单的第一个字母*/cprintf(" %s",red[i]);x=x+j+5;gotoxy(x,y);textcolor(BLUE); /* 将文本颜色修改为蓝色*/}x=0;key=0;while (bioskey(1)==0); /* 等待键盘输入*/key=get_key(); /* 取得按键*//*F\f 显示File下拉菜单*/if(key==33){textbackground(BLACK);textcolor(WHITE); /*设置文本属性:黑底白字*/window(1,1,80,1);gotoxy(5,1);cprintf("%s",menu[0]);/*打印输出File */gettext(5,2,12,8,buf); /*备份将要被File下拉菜单窗口覆盖的区域到内存buf */window(5,2,12,8); /*创建File下拉菜单窗口*//*设置文本属性:白底黑字*/textbackground(WHITE);textcolor(BLACK);window(5,2,12,8); /* 画边框*/frame(1,1,8,6);/* 打印输出下拉菜单*/for(i=2; i<6;i++){gotoxy(2,i);cprintf("%s",F[i-2]);}/* 备份下拉菜单的第一项到内存bufl,然后用蓝底黄字(表示选中)打印输出第一项*/gettext(5,3,12,3,buf1);textbackground(BLUE);textcolor(YELLOW);gotoxy(2,2);cprintf("%s",F[0]);/* 处理按键*/y=2;key=get_key();while(key!=28&&key!=1){ /* 上下键*//* 用内存buf1恢复当前菜单项,并备份将要被选中的菜单项到buf1,然后用蓝底黄字打印输出将要被选中的菜单项*/if(key==72||key==80){puttext(5,y+1,12,y+1,buf1); /* 恢复之前蓝底黄字的项到白底黑字*/if(key==72)y=y==2? 5:y-1; /* 如果往上,到了最上面跳到最下面*/if(key==80)y=y==5? 2:y+1; /* 如果往下,到了最下面跳到最上面*/gettext(5,y+1,12,y+1,buf1); /* 备份当前项(黄底蓝字) *//* 以下4行,用蓝底黄字(表示选中)打印输出当前项*/textbackground(BLUE);textcolor(YELLOW);gotoxy(2,y);cprintf("%s",F[y-2]);}key=get_key(); /* 等待键盘输入*/}/* Enter */if(key==28){ /* 下拉菜单处理*/switch(y-1){case 1:puttext(5,3,12,3,buf);/*恢复屏幕显示*/puttext(5,y+1,12,y+1,buf1); /*恢复之前蓝底黄字的项到白底黑字*/window(1,2,80,25); /*在整个屏幕上建一个窗口*/clrscr();CreateProv(&head); /*创建文件*/case 2:puttext(5,3,12,3,buf);/*恢复屏幕显示*/puttext(5,y+1,12,y+1,buf1); /* 恢复之前蓝底黄字的项到白底黑字*/window(1,2,80,25); /*在整个屏幕上建一个窗口*/clrscr();Save(head); /*保存文件*/break;case 3:puttext(5,3,12,3,buf);/*恢复屏幕显示*/puttext(5,y+1,12,y+1,buf1); /* 恢复之前蓝底黄字的项到白底黑字*/window(1,2,80,25); /*在整个屏幕上建一个窗口*/clrscr();Load(&head); /*读取文件*/break;case 4:puttext(5,3,12,3,buf);/*恢复屏幕显示*/puttext(5,y+1,12,y+1,buf1); /* 恢复之前蓝底黄字的项到白底黑字*/window(1,2,80,25); /*在整个屏幕上建一个窗口*/textbackground(BLACK);clrscr();gotoxy(30,10);/*询问是否退出程序,若y则退出,若其他则跳出这一层*/printf("Exit,sure?y/n ");if(getchar()==121)exit(-1); /*终止程序*/elsebreak;default: break;}}/* ESC -关闭下拉菜单,恢复屏幕显示*/if(key==1){window(1,1,80,2);puttext(5,2,12,8,buf);textbackground(WHITE);textcolor(BLACK);gotoxy(5,1);cprintf("%s",menu[0]);}}/*E\e显示Edit下拉菜单*/if(key==18){window(1,1,80,1);textbackground(BLACK);textcolor(WHITE); /*设置文本属性:黑底白字*/gotoxy(14,1); /*打印输出Edit */cprintf("%s",menu[1]);gettext(14,2,23,7,buf); /*备份将要被下拉菜单窗口覆盖的区域到内存buf *//*设置文本属性:白底黑字*/textbackground(WHITE);textcolor(BLACK);clrscr();window(14,2,23,7);frame(1,1,10,5); /* 画边框*//* 打印输出下拉菜单*/for(i=2; i<5;i++){gotoxy(2,i);cprintf("%s",I[i-2]);}/* 备份下拉菜单的第一项到内存bufl,然后用蓝底黄字(表示选中)打印输出第一项*/gettext(14,3,23,3,buf1);textbackground(BLUE);textcolor(YELLOW);gotoxy(2,2);cprintf("%s",E[0]);/* 处理按键*/y=2;key=get_key(); /*读取键入的值*/while(key!=28&&key!=1){ /*上下键*//* 用内存buf1恢复当前菜单项,并备份将要被选中的菜单项到buf1,然后用蓝底黄字打印输出将要被选中的菜单项*/if(key==72||key==80){puttext(14,y+1,23,y+1,buf1); /* 恢复之前蓝底黄字的项到白底黑字*/if(key==72)y=y==2? 4:y-1; /* 如果往上,到了最上面跳到最下面*/if(key==80)y=y==4? 2:y+1; /* 如果往下,到了最下面跳到最上面*/gettext(14,y+1,23,y+1,buf1); /* 备份当前项(白底黑字) *//* 以下3行,用蓝底黄字(表示选中)打印输出当前项*/textbackground(BLUE);textcolor(YELLOW);gotoxy(2,y);cprintf("%s",E[y-2]);}key=get_key(); /* 等待键盘输入*/}/* Enter */if(key==28){switch(y-1) /* 下拉菜单处理*/{case 1: puttext(14,2,23,7,buf);/*恢复屏幕显示*/puttext(14,y+1,23,y+1,buf1);EditProv(head);/*显示插入省自治区信息函数*/goto menu;case 2: puttext(14,2,23,7,buf);/*恢复屏幕显示*//* 恢复之前蓝底黄字的项到白底黑字*/puttext(14,y+1,23,y+1,buf1);EditCity(head,head2);/*显示插入地市信息函数*/goto menu;case 3: puttext(14,2,23,7,buf);/*恢复屏幕显示*//* 恢复之前蓝底黄字的项到白底黑字*/puttext(14,y+1,23,y+1,buf1);EditTown(head,head2,head3);/*显示插入乡镇信息函数*/goto menu;default:break;}}/* ESC -关闭下拉菜单,恢复屏幕显示*/if(key==1){window(1,1,80,2);puttext(14,2,23,8,buf);textbackground(WHITE);textcolor(BLACK);gotoxy(14,1);cprintf("%s",menu[2]);}}/*I\i显示Insert下拉菜单*/if(key==23){window(1,1,80,1);textbackground(BLACK);textcolor(WHITE);/*设置文本属性:黑底白字*/gotoxy(24,1);cprintf("%s",menu[2]); /*打印输出Insert */gettext(24,2,33,7,buf);/*备份将要被下拉菜单窗口覆盖的区域到内存buf */ window(24,2,33,7);/*创建下拉菜单窗口*/textbackground(WHITE);textcolor(BLACK); /*设置文本属性:白底黑字*/clrscr();window(24,2,33,7);frame(1,1,10,5); /* 画边框*//* 打印输出下拉菜单*/for(i=2; i<5;i++){gotoxy(2,i);cprintf("%s",I[i-2]);/* 备份下拉菜单的第一项到内存bufl,然后用蓝底黄字(表示选中)打印输出第一项*/gettext(24,3,33,3,buf1);textbackground(BLUE);textcolor(YELLOW);gotoxy(2,2);cprintf("%s",I[0]);/* 处理按键*/y=2;key=get_key(); /*读取键入的值*/while(key!=28&&key!=1){ /*上下键*//* 用内存buf1恢复当前菜单项,并备份将要被选中的菜单项到buf1,然后用蓝底黄字打印输出将要被选中的菜单项*/if(key==72||key==80){puttext(24,y+1,33,y+1,buf1); /* 恢复之前蓝底黄字的项到白底黑字*/if(key==72)y=y==2? 4:y-1; /* 如果往上,到了最上面跳到最下面*/if(key==80)y=y==4? 2:y+1; /* 如果往下,到了最下面跳到最上面*/gettext(24,y+1,33,y+1,buf1); /* 备份当前项(白底黑字) *//* 以下3行,用蓝底黄字(表示选中)打印输出当前项*/textbackground(BLUE);textcolor(YELLOW);gotoxy(2,y);cprintf("%s",I[y-2]);}key=get_key(); /* 等待键盘输入*/}/* Enter */if(key==28){switch(y-1) /* 下拉菜单处理*/{case 1: puttext(24,2,33,7,buf);/*恢复屏幕显示*//* 恢复之前蓝底黄字的项到白底黑字*/puttext(24,y+1,33,y+1,buf1);InsertProv(head);/*显示插入省自治区信息函数*/goto menu;case 2: puttext(24,2,33,7,buf);/*恢复屏幕显示*//* 恢复之前蓝底黄字的项到白底黑字*/puttext(24,y+1,33,y+1,buf1);InsertCity(head,head2);/*显示插入地市信息函数*/goto menu;case 3: puttext(24,2,33,7,buf);/*恢复屏幕显示*//* 恢复之前蓝底黄字的项到白底黑字*/puttext(24,y+1,33,y+1,buf1);goto menu;default:break;}}/* ESC -关闭下拉菜单,恢复屏幕显示*/if(key==1){window(1,1,80,2);puttext(24,2,33,8,buf);textbackground(WHITE);textcolor(BLACK);gotoxy(24,1);cprintf("%s",menu[2]);}}/*D\d显示Delete下拉菜单*/if(key==32){window(1,1,80,1);textbackground(BLACK);textcolor(WHITE); /*设置文本属性:黑底白字*/gotoxy(35,1);cprintf("%s",menu[3]); /*打印输出Delete */gettext(35,2,44,7,buf); /*备份将要被下拉菜单窗口覆盖的区域到内存buf */window(35,2,44,7); /*创建下拉菜单窗口*/textbackground(WHITE);textcolor(BLACK); /*设置文本属性:白底黑字*/clrscr();window(35,2,44,7);frame(1,1,10,5); /* 画边框*//* 打印输出下拉菜单*/for(i=2; i<5;i++){gotoxy(2,i);cprintf("%s",D[i-2]);}/* 备份下拉菜单的第一项到内存bufl,然后用蓝底黄字(表示选中)打印输出第一项*/ gettext(35,3,44,3,buf1);textbackground(BLUE);textcolor(YELLOW);gotoxy(2,2);cprintf("%s",D[0]);/* 处理按键*/y=2;key=get_key(); /*读取键入的值*/while(key!=28&&key!=1){/* 用内存buf1恢复当前菜单项,并备份将要被选中的菜单项到buf1,然后用蓝底黄字打印输出将要被选中的菜单项*/if(key==72||key==80){/* 恢复之前蓝底黄字的项到白底黑字*/puttext(35,y+1,44,y+1,buf1);if(key==72)y=y==2? 4:y-1; /* 如果往上,到了最上面跳到最下面*/if(key==80)y=y==4? 2:y+1; /* 如果往下,到了最下面跳到最上面*/gettext(35,y+1,44,y+1,buf1); /* 备份当前项(白底黑字) *//* 以下3行,用蓝底黄字(表示选中)打印输出当前项*/textbackground(BLUE);textcolor(YELLOW);gotoxy(2,y);cprintf("%s",D[y-2]);}key=get_key(); /* 等待键盘输入*/}/* Enter */if(key==28){switch(y-1) /* 下拉菜单处理*/{case 1: puttext(35,2,44,7,buf);/*恢复屏幕显示*//* 恢复之前蓝底黄字的项到白底黑字*/puttext(35,y+1,44,y+1,buf1);DeleteProv(head);/*删除省自治区信息函数*/goto menu;case 2: puttext(35,2,44,7,buf);/*恢复屏幕显示*//* 恢复之前蓝底黄字的项到白底黑字*/puttext(35,y+1,44,y+1,buf1);DeleteCity(head,head2);/*删除地市信息函数*/goto menu;case 3: puttext(35,2,44,7,buf);/*恢复屏幕显示*//* 恢复之前蓝底黄字的项到白底黑字*/puttext(35,y+1,44,y+1,buf1);DeleteTown(head,head2,head3); /*删除乡镇信息函数*/goto menu;default:break;}}/* ESC -关闭下拉菜单,恢复屏幕显示*/if(key==1){window(1,1,80,2);puttext(35,2,44,8,buf);textbackground(WHITE);textcolor(BLACK);gotoxy(35,1);cprintf("%s",menu[3]);}}/*Q\q显示Query下拉菜单*/if(key==16){window(1,1,80,1);textbackground(BLACK);textcolor(WHITE); /*设置文本属性:黑底白字*/gotoxy(46,1);cprintf("%s",menu[4]); /*打印输出Query*//*备份将要被下拉菜单窗口覆盖的区域到内存buf */gettext(46,2,55,7,buf);window(46,2,55,7); /*创建下拉菜单窗口*/textbackground(WHITE);textcolor(BLACK); /*设置文本属性:白底黑字*/clrscr();window(46,2,55,7);frame(1,1,10,5); /* 画边框*//* 打印输出下拉菜单*/for(i=2; i<5;i++){gotoxy(2,i);cprintf("%s",Q[i-2]);}/* 备份下拉菜单的第一项到内存bufl,然后用蓝底黄字(表示选中)打印输出第一项*/gettext(46,3,55,3,buf1);textbackground(BLUE);textcolor(YELLOW);gotoxy(2,2);cprintf("%s",Q[0]);/* 处理按键*/y=2;key=get_key(); /*读取键入的值*/while(key!=28&&key!=1){ /* 上下键*//* 用内存buf1恢复当前菜单项,并备份将要被选中的菜单项到buf1,然后用蓝底黄字打印输出将要被选中的菜单项*/if(key==72||key==80){puttext(46,y+1,55,y+1,buf1); /* 恢复之前蓝底黄字的项到白底黑字*/if(key==72)y=y==2? 4:y-1; /* 如果往上,到了最上面跳到最下面*/if(key==80)y=y==4? 2:y+1; /* 如果往下,到了最下面跳到最上面*/gettext(46,y+1,55,y+1,buf1); /* 备份当前项(白底黑字) */textbackground(BLUE);/* 以下3行,用蓝底黄字(表示选中)打印输出当前项*/textcolor(YELLOW);gotoxy(2,y);cprintf("%s",Q[y-2]);}key=get_key(); /* 等待键盘输入*/}/* Enter */if(key==28){switch(y-1) /* 下拉菜单处理*/{case 1: puttext(46,2,55,7,buf);/*恢复屏幕显示*//* 恢复之前蓝底黄字的项到白底黑字*/puttext(46,y+1,55,y+1,buf1);QueryProv(head);/*显示查询省自治区信息函数*/goto menu;case 2: puttext(46,2,55,7,buf);/*恢复屏幕显示*//* 恢复之前蓝底黄字的项到白底黑字*/puttext(46,y+1,55,y+1,buf1);QueryCity(head,head2);/*显示查询地市信息函数*/goto menu;case 3: puttext(46,2,55,7,buf);/*恢复屏幕显示*//* 恢复之前蓝底黄字的项到白底黑字*/puttext(46,y+1,55,y+1,buf1);QueryTown(head,head2,head3);/*显示查询乡镇信息函数*/goto menu;default:break;}}/* ESC -关闭下拉菜单,恢复屏幕显示*/if(key==1){window(1,1,80,2);puttext(46,2,55,8,buf);textbackground(WHITE);textcolor(BLACK);gotoxy(46,1);cprintf("%s",menu[4]);}}/*S\s显示Statistic下拉菜单*/if(key==31){window(1,1,80,1);textbackground(BLACK);textcolor(WHITE);/*设置文本属性:黑底白字*/gotoxy(56,1);cprintf("%s",menu[5]);/*打印输出Statistic*/gettext(56,2,70,7,buf);/*备份*/window(56,2,70,7); /*创建下拉菜单窗口*/textbackground(WHITE);textcolor(BLACK); /*设置文本属性:白底黑字*/clrscr();window(56,2,70,7); /* 画边框*/frame(1,1,15,5);for(i=2; i<5;i++) /* 打印输出下拉菜单*/{gotoxy(2,i);cprintf("%s",S[i-2]);}/* 备份下拉菜单的第一项到内存bufl,然后用蓝底黄字(表示选中)打印输出第一项*/gettext(56,3,70,3,buf1);textbackground(BLUE);textcolor(YELLOW);gotoxy(2,2);cprintf("%s",S[0]);/* 处理按键*/y=2;key=get_key(); /*读取键入的值*/while(key!=28&&key!=1){ /* 上下键*//* 用内存buf1恢复当前菜单项,并备份将要被选中的菜单项到buf1,然后用蓝底黄字打印输出将要被选中的菜单项*/if(key==72||key==80){puttext(56,y+1,70,y+1,buf1); /* 恢复之前蓝底黄字的项到黄底蓝字*/if(key==72)y=y==2? 4:y-1; /* 如果往上,到了最上面跳到最下面*/if(key==80)y=y==4? 2:y+1; /* 如果往下,到了最下面跳到最上面*/gettext(56,y+1,70,y+1,buf1); /* 备份当前项(白底黑字) *//* 以下3行,用蓝底黄字(表示选中)打印输出当前项*/textbackground(BLUE);textcolor(YELLOW);gotoxy(2,y);cprintf("%s",S[y-2]);}key=get_key(); /* 等待键盘输入*/}/* Enter */if(key==28){ /* 下拉菜单处理*/switch(y-1){case 1: puttext(56,2,70,7,buf);/*恢复屏幕显示*//* 恢复之前蓝底黄字的项到白底黑字*/puttext(56,y+1,70,y+1,buf1);window(1,2,80,25);clrscr();StatProv(head,head2,head3);/*执行省自治区统计函数*/goto menu;break;case 2: puttext(56,2,70,7,buf);/*恢复屏幕显示*//* 恢复之前蓝底黄字的项到黄底蓝字*/puttext(56,y+1,70,y+1,buf1);window(1,2,80,25);clrscr();StatCity(head,head2,head3);/*执行地市统计函数*/goto menu;break;case 3: puttext(56,2,70,7,buf);/*恢复屏幕显示*//* 恢复之前蓝底黄字的项到黄底蓝字*/puttext(56,y+1,70,y+1,buf1);window(1,2,80,25);clrscr();StatTown(head,head2,head3);/*执行乡镇统计函数*/goto menu;break;default:break;}}/* ESC--关闭下拉菜单,恢复屏幕显示*/if(key==1){window(1,1,80,2);puttext(56,2,70,7,buf);textbackground(WHITE);textcolor(BLACK);gotoxy(56,1);cprintf("%s",menu[5]);}}/*H\h显示帮助信息*/if(key==35){window(1,1,80,1);textbackground(BLACK);textcolor(WHITE);/*设置文本属性:黑底白字*/gotoxy(70,1);cprintf("%s",menu[6]);/*备份将要被operation下拉菜单窗口覆盖的区域到内存buf */gettext(70,2,79,5,buf);window(70,2,79,5);/*创建Help下拉菜单窗口*/textbackground(WHITE);textcolor(BLACK); /*设置文本属性:白底黑字*/clrscr();window(70,2,79,5);frame(1,1,10,3);/* 画边框*//* 打印输出下拉菜单*/for(i=2; i<3;i++) /* 打印输出下拉菜单*/{gotoxy(2,i);cprintf("%s",H[i-2]);}/* 备份下拉菜单的第一项到内存bufl,然后用蓝底黄字(表示选中)打印输出第一项*/gettext(70,3,79,5,buf1);textbackground(BLUE);textcolor(YELLOW);gotoxy(2,2);cprintf("%s",H[0]);/* 处理按键*/y=2;key=get_key(); /*读取键入的值*//* Enter */if(key==28){/* 下拉菜单处理*/puttext(70,2,79,5,buf);/*恢复屏幕显示*/puttext(70,3,79,3,buf1); /* 恢复之前蓝底黄字的项到黄底蓝字*/window(1,2,80,25); /*创建一个占据整个屏幕的窗口*/clrscr();if(ShowAbout()==1)goto menu;}/* ESC -关闭下拉菜单,恢复屏幕显示*/if(key==1){window(1,1,80,2);puttext(70,2,79,5,buf);textbackground(WHITE);textcolor(BLACK);gotoxy(70,1);cprintf("%s",menu[6]);}}}while(1);}/*欢迎界面函数*/void welcome(void){struct date d; /*定义日期结构体*/struct time t; /*定义时间结构体*/getdate(&d); /*读取系统日期并把它放到结构体d中*/gettime(&t); /*读取系统时间并把它放到结构体t中*/clrscr();textbackground(BLACK); /*黑屏*/clrscr(); /*清屏*/textcolor(MAGENTA);gotoxy(3,8);cprintf("#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#");gotoxy(3,9);cprintf("+ +");gotoxy(3,11);cprintf("+ +");gotoxy(3,13);cprintf("+ +");gotoxy(3,14);cprintf("#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#\n\n") ;gotoxy(3,10);cprintf("+");gotoxy(78,10);cprintf("+");gotoxy(3,12);cprintf("+");gotoxy(78,12);cprintf("+");textcolor(YELLOW);gotoxy(4,10);cprintf(" * Welcome To * ");gotoxy(4,12);cprintf(" * The Information System Of Disaster! * ");textcolor(WHITE);gotoxy(36,21);cprintf("%d\\%02d\\%02d",d.da_year,d.da_mon,d.da_day); /*显示当前系统日期*/gotoxy(37,22);cprintf("%02d:%02d:%02d\n",t.ti_hour, t.ti_min, t.ti_sec); /*显示当前系统时间*/printf("\n");getchar();}/* 得到按键值函数*/int get_key(void){union REGS regs;int86(0x16,®s,®s); /*通用8086软中断接口*/}/* 画边框函数*/void frame(int startx,int starty,int width,int height){int i;height=height+1;gotoxy(startx,starty=starty+1); putch(0xda); /*打印左上角*/for (i=startx+1;i<width;i++)putch(0xc4); /*打印上边线*/putch(0xbf); /*打印右上角*/for(i=starty+1;i<height;i++){gotoxy(startx,i);putch(0xb3); /*打印左边的竖线*/gotoxy(width,i);putch(0xb3); /*打印右边的竖线*/}gotoxy(startx,height);putch(0xc0); /*打印左下角*/for(i=startx+1;i<width;i++)putch(0xc4); /*打印下边线*/putch(0xd9); /*打印右下角*/return;}/*显示帮助函数*/int ShowAbout(void){int key;window(1,2,80,25);textbackground(BLACK);clrscr();textcolor(LIGHTMAGENTA);gotoxy(6,2);cprintf("About the maker:");gotoxy(6,11);cprintf("About the program:");textcolor(YELLOW);gotoxy(9,4);printf("* Name: Liu Maolin");gotoxy(9,5);printf("* School: Huazhong University of Science and Technologe");gotoxy(9,6);printf("* Profession: Computer Science and Technologe");gotoxy(9,7);printf("* Class: cs1011");gotoxy(9,13);printf("# This is my first large scale C program.");gotoxy(9,14);printf("# I know there still have some regretful spots.");gotoxy(9,15);printf("# I'm fond of C program,as well as study.");textcolor(LIGHTGREEN);gotoxy(17,19);cprintf("Please press the to go back!");textcolor(WHITE);gotoxy(34,19);cprintf("Enter");Again:while (bioskey(1)==0); /* 等待键盘输入*/key=get_key(); /* 取得按键*/if (key==28)return 1;else{textcolor(WHITE);printf("\n Error!Please press again!\n");goto Again; /*若输入键不为Enter则返回Again再次输入*/ }}/*创建省自治区链表函数*/void CreateProv(prov ** head1){prov *p1; /*定义遍历指针*/int key,sum=0; /*用于判断是否退出*/char c; /*用于判断是否继续创建省自治区信息*/(*head1)=(prov *)malloc(sizeof(prov)); /*遍历指针指向链表头*/p1=*head1; /*遍历指针初值同省自治区头指针*//*黑底粉字*/window(1,2,80,25);textbackground(BLACK);textcolor(LIGHTMAGENTA);clrscr();do{clrscr();printf(" *Input the province or you can exit:\n");key=0;while (bioskey(1)==0); /* 等待键盘输入*/key=get_key(); /* 取得按键*/if(key==1)break;else{float temp; /*定义一个中间变量*/printf("\tProvince number:");gets(p1->prov_id); /*读入省自治区编号*/fflush(stdin); /*清空输入流*/strcpy(prov_id,p1->prov_id); /*将省自治区编号记录进prov_id全局变量*/printf("\tProvince name:");scanf("%s",p1->prov_name); /*读入省自治区名称*/fflush(stdin);printf("\tLand area:");scanf("%f",&temp); /*读入耕地面积*/p1->land_area=temp;fflush(stdin);printf("\tLake area:");scanf("%f",&temp); /*读入湖泊面积*/p1->lake_area=temp;fflush(stdin);printf("\tSum of cities:");scanf("%d",&p1->city_num); /*读入所辖地市数*/fflush(stdin);printf("\tSum of disacities:");scanf("%d",&p1->city_disa_num); /*读入受灾地市数*/fflush(stdin);printf("\tSum of drocities:");scanf("%d",&p1->city_dro_num); /*读入旱灾地市数*/fflush(stdin);printf("\tSum of flocities:");scanf("%d",&p1->city_flo_num); /*读入洪灾地市数*/fflush(stdin);printf("\tPopulation in the disaster:");scanf("%d",&p1->popu_disa_num); /*读入受灾人口*/fflush(stdin);printf("\tDrought area:");scanf("%f",&temp); /*读入旱灾面积*/p1->dro_area=temp;fflush(stdin);printf("\tFlood area:");scanf("%f",&temp); /*读入洪灾面积*/p1->flo_area=temp;fflush(stdin);printf("\tProdrought area:");scanf("%f",&temp); /*读入抗旱面积*/p1->prodro_area=temp;fflush(stdin);printf("\tProflood area:");scanf("%f",&temp); /*读入抗洪面积*/p1->proflo_area=temp;fflush(stdin);printf("\tFund to drought:");scanf("%f",&temp); /*读入抗旱投入资金*/p1->dro_fund=temp;fflush(stdin);printf("\tFund to flood:");scanf("%f",&temp); /*读入抗洪投入资金*/p1->flo_fund=temp;fflush(stdin);printf("\tSum of relief:");scanf("%f",&temp); /*读入救济金额*/p1->relief=temp;fflush(stdin);}sum++;p1->sum1=sum;CreateCity(&p1->cnext); /*调用建立地市链表函数,建立该省自治区所辖地市链表*/ printf("Next province? Y/N "); /*询问是否有下一个省自治区*/scanf("%c",&c);fflush(stdin);while((c!='Y'&&c!='y')&&(c!='N'&&c!='n')) /*若输入错误输出提示信息,重新输入*/{printf("Error!Input again:");scanf("%c",&c);}fflush(stdin);if (c=='N'||c=='n') /*若无下一个省自治区则跳出循环*/{break;}p1->next=(prov *)malloc(sizeof(prov)); /*用next指针新建省自治区链表*/p1=p1->next; /*遍历指针指向新建链表*/clrscr();gotoxy(3,1);cprintf("Next province:\n"); /*提示输入下一省自治区信息*/ }while (c=='Y'||c=='y'); /*若有下一省自治区则循环读入信息*/printf("Create provinces successfully!\tSum=%d",p1->sum1); /*提示创建成功,显示创建数目*/ fflush(stdin);getchar();p1->next=NULL; /*如无后续省自治区链表并退出循环,将next指针赋为空*/}/*创建地市链表函数*/void CreateCity(city ** head2){prov *p1;city *p2; /*定义遍历指针*/int key,sum=0;char c; /*用于判断是否继续创建地市信息*/(*head2)=(city *)malloc(sizeof(city)); /*遍历指针指向链表头*/p2=*head2; /*遍历指针初值同地市头指针*/window(1,2,80,25);clrscr();do{clrscr();printf(" *Input the cities of the province or you can exit:\n");key=0;while (bioskey(1)==0); /* 等待键盘输入*/key=get_key(); /* 取得按键*/if(key==1)break;else{float temp;strcpy(p2->prov_id,prov_id); /*所属省自治区赋值*/printf("\tCity number:");scanf("%s",p2->city_id); /*读入地市编号*/fflush(stdin); /*清空输入流*/strcpy(city_id,p2->city_id); /*将地市编号记录进city_id全局变量*/ printf("\tCity name:");scanf("%s",p2->city_name); /*读入地市名称*/fflush(stdin);printf("\tLand area:");scanf("%f",&temp); /*读入耕地面积*/p2->land_area=temp;fflush(stdin);printf("\tLake area:");scanf("%f",&temp); /*读入湖泊面积*/p2->lake_area=temp;fflush(stdin);printf("\tSum of towns:");scanf("%d",&p2->town_num); /*读入所辖乡镇数*/fflush(stdin);printf("\tSum of disatowns:");scanf("%d",&p2->town_disa_num); /*读入受灾乡镇数*/ fflush(stdin);printf("\tSum of drotowns:");scanf("%d",&p2->town_dro_num); /*读入旱灾乡镇数*/ fflush(stdin);printf("\tSum of flotowns:");scanf("%d",&p2->town_flo_num); /*读入洪灾乡镇数*/ fflush(stdin);printf("\tPopulation in the disaster:");scanf("%d",&p2->popu_disa_num); /*读入受灾人口*/fflush(stdin);printf("\tDrought area:");scanf("%f",&temp); /*读入旱灾面积*/p2->dro_area=temp;fflush(stdin);printf("\tFlood area:");scanf("%f",&temp); /*读入洪灾面积*/p2->flo_area=temp;fflush(stdin);printf("\tProdrought area:");scanf("%f",&temp); /*读入抗旱面积*/p2->prodro_area=temp;fflush(stdin);printf("\tProflood area:");scanf("%f",&temp); /*读入抗洪面积*/p2->proflo_area=temp;fflush(stdin);printf("\tFund to drought:");scanf("%f",&temp); /*读入抗旱投入资金*/p2->dro_fund=temp;fflush(stdin);printf("\tFund to flood:");。
c语言标准库源代码
c语言标准库源代码C语言标准库源代码。
C语言标准库是C语言程序设计中非常重要的一部分,它包含了丰富的函数和宏定义,能够为程序员提供丰富的功能支持。
在C语言标准库中,包含了各种各样的头文件,如stdio.h、stdlib.h、string.h等,这些头文件中定义了大量的函数和宏,为C语言程序的编写提供了便利。
在C语言标准库中,有很多常用的函数,比如printf、scanf、malloc、free等,这些函数在程序设计中起着非常重要的作用。
其中,printf函数用于格式化输出,可以输出各种类型的数据;scanf函数用于格式化输入,可以接收各种类型的数据;malloc函数用于动态内存分配,可以根据需要分配任意大小的内存空间;free函数用于释放动态分配的内存空间,防止内存泄漏。
除了函数之外,C语言标准库中还包含了大量的宏定义,比如NULL、EOF、RAND_MAX等,这些宏定义在程序设计中也非常有用。
其中,NULL宏用于表示空指针,可以在程序中用来判断指针是否为空;EOF宏用于表示文件结束符,在文件操作中非常有用;RAND_MAX宏用于表示随机数的最大取值范围,可以用来生成随机数。
除了头文件中定义的函数和宏之外,C语言标准库中还包含了一些特殊的类型定义,比如size_t、ptrdiff_t、wchar_t等,这些类型定义在不同的平台上可能有不同的实现,但它们在C语言程序设计中起着非常重要的作用。
其中,size_t类型用于表示对象的大小,可以用来计算数组的长度;ptrdiff_t类型用于表示指针之间的差值,可以用来计算数组元素的偏移量;wchar_t类型用于表示宽字符,可以用来处理多国语言的文本。
总的来说,C语言标准库是C语言程序设计中非常重要的一部分,它包含了丰富的函数和宏定义,为程序员提供了丰富的功能支持。
程序员可以通过调用标准库中的函数和宏来实现各种各样的功能,提高程序的可移植性和可维护性。
因此,熟练掌握C语言标准库的使用,对于提高程序设计的效率和质量非常重要。
经典C语言源代码
经典C语言源代码1、(1)某年某月某日是星期几#include<stdio.h>int main(){int year, month, day;while (scanf_s("%d%d%d", &year, &month, &day) != EOF){if (month == 1 || month == 2)//判断month是否为1或2{year--;month += 12;}int c = year / 100;int y = year - c * 100;int week = (c / 4) - 2 * c + (y + y / 4) + (13 * (month + 1) /5) + day - 1;while (week<0) { week += 7; }week %= 7;switch (week){case 1:printf("Monday\n"); break;case 2:printf("Tuesday\n"); break;case 3:printf("Wednesday\n"); break;case 4:printf("Thursday\n"); break;case 5:printf("Friday\n"); break;case 6:printf("Saturday\n"); break;case 0:printf("Sunday\n"); break;}}return 0;}1、(2)某年某月某日是第几天(一维数组)#include "stdio.h"void main() {int i, flag, year, month, day, dayth;int month_day[] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };printf("请输入年/月/日:\n");scanf_s("%d/%d/%d", &year, &month, &day);dayth = day;flag = (year % 400 == 0) || (year % 4 == 0 && year % 100 != 0);if (flag)month_day[2] = 29;for (i = 1; i < month; i++)dayth = dayth + month_day[i];printf("%d/%d/%d是第%d天\n", year, month, day, dayth); }2、30个数中找最小的数及其位置#include "stdio.h"# define SIZE 30void main() {int i;float data[SIZE];int min;printf("请输入%d个浮点数:\n",SIZE);for (i = 0; i < SIZE; i++) {//scanf_s("%f", &data[i]);data[i] = rand() % 30 + 1;printf("%f、", data[i]);}min = 0;for (i = 1; i < SIZE; i++) {if (data[i] < data[min])min = i;}printf("最小值是%5.2f,位置是%5d\n", data[min], min); }3、30个数从小到大排序(1)#include "stdio.h"# define SIZE 30void main() {int i,j;float data[SIZE],temp;int min;printf("请输入%d个整型数:\n",SIZE);for (i = 0; i < SIZE; i++) {scanf_s("%f", &data[i]);}for (i = 0; i < SIZE; i++) {min = i;for (j = i + 1; j < SIZE; j++)if (data[j] < data[min])min = j;temp = data[min];data[min] = data[i];data[i] = temp;}printf("\n排序后的结果是:\n");for (i = 0; i < SIZE; i++)printf("%5.2f", data[i]);}(2)模块化程序(数组名作为函数参数)#include "stdio.h"# define SIZE 5void accept_array(float a[], int size); void sort(float a[], int size);void show_array(float a[], int size);void main() {float score[SIZE];accept_array(score, SIZE);printf("排序前:");show_array(score, SIZE);sort(score, SIZE);printf("排序后:");show_array(score, SIZE);}void accept_array(float a[], int size) {int i;printf("请输入%d个分数:", size);for (i = 0; i < size; i++)scanf_s("%f", &a[i]);}void show_array(float a[], int size) { int i;for (i = 0; i < size; i++)printf(" %5.2f", a[i]);printf("\n");}void sort(float a[],int size) {int i, min, j;float temp;for (i = 0; i < SIZE; i++) {min = i;for (j = i + 1; j < SIZE; j++)if (a[j] < a[min])min = j;temp = a[min];a[min] = a[i];a[i] = temp;}}4、(1)指针加减:#include "stdio.h"#define SIZE 10void main() {int a[SIZE] = { 1,2,3,4,5,6,7,8,9,10 };int *pa, i;pa = &a[0];//pa=a;printf("\n");for (i = 0; i < SIZE; i++) {printf(" %d", *pa);//printf(" %d", *(pa+1));pa++;}}(2)指针比较:#include "stdio.h"#define SIZE 10void main() {int a[SIZE] = { 1,2,3,4,5,6,7,8,9,10 };int *pa, i;int *qa;pa = qa = &a[0];printf("请输入%d整型数:",SIZE);for (; pa < qa + SIZE; pa++)scanf_s("%d", pa);for (pa--; qa <= pa; pa--)printf(" %d", *pa);}5、两字符串相连:#include "stdio.h"#include "string.h"void str_cat(char str1[], char str2[]); void main() {int i, j;char str1[160];char str2[80];printf("请输入第一个字符串:");gets(str1);printf("请输入第二个字符串:");gets(str2);str_cat(str1, str2);puts(str1);}void str_cat(char str1[], char str2[]) { int i, j;i = 0;while (str1[i] != '\0')i++;j = 0;while (str2[j] != '\0') {str1[i] = str2[j];i++; j++;}str1[i] = '\0';}6、二维数组(a,b转置)#include "stdio.h"void main() {int i, j, b[2][3];int a[3][2] = { {1,2},{3,4},{5,6} }; for (i = 0; i < 2; i++) {for (j = 0; j < 3; j++)b[i][j] = a[j][i];}printf("\na:\n");for (i = 0; i < 3; i++) {for (j = 0; j < 2; j++)printf("%5d", a[i][j]);printf("\n");}printf("\nb:\n");for(i = 0; i < 2; i++) {for (j = 0; j < 3; j++)printf("%5d", b[i][j]);printf("\n");}7、输入一个二维数组并输出(指针)#include "stdio.h"void main() {int x[2][3];int i, j;for (i = 0; i < 2; i++)for (j = 0; j < 3; j++)scanf_s("%d", *(x + i) + j);putchar('\n');for (i = 0; i < 2; i++){for (j = 0; j < 3; j++)printf("%d ", *(*(x + i) + j));putchar('\n');}8、冒泡法排序一个数组#include "stdio.h"#define size 10void maopao(int a[]);void main() {int a[10];int i;printf("请输入10个整数:\n");for (i = 0; i < 10; i++)scanf_s("%d", &a[i]);maopao(a);}void maopao(int a[]) {int i, j, temp;for (i = 0; i < 9; i++) {//进行9轮排序for (j = 0; j < 9 - i; j++)//每轮进行9-i次交换{if (a[j] > a[j + 1]){temp = a[j];a[j] = a[j + 1];//大的沉底,小的上浮a[j + 1] = temp;}}}printf("排序结果:\n");for (i = 0; i < 10; i++)printf("%4d", a[i]);}9、两数组A,B,要求A<B,如A:4,7,9B:1,3,5,8,9变换后A:1,3,5B:4,7,8,9,9#include <stdio.h>void ReArranger(int* A, int* B, int m, int n) //A和B是各有m个和n个整数的非降序数组,本算法将B数组元素逐个插入到A 中,使A中各元素均不大于B中各元素,且两数组仍保持非降序排列。
初学者必会的c语言必背代码
初学者必会的c语言必背代码1、c语言必背100代码,C语言代码大全第一个------乘法表。
用C语言输出9*9成法口诀。
共9行9列,i控制行,j控制列。
2、c语言必背100代码之4×4数组下面程序的功能是将一个4×4的数组进行逆时针旋转90度后输出,要求原始数组的数据随机输入,新数组以4行4列的方式输出,请在空白处完善程序。
3、c语言必背100代码,C语言必背100代码。
古典问题有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?兔子的规律为数列1,1,2,3,5,8,13,21…4、c语言必背100代码素数判断101-200之间有多少个素数,并输出所有素数及素数的个数。
程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
5、c语言必背100代码完数相关代码一个数如果恰好等于它的因子之和,这个数就称为“完数”。
例如6=1+2+3.编程找出1000以内的所有完数。
6、c语言必背100代码三角形打印编程打印直角杨辉三角形7、c语言必背100代码平均分问题通过键盘输入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;}for(j=0;j<5;j++){ sum2=0;for(i=0;i<3;i++)sum2+=a[i][j];a[3][j]=sum2/3;}for(i=0;i<4;i++){ for(j=0;j<5;j++)printf("%6.2f",a[i][j]);printf("\n");}}8、c语言必背100代码反向输出完善程序,实现将输入的字符串反序输出,如输入windows 输出swodniw。
51单片机C语言程序设计源代码
新概念51单片机C语言教程----入门、提高、开发、拓展全攻略郭天祥编著电子工业出版社例2.2.1编写程序,点亮第一个发光二极管(part2_1.c P27)#include <reg52.h> //52系列单片机头文件sbit led1=P1^0; //声明单片机P1口的第一位void main() //主函数{led1=0; /*点亮第一个发光二极管*/}例2.2.2编写程序,点亮P1口的若干二极管(part2_2.c P39)#include <reg52.h> //52系列单片机头文件void main() //主函数{P1=0xaa;//while(1);}例2.5.1利用for语句延时特性,编写第一个发光二极管以间隔1S亮灭闪动的程序(part2_3.c P42)#include <reg52.h> //52系列单片机头文件#define uint unsigned int //宏定义sbit led1=P1^0; //声明单片机P1口的第一位uint i,j;void main() //主函数{while(1) //大循环{led1=0; /*点亮第一个发光二极管*/for(i=1000;i>0;i--) //延时for(j=110;j>0;j--);led1=1; /*关闭第一个发光二极管*/for(i=1000;i>0;i--) //延时for(j=110;j>0;j--);}}- 2 - 例2.6.1编写程序使第一个发光二极管以间隔500ms亮灭闪动。
(part2_4.c P48)#include <reg52.h> //52系列单片机头文件#define uint unsigned int //宏定义sbit led1=P1^0; //声明单片机P1口的第一位void delay1s(); //声明子函数void main() //主函数{while(1) //大循环{led1=0; /*点亮第一个发光二极管*/delay1s(); //调用延时子函数led1=1; /*关闭第一个发光二极管*/delay1s(); //调用延时子函数}}void delay1s() //子函数体{uint i,j;for(i=500;i>0;i--)for(j=110;j>0;j--);}例2.7.1编写程序使第一个二极管以亮200ms、灭800ms的方式闪动。
初学者必会的c语言必背代码
初学者必会的c语言必背代码1、c语言必背100代码,C语言代码大全第一个------乘法表。
用C语言输出9*9成法口诀。
共9行9列,i控制行,j控制列。
2、c语言必背100代码之4×4数组下面程序的功能是将一个4×4的数组进行逆时针旋转90度后输出,要求原始数组的数据随机输入,新数组以4行4列的方式输出,请在空白处完善程序。
3、c语言必背100代码,C语言必背100代码。
古典问题有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?兔子的规律为数列1,1,2,3,5,8,13,21…4、c语言必背100代码素数判断101-200之间有多少个素数,并输出所有素数及素数的个数。
程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
5、c语言必背100代码完数相关代码一个数如果恰好等于它的因子之和,这个数就称为“完数”。
例如6=1+2+3.编程找出1000以内的所有完数。
6、c语言必背100代码三角形打印编程打印直角杨辉三角形7、c语言必背100代码平均分问题通过键盘输入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;}for(j=0;j<5;j++){ sum2=0;for(i=0;i<3;i++)sum2+=a[i][j];a[3][j]=sum2/3;}for(i=0;i<4;i++){ for(j=0;j<5;j++)printf("%6.2f",a[i][j]);printf("\n");}}8、c语言必背100代码反向输出完善程序,实现将输入的字符串反序输出,如输入windows 输出swodniw。
(整理)C语言入门经典案例及源代码.
循环控制输出图案【程序1】题目:输出9*9口诀。
1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列。
2.程序源代码:#include "stdio.h"main(){int i,j,result;printf("\n");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("\n");/*每一行后换行*/}}【程序2】题目:要求输出国际象棋棋盘。
1.程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。
2.程序源代码:#include "stdio.h"main(){int i,j;for(i=0;i<8;i++){for(j=0;j<8;j++)if((i+j)%2==0)printf("%c%c",219,219);elseprintf(" ");printf("\n");}}==============================================================【程序3】题目:打印楼梯,同时在楼梯上方打印两个笑脸。
1.程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数。
2.程序源代码:#include "stdio.h"main(){int i,j;printf("\1\1\n");/*输出两个笑脸*/for(i=1;i<11;i++){for(j=1;j<=i;j++)printf("%c%c",219,219);printf("\n");}}【程序4】题目:打印出如下图案(菱形)****************************1.程序分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重for循环,第一层控制行,第二层控制列。
C语言经典源程序100例
C语言经典源程序100例1. Hello, World!这是C语言中最基本的程序,用于显示"Hello, World!"。
```c#include <stdio.h>int main() {printf("Hello, World!\n");return 0;}```2. 计算两数之和这个程序用于计算两个整数的和,并将结果输出。
```c#include <stdio.h>int main() {int num1, num2, sum;printf("请输入两个整数:");scanf("%d %d", &num1, &num2);sum = num1 + num2;printf("两数之和为:%d\n", sum);return 0;}```3. 判断奇偶数这个程序用于判断一个整数是奇数还是偶数。
```c#include <stdio.h>int main() {int num;printf("请输入一个整数:");scanf("%d", &num);if (num % 2 == 0) {printf("该数是偶数。
\n");} else {printf("该数是奇数。
\n");}}```4. 求输入数字的平均值这个程序用于求输入数字的平均值。
```c#include <stdio.h>int main() {int count, i;double num, sum = 0.0, average;printf("请输入数字的个数:");scanf("%d", &count);printf("请输入这 %d 个数字:\n", count); for (i = 0; i < count; i++) {scanf("%lf", &num);sum += num;}average = sum / count;printf("平均值为:%lf\n", average);}```5. 判断闰年这个程序用于判断一个年份是否为闰年。
c语言入门源代码
c语言入门源代码以下是C语言入门的源代码,用于初学者学习和参考: 1. Hello World程序#include <stdio.h>int main() {printf('Hello World!');return 0;}2. 输入输出程序#include <stdio.h>int main() {int num;printf('请输入一个整数:');scanf('%d', &num);printf('您输入的整数是:%d', num);return 0;}3. 判断奇偶数#include <stdio.h>int main() {int num;printf('请输入一个整数:');scanf('%d', &num);if(num % 2 == 0) {printf('%d是偶数', num);} else {printf('%d是奇数', num);}return 0;}4. 计算两个数的和#include <stdio.h>int main() {int num1, num2, sum;printf('请输入两个整数,以空格隔开:');scanf('%d %d', &num1, &num2);sum = num1 + num2;printf('%d和%d的和是:%d', num1, num2, sum); return 0;}5. 计算n的阶乘#include <stdio.h>int main() {int n, i, factorial = 1;printf('请输入一个整数:');scanf('%d', &n);for(i = 1; i <= n; i++) {factorial *= i;}printf('%d的阶乘是:%d', n, factorial);return 0;}以上代码只是C语言入门的一部分,还有很多其他程序可以学习和练习。
C语言程序的设计医院信息管理系统附源代码
C语言程序的设计医院信息管理系统附源代码一、引言医院信息管理系统是一个用于管理医院内部各项业务的软件系统。
它能够帮助医院实现患者信息管理、医生排班管理、药品库存管理等功能。
本文将介绍如何使用C语言设计一个简单的医院信息管理系统,并提供相应的源代码。
二、系统功能需求1. 患者信息管理:包括患者基本信息的录入、查询和修改功能,如姓名、性别、年龄、联系方式等。
2. 医生排班管理:包括医生信息的录入、查询和修改功能,如姓名、专业、职称等,并能够根据日期查询医生的排班情况。
3. 挂号管理:包括患者挂号、退号和查询挂号信息的功能,如挂号日期、挂号费用等。
4. 病历管理:包括患者病历的录入、查询和修改功能,如病历编号、病历内容等。
5. 药品库存管理:包括药品信息的录入、查询和修改功能,如药品名称、库存数量、进货价格等,并能够根据药品名称查询库存情况。
6. 药品销售管理:包括药品销售、退货和查询销售信息的功能,如销售日期、销售数量、销售金额等。
三、系统设计1. 数据结构设计在设计医院信息管理系统时,我们可以使用结构体来表示患者、医生、挂号、病历和药品等相关信息。
例如,可以定义如下结构体:```ctypedef struct {char name[20];char gender[10];int age;char contact[20];} Patient;typedef struct {char name[20];char specialty[20];char title[20];} Doctor;typedef struct {char date[20];int fee;} Registration;typedef struct {int id;char content[100];} MedicalRecord;typedef struct {char name[20];int quantity;float price;} Drug;```2. 功能模块设计根据系统功能需求,我们可以将系统划分为以下几个功能模块:- 患者信息管理模块:实现患者信息的录入、查询和修改功能。
C语言必背100代码,C语言必会100代码大全
C语⾔必背100代码,C语⾔必会100代码⼤全⼀、C语⾔初学者必学必会的C语⾔必背100代码⼀个C语⾔⼊门初学者如何学代码,读代码和写代码,我想学代码不知道⽅向谁能给我指明⼀个⽅向?对于c语⾔来说,要记得东西其实不多,基本就是⼏个常⽤语句加⼀些关键字⽽已。
你所看到的那些⼏千甚⾄上万⾏的代码,都是⽤这些语句和关键词来重复编写的。
只是他们逻辑功能不⼀样,那如何快速的上⼿C语⾔代码,建议多看多写,下⾯是⼩编整理的C语⾔必背100代码。
⼆、C语⾔学习相关C语⾔必背100代码展现已把⼤量C语⾔必背代码整理为⼀个压缩包关注微信公众号:“C和C加加” 回复:“YM” 即可获取1、C语⾔必背代码九九乘法表⽤C语⾔输出9*9成法⼝诀。
共9⾏9列,i控制⾏,j控制列。
2、C语⾔必背100代码之4×4数组下⾯程序的功能是将⼀个4×4的数组进⾏逆时针旋转90度后输出,要求原始数组的数据随机输⼊,新数组以4⾏4列的⽅式输出,请在空⽩处完善程序。
3、C语⾔必背100代码的相关古典问题有⼀对兔⼦,从出⽣后第3个⽉起每个⽉都⽣⼀对兔⼦,⼩兔⼦长到第三个⽉后每个⽉⼜⽣⼀对兔⼦,假如兔⼦都不死,问每个⽉的兔⼦总数为多少?已把⼤量C语⾔必背代码整理为⼀个压缩包关注微信公众号:“C和C加加” 回复:“YM” 即可获取兔⼦的规律为数列1,1,2,3,5,8,13,21…4、C语⾔必背100代码之素数判断101-200之间有多少个素数,并输出所有素数及素数的个数。
已把⼤量C语⾔必背代码整理为⼀个压缩包关注微信公众号:“C和C加加” 回复:“YM” 即可获取程序分析:判断素数的⽅法:⽤⼀个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
5、C语⾔必背代码之完数相关代码⼀个数如果恰好等于它的因⼦之和,这个数就称为“完数”。
例如6=1+2+3.编程找出1000以内的所有完数。
6、三⾓形打印的C语⾔必背100代码编程打印直⾓杨辉三⾓形7、C语⾔必背100代码之平均分问题通过键盘输⼊3名学⽣4门课程的成绩,分别求每个学⽣的平均成绩和每门课程的平均成绩。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
演示1#include <stdio.h>void print_star(void){printf("*****************\n");}void print_welcome(void){printf("C language,welcome!\n");}void main(){print_star();print_welcome();print_star();getchar();}演示2#include "stdio.h"int sum(int i,int j){return(i + j);}void main(){int n1,n2;printf("input 2 numbers:\n");scanf("%d%d",&n1,&n2);printf("the sum = %d\n",sum(n1,n2));getchar();}演示3#include "stdio.h"int maxnum(int,int,int);main(){int a,b,c;printf("Please enter 3 numbers:\n");scanf("%d,%d,%d",&a,&b,&c);printf("Maxnum is %d\n",maxnum(a,b,c));return 0;}int maxnum(int x,int y,int z) {int max=x;if(y>max)max = y;if(z>max)max = z;return max;}演示4#include <stdio.h>int s1(int n){int j,s;s=0;for(j=1;j<=n;j++)s=s+j;return s;}int sum(int n){int i,s=0;for(i=1;i<=n;i++)s=s+s1(i);return s;}void main(){int n;printf("n:");scanf("%d",&n);printf("s=%d\n",sum(n)); }演示5#include <stdio.h>void func(int n){int i;for(i=n-1;i>=1;i--)n=n+i;printf("n=%d\n",n);}void main(){int n;printf("Input n:");scanf("%d",&n);func(n);printf("n=%d\n",n);}演示6#include <stdio.h>void swap(int a,int b){int temp;temp=a;a=b;b=temp;printf("swap : a=%d,b=%d\n",a,b); }void main(){int a,b;a=3;b=10;swap(a,b);printf("a=%d,b=%d\n",a,b);}演示7#include <stdio.h>int func(int a,int b){int c;c=a+b;return c;}void main(){int x=6,y=7,z=8,r;r=func((x--,y++,x+y),z--);printf("%d\n",r);}演示8#include <stdio.h>max(float x,float y){return x>y? x:y;}void main(){printf("%d\n",max(2,3.5)); }演示9#include <stdio.h>int sum(int n){int i,s=0;for(i=0;i<=n;i++)s=s+i;return s;}void main(){int m,sn;scanf("%d",&m);sn=sum(m);printf("the sum is %d\n",sn); }演示10#include <stdio.h>void swap(int x,int y);int main(){int a,b;printf("input 2 numbers :\n"); scanf("%d,%d",&a,&b);printf("input number is:a=%d,b=%d \n",a,b);swap(a,b);printf("input 2 numbers is:a=%d,b=%d\n",a,b);return 0;}void swap(int x,int y){int temp;temp = x;x = y;y = temp;printf("swap number is : x = %d,y = %d \n",x,y);}演示11#include "stdio.h"#define K 3#define N 5long f2(int n,int k){long power = n;int i;for(i=1;i<k;i++)power *=n;return power;}long f1(int n,int k){long sum = 0 ;int i;for(i=1;i<=n;i++)sum = sum + f2(i,k);return sum;}int main(void){printf("sum of %d power of integer from 1 to %d = ",K,N); printf("%ld\n",f1(N,K));return 0;}演示12#include <stdio.h>int min(int a,int b);int main(void){int j,k,mininum;printf("input 2 integers:");scanf("%d,%d",&j,&k);mininum = min(j,k);printf("\n of the two values %d and %d,the mininum is %d\n",j,k,mininum); return 0;}int min(int a,int b){if(a<b)return a;elsereturn b;}演示13#include <stdio.h>int func(int a,int b);void main(){int k=4,m=1,p;p=func(k,m);printf("%d\n",p);}int func(int a,int b){int m=0,i=2;i+=m+1;m=i+a+b;return m;}演示14#include <stdio.h>int max(int x,int y){int z;z=x>y?x:y;return z;}void main()extern int A,B; //声明外部变量printf("%d\n",max(A,B));}int A=13,B=-8; //定义外部变量演示15#include <stdio.h>int f1(int xb){extern int xa;return (xa*xb);}int main(void){extern int xb;int xa = 5;printf("xa=%d,xb=%d,result=%d",xa,xb,f1(xa)); return 0;}int xa = 3,xb = 4;演示16#include <stdio.h>void num(){extern int x,y;int a=15,b=10;x=a-b;y=a+b;}int x,y;void main(){int a=7,b=5;x=a+b;y=a-b;num();printf("%d,%d\n",x,y);}演示17#include <stdio.h>void main()void swap();extern int a,b;a=3;b=10;swap();printf("a=%d,b=%d\n",a,b);}int a,b;void swap(){int temp;temp=a;a=b;b=temp;}演示18#include <stdio.h>void auto_static(void){int var_auto = 0;static int var_static = 0;printf("var_auto = %d,var_static = %d\n",var_auto++,var_static++); }void main(){int i;for (i=0;i<3;i++)auto_static();}演示19#include <stdio.h>void swap(int x,int y){int t;t=x;x=y;y=t;}void main(){int a,b;scanf("%d,%d",&a,&b);swap(a,b);printf("%d,%d\n",a,b);}----------------------------------------------------------------------------------------------------------#include <stdio.h>int x,y;void swap(int ,,int){int t;t=x;x=y;y=t;}void main(){scanf("%d,%d",&x,&y);swap(x,y);printf("%d,%d\n",x,y);}#include <stdio.h>int x,y;void swap(int x,int y){int t;t=x;x=y;y=t;}void main(){scanf("%d,%d",&x,&y);swap(x,y);printf("%d,%d\n",x,y);}----------------------------------------------------------------------------------------------------------------------演示20#include <stdio.h>int fac(int n){static int f=1;f=f*n;return f;}void main(){int i;for(i=1;i<=5;i++)printf("%d!=%d\n",i,fac(i));}演示21#include "stdio.h"int main(void){int a = 2;int p = a;printf("%d\n",a);{int a =7;printf("%d\n",a);printf("%d\n",p);}printf("%d\n",++a);return 0;}演示22#include <stdio.h>int func(int a,int b);void main(){int k=4,m=1,p;p=func(k,m);printf("%d,",p);p=func(k,m);printf("%d\n",p); }int func(int a,int b){static int m=0,i=2;i+=m+1;m=i+a+b;return m;}演示23#include <stdio.h>f(int n){int c;if(n==6)c=1;elsec=(f(n+1)+1)*2;return c;}void main(){printf("%d\n",f(1));}演示24#include <stdio.h>long power(int n){long f;if(n>1)f=power(n-1)*n;elsef=1;return f;}main(){int n;long x;printf("input an integer number:\n"); scanf("%d",&n);x=power(n);printf("%d!=%ld\n",n,x);getchar();}演示25#include <stdio.h>int fact(){static int i=5;if(i==0) return 1;else{i--;return (i+1)*fact();}}void main(){printf("fact=%d\n",fact()); }演示26#include <stdio.h>int fun(int k);int w=3;void main(){int w=10;printf("%d\n",fun(5)*w);}int fun(int k){if(k==0) return w;return(fun(k-1)*k);}演示27#include <stdio.h>int fac(int n){register int i,f=1;for(i=1;i<=n;i++)f=f*i;return f;}main(){int i;for(i=1;i<=5;i++)printf("%d!=%d\n",i,fac(i)); }演示28#include <stdio.h>age(int n){int c;if(n==1)c=10;elsec=age(n-1)+2;return c;}void main(){printf("%d\n",age(5));}演示29#include <stdio.h>#define PI 3.14#define circuit(r) 2*PI*r#define area(r) PI*r*rvoid main(){float ra,c,a;scanf("%f",&ra);c=circuit(ra);a=area(ra);printf("ra=%f,c=%f,a=%f",ra,c,a);}汉诺塔(演示30)#include "stdio.h"void move(int,char,char,char);int main(void){int n;printf("input n disk on tower A:\n");scanf("%d",&n);move(n,'A','B','C');getchar();return 0;}void move(int n,char a,char b,char c){static int step=1;if(n==1){printf("step %d :move disk form %c -> %c\n",step++,a,c); }else{move(n-1,a,c,b);move(1,a,b,c);move(n-1,b,a,c);}}演示31#define LETTER 1#include "stdio.h"void main(){char str[20]="C Language",c;int i;i=0;while((c=str[i])!='\0'){i++;#if LETTERif(c>='a'&&c<='z')c=c-32;#elseif(c>='A'&&c<='Z')c=c+32;#endifprintf("%c",c);}}#include <stdio.h>long f(int n){if(n==1||n==2)return 1;elsereturn f(n-1)+f(n-2);}void main(){long n;printf("input n:\n");scanf("%d",&n);printf("the number is %d\n",f(n)); }。