
C笔记
PAT-python-zjw
人生苦短,我用Python
展开
-
求π近似值
#include #include //使用格雷戈里公式计算π的近似值,精确到0.0001 int main(){ double x=0; int n=0,i=1; while (1.0/i>=0.0001) { x+=pow(-1,n)*(1.0/i); n++; i+=2; } printf("%.4f",x*4); return 0;}原创 2017-04-08 21:28:52 · 7340 阅读 · 0 评论 -
改良的用户注册和登录系统(2)
#include #include //用户登录验证系统-改良 struct log //定义log结构用于存储用户账号和密码信息 { char name[15]; char password[10];};int num;void logging(struct log person);原创 2017-04-30 11:14:30 · 511 阅读 · 0 评论 -
简易的学生成绩录入程序(完整版)
从开始学习C语言开始,不知不觉已经接近一个月了。通过一步一步的写小程序,自己也渐渐掌握了C语言的一些基础语法。最后以这个简易的学生成绩录入小程序来巩固一下这段时间的学习成果,就当做是一次期末测验吧。该程序总体上包括两个模块,分为是登录模块(log.c)和处理模块(system.c),登录模块包含注册账号密码和验证账号密码功能,只有成功登录,才能进入处理模块进行学生信息的录入。处理模块包含录入新原创 2017-04-30 21:11:54 · 8062 阅读 · 3 评论 -
输出日期
#include //输入年份和天数。输出对应的年、月、日,如输入:2000 61 ,则输出:第2000年的第61天是3月1日。 int main(){ int year,days,month,day; int transform(int,int,int*pmonth,int*pday); //转换函数 scanf("%d %d",&year,&days); if (tr原创 2017-04-15 14:19:15 · 963 阅读 · 0 评论 -
数组颠倒
#include //输入n(n<=100)个整数存入数组中,通过函数调用的方式实现数组元素的逆序存放int main(){ int a[100],n,i; void reverse(int*a,int n); scanf("%d",&n); for (i=0;i<n;i++) { scanf("%d",&a[i]); } reverse(a,n); for (i=0原创 2017-04-15 15:42:22 · 1448 阅读 · 0 评论 -
电码加密(字符数组和指针的应用)
#include //电码加密,变化规则如下:小写字母z变换为a,其他字母变换为该字母ASCII码顺序后一位字母,如o变换成p。int main(){ char s[100]; int i; void jiami(char*s); scanf("%s",s); jiami(s); for (i=0;s[i]!='\0';i++) { printf("%c",s[i]);原创 2017-04-15 16:47:18 · 1644 阅读 · 1 评论 -
比较字符串大小
#include #include //输入五个字符串,输出其中最小的字符串int main(){ int i; char s[100],min[100],*p; scanf("%s",s); strcpy(min,s); for (i=0;i<4;i++) { scanf("%s",s); if (strcmp(min,s)>0) { strcpy(min原创 2017-04-15 19:15:50 · 1034 阅读 · 0 评论 -
冒泡排序
#include //输入n(n<=100)个整数,使用冒泡排序法将其排序后从小到大输出。int main(){ int num[100],i,n; void bubble(int num[],int n); scanf("%d",&n); for (i=0;i<n;i++) { scanf("%d",&num[i]); } bubble(num,n); for (i原创 2017-04-15 14:48:45 · 665 阅读 · 0 评论 -
单词长度
题目内容:你的程序要读入一行文本,其中以空格分隔为若干个单词,以‘.’结束。你要输出这行文本中每个单词的长度。这里的单词与语言无关,可以包括各种符号,比如“it's”算一个单词,长度为4。注意,行中可能出现连续的空格。输入格式:输入在一行中给出一行文本,以‘.’结束,结尾的句号不能计算在最后一个单词的长度内。输出格式:在一行中输出这行文本对应的单词的长度原创 2017-04-20 10:34:14 · 4006 阅读 · 0 评论 -
GPS数据处理
题目内容:NMEA-0183协议是为了在不同的GPS(全球定位系统)导航设备中建立统一的BTCM(海事无线电技术委员会)标准,由美国国家海洋电子协会(NMEA-The National Marine Electronics Associa-tion)制定的一套通讯协议。GPS接收机根据NMEA-0183协议的标准规范,将位置、速度等信息通过串口传送到PC机、PDA等设备。NMEA-原创 2017-04-21 13:37:20 · 7626 阅读 · 2 评论 -
简易的学生成绩录入系统(结构,结构指针,结构数组的运用)
#include #define MAXSIZE 10//定义学生的数据结构,包含学号,姓名,数学成绩,英语成绩,平均分信息以及录入,修改学生信息,成绩表等操作 struct student{ int num; char name[10]; int math,english; double average;};int sum=0;int main(){ int choic原创 2017-04-23 16:21:35 · 1588 阅读 · 2 评论 -
汉若塔问题
#include //汉若塔问题问题,有A,B,C共3根柱子,要求将A柱子上的n个盘子搬到B柱子,其中大盘在下小盘在上,搬运过程中大盘不能压在小盘上。 输出搬运步骤。int main(){ int n; char a='A',b='B',c='C'; void f(int n,char a,char b,char c); scanf("%d"原创 2017-04-25 10:27:27 · 901 阅读 · 0 评论 -
全局变量、局部变量、静态局部变量、静态全局变量、外部变量、外部函数和静态函数
1全局变量定义在函数外,不属于任何函数,生存周期为定义开始直到程序运行结束,作用范围为所有函数。2局部变量一般定义在函数或复合语句的开头,生存周期为定义直到所在函数或复合语句调用结束,作用范围为所在函数或复合语句3(局部)静态变量与局部变量类似,只不过其生存周期为定义开始直到程序运行结束。其赋初值只会在函数第一次调用时起作用,若没有赋值,自动赋值为0原创 2017-04-09 15:37:29 · 906 阅读 · 1 评论 -
多个字符串的输出(指针数组、二级指针)
#include #include #include #define NUM 20#define MAXSIZE 15 //输入一些有关颜色的单词,每行一个,以#作为输入结束的标志。按输入的相反次序输出这些单词。其中单词数小于20,单词长度小于15(动态分配储存空间)int main(){ char *s[NUM],str[MAXSIZE],**p; int i=0; prin原创 2017-04-26 12:43:39 · 2019 阅读 · 0 评论 -
简易的用户账号注册和登录验证程序(1)
#include #include //用户登录验证系统struct log //定义log结构用于存储用户账号和密码信息 { char name[15]; char password[10];};void logging(struct log person); //登录函数 v原创 2017-04-29 22:04:18 · 2663 阅读 · 0 评论 -
文件末尾检测函数feof()
用于判断文件指针是否到达文件末尾,调用格式为:feof(fp);比较坑的地方是使用此函数用于循环判断时,会多循环一次,这是由于当指针已经读完最后一个字符时,还不知道已经到达文件末尾,因此需要再循环一次。解决的方法是先读取一次,再循坏!!!原创 2017-04-29 20:58:11 · 2547 阅读 · 0 评论 -
进制转换
输入一个以回车符结束的字符串(少于100个),过滤去所有的非十六进制字符后,组成一个新字符(十六进制形式),输出该字符串并将其转换为十进制数后输出。#include //进制转换int main(){ char s[100],ch; int i=0,j,sum=0; while ((ch=getchar())!='\n') { if ((ch>='0' && ch='a' &原创 2017-04-12 22:00:21 · 509 阅读 · 0 评论 -
统计整数位数
//统计整数位数#include int main(){ int i,sum=0; scanf("%d",&i); do { i/=10; sum+=1; }while(i!=0); printf("%d",sum); return 0;}原创 2017-04-08 21:39:02 · 3754 阅读 · 0 评论 -
判断素数
#include #include //判断素数int main(){ int i,j,flag=0; scanf("%d",&i); if (i<2) flag=1; for (j=2;j<=sqrt(i);j++) { if (i%j==0) { flag=1; break; } } if (flag==0) { printf("%d是素数原创 2017-04-08 22:05:01 · 852 阅读 · 0 评论 -
计算1!+2!+3!+...+n!
#include //计算1!+2!+3!+...+n!double f(int n);int main(){ int i,n; double sum=0; scanf("%d",&n); for (i=1;i<=n;i++) { sum+=f(i); } printf("结果为%e",sum); return 0;} double f(int n){ int原创 2017-04-09 13:20:25 · 10356 阅读 · 2 评论 -
逆序输出正整数
#include //逆序输出正整数int main(){ int n,m,sum=0; scanf("%d",&n); while (n>0) { m=n%10; n=n/10; sum=sum*10+m; } printf("%d",sum); return 0;}原创 2017-04-09 13:36:33 · 2161 阅读 · 0 评论 -
输出斐波那契数列前n项,十个一行 ,行末不含空格
#include //输出斐波那契数列前n项,十个一行 ,行末不含空格 int main(){ int n,i,a=1,b=1,t; scanf("%d",&n); if (n==1) { printf("1"); } else if (n==2) { printf("1 1"); } else { printf("1 1 "); for (i=1原创 2017-04-09 14:17:22 · 2594 阅读 · 0 评论 -
输出数字金字塔(数字1-9)
#include //输出数字金字塔(数字1-9)int main(){ int n,i,j,k; scanf("%d",&n); for (i=1;i<=n;i++) { for (j=1;j<=n-i;j++) printf(" "); for (k=1;k<=i;k++) { if (k==i) { printf("%d",i); }els原创 2017-04-09 15:00:53 · 19554 阅读 · 0 评论 -
分别以十进制、八进制和十六进制输出一个字符的ASCII
#include //分别以十进制、八进制和十六进制输出一个字符的ASCIIint main(){ char n; scanf("%c",&n); printf("十进制为%d\n八进制为%o\n十六进制为%x",n,n,n); return 0;}原创 2017-04-09 16:37:24 · 6601 阅读 · 0 评论 -
高精度小数
题目内容:由于计算机内部表达方式的限制,浮点运算都有精度问题,为了得到高精度的计算结果,就需要自己设计实现方法。(0,1)之间的任何浮点数都可以表达为两个正整数的商,为了表达这样两个数的商,可以将相除的结果以多个整数来表示,每个整数表示结果的一位。即商的第一位用一个整数来表示,第二位用另一个整数来表示,以此类推,就可以输出一个高精度的除法结果了。如16/19的结果0.842105263原创 2017-04-09 21:35:09 · 1388 阅读 · 0 评论 -
分解质因数
题目内容:每个非素数(合数)都可以写成几个素数(也可称为质数)相乘的形式,这几个素数就都叫做这个合数的质因数。比如,6可以被分解为2x3,而24可以被分解为2x2x2x3。现在,你的程序要读入一个[2,100000]范围内的整数,然后输出它的质因数分解式;当读到的就是素数时,输出它本身。提示:可以用一个函数来判断某数是否是素数。输入格式:一个整数,范原创 2017-04-09 22:07:14 · 839 阅读 · 0 评论 -
完数
题目内容:一个正整数的因子是所有可以整除它的正整数。而一个数如果恰好等于除它本身外的因子之和,这个数就称为完数。例如6=1+2+3(6的因子是1,2,3)。现在,你要写一个程序,读入两个正整数n和m(1提示:可以写一个函数来判断某个数是否是完数。输入格式:两个正整数,以空格分隔。输出格式:其间所有的完数,以空格分隔,最后一个数字后原创 2017-04-10 09:51:06 · 1244 阅读 · 0 评论 -
多项式加法
题目内容:一个多项式可以表达为x的各次幂与系数乘积的和,比如:2x6+3x5+12x3+6x+20现在,你的程序要读入两个多项式,然后输出这两个多项式的和,也就是把对应的幂上的系数相加然后输出。程序要处理的幂最大为100。输入格式:总共要输入两个多项式,每个多项式的输入格式如下:每行输入两个数字,第一个表示幂次,第二个表示该幂次的系数,所有的系数都是整数。第原创 2017-04-10 16:36:19 · 1559 阅读 · 0 评论 -
鞍点
题目内容:给定一个n*n矩阵A。矩阵A的鞍点是一个位置(i,j),在该位置上的元素是第i行上的最大数,第j列上的最小数。一个矩阵A也可能没有鞍点。你的任务是找出A的鞍点。输入格式:输入的第1行是一个正整数n, (1输出格式:对输入的矩阵,如果找到鞍点,就输出其下标。下标为两个数字,第一个数字是行号,第二个数字是列号,均从0开始计数。原创 2017-04-10 22:00:29 · 4378 阅读 · 0 评论 -
选择排序法
输入一个正整数(1#include //选择排序法,对数据从小到大排序int main(){ int n,i,num[100],min,j,t; scanf("%d",&n); for (i=0;i<n;i++) { scanf("%d",&num[i]); } for (i=0;i<n;i++) { for (j=i+1;j<n;j++) { if (原创 2017-04-11 13:32:04 · 842 阅读 · 0 评论 -
判断回文
输入一个以回车符结束的字符串(#include //判断回文int main(){ char s[100]; int i=0,j,n,flag=0; while ((s[i]=getchar())!='\n') i++; n=(i%2==0)?i/2:i/2+1; for (j=0;j<n;j++) { if (s[j]!=s[i-j-1]) { flag原创 2017-04-12 10:47:57 · 964 阅读 · 0 评论 -
数值积分(函数指针的运用)
#include #include //编写一个函数calc(f,a,b),求函数f(x)在[a,b]上的数值积分(函数指针的运用),以f(x)=x^2,范围为[0,1]和f(x)=sinx/x,范围为[1,2]为例子 int main(){ double f1(double x); double f2(double x); double calc(double (*f)(doubl原创 2017-04-26 15:57:41 · 861 阅读 · 0 评论