起步C语言
文章平均质量分 72
aci353
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
第二天
昨晚去机房,本想着编1-2小时的程序,结果机房的破电脑超难使,一编译运行就死机,害得我白白浪费了两个多小时,心疼啊··· 总得想个办法吧,宿舍不是个编程的地方,哎哎,怎么办呢···今天的第一个程序,其实是为了测试电脑上的Visual C++好不好使:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?#include#includemain(){int x,y,i;for(i=0;ix=(int)sqrt(i+100);y=(int)sqrt(i+268);if(原创 2010-11-28 09:21:00 · 379 阅读 · 0 评论 -
结构体与共用体
第一部分 结构体“结构”是一种构造类型,它是由若干“成员”组成的。每个成员可以是一个基本数据类型或者又是一个构造类型。结构既然是一种“构造”而成的数据类型,那么在 说明和使用之前必须对它进行定义,也就是构造它。1. 结构体的定义 定义结构体的一般形式为: struct 结构名 {成员列表}; 成员列表由若干成员组成,每个成员都是该结构的一个组成部分。对每个成员必须做类型说明,其形式为: 类型说明符 成员名; 应注意在右大括号后的分号是不可少的。结构定义后,即可进行变量说明原创 2011-01-13 11:33:00 · 912 阅读 · 0 评论 -
间隔之后继续 行者无疆
题目34.文件的读写题目要求:创建一个后缀名为.txt的文件。并向文件中写入一个字符串,保存起来。在打开该文件,读出文件中的内容。用到的I/O函数:(1)FILE *fopen(char *filename,char *type);//打开指定路径的文件(2)int fclose(FILE *fp);//关闭文件(3)int fread(void *buf,int size,int count,FILE *fp);//读文件函数(4)int fwrite(void *buf,int size,int cou原创 2011-01-25 10:20:00 · 1229 阅读 · 1 评论 -
数学趣题
<br />1.舍罕王的失算<br />题目要求:舍罕是古印度的国王,据说他十分好玩,宰相达依尔为讨好国王,发明了现今的国际象棋献给国王。舍罕非常喜欢这项游戏,于是决定嘉奖达依尔,许诺可以满足达依尔提出的任何要求。达依尔指着舍罕王前面的棋盘提出要求:“陛下,请您按棋盘的格子上次我一点麦子吧,第1个小格赏我一粒麦子,第2个小格赏我两粒,第3个小格赏四粒,以后每一小格都比前一小格赏的麦粒数增加一倍,只要把棋盘上全部64个小格按这样的要求得到的麦粒都赏赐给我,我就心满意足了。”舍罕王听了达依尔的这个“小小的”要求原创 2011-02-14 09:27:00 · 2651 阅读 · 0 评论 -
数学趣题二
<br />1.连续整数固定和问题<br />题目要求:编写一个程序,找出一个数的全部的连续整数固定和。所谓一个数n的连续整数固定和,就是指存在a1,a2,...an,其中,ai+1比ai大1,使得a1+a2+...+an=n。这样,a1,a2,...,an称为n的一个连续整数固定和。例如27的全部的连续整数固定和有3组:2+3+...+7=27;8+9+10=27;13+14=27。本题就是要找出任意输入的整数n的全部的连续整数固定和。<br />程序代码:<br />#include<stdio.h><原创 2011-02-14 09:28:00 · 1781 阅读 · 0 评论 -
指针
<br />2011-05-15 23:01:42<br />1.输入三个整数,按由小到大的顺序输出。<br />程序代码:<br />#include<stdio.h><br />void swap(int *p1,int *p2);<br />int main(void)<br />{<br /> int a,b,c;<br /> printf("Please input three numbers:");<br /> scanf("%d%d%d",&a,&b,&c);<br /> if(a>b)<br原创 2011-05-15 23:01:00 · 471 阅读 · 0 评论 -
结构数组的应用
<br />编写一个用来维护仓库存储的零件的信息的数据库。程序围绕一个结构数组构建,且每个结构包括以下信息:零件的编号、名称及数量。程序支持下列操作。<br />1>添加新零件编号、名称和初始的现货数量。如果零件已经在数组库中,或者数组库已满,那么程序必须显示出错信息。<br />2>给定零件编号,显示出零件的名称和当前的现货数量。如果零件编号不在数组库中,那么程序必须显示出错误信息。<br />3>给定零件编号,改变现有的零件数量。如果零件编号不在数组库中,那么程序必须显示出错信息。<br />4>显示列原创 2011-05-28 22:34:00 · 769 阅读 · 0 评论 -
结构
1.编写一个函数print,打印一个学生的成绩数组,该数组中5个学生的记录,每个记录包括num、name、score[3],用主函数输入这些记录,用print函数输出这些记录。#include#define NAME_LEN 20#define N 5struct record{ int num; char name[NAME_LEN+1]; char score[3];}student[N];void print(void);int main(void){ int i; for(i=0;i { prin原创 2011-05-29 10:34:00 · 623 阅读 · 0 评论 -
两个程序
<br />1.网络新手的原型是一个名为B1FF的人,他有一种独特的编写消息的方法。下面是一条常见的B1FF公告:<br />H3Y DUD3,C 15 RILLY COOL!!!!!!!!!!<br />编写一个“B1FF过滤器”,它可以读取用户录入的消息并把此消息翻译成B1FF的表达风格:<br />Enter message:Hey dude,C is rilly cool<br />IN B1FF-speak:H3Y DUD3,C is RILLY COOL!!!!!!!!!!<br />程序需要把原创 2011-04-11 10:08:00 · 2399 阅读 · 2 评论 -
随机函数 歌德巴赫猜想
1.随机函数 每次运行产生不同的随机数,程序代码如下:#include #include #include int main(void){ int i; time_t t; srand((unsigned) time(&t)); printf("Ten random numbers from 0 to 99/n/n"); for (i=0;i printf("%d/n",rand()%100); return 0;} 这时运行程序,会发现每次产生的随机数都不一样。原创 2011-04-11 10:21:00 · 690 阅读 · 0 评论 -
字符串中的问题
1.strlen()函数与sizeof()函数 strlen所作的仅仅是一个计数器的工具,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符/0为止,然后返回计数器值。即计算字符串s的(unsigned int型)长度,不包括/0在内。 strlen(char*)函数求的是字符串的实际长度,它求得方法是从开始到遇原创 2011-06-03 11:09:00 · 673 阅读 · 0 评论 -
处理多维数组的列
<br /> 下面的循环对数组a的第i列清零:<br /> int a[NUM_ROWS][NUM_COLS],(*p)[NUM_COLS],i;<br /> ...<br /> for(p=&a[0];p<&a[NUM_ROWS];p++)<br /> (*p)[i]=0;<br /> 这里把p声明为指向长度为NUM_COLS的整形数组的指针。在](*p)[NUM_COLS]中,*p是需要使用括号的;如果没有括号,编译器将认为p是指针数组,而不是指向数组的指针。表达式p++把p移到下一原创 2011-04-17 09:16:00 · 801 阅读 · 0 评论 -
使我困扰的几个C++程序
1.有9月数按从大到小的顺序放在一个数组中,输入一个数,要求用折半查找法求出该数是数组中第几个元素的值。如果该数不在数组中,则打印出“无此数”。程序代码为:#include#includeusing namespace std;int main(){原创 2011-08-27 16:50:38 · 681 阅读 · 0 评论 -
再叙指针
在C语言中,允许用一个变量来存放指针,这种变量称为指针变量。可见,一个指针变量的值就是某个内存单元的地址或称为某内存单元的地址。1.变量的指针和指向变量的指针变量 变量的指针就是变量的地址。存放变量地址的变量就是指针变量。在C语言中,允许用一个变量来存放指针,这个变量就是指针变量。因此,一个指针变量的值就是某个变量的地址或称为某变量的指针。1.1 指针变量的定义 一般形式为:类型说明符 * 变量名;其中,*表示这是一个指针变量,变量名即为定义的指针变量名,类型说明符表示该指针变量所指向的变量的数据原创 2011-01-12 11:40:00 · 1013 阅读 · 1 评论 -
函数应用程序设计
<br />1. 字符串的显示及反向显示<br />#include<stdio.h><br />#include<string.h><br />void forward_and_backwards(char line_of_char[],int index);//声明函数<br />main(){<br /> char line_of_char[80];<br /> int index=0;<br /> strcpy(line_of_char,"This is a string.");//字符串复制<b原创 2011-01-10 17:39:00 · 892 阅读 · 0 评论 -
汉诺塔、反向输出问题--利用递归实现
1. Hanoi问题 一块板上有A、B和C3根针。A针上套有64个大小不等的圆盘,大的在下,小的在上。要把这64个圆盘从A针移动到C针上,每次只能移动一个圆盘,移动可以借助B针进行。但在任何时候,每个镇上的圆盘都必须保持大盘在下,小盘在上,求移动的步骤。 本算法分析如下,设A上有n个盘子。 如果n=1,则将圆盘从A直接移动到C。 如果n=2,则(1)将A上的n-1(等于1)个圆盘移动到B上;(2)再将A上的一个圆盘移动到C上;(3)最后将B上的n-1(等于1)个圆盘移动到C上。 如果n=3,则(原创 2011-01-10 11:49:00 · 854 阅读 · 0 评论 -
有两天没练手了
题目一:求圆周率pi的无穷级数表示:pi/4=1/1-1/3+1/5-1/7+1/9-1/11+···#include#includemain(){int i=-1,flag=-1;double delt,pi=0.0;do{i+=2;flag*=-1;delt=flag/(1.0*i);--->不能写成delt=falg/i;因为两个(flag和i)直接相除,商的小数部分会自动去掉pi+=delt;}while(fabs(delt)>1e-6);--->求绝对值的函数 |delt|>1e-6pi=pi*4原创 2010-12-01 11:07:00 · 406 阅读 · 0 评论 -
进度很缓慢呀···
上篇之手机短信恶作剧案例#include#includemain(){ int sum,x1,x2,x3,x4,x5,x; printf("请输入一个介于125和999之间的数/n"); scanf("%d",&x); x=x*81; x5=x%10; x4=(x/10)%10; x3=(x/100)%10; x2=(x/1000)%10; x1=x/10000; sum=x1+x2+x3+x4+x5; while(sum/10!=0){ x2=sum%10; x1=sum/10; sum=x1+x2原创 2010-12-03 06:46:00 · 421 阅读 · 0 评论 -
质因数分解
题目一:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。(2)如果nk,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数n,重复执行第一步。(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。main(){int num,k;printf("Please input a num:");scanf("%d",&nu原创 2010-12-08 15:59:00 · 705 阅读 · 0 评论 -
深度理解C语言指针的奥秘
指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。 要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。让我们分别说明。 先声明几个指针放着做例子: 例一: (1)int*ptr; (2)char*ptr; (3)int**ptr; (4)int(*ptr)[3]; (5)int*(*ptr)[4]; 指针的类型 从语法的角度看,你只要把指针声转载 2010-12-31 22:18:00 · 527 阅读 · 0 评论 -
C文件相关操作
第一部分 文件的打开和关闭1.1文件指针 在C语言中用一个指针变量指向一个文件,这个指针成为文件指针。通过文件指针,可以对它所指的文件进行各种操作。 定义文件指针的一般格式为: FILE * 指针变量标识符; 其中FILE应为大写,它实际上是由系统定义的一个结构,该结构中含有文件名、文件状态和文件当前位置等信息。在编写源程序时不必关系FILE结构的细节。 如: FILE * fp; 表示fp是指向FILE结构的指针变量,通过fp即可查找存放某个文件信息的结构变量,然后按结构变量提供的信息原创 2011-01-04 17:39:00 · 832 阅读 · 0 评论 -
继续C编程--2010年最后一天,我21岁生日
题目6:输入两个正整数m和n,求其最大公约数和最小公倍数。辗转相除法, 又名欧几里德算法(Euclidean algorithm)乃求两个正整数之最大公因子的算法。它是已知最古老的算法, 其可追溯至前300年。它首次出现于欧几里德的《几何原本》(第VII卷,命题i和ii)中,而在中国则可以追溯至东汉出现的《九章算术》。它并不需要把二数作质因子分解。辗转相除法是利用以下性质来确定两个正整数 a 和 b 的最大公因子的: 1. 若 r 是 a ÷ b 的余数, 则原创 2010-12-31 17:47:00 · 695 阅读 · 0 评论 -
2010-1-2 用行动实现自己的梦想
题目25:编程实现对键盘输入的英文句子进行加密。加密方法为,当内容为英文字母时其在26字母中的其后三个字母代替该字母,若为其它字符时不变。#includemain(){char ch;printf("请输入一段内容:/n");while((ch=getchar())!='/n'){--->在ch=getchar()中没加括号,导致错误if((ch>='a' && ch='A' && ch{ch=ch+3;}if((ch>='x' && ch='X' && ch{ch=ch+3-26;}printf("%c"原创 2011-01-02 22:01:00 · 1728 阅读 · 0 评论 -
一维数组的应用--排序
1. 简单比较排序使用for循环描述i,j的变化规律,并推广到n个元素。i 外循环变量控制比较次数,i=0,ij 内循环变量控制一次内的比较、交换,j=i+1,j例1:简单比较循环#includemain(){int a[10];int i,j;int temp=0;printf("please input ten number random:/n");for(i=0;iscanf("%d",&a[i]);printf("the number you have input is:/n");for(i=0原创 2011-01-07 21:26:00 · 649 阅读 · 0 评论 -
二维数组的应用
1. 矩阵加和矩阵减 设A、B、C为矩阵,则矩阵加为C=A+B,矩阵减为C=A-B。矩阵加减运算的条件是两矩阵的行数和列数相等。 例1:矩阵加运算。#include#define M 3#define N 2main(){int i,j;int a[M][N],b[M][N],c[M][N];printf("请输入矩阵a的元素:/n");for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);printf("请输入矩阵b的元素:/n");for(i=0;ifor(j=0;jscanf原创 2011-01-09 12:19:00 · 1606 阅读 · 0 评论 -
数据的输入输出
第一部分 数据输入/输出地概念及其在C语言中的实现 C语言中输入输出是以计算机为主体的。输入是指从标准输入设备(键盘)为程序中不同类型的变量赋值,输出是指向标准输出设备(显示器)输出表达式的值。 第二部分 数据的格式化输入 格式输入函数scanf,功能是按用户指定的格式,从键盘上把输入输入到指定的变量中。 2.1 格式化输入的格式 1.格式scanf函数是一个标准库函数,它的函数原型在头文件“stdio.h”中,他是从键盘上输入的数据按指定的格式赋给相应的输入项。一般格式为: scanf("格式控原创 2011-01-07 12:02:00 · 2343 阅读 · 0 评论 -
数组名作为函数参数
<br /> 用数组名做函数参数与用数组元素作实参有几点不同:<br />(1)用数组元素作实参时,只要数组类型和函数的形参变量的类型一致,那么作为下标变量的数组元素的类型也和函数形参变量的类型是一致的。因此,并不要求函数的形参也是下标变量。换句话说,对数组元素的处理是按普通变量对待的。用数组名作函数参数时,则要求形参和相应的实参都必须是类型相同的数组,都必须有明确的数组说明。当形参和实参两者类型不一致时,机会发生错误。<br />(2)用普通变量或下标变量作函数参数时,形参变量和实参变量都是由编译系统分原创 2011-01-11 12:01:00 · 18936 阅读 · 0 评论 -
预处理命令与位运算
所谓预处理是指在进行编译的第一遍(词法扫描和语法分析)之前所做的工作。预处理是C语言的一个重要功能,它由预处理程序负责完成。当对一个原文件进行编译时,系统将自动引用预处理程序对源程序中的预处理部分进行处理,处理完毕自动进入对源程序的编译。 第一部分 宏定义 在C语言源程序中允许用一个标识符来表示一个字符串,成为“宏”。被定义为“宏”的标识符成为“宏名”。在编译处理命令时,对程序中所出现的“宏名”,都是宏定义中的字符串去代替,这称为“宏代换”或“宏展开”。 宏定义是由源程序中的宏定义命令完成的。宏代原创 2011-01-11 12:11:00 · 1092 阅读 · 1 评论 -
typeid详解
在揭开typeid神秘面纱之前,我们先来了解一下RTTI(Run-Time Type Identification,运行时类型识别),它使程序能够获取由基指针或引用所指向的对象的实际派生类型,即允许“用指向基类的指针或引用来操作对象”的程序能够获取到“这些指针或引用所指对象”的实际派生类型。在C++中,为了支持RTTI提供了两个操作符:dynamic_cast和typeid。 dyn转载 2012-09-06 15:12:01 · 584 阅读 · 0 评论
分享