求[100,9999]区间的超级素数,c语言编程,程序中含数组,湖南省计算机二级考试c语言培训资料...

62e50291a81fc54b507f33cb80033297.gif 湖南省计算机二级考试c语言培训资料

(55页)

ba3efc0b320f2a69c1314a4e5b076d2b.gif

本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦!

19.90 积分

1湖南省计算机二级考试培训内容湖南省计算机二级考试培训内容一、 语言基础1、 标识符的命名规则(1) 只能为字母、数字、下划线(2) 第一个不能为数字(3) 不能与关键字同名2、常量的合法性(1)整形八进制:以 0 开头,只能出现数字(0-7)。如 0234 非法的如 078,出现了数字 8十六进制:以 0x 开头,只能为(0-9,abcdef(ABCDEF)) 合法的有 0x234abf,0x698AFE 非法的如 0x34AFK,出现了 K(2)实型 小数形式:(必须有小数点) 如 0.123, .123, 123.0, 0.0,123.指数形式:(e 或 E 之前必须有数字;指数必须为整数)如 12.3e3 ,123E2, 1.23e4 , e-5(非法) , 1.2E-3.5(非法)(3)字符 字符常量:用单引号括起来的单个普通字符 ‘a’,’H’等,非法的如‘abd’ 字符串常量:用双引号(“”)括起来的字符序列 如“abc”,“a“注意:“a“与‘a’的区别3、变量 2 变量定义的一般格式: 数据类型 变量 1[,变量 2,…,变量 n];如 int ad,max,c;(定义三个变量,变量名为 ad,max,c)。整形变量占 2 个字节,实型变量( float 占 4 个字节, double 占 8 个字节),字符变量占 1 个字节。指针变量占 2 个字节,结构体变量占其内各变量空间和,共用体变量占其内占空间最大的变量的字节数。变量必须先定义后使用,且使用前变量必须有确定值。4、运算符(1)运算符的优先级,结合性(2)算术运算符:+,-,*,/,%,++,--。 ① 两整数相除,结果为整数,如 3/5=0。②%要求两侧均为整型数据,如 3.2%2(非法)。③当++,--运算符与其他运算符混合运算时,对前置++,--先自增、自减,再用自增、自减后的值参与其他运算;对后置++,--先用值参与其他运算,再自增、自减。注意:++ -- 不能用于常量和表达式,如 5++,(a+b)++(3)关系运算符,逻辑运算符 ①关系运算符:< <= == >= > != ②逻辑运算符:! && ||这 2 种运算符的结果只为 0 和 1。 对逻辑运算符,只看值的真和假(1 代表真,0 代表假),而不管值的大小,所有的非 0 值都为真,即 1,只有 0 为假。 如 5>4>3,其结果为 0(先作 5>4 运算,得结果 1,再用 1 和 3 作 1>3 运算,得结果 0)。 (4)逗号运算符 3 形式:表达式 1,表达式 2,……表达式 n结合性:从左向右优先级: 15,只比赋值运算符高逗号表达式的值:等于表达式 n 的值用途:常用于循环 for 语句中如 a=3,a=a+4,a+6。表达式的值为 a+6 的值,即 13,而 a 的值为 7。5、三种结构的控制语句(1) 三种结构:顺序结构,选择结构,循环结构。(2) 选择结构if –else ,switch①格式:if (expression) statement1 [elsestatement2] if-else 格式中, if 可以单独出现,但 else 不能单独出现,必须与if 配对(配对原则:else 总是和它上面离它最近的未配对的 if 配对),if-else 还可以嵌套。 ②格式:switch( 表达式){ case E1: 语句组 1; break; case E2: 语句组 2; 4 break; ……. case En: 语句组 n; break; [default: 语句组 ; break;]} 说明: E1,E2,…En 是常量表达式,且值必须互不相同语句标号作用,必须用 break 跳出case 后可包含多个可执行语句,且不必加{ }switch 可嵌套多个 case 可共用一组执行语句(3) 循环结构①while 语句: 格式:while(表达式) { 循环体语句;} 说明:先判断表达式,后执行循环体,循环体有可能一次也不执行循环体可为任意类型语句下列情况,退出 while 循环条件表达式不成立(为零)循环体内遇 break,return。无限循环: while(1) 5 循环体;②do -while 语句: 格式:do { 循环体语句;} while(表达式); 说明:先执行循环体,后判断表达式至少执行一次循环体do-while 可转化成 while 结构③for 语句:格式:for(循环变量赋初值;循环条件;循环变量增值){ 循环体语句;}说明:for 语句中 expr1, expr2 ,expr3 类型任意,都可省略,但分号;不可省无限循环: for(;;)相当与 for(;1;)for 语句可以转换成 while 结构 ④ 三种循环可以嵌套,如: for( ; 4 次;) { …… do { …… }while(3 次); …… while(5 次) { …… 6 } …...} for 循环每变化一次,do-while 要循环 3 次,while 要循环 5 次。 ⑤break,continue 语句 break 语句:功能:在循环语句和 switch 语句中,终止并跳出循环体或开关体说明:break 只能终止并跳出最近一层的结构break 不能用于循环语句和 switch 语句之外的任何其它语句之中 continue 语句:功能:结束本次循环,跳过循环体中尚未执行的语句,进行下一次是否执行循环体的判断仅用于循环语句中 6、数组 概念:构造数据类型之一数组:有序数据的集合,用数组名标识元素:属同一数据类型,用数组名和下标确定 一维数组的定义:定义方式: 数据类型 数组名[常量表达式];例 int a[6];一维数组的初始化:int a[5]={1,2,3,4,5}; 说明:数组不初始化,其元素值为随机数对 static 数组元素不赋初值,系统会自动赋以 0 值 7可以只给部分数组元素赋初值当全部数组元素赋初值时,可不指定数组长度 一维数组的引用:数组必须先定义,后使用只能逐个引用数组元素,不能一次引用整个数组数组元素表示形式: 数组名[下标]其中:下标可以是常量或整型表达式 二维数组的定义:定义方式:   数据类型 数组名[常量表达式][常量表达式];二维数组的初始化:int a[2][3]={{1,2},{4}};二维数组的引用:数组名[下标][下标]; 说明:数组元素的存放顺序原因:内存是一维的二维数组:按行序优先字符数组:定义:例 char c[10], ch[3][4];引用:char ch[6]={“Hello”}; char ch[6]=“Hello”; char ch[]=“Hello”;常用的字符串处理函数: 字符串输出函数 puts格式:puts(字符数组)功能:向显示器输出字符串(输出完,换行) 8说明:字符数组必须以‘\0’结束 字符串输入函数 gets格式:gets(字符数组)功能:从键盘输入一以回车结束的字符串放入字符数组中,并自动加‘\0’说明:输入串长度应小于字符数组维数 字符串连接函数 strcat格式:strcat(字符数组 1,字符数组 2)功能:把字符数组 2 连到字符数组 1 后面返值:返回字符数组 1 的首地址说明:字符数组 1 必须足够大 ? 连接前,两串均以‘\0’结束;连接后,串 1 的‘\0’取消,新串最后加‘\0’ 字符串拷贝函数 strcpy格式:strcpy(字符数组 1,字符串 2)功能:将字符串 2,拷贝到字符数组 1 中去返值:返回字符数组 1 的首地址说明:字符数组 1 必须足够大 ? 拷贝时‘\0’一同拷贝 ? 不能使用赋值语句为一个字符数组赋值 字符串比较函数 strcmp格式:strcmp(字符串 1,字符串 2)功能:比较两个字符串比较规则:对两串从左向右逐个字符比较(ASCII 码),直到遇到不同字符或‘\0’为止 9返值:返回 int 型整数,a. 若字符串 1< 字符串 2, 返回负整数 b. 若字符串 1> 字符串 2, 返回正整数 c. 若字符串 1== 字符串 2, 返回零说明:字符串比较不能用“==”,必须用 strcmp 字符串长度函数 strlen格式:strlen(字符数组)功能:计算字符串长度返值:返回字符串实际长度,不包括‘\0’在内7、函数 ①定义形式:现代形式:函数类型 函数名(形参类型说明表){ 说明部分 语句部分 } 例 int max(int x,int y) { int z; z=x>y?x:y; return(z); }传统形式:函数类型 函数名(形参表)形参类型说明{说明部分语句部分 10} 例 int max(x,y) int x,y; { int z; z=x>y?x:y; return(z); }②函数返回值 形式: return(表达式); 或 return 表达式; 或 return; 功能:使程序控制从被调用函数返回到调用函数中,同时把返值带给调用函数说明:函数中可有多个 return 语句若无 return 语句,遇}时,自动返回调用函数若函数类型与 return 语句中表达式值的类型不一致,按前者为准,自动转换------函数调用转换void 型函数③函数参数及其传递方式形式参数:定义函数时函数名后面括号中的变量名实际参数:调用函数时函数名后面括号中的表达式说明:实参必须有确定的值形参必须指定类型 11形参与实参类型一致,个数相同若形参与实参类型不一致,自动按形参类型转换———函数调用转换形参在函数被调用前不占内存;函数调用时为形参分配内存;调用结束,内存释放 值传递方式方式:函数调用时,为形参分配单元,并将实参的值复制到形参中;调用结束,形参单元被释放,实参单元仍保留并维持原值特点:形参与实参占用不同的内存单元单向传递 地址传递方式方式:函数调用时,将数据的存储地址作为参数传递给形参特点:形参与实参占用同样的存储单元“双向”传递实参和形参必须是地址常量或变量④函数的嵌套与递归调用嵌套调用:C 规定:函数定义不可嵌套,但可以嵌套调用函数 递归调用: 8、宏定义 不带参数宏定义一般形式: #define 宏名 [宏体]功能:用指定标识符(宏名)代替字符序列(宏体) 12例 #define PI 3.14(用标识符 PI 代替 3.14)带参宏定义#define 宏名(参数表) 宏体例 #define POWER(x) x*x 9、指针(1) 变量与地址,地址与内容的关系(2) &与*运算符&含义: 取变量的地址单目运算符优先级: 2结合性:自右向左 *含义: 取指针所指向变量的内容单目运算符优先级: 2结合性:自右向左注意与乘法运算符区别 (3)指针变量的定义一般形式: [存储类型] 数据类型 *指针名;例 int *p1,*p2; float *q ; static char *name;指针变量的初始化:一般形式:[存储类型] 数据类型 *指针名=初始地址值(4) 指针变量的使用 13 与其他变量的使用相类似,区别是一般变量存的是值,而指针变量存的是地址。 针变量必须先赋值,再使用(5) 指针与数组① int array[10]; int *p; p=&array[0]; p=array;?//或 int *p=&array[0];或 int *p=array; (组名是表示数组首地址的地址常量)②针变量的赋值运算p=&a; p)?(将变量 a 地址p=array; p)?(将数组 array 首地址p=&array[i]; p)?(将数组元素地址p1=p2; p1)?(指针变量 p2 值整型变量?p,也不能把 p 的值?不能把一个整数指针变量与其指向的变量具有相同数据类型 ③指针与数组间的等价关系 对于一维数组:数组名 array 表示数组的首地址,即 array[0]的地址; 数组名 array 是地址常量array+i 是元素 array[i]的地址array[i]==*(array+i)对二维数组 int a[3][4]:a-----二维数组的首地址,即第 0 行的首地址 14a+i-----第 i 行的首地址a[i]==*(a+i)------第 i 行第 0 列的元素地址a[i]+j==*(a+i)+j -----第 i 行第 j 列的元素地址*(a[i]+j)==*(*(a+i)+j)==a[i][j]注意:a+i=&a[i]=a[i]=*(a+i)=&a[i][0]值相等,含义不同a+I==&a[i],表示第 i 行首地址,指向行a[i]==*(a+i)==&a[i][0],表示第 i 行第 0 列元素地址,指向列(6) 指针与函数函数指针:函数在编译时被分配的入口地址,用函数名表示①指向函数的指针变量:定义形式: 数据类型 (*指针变量名)();如 int (*p)();函数指针变量赋值:如 p=max;函数调用形式: c=max(a,b); 等价 c=(*p)(a,b); ②指针作为函数参数 指针作函数参数,采用的是地址传递。 (7)、指针数组 定义:数组中的元素为指针变量定义形式:[存储类型] 数据类型 *数组名[数组长度说明];例 int *p[4];8、指针总结定 义 含义 15int i; 定义整型变量 iint *p; p 为指向整型数据的指针变量int a[n]; 定义含 n 个元素的整型数组 aint *p[n]; n 个指向整型数据的指针变量组成的指针数组 pint (*p)[n]; p 为指向含 n 个元素的一维整型数组的指针变量int f(); f 为返回整型数的函数int *p(); p 为返回指针的函数,该指针指向一个整型数据int (*p)(); p 为指向函数的指针变量,该函数返回整型数int **p; p 为指针变量,它指向一个指向整型数据的指针变量一、 例题(1)单选1、程序的基本单位是 A) 程序行  B) 语句    C) 函数     D) 字符2、下列符号中,不合法的 C 语言标识符是 。A.a3b B. i_f C. _xy D. 3ok3、下列表达中,是 C 语言合法的常量的是 。A.23 B. ‘ab’ C. 03 D. 3+54、程序设计所规定的三种基本控制结构是 A) 输入、处理、输出 B) 树形、网形、环形 C) 顺序、选择、循环 D) 主程序、子程序、函数5、在 C 语言中,合法的字符常量是( )A)'\084' B)'\x43' C)'ab' D)"\0"6、下列标识符合法的是( )。A)long B)_po@int C)3abc D)main 167、设有 int x=11; 则表达式 (x++ * 1/3) 的值是 A) 3 B) 4 C) 11 D) 128、合法的数组定义是( )A)char a[6]="string"; B)int a[5]={0,1,2,3,4,5};C)char s="string"; D)int a[ ]={0,1,2,3,4,5};9、设 x 和 y 均为 int 型变量,则以下语句:x+=y;y=x-y;x-=y;的功能是( )A) 把 x 和 y 按从大到小排列B) 把 x 和 y 按从小到大排列C) 无确定结果D) 交换 x 和 y 中的值10、若 a 为 int 类型,且其值为 3,则执行完表达式 a+=a-=a*a 后,a 的值是( )A) -3 B)9 C) -12 D) 611、在 C 语言中,不正确的 int 类型的常数是A)32768 B)0 C)037 D)0xAF12、下列正确的字符常量是( ) A)‘\105’ B)’*’ C)’\4F’ D)’\A’13、y、z 和 k 都是 int 型变量,则执行表达式:x=(y=4,z=16,k=32) 后,x 的值为( ) A)4 B)16 C)32 D)5214、下列各语句定义了数组,其中哪一个是正确的( )。 A、int a[5],b[2,3]; B、char no(10);C、int x[]; D、int x[5]={1,2,3};15、若变量 a、iI 已正确定义,且 i 已正确赋值,合法的语句是 ( )A) a==1 B) ++i; C) a=a++=5; D) a=int(i); 1716、能正确表示逻辑关系:“a≥=10 或 a≤0”的 C 语言表达式是 A) a>=10 or a<=0 B) a>=0|a<=10 C) a>=10 &&a<=0 D) a>=10‖a<=017、以下程序段 int k=0 while(k=1)k++; while 循环执行的次数是 A) 无限次 B) 有语法错,不能执行 C) 一次也不执行 D) 执行 1 次18、以下叙述正确的是 A) do-while 语句构成的循环不能用其它语句构成的循环来代替。 B) do-while 语句构成的循环只能用 break 语句退出。 C) 用 do-while 语句构成的循环,在 while 后的表达式为非零时结束循环。 D) 用 do-while 语句构成的循环,在 while 后的表达式为零时结束循环。19、在 C 语言程序中( )A、 函数的定义可以嵌套,但函数的调用不可以嵌套B、 函数的定义和函数的调用均不可以嵌套C、 函数的定义不可以嵌套,但函数的调用可以嵌套 D、 函数的定义和函数的调用均可以嵌套 20、下面能正确进行字符串赋值操作的语句是( ).A) char s[5]={“ABCDE”}; B) char s[5]={‘A’、’B’、’C’、’D’、’E’};C) char *s;s=“ABCDEF”; D) char *s; scanf(“%s”,s);21、若有以下定义和语句:( )。 18int w[2][3],(*pw)[3]; pw=w;则对 w 数组元素非法引用是A)*(w[0]+2) B)*(pw+1)[2] C)pw[0][0] D)*(pw[1]+2)22、else 与 if 的配对原则是( )。 A、与最近的 if 配对 B、与离它最近且未配对的 if 配对 C、与未配对且离它最远的 if 配对D、 与离它最近或未配对的 if 配对23、若有定义:int *p[3];,则以下叙述中正确的是( )。A、定义了一个基类型为 int 的指针变量 p,该变量具有三个指针B、定义了一个指针数组 p,该数组含有三个元素,每个元素都是基类型为 int 的指针C、定义了一个名为*p 的整型数组,该数组含有三个 int 类型元素 D、定义了一个可指向一维数组的指针变量 p,所指一维数组应具有三个int 类型元素24、有如下程序段 struct person { char name[10]; int num; float score; }*p; 则变量 p 的空间有( )字节。 A、10 B、16 C、4 D、2 1925、for 语句的引用格式错误的是( )。 A、for( ; ;) B、for(表达式 1;表达式 2;表达式 3;)C、for(;表达式;) D、for(表达式 1,表达式 2;表达式 3;)26、以下叙述正确的是( )。 A、可以把 define 和 if 定义为用户标识符 B、可以把 define 定义为用户标识符,但不能把 if 定义为用户标识符 C、可以把 if 定义为用户标识符,但不能把 define 定义为用户标识符 D、define 和 if 都不能定义为用户标识符27、有以下程序 void f(int n); main() { void f(int n); f(5); } void f(int n) { printf("%d\n",n); } 则以下叙述中不正确的是( )。 A、若只在主函数中对函数 f 进行说明,则只能在主函数中正确调用函数 f B、若在主函数前对函数 f 进行说明,则在主函数和其后的其它函数中都可以正确调用函数 f C、对于以上程序,编译时系统会提示出错信息:提示对对 f 函数重复说明 D、函数 f 无返回值,所以可用 void 将其类型定义为无值型 2028、表达式(!a>b?a:b>c?b:c)等价于下面哪个式子。设 a,b,c 都是 int,且有值。 A、(!a)>b?a:(b>c?b:c) B、!(a>b)?a:(b>c?b:c)B、 ((!a)>b?a:b)>c?b:c D、(!(a>b)?a:b)>c?b:c29、若有说明:int n=2,*p=&n,*q=p;,则以下非法的赋值语句是( )。A、p=q; B、*p=*q; C、n=*q; D、p=n;30、当调用函数时,实参是一个数组名,则向函数传送的是 ( )A) 数组的长度 B) 数组的首地址 C) 数组每一个元素的地址 D) 数组每个元素中的值湖南省计算机二级 C 考试程序设计题目精选 201 1 已知 24 有 8 个正整数因子(即:1,2,3,4,6,8,12,24),而 24 正好被其因子个数 8 整除。求[1,100]之间第 10 个能被其因子数目整除的正整数。 56 #include void main(){ int i,n,j,k=0; clrscr(); for (i=1;i<=100;i++) { n=0; for (j=1;j<=i;j++) if (i%j==0) n++; if (i%n==0) 21 { k++; printf("%5d",i);} if (k==10) {printf("\n%5d",i); break;} } }202 2 倒勾股数是满足公式: 1/A^2+1/B^2=1/C^2 的一组正整数(A,B,C),例如,(156,65,60)是倒勾股数,因为:1/156^2+1/65^2=1/60^2。假定 A>B>C,求 A,B,C 均小于或等于 100 的倒勾股数有多少组? 5 #include #include void main(){ int i,n=0,j,k; for (i=1;i<=100;i++) for (j=i;j<=100;j++) for (k=j;k<=100;k++) if (fabs(1.0/(k*k)+1.0/(j*j)-1.0/(i*i))<1e-10) { n++;printf("%d,%d,%d\n",i,j,k); } printf("%d\n",n); }203 3 已知 A#include void main(){ int i,n=0,j; for (i=666;i<=777;i++) { for (j=2;j<=sqrt(i);j++) if (i%j==0) break; if (j>sqrt(i)) {n++; printf("%5d",i);} } printf("\n%5d",n); 23 }205 2 倒勾股数是满足公式: 1/A^2+1/B^2=1/C^2 的一组正整数(A,B,C),例如,(156,65,60)是倒勾股数,因为:1/156^2+1/65^2=1/60^2。假定 A>B>C,求 A,B,C 之和小于 100 的倒勾股数有多少组? 2 206 3 求方程 X^3-2X-5=0 在区间[1.5,2.5]上的一个实根。 要求:按四舍五入的方式精确到小数点后第二位。 2.09 #include #include void main(){ float x,x0=2.0,f,f0; do { x=x0; f=x*x*x-2*x-5; f0=3*x*x-2; x0=x-f/f0; } while(fabs(x-x0)>=1e-6); printf("%.2f",x); }207 1 求[351,432]之间所有既不能被 3 整除,又不能被 8 整除的正整数的个数。 47 #include void main() 24{ int i,n=0; for (i=351;i<=432;i++) if (i%3!=0 && i%8!=0) {n++; printf("%5d",i);} printf("\n%d",n); }208 2 倒勾股数是满足公式: 1/A^2+1/B^2=1/C^2 的一组正整数(A,B,C),例如,(156,65,60)是倒勾股数,因为:1/156^2+1/65^2=1/60^2。假定 A>B>C,且要求 A,B,C 均小于或等于 100,求满足倒勾股数公式的 A,B,C 之和的最大值是多少? 235 209 3 求方程 X^2-3*X+1=0 在区间(0,1)内的解。要求:按四舍五入的方式精确到小数点后第二位。 0.38 210 1 求[444,666]范围内最大的素数是多少? 661 #include #include void main(){ int i,j,k; for (i=444;i<=666;i++) { k=sqrt(i); for(j=2;j=k) printf("%5d",i); 25 }}211 2 倒勾股数是满足公式:1/A^2+1/B^2=1/C^2 的一组正整数(A,B,C),例如,(156,65,60)是倒勾股数,因为:1/156^2+1/65^2=1/60^2。假定 A>B>C,且要求 A,B,C 均小于或等于 100,求满足倒勾股数公式的各组正整数(A,B,C)中 A的值的和是多少? 300 212 3 已知 Fibonacci 数列:1,1,2,3,5,8,……,它可由下面公式表述: F(1)=1 if n=1 F(2)=1 if n=2 F(n)=F(n-1)+F(n-2) if n>2 试求 F(1)+F(2)+……+F(50)值。 提示: 最好使用递推法求解,因为使用递归调用很可能超出某些语言的递归深度。 32951280098 #include main(){ int i; double f[50]={1,1},s=0; for(i=2;i<50;i++) f[i]=f[i-2]+f[i-1]; for(i=0;i<50;i++) { if(i%2==0) printf("\n"); s=s+f[i]; printf("%15.0f",f[i]); } printf("\n%15.0f",s);} 26213 1 有一个分数序列:2/1,3/2,5/3,8/5,13/8,21/13....(注:该数列从第二项开始,其分子是前一项的分子与分母的和,而其分母是前一项的分子),求出这个序列前 24 项的和。要求:按四舍五入的方式精确到小数点后第二位。 39.13 #include main(){ float s1=2,s2=1,s,t=0,i; t=t+s1/s2; for (i=1;i<=23;i++) { s=s1; s1=s1+s2; s2=s; t=t+s1/s2; } printf("%.2f",t);}214 2 倒勾股数是满足公式: 1/A^2+1/B^2=1/C^2 的一组正整数(A,B,C),例如,(156,65,60)是倒勾股数,因为:1/156^2+1/65^2=1/60^2。假定 A>B>C,且要求 A,B,C 均小于或等于 100,求满足倒勾股数公式的各组正整数(A,B,C)中 C 值的和是多少? 180 215 3 已知 Avoid main(){ int i,n,j,k=0; clrscr(); for (i=100;i<=300;i++) { n=0; for (j=1;j<=i;j++) if (i%j==0) n++; if (i%n==0) { k++; printf("%5d",i);} }printf("\n%5d",k); }217 2 自然数对是指两个自然数的和与差都是平方数,如 8 和 17 的和 8+17=25 与其差 17-8=9 都是平方数,则称 8 和 17 是自然数对(8,17)。假定(A,B)与(B,A)是同一个自然数对且假定 A>=B,求所有小于或等于 100(即:A<=100,B<=100)的自然数对中 B 之和。 1160 #include "stdio.h"#include "math.h"void main(){ int a,b,n=0;float s1,s2; for(b=1;b<=100;b++) for (a=b+1;a<=100;a++) { s1=sqrt(a+b);s2=sqrt(a-b); if ( s1==(int)s1 && s2==(int)s2 ) 28 { n=n+b;printf("%d,%d\t\t",a,b);} } printf("\n%d",n);} 218 3 已知 Fibonacci 数列:1,1,2,3,5,8,……,它可由下面公式表述: F(1)=1 if n=1 F(2)=1 if n=2 F(n)=F(n-1)+F(n-2) if n>2 试求 F(2)+F(4)+F(6)+……+F(50)值。 提示: 最好使用递推法求解,因为使用递归调用很可能超出某些语言的递归深度。 20365011073 219 1 求[1,5000]之间能同时被 3 和 7 整除的数的个数。 238 #include "stdio.h"void main(){ int i,j=0; for(i=1;i<=5000;i++) if (i%3==0 && i%7==0) { j++;printf("%5d",i);} printf("\n%d",j);}220 2 水仙花数是一个三位正整数,它等于它的各位数字的立方之和. 例如:153=1^3+5^3+3^3,所以 153 是水仙花数. 试求有多少个水仙花数? 4 #include "stdio.h"void main(){ int i,a,b,c,n=0; for(i=100;i<=999;i++) 29 { a=i/100; b=(i/10)%10; c=i%10; if (i==a*a*a+b*b*b+c*c*c) { n++;printf("%5d",i);} } printf("\n%d",n); }221 3 已知 Fibonacci 数列:1,1,2,3,5,8,……,它可由下面公式表述: F(1)=1 if n=1 F(2)=1 if n=2 F(n)=F(n-1)+F(n-2) if n>2 试求 F(45)值。 提示: 最好使用递推法求解,因为使用递归调用很可能超出某些语言的递归深度。 1134903170 2007222 1 设某国今年的国民生产总值为 45600 亿元,若今后每年以 8%的增长率增长,计算多少年后能实现国民生产总值翻两番? 19 void main( ){ long int i=45600; int j=0; while (i<=4*45600) { i=i+i*0.08;j++;} printf("%d",j);} 30223 2 勾股弦数是满足公式: A^2+B^2=C^2 (假定 A#include void main(){ int i,n=0,j,k; for (i=1;i<=25;i++) for (j=i;j<=25;j++) for (k=j;k<=100;k++) if (i*i+j*j==k*k && i+j+k<100) { n++;printf("%d,%d,%d\n",i,j,k); } printf("%d\n",n);}224 3 已知 Fibonacci 数列:1,1,2,3,5,8,……,它可由下面公式表述: F(1)=1 if n=1 F(2)=1 if n=2 F(n)=F(n-1)+F(n-2) if n>2 试求 F(1)+F(3)+F(5)+……+F(49)值。 提示: 最好使用递推法求解,因为使用递归调用很可能超出某些语言的递归深度。 12586269025 225 1 求[1,5000]之间能被 3 或 7 整除的数的个数。 2142 226 2 若某整数平方等于某两个正整数平方之和的正整数称为弦数。例如:由于3^2+4^2=5^2,则 5 为弦数,求[100,200]之间弦数的数目 4 31227 3 设有 6 个十进制数字 a,b,c,d,f,e,求满足 abcdf×e=fdcba 条件的五位数abcdf(a≠0,e≠0,e≠1)的个数。 2 #include void main(){ long int a,b,c,d,e,f,n=0; for (e=2;e<=9;e++) for(a=1;a<=9;a++) for(b=0;b<=9;b++) for(c=0;c<=9;c++) for(d=0;d<=9;d++) for(f=0;f<=9;f++) if ((a*10000+b*1000+c*100+d*10+f)*e==f*10000+d*1000+c*100+b*10+a) {printf("%ld,%ld,%ld,%ld,%ld,%ld\n",a,b,c,d,f,e); n++; } printf("\n%ld",n);} 228 1 已知 24 有 8 个因子(即:1,2,3,4,6,8,12,24),而 24 正好被 8 整除。求[1,100]之间第二大能被其因子数目整除的数。 88 229 2 勾股弦数是满足公式: A^2+B^2=C^2 (假定 A#include void main() 32{ int i,j,k,i1=0,j1=0,k1=0; for (i=1;i<=100;i++) for (j=i;j<=100;j++) for (k=j;k<=100;k++) if (i*i+j*j==k*k ) { printf("%d,%d,%d,%d\n",i,j,k,i+j+k); if (i+j+k>i1+j1+k1) {i1=i;j1=j;k1=k;} } printf("\n%d\n",i1+j1+k1);}230 3 设某四位数的各位数字的平方和等于 100,问共有多少个这种四位数? 49 #include #include void main(){ int i,n=0,a,b,c,d; for (i=1000;i<=9999;i++) { a=i/1000; b=(i%1000)/100; c=((i%1000)/10)%10; d=i%10; if (a*a+b*b+c*c+d*d==100 ) { n++;printf("%d,%d,%d,%d\t\t",a,b,c,d); } 33 } printf("\n%d",n);231 1 若某整数平方等于某两个正整数平方之和的正整数称为弦数。例如:由于3^2+4^2=5^2,则 5 为弦数,求[100,200]之间最大的弦数。 130 2011232 2 求方程 8x-5y=3,在|x|<=150, |y|<=200 内的整数解。试问这样的整数解中|x|+|y|的最大值是多少? 323 2011233 3 若两素数之差为 2 ,则称两素数为双胞胎数,问[31,600]之间有多少对双胞胎数。 21 2011234 1 若某整数 N 的所有因子之和等于 N 的倍数,则 N 称为多因子完备数,如数 28,其因子之和 1+2+4+7+14+28=56=2*28,28 是多因子完备数。求[1,500]之间有多少个多因子完备数。 5 2012235 2 求方程 8x-5y=3,在|x|<=150, |y|<=200 内的整数解。试问这样的整数解中x+y 的最大值是多少? 314 2012236 3 一个素数(设为 p)依次从最高位去掉一位,二位,三位,……,若得到的各数仍都是素数(注:1 不是素数),且数 p 的各位数字均不为零,则称该数 p 为逆向超 级素数。例如,617,17,7 都是素数,因此 617 是逆向超级素数,尽管503,03,3 都是素数,但它不是逆向超级素数,因为它包含有零。试求 [100,999]之内的所有逆向超级素数的个数。 39 2012237 1 若某整数 N 的所有因子之和等于 N 的倍数,则 N 称为多因子完备数,如数 28,其因子之和 1+2+4+7+14+28=56=2*28,28 是多因子完备数。求[1,200]之间有多少个多因子完备数。 4 2013 34238 2 四位数的各位数字的平方和等于 100,问其中最大的一个是多少? 9331 2013239 3 设有十进制数字 a,b,c,d 和 e,它们满足下列式子:abcd*e=bcde (a 不等于0, e 不等于 0 或 1),求满足上述条件的最大四位数 abcd 的值。 1999 2013240 1 设某国今年的国民生产总值为 45600 亿元,若今后每年以 9%的增长率增长,计算多少年后能实现国民生产总值翻一番? 9 2014241 2 已知:f(1)=1,f(2)=1/(1+f(1)),f(3)=1/(1+f(2)),…,f(n)=1/(1+f(n-1)),求 f(50)。(按四舍五入的方式精确到小数点后第三位)。 0.618 2014242 3 设有十进制数字 a,b,c,d 和 e,它们满足下列式子:abcd*e=bcde (a 不等于0, e 不等于 0 或 1),求满足上述条件的四位数 abcd 的个数。 2 2014243 1 已知 24 有 8 个正整数因子(即:1,2,3,4,6,8,12,24),而 24 正好被其因子个数 8 整除。求[100,300]之间能被其因子数目整除的数中最大的数。 296 2015244 2 梅森尼数是指能使 2^n-1 为素数的数 n,求[1,21]范围内有多少个梅森尼数? 7 2015245 3 设有十进制数字 a,b,c,d 和 e,它们满足下列式子:abcd*e=bcde (a 不等于0, e 不等于 0 或 1),求满足上述条件的所有四位数 abcd 的和。 3665 2015246 1 有一个三位数满足下列条件: (1)此三位数的三位数字各不相同; (2)此三位数等于它的各位数字的立方和。试求这种三位数共有多少个? 4 2016247 2 某些分子和分母都是二位正整数的真分数具有下列特点:如果将该分数的分子个位数和分母十位数同时去掉,所得结果正好等于原分数约分后的结果,例如16/64=1/4,求满足上述条件的所有真分数个数。 48 2016248 3 若两个自然连续数乘积减 1 后是素数,则称此两个自然连续数为友数对,该素数称为友素数,例:2*3-1=5,因此 2 与 3 是友数对,5 是友素数,求[40,119]之间友素数对的数目。 30 2016 35249 1 找满足以下条件: X^2+Y^2+Z^2=41^2 且 X+Y+Z 之值最大的三个正整数X,Y,Z, 求 X+Y+Z 之值. 71 2017250 2 有一个三位数满足下列条件: (1)此三位数的三位数字各不相同; (2)此三位数等于它的各位数字的立方和。试求所有这样的三位数之和。 1301 2017251 3 若某整数 N 的所有因子之和等于 N 的倍数,则 N 称为多因子完备数,如数 28,其因子之和 1+2+4+7+14+28=56=2*28,28 是多因子完备数。求[1,200]之间有多少个多因子完备数。 4 2017252 1 求[2,500]之间的所有素数的和。 21536 2018253 2 设有 6 个十进制数字 a,b,c,d,f,e,求满足 abcdf×e=fdcba 条件的五位数abcdf 中(a≠0,e≠0,e≠1)最大的一个。 21978 2018254 3 若某整数 N 的所有因子之和等于 N 的倍数,则 N 称为多因子完备数,如数 28,其因子之和 1+2+4+7+14+28=56=2*28,28 是多因子完备数。求[1,200]之间有多少个多因子完备数。 4 2018255 1 求[3-1000]之间最大的五个素数之和。 4919 2019256 2 设某四位数的千位数字和十位数字的和等于百位数字和个位数字的积,例如,对于四位数:9512,9+1=5*2,试问这样的四位数有多少个? 207 2019257 3 已知: f(0)=f(1)=1 f(2)=0 f(n)=f(n-1)-2f(n-2)+f(n-3), (n>2) 求 f(0)到 f(50)中的最大值 598325 2019258 1 有一个分数序列:2/1,3/2,5/3,8/5,13/8,21/13....(即:该数列从第二项开始,其分子是前一项的分子与分母之和,而其分母是 前一项的分子),求出这个序列前 56 项的和。要求:按四舍五入的方式精确到小数点后第三位。 90.919 2020259 2 勾股弦数是满足公式: A^2+B^2=C^2 (假定 A2) 求 f(0)到 f(50)中的最小值 -288959 2020261 1 已知 24 有 8 个因子(即:1,2,3,4,6,8,12,24),而 24 正好被 8 整除。求[100,300]之间所有能被其因子数目整除的数之和。 3769 2021262 2 勾股弦数是满足公式: A^2+B^2=C^2 (假定 A2) 称为 e 数列,每一个 e(n),(n=1,2,…)称为 e 数。 求[1,30000]之内最大的 e数。 16687 2022267 1 水仙花数是一个三位正整数,它等于它的各位数字的立方之和. 例如:153=1^3+5^3+3^3,所以 153 是水仙花数. 试求所有的水仙花数之积。 8547940170 2023268 2 求正整数[1,500]中,能同时满足用 3 除余 2,用 5 除余 3,用 7 除余 2 的所有正整数的和。 1165 2023269 3 数列 e(1)=e(2)=1 e(n)=(n-1)e(n-1)+(n-2)e(n-2), (n>2) 称为 e 数列,每一个 e(n),(n=1,2,…)称为 e 数。 求[1,30000]之内 e 数的个数。 37 8 2023270 1 把一张一元钞票,换成一分、二分和五分硬币,每种至少 8 枚,问有多少种方案? 80 2024271 2 若一个四位正整数是另一个正整数的平方,且各位数字的和是一个平方数,则称该 四位正整数是“四位双平方数”。例如: 由于 7396=86^2,且7+3+9+6=25=5^2,则称 7396 是“四位双平方数”。求所有“四位双平方数”的个数。 17 2024272 3 斐波那契数列的前二项是 1,1,其后每一项都是前面两项之和,求:10000000 以内最大的斐波那契数? 9227465 2024273 1 求[200,300]之间最小的一个有奇数个不同因子的整数。 225 2025274 2 某些分数的分子和分母都是二位正整数的真分数具有下列特点:如果将该分数的分子的两位数字相加作分子,而将该分数的分母的两位数字相加作分母,得到的新分 子跟原分子相等。例如,63/84=(6+3)/(8+4)。试求具有这样特点的真分子的个数。 100 2025275 3 斐波那契数列的前二项是 1,1,以后每一项都是前面两项之和。求 10000000以内有多少个斐波那契数? 35 2025276 1 一个数出现在该数的平方数的右边,称这个数为“同构数”。例如,5 出现在平方数 25 的右边,25 出现在平方数 625 的右边,则 5、25 都是“同构数”。找出 1 到 1000 之间的所有“同构数”的个数。 164 2026277 2 若一个四位正整数是另一个正整数的平方,且各位数字的和是一个平方数,则称该四位正整数是“四位双平方数”。例如: 由于 7396=86^2,且7+3+9+6=25=5^2,则称 7396 是“四位双平方数”。求所有“四位双平方数”中最大的一个“四位双平方数”。 9025 2026278 3 斐波那契数列的前二项是 1,1,以后每一项都是前面两项之和。求前 30 个 38斐波那契数之和。 2178308 2026279 1 求[300,400]之间最小的一个有奇数个不同因子的整数。 324 2027280 2 在[200,900]范围内同时满足以下两个条件的十进制数: ⑴其个位数字与十位数字之和除以 10 所得的余数是百位数字;⑵该数是素数;问有多少个这样的数? 14 2027281 3 某些分数的分子和分母都是二位正整数的真分数具有下列特点:如果将该分数的分子的两位数字相加作分子,而将该分数的分母的两位数字相加作分母,得到的新分 子跟原分子相等。例如,63/84=(6+3)/(8+4)。试求所有具有这种特点的真分子(非约简真分数)的分子与分母之和的和。 10134 2027282 1 求[200,300]之间第二大有奇数个不同因子的整数。 256 2028283 2 所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身,例如:153=1^3+3^3+5^3,故 153 是水仙花数,求[100,999]之间水仙花数的个数。 4 2028284 3 回文数是指正读和反读都一样的正整数。例如 3773 是回文数。求出[1000,9999]以内的所有回文数的个数。 90 2028285 1 一个 14*14 方阵 A(i,j),其每个元素的值为该元素下标的立方和,求出该矩阵所有元素的累加和(注:i,j 从 1 到 14). 308700 2029286 2 某些分数的分子和分母都是二位正整数的真分数具有下列特点:如果将该分数的分子的两位数字相加作分子,而将该分数的分母的两位数字相加作分母,得到的新分 子跟原分子相等。例如,63/84=(6+3)/(8+4)。试求所有具有这样特点的真分子(非约简真分数)的分子之和。 3378 2029287 3 所谓“水仙花数”是指一个三位数,其各位数字三方和等于该数本身,例如:153=1^3+3^3+5^3,故 153 是水仙花数,求[100,999]之间所有水仙花数之和。 1301 2029288 1 求[100,200]之间最大的有奇数个不同因子的整数。 196 2030 39289 2 若(x,y,z)满足方程:x^2+y^2+z^2=55^2(注:要求 x > y > z),则(x,y,z)称为方程的一个解。试求方程的整数解(包括负整数解)的个数。 62 2030290 3 所谓“同构数”是指这样一个数,它出现在它的平方数的右侧,例如 5 的平方是 25,25 的平方是 625,故 5 和 25 都是同构数,求[1,1000]之间有多少个同构数。 6 2030291 1 一个数如果恰好等于它的所有真因子之和,这个数就称为“完数”。例如,6 的真因子为 1,2,3,而 6=1+2+3,因此,6 是“完数”。求 1000 以内的所有完数之和。 530 2031292 2 A,B,C 三个正整数,当满足 1/A^2+1/B^2=1/C^2 关系时,称为倒勾股数。求130 #include main() { char a[9]="clanguage",t; 44int i, j, k; k=strlen(a); for(i=0; i #include main() { char a[9]="clanguage",t; int i, j, k; k=strlen(a); for(i=0; ia[j]) /*设 j 的值,故用 j=i+2, { t=a[i]; a[i]=a[j]; a[j]=t; } /*小的话放前面故(a[i]>a[j])}puts(a);printf("\n"); } 456、下程序中的函数 reverse 的功能是将 a 所指数组中的内容进行逆置。请改错。 void reverse(int a[],int n) {int i,t; for(i=0;i main() { int i, j; for(i=0;i<=10; i++) { j=i*10+6; if(j%3==0) break; /*删除 break 即可!结果为 36,66,96!printf("%d",j); } } 468、以下是删除一个字符的通用函数,函数名为 del_char,请改错。 void del_char( char *p,char x) { int i; char *q=0; for(;*p='\0';p++) if(*p==x) {*q=*p;q++;} q=’\0’; } 9、 以下程序的功能是:从键盘上输入若干学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入。请改错。main(){ float x,amax,amin; scanf(“%d”,&x); amax=x; amin=x; while( x<=0 ) { if ( x>amax ) amax=x; else if (x>amin)amin=x ; scanf(“%f”,&x); printf(“\namax=%f\namin=%f\n”,amax,amin);} main(){ float x,amax,amin; scanf("%f",&x); amax=x; amin=x; 47 while( x>=0 ) /*负数结束 { if ( x>=amax ) amax=x; else if(x<=amin) amin=x ; scanf("%f",&x); } printf("\n amax=%f \n amin=%f \n",amax,amin);}10、函数 YangHui 的功能是把杨辉三角形的数据赋给二维数组的下半三角,形式如下11 11 2 11 3 3 11 4 6 4 1┆其构成规律是:(1)第 0 列元素和主对角线元素均为 1(2)其余元素为其左上方和正上方元素之和(3)数据的个数每行递增 1请改错。#define N 6void YangHui(int x[N][N]){ int i,j;for(i=1; ia[j]) k=j; if ( 【a[k]

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值