C语言程序设计大赛题目

合集下载

C语言程序设计试题及答案解析

C语言程序设计试题及答案解析

C语言程序设计试题第1、2、3章 概述、类型、表达式一、选择题1、 一个C程序由若干个C函数组成,各个函数在文件中的位置顺序为:( )A、 任意B、 第一个函数必须是主函数,其他函数任意C、 必须完全按照执行的顺序排列D、 其他函数可以任意,主函数必须在最后2、 下列四个叙述中,正确的是:( )A、 C程序中的所有字母都必须小写B、 C程序中的关键字必须小写,其他标示符不区分大小写C、 C程序中的所有字母都不区分大小写D、 C语言中的所有关键字必须小写3、 下列四个叙述中,错误的是:( )A、 一个C源程序必须有且只能有一个主函数B、 一个C源程序可以有多个函数C、 在C源程序中注释说明必须位于语句之后D、 C源程序的基本结构是函数4、 下面不是C语言合法标识符的是:( )A、abcB、5nC、_4mD、x35、 以下叙述不正确的是:( )A. 分号是C语句的必要组成部分B. C程序的注释可以写在语句的后面C. 函数是C程序的基本单位D. 主函数的名字不一定非用main来表示6、 C语言中允许的基本数据类型包括:( )A. 整型、实型、逻辑型B. 整型、实型、字符型C. 整型、字符型、逻辑型D. 整型、实型、逻辑型、字符型7、 C语言中能用八进制表示的数据类型为:( )A、字符型、整型B、整形、实型C、字符型、实型、双精度型D、字符型、整型、实型、双精度型8、 下列属于C语言合法的字符常数是:( )A、’\97’B、”A”C、’\t’D、”\0”9、 在C语言(VC环境)中,5种基本数据类型的存储空间长度的排列顺序为:( )A、char<int<=long int <=float<doubleB、char=int<long int <=float<doubleC、char<int<long int=float=doubleD、char=int=<long int <=float<double10、 在C语言中(VC环境),一定是长整型常数的是:( )A、0LB、4962710C、0412765D、0xa34b7fe11、 若有以下定义语句char c1=’b’, c2=’e’;printf(“%d,%c\n”,c2-c1,c2-‘a’+’A’);则输出结果是:( )A、2,MB、3,EC、2,ED、输出项与相应的格式控制不一致,输出结果不确定12、 以下合法的赋值语句是:( )A、x=y=100B、d--;C、x + yD、c = int(a+b);13、 设变量t为int型,下列选项中不正确的赋值语句是:( )A、++t;B、n1=(n2=(n3=0));C、k=i==m;D、a=b+c=1;14、 在以下一组运算符中,优先级最高的是:( )A、<=B、==C、%D、&&15、 下列能正确表示a≥10或a≤0的关系表达式是:( )A、a>=10 or a<=0B、a<=10 || a>=0C、a>=10 || a<=0D、a>=10 && a<=016、 下列只有当整数x为奇数时,其值为“真”的表达式是:( )A、x%2==0B、!(x%2==0)C、(x-x/2*2)==0D、! (x%2)17、 设a为整型变量,不能正确表达数学关系10<a<15的C语言表达式是:( )A、1 0< a < 15B、!(a<=10 || a>=15)C、a>10 && a<15D、!(a<=10) && !(a>=15)18、 已知x=43, ch=’A’,y=0;则表达式(x>=y&&ch<’B’&&!y)的值是:( )A、0B、语法错C、1D、“假”19、 表达式17%4 /8的值为:( )A、0B、1C、2D、320、 语句printf(“%d”,(a=2)&&(b= -2));的输出结果是:( )A、无输出B、结果不确定C、-1D、121、 一个可执行的C程序的开始执行点是:( )A. 程序中的第一个语句B. 包含文件中的第一个函数C. 名为main的函数D. 程序中的第一个函数22、 组成C语句的一个必不可少的符号是:( )A. 逗号B. 引号C. 冒号D. 分号23、 若将int、long、float等类型的数据进行混合运算,其结果的数据类型是:( )A. intB. longC. floatD. double24、 下述是C语言中有关变量定义的几个说法,正确的是:( )A. 变量可以不定义直接使用B. 一个说明语句只能定义一个变量C. 几个不同类型的变量可在同一语句中定义D. 变量可以在定义时进行初绐化25、 与x * = y + z等价的赋值表达式是:( )A. x = y + zB. x = x * y + zC. x = x * (y + z)D. x = x + y * z26、 当代电子计算机能够自动地处理指定的问题是因为:( )A.计算机是电动的B.有解决该问题的计算机程序C.事先存储了解决该问题的程序D.以上都不是27、 以下叙述中最准确的是:( )A.计算机程序是处理某一问题所有指令的集合B.计算机程序是处理某一问题所用到的所有数据的集合C.计算机程序是处理某一问题的所有指令及其数据的集合D.计算机程序是处理某一问题的所有指令及其数据的有序集合28、 关于计算机程序设计,以下描述最准确的是:( )A.程序设计就是用语言来编写程序B.程序设计就是用计算机语言来编写程序C.程序设计就是用计算机程序设计语言来编写程序D.程序设计就是用计算机能识别的语言来编写程序29、 目前编写计算机程序一般采用的是:( )A.机器语言 B.汇编语言 C.高级语言 D.英语30、 设计一个计算机程序最基本的工作是:( )A.制定正确的算法 B.选择合理的数据结构C.制定正确的算法和选择合理的数据结构 D.以上都不是31、 算法具有五个特性,以下选项中不属于算法特性的是:( )A.有穷性 B.简洁性 C.可行性 D.确定性32、 下述哪一个不是结构化程序基本结构:( )A.顺序 B.选择 C.循环 D.嵌套33、 C语言是一种:( )A.机器语言 B.汇编语言 C.高级语言 D.以上都不是34、 C语言源程序的扩展名为:( )A..exe B..c C..obj D..cpp35、 C程序编译后最终产生(即计算机执行)的文件的扩展名为()A..exe B..c C..obj D..cpp36、 下列各项中,不是C语言的特点是:( )A.语言简洁、紧凑,使用方便B.程序执行效率高,可移植性好C.能实现汇编语言的大多数功能D.有较强的网络操作功能37、 构成C语言源程序的基本单位是:( ) A.子程序 B.过程 C.文本 D.函数38、 下列叙述正确的是:( )A.C语言源程序可以直接在DOS环境中运行B.编译C语言源程序得到的目标文件可以直接在DOS环境中运行C.C语言源程序经过编译、连接得到的可执行程序可以直接在DOS环境中运行D.C语言源程序可以直接在VC++环境中运行39、 某C程序由一个主函数main()和一个自定义函数max()组成,则该程序:( )A.写在前面的函数先开始执行B.总是从main()函数开始执行C.总是从max()函数开始执行D.写在后面的函数先开始执行40、 以下叙述不正确的是:( )A.分号是C语句的必要组成部分B.C程序的注释可以写在语句的后面C.函数是C程序的基本单位D.主函数的名字不一定用mian表示41、 以下为C语句的是:( )A.a=8 B.a++; C.if(a>8) D.#include <stdio.h>以下不是C语句的是:( )A.a=8; B.a++; C.if(a>8); D.for(i=1;i<5;i++)42、 以下所列语句中,合法的语句是:( )A.a=1,b=2 B.++a; C.a=a+1=5 D.y=int(a);43、 C程序中的复合语句指的是:( )A.并列的多个C语句 B.写在同一行中的多个C 语句C.用一对大括号对括的多个C语句 D.就是函数体中的语句44、 当一个很长的C语句(中间无字符串)在一行写不下(超出屏幕的宽度)时,应该:( )A.由系统自动换行 B.立即按回车键换行C.在任意一个空格处按回车键换行D.输入一个分号后并按回车键换行换行45、 在x值处于-2~2,4~8时值为“真”,否则为“假”的表达式是:( )。

C语言大赛题目

C语言大赛题目

C语言大赛题目第一道题回文时间限制:1000MS内存限制:65536KB题目简介“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。

请写一个程序判断读入的字符串是否是“回文”。

标准输入输入包含多个测试实例,输入数据的第一行是一个正整数n,表示测试实例的个数,后面紧跟着是n个字符串。

标准输出如果一个字符串是回文串,则输出"yes",否则输出"no".范例输入4levelabcdenoonhaha范例输出yesnoyesno第二道题阶乘的精确值时间限制:1000MS内存限制:65000KB题目简介输入不超过1000的正整数n,输出n!=1×2×3×……×n的精确结果。

标准输入标准输出范例输入30范例输出265252859812191058636308480000000第三道题6174问题时间限制:1000MS内存限制:65000KB题目简介假设你有一个各位数字互不相同的四位数,把所有数字从大到小排序后得到a,从小到大排序后得到b,然后用a-b替换原来这个数,并继续操作。

例如,从1234出发,一次可以得到4321-1234=3087,8730-378=8352,,8352-2358-6174。

有趣的是,7641-1467=6174,回到了他自己。

输入一个n位数,输出操作数列,直到出现循环(即新得到的数曾经得到过)。

输入保证在循环之前最多只会产生1000个整数。

标准输入输入一个四位数的整数。

标准输出输出操作数列,每两个数字间用“->”隔开,“->”与数字间有个空格,最后一个数字输出时后面不能带有空格。

范例输入12348913范例输出1234 -> 3087 -> 8352 -> 6174 -> 61748913 -> 8442 -> 5994 -> 5355 -> 1998 -> 8082 -> 8532 -> 6174 -> 6174 第四道题Text Reverse时间限制:1000MS内存限制:65000KB题目简介KMY写单词的时候喜欢反过来写。

C语言程序设计大赛题目和答案

C语言程序设计大赛题目和答案

C语言程序设计大赛题目和答案在这篇文章中,我们将介绍一些C语言程序设计大赛的题目和对应的答案。

希望通过这些题目和答案的展示,能够对大家在C语言程序设计方面的知识有所帮助。

题目一:计算圆的周长和面积编写一个C程序,计算给定半径的圆的周长和面积,并输出结果。

```c#include <stdio.h>int main() {double radius, perimeter, area;printf("请输入圆的半径:");scanf("%lf", &radius);perimeter = 2 * 3.14159 * radius;area = 3.14159 * radius * radius;printf("圆的周长为:%.2lf\n", perimeter);printf("圆的面积为:%.2lf\n", area);return 0;}```题目二:查找数组中的最大值编写一个C程序,从给定的整型数组中查找并输出最大的元素。

```c#include <stdio.h>#define MAX_SIZE 100int main() {int array[MAX_SIZE], size, i;int max;printf("请输入数组的大小:");scanf("%d", &size);printf("请输入数组的元素:");for(i = 0; i < size; i++) {scanf("%d", &array[i]);}max = array[0];for(i = 1; i < size; i++) {if(array[i] > max) {max = array[i];}printf("数组中的最大值为:%d\n", max);return 0;}```题目三:判断素数编写一个C程序,判断给定的整数是否为素数。

C语言程序设计竞赛题及其答案

C语言程序设计竞赛题及其答案

C语言程序设计竞赛题及其答案数学与统计学院第三届计算机程序设计竞赛题竞赛需知:1、答案必须写在答题纸上。

2、程序采用C/JAVA/VB/VFP语言实现均可。

3、考虑到各种因素,程序的键盘输入和结果输出可以用伪代码或者自然语言表示。

但是必须说明输入变量和输出变量。

4、题目最好能用完整、正确的语言程序来解决问题,如确实无法编写完整语言程序的,可以写出程序主要框架和流程,必要时可以用伪代码或者自然语言描述算法(程序)。

一、玫瑰花数(20分)如果一个四位数等于它的每一位数的4次方之和,则称为玫瑰花数。

例如:++1634+=,4^44^34^64^1编程输出所有的玫瑰花数。

#includevoid main(){int i,j,k,l,m;for(i=999;i<=9999;i++){j=i/1000;k=i%10;l=i/100-10*j;m=i/10-100*j-10*l;if(i==j*j*j*j+k*k*k*k+l*l*l*l+m*m*m*m) printf("%d\n",i);}}二、菱形图案(20分)对给定的奇数n,编程打印菱形图案。

输入样例:7输出样例:*************************#include#includevoid main(){int i,j,k;int n;scanf("%d",&n);for(i=0;i<n;i++)< p="">{for(j=0;j<="" p="">printf("");for(k=0;k<n-2*j;k++)< p="">printf("*");printf("\n");}}三、钻石奖励(20分)海盗们决定用“投环套物”的方式来奖励最近一次行动中贡献最大的人。

本科c语言程序设计考试试题及答案

本科c语言程序设计考试试题及答案

本科c语言程序设计考试试题及答案**本科C语言程序设计考试试题及答案**一、单项选择题(每题2分,共20分)1. C语言中,以下哪个关键字用于声明函数?A. intB. returnC. voidD. function答案:C2. 在C语言中,以下哪个是正确的字符串声明?A. char str[10] = "Hello";B. char str = "Hello";C. char str[] = "Hello";D. char str[10] = 'Hello';答案:C3. 下列哪个选项是C语言中的合法整型常量?A. 012B. 0x1AC. 0b1010D. 0.1答案:B4. C语言中,以下哪个运算符用于逻辑与?A. &&B. ||C. !D. |答案:A5. C语言中,以下哪个函数用于计算并返回字符串的长度?A. strlen()B. strcpy()C. strcat()D. strcmp()答案:A6. 在C语言中,以下哪个关键字用于定义一个结构体?A. structB. unionC. enumD. typedef答案:A7. C语言中,以下哪个是正确的数组声明?A. int array[];B. int array[10] = {0};C. int array = 10;D. int array = {0};答案:B8. C语言中,以下哪个是正确的指针声明?A. int *ptr;B. int ptr[];C. int *ptr = 10;D. int ptr = 10;答案:A9. C语言中,以下哪个函数用于动态分配内存?A. malloc()B. calloc()C. realloc()D. free()答案:A10. C语言中,以下哪个是正确的文件操作函数?A. fopen()B. fclose()C. fgetc()D. All of the above答案:D二、填空题(每题3分,共15分)1. C语言中,用于声明一个整型变量的关键字是________。

蓝桥杯第八届c语言试题及答案

蓝桥杯第八届c语言试题及答案

蓝桥杯第八届c语言试题及答案蓝桥杯第八届C语言试题及答案1. 题目一:字符串反转要求:编写一个函数,实现字符串的反转。

```cvoid reverseString(char* str) {int i = 0, j = strlen(str) - 1;while (i < j) {char temp = str[i];str[i] = str[j];str[j] = temp;i++;j--;}}```答案:上述代码定义了一个名为`reverseString`的函数,它接受一个字符数组`str`作为参数。

通过交换数组两端的字符,实现了字符串的反转。

2. 题目二:寻找最大数要求:给定一个整数数组,找出数组中的最大数。

```cint findMax(int arr[], int size) {int max = arr[0];for (int i = 1; i < size; i++) {if (arr[i] > max) {max = arr[i];}}return max;}```答案:函数`findMax`接受一个整数数组`arr`和数组的大小`size`作为参数。

它初始化最大数为数组的第一个元素,然后遍历数组,如果发现更大的数,则更新最大数。

最后返回找到的最大数。

3. 题目三:计算阶乘要求:编写一个函数,计算一个整数的阶乘。

```clong long factorial(int n) {if (n == 0) return 1;long long result = 1;for (int i = 1; i <= n; i++) {result *= i;}return result;}```答案:函数`factorial`接受一个整数`n`作为参数。

如果`n`为0,直接返回1,因为0的阶乘定义为1。

否则,初始化结果为1,并通过循环计算从1到`n`的乘积,最后返回计算出的阶乘值。

C语言程序设计试题及答案

《C语言程序设计》(卷)考核班级学生数印数考核方式闭卷考核时间120 分钟(本试卷包括第一卷和第二卷,答卷时间总共120分钟)第一卷第一部分:基础知识(20项,共40分)1.一个C语言程序是由()组成的。

A.主程序B.子程序C.函数D.过程2.转换说明符%x的输出形式是()。

A.十进制B.八进制C.十六进制D.二进制3.若a、b均为int型变量,且a=100,则关于循环语句for(b=100;a!=b;++a,++b) printf ( “------------“) ;的正确说法是()。

A.循环体只执行一次B.死循环C.循环体一次也不执行D.输出-----------4.若x、y、z均为int 型变量,则执行下列语句后的z值为()。

x=1; y=2; z=3; z=(x>y)?z :y ; z = (z<y)?z:x;A.1 B.4 C.2 D.35.下面标识符中,合法的用户标识符为()。

A.P#Ad B.12a C.char D._int6.‘A’+ 3 的结果是()。

A.’A’B.’D’的ASCⅡ码C.65 D.37.语句char str[20];说明str是一个字符串,最多能表示()。

A.20个字符B.19个字符C.18个字符D.21个字符8.将int 型变量n转换成float型变量的方法是()。

A.float n B.(float)n C.float(n) D.21个字符9.以下不正确的描述是()。

A.使用while和do-while循环时,循环变量初始化的操作应在循环语句之前完成B.while循环是先判断表达式后执行循环体语句C.do-while和for循环均是先执行循环体语句,后判断表达式D.for、while、do-while循环中的循环体均可以由空语句构成10.在循环中使用break 语句的功能是()。

A.使程序的执行跳出break所在的那一重循环B.使程序执行结束C.跳出包含此break语句的所有循环D.终止本次循环,继续下次循环11.下面是一个初始化指针的语句:int *px = &a;其中指针变量的名字应该是()。

c程序设计考试题目及答案

c程序设计考试题目及答案一、选择题(每题2分,共20分)1. C语言中,以下哪个关键字用于定义函数?A. structB. intC. voidD. return答案:C2. 在C语言中,哪个运算符用于计算两个数的和?A. +B. -C. *D. /答案:A3. 若有定义`int a = 5;`,则执行`a += 3;`后,变量a的值是多少?A. 3B. 5C. 8D. 无法确定答案:C4. 下列哪个选项是C语言中的合法标识符?A. 2variableB. variable2C. $variableD. variable!答案:B5. 在C语言中,以下哪个选项是正确的字符串字面量?A. "Hello, World"B. 'Hello, World'C. "Hello, World'D. 'Hello, World'答案:A6. C语言中,以下哪个选项是正确的二维数组声明?A. int array[3][];B. int array[][3];C. int array[3][3];D. int array[][];答案:C7. 在C语言中,以下哪个选项是正确的条件语句?A. if (x > y)B. if x > yC. if (x > y) elseD. if (x > y) else if答案:A8. 在C语言中,以下哪个选项是正确的循环语句?A. for (int i = 0; i < 10; i++)B. for i = 0; i < 10; i++C. for (int i = 0; i < 10;)D. for (i = 0; i < 10; i++)答案:A9. 在C语言中,以下哪个选项是正确的函数声明?A. int add(int, int);B. int add(int a, int b)C. int add(int, int) {}D. int add(a, b)答案:A10. 在C语言中,以下哪个选项是正确的指针声明?A. int *ptr;B. int ptr[];C. int *ptr[10];D. int ptr(int);答案:A二、填空题(每题2分,共20分)1. 在C语言中,`printf`函数用于__输出__。

c程序设计考试题目及答案

c程序设计考试题目及答案一、选择题(共10题,每题2分,共20分)1. C语言中,以下关键字不属于标准C语言关键字的是:A. forB. ifC. switchD. class答案:D2. 定义一个数组 int arr[5]={1,2,3,4,5},则 arr[2] 的值是:A. 2B. 3C. 4D. 5答案:C3. 在C语言中,以下哪个运算符用于求两个整数相除后的余数:A. %B. /C. ^答案:A4. 下列选项中,不属于C语言中的控制流语句的是:A. whileB. continueC. gotoD. delete答案:D5. 下列哪个函数用于输出到标准输出设备(默认为显示器):A. getchar()B. scanf()C. puts()D. fopen()答案:C6. 在C语言中,以下哪个运算符优先级最高:A. +B. =C. <<答案:C7. 在C语言中,以下哪个关键字用于定义新的结构体类型:A. typedefB. structC. voidD. extern答案:A8. 下列选项中,属于C语言中的数据类型的是:A. integerB. characterC. floatD. boolean答案:C9. C语言中,以下哪种循环结构可以确保至少执行一次循环体:A. for循环B. while循环C. do...while循环D. if...else语句答案:C10. 函数原型声明的作用是:A. 定义函数的实现B. 声明函数的返回值类型C. 声明函数的参数类型和个数D. 控制函数的调用顺序答案:C二、编程题(共2题,每题40分,共80分)题目1:请编写一个C程序,实现以下功能:1. 定义一个结构体类型Student,包含以下成员:- char name[20]:表示学生姓名- int age:表示学生年龄2. 定义一个函数inputStudent,用于输入学生信息,函数原型如下: - void inputStudent(Student *student)3. 定义一个函数outputStudent,用于输出学生信息,函数原型如下: - void outputStudent(Student student)4. 在主函数中通过调用inputStudent和outputStudent函数,实现输入一个学生的信息并输出。

C语言编程(较难)题目

1. 编程解决如下问题(50分)。

有一个数学等式:AB*CD=BA*DC,式中的一个字母代表一位数字,试找出所有符合上述要求的乘积式并打印输出。

2. 编程解决如下问题(50分)。

请在整数n=742683613984中删除8个数字,使得余下的数字按原次序组成的新数最小。

要求如下: (1)整数n和删除数字的个数“8”在源程序中完成赋值,程序直接输出运行结果;(2)程序结果输出先后被删除的数字(之间以逗号分隔)和删除后所得的最小数。

(提示:整数n可以以字符数组的方式定义、赋值和处理)3. 附加题:编程解决如下问题(50分)。

(1)已知平面上三个点:(7,1)、(4,6)、(5,8),判断这三点组成的三角形是何种三角形(锐角,直角,钝角)(10分);(2)对(1)问中的三角形,给出它的外接圆半径(20分);(3)已知平面上6个点的坐标为:(7,1)、(4,6)、(5,8)、(6,2)、(3,9)、(2,7),试求覆盖这6个点的覆盖圆最小半径(20分)。

(要求:点坐标数据在程序初始化中赋值完成,程序运行后直接输出结果,不进行数据输入;点坐标数据和题目要求完全一致,否则导致的结果不正确视为程序编写错误。

)第六届全国信息技术应用水平大赛复赛试题C语言程序设计(B卷)1. 编程解决如下问题(50分)。

有一个数学等式:ABCD*E= DCBA,式中的一个字母代表一位数字,试找出所有符合上述要求的乘积式并打印输出。

2. 编程解决如下问题(50分)。

请在整数n=92081346718538中删除10个数字,使得余下的数字按原次序组成的新数最大。

要求如下:(1)整数n和删除数字的个数“10”在源程序中完成赋值,程序直接输出运行结果;(2)程序结果输出先后被删除的数字(之间以逗号分隔)和删除后所得的最大数。

(提示:整数n可以以字符数组的方式定义、赋值和处理)3. 附加题:编程解决如下问题(50分)。

在小于10的素数中有3、5、7组成的等差数列,在小于30的素数中有11、17、23、29组成的等差数列。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

日本一位中学生发现一个奇妙的“定理”,请角谷教授证明,而教授无能为力,于是产生角谷猜想。

猜想的内容是:任给一个自然数,若为偶数除以2,若为奇数则乘3加1,得到一个新的自然数后按照上面的法则继续演算,若干次后得到的结果必然为1。

请编程验证。

*问题分析与算法设计
本题是一个沿未获得一般证明的猜想,但屡试不爽,可以用程序验证。

题目中给出的处理过程很清楚,算法不需特殊设计,可按照题目的叙述直接进行证。

*程序说明与注释
#include<stdio.h>
int main()
{
int n,count=0;
printf("Please enter number:");
scanf("%d",&n); /*输入任一整数*/
do{
if(n%2)
{
n=n*3+1; /*若为奇数,n乘3加1*/
printf("[%d]:%d*3+1=%d\n",++count,(n-1)/3,n);
}
else
{
n/=2; /*若为偶数n除以2*/
printf("[%d]: %d/2=%d\n",++count,2*n,n);
}
}while(n!=1); /*n不等于1则继续以上过程*/
}
数论中著名的“四方定理”讲的是:所有自然数至多只要用四个数的平方和就可以表示。

请编程证此定理。

*问题分析与算法设计
本题是一个定理,我们不去证明它而是编程序验证。

对四个变量采用试探的方法进行计算,满足要求时输出计算结果。

#include<stdio.h>
#include<math.h>
int main()
{
int number,i,j,k,l;
printf("Please enter a number=");
scanf("%d",&number); /*输入整数*/
for(i=1;i<sqrt(number);i++) /*试探法。

试探i,j,k,k的不同值*/
for(j=0;j<=i;j++)
for(k=0;k<=j;k++)
for(l=0;l<=k;l++)
if(number==i*i+j*j+k*k+l*l) /*若满足定理要求则输出结果*/
{
printf(" %d=%d*%d+%d*%d+%d*%d+%d*%d\n",number,i,i,j,j,k,k,l,l); exit(0);
}
}
3.验证尼科彻斯定理,即:任何一个整数的立方都可以写成一串连续奇数的和
#include<stdio.h>
int main()
{
int a,b,c,d;
printf("Please enter a number:");
scanf("%d",&a); /*输入整数*/
b=a*a*a; /*求整数的三次方*/
printf("%d*%d*%d=%d=",a,a,a,b);
for(d=0,c=0;c<a;c++) /*输出数列,首项为a*a-a+1,等差值为2*/
{
d+=a*a-a+1+c*2; /*求数列的前a项的和*/
printf(c?"+%d":"%d",a*a-a+1+c*2);
}
if(d==b)printf(" Y\n"); /*若条件满足则输出“Y”*/
else printf(" N\n"); /*否则输出“N”*/
}
一副扑克有52张牌,打桥牌时应将牌分给四个人。

请设计一个程序完成自动发牌的工作。

要求:黑桃用S(Spaces)表示;红桃用H(Hearts)表示;方块用D(Diamonds)表示;梅花用C(Clubs)表示
问题分析与算法设计
按照打桥牌的规定,每人应当有13张牌。

在人工发牌时,先进行洗牌,然后将洗好的牌按一定的顺序发给每一个人。

为了便于计算机模拟,可将人工方式的发牌过程加以修改:先确定好发牌顺序:1、2、3、4;将52张牌顺序编号:黑桃2对应数字0,红桃2对应数字1,方块2对应数字2,梅花2对应数字3,黑桃3对应数字4,红桃3对应数字5,…然后从52 张牌中随机的为每个人抽牌。

这里采用C语言库函数的随机函数,生成0到51之间的共52个随机数,以产生洗牌后发牌的效果。

#include<stdlib.h>
#include<stdio.h>
int comp(const void *j,const void *i);
void p(int b[],char n[]);
int main(void)
{
static char n[]={'2','3','4','5','6','7','8','9','T','J','Q','K','A'};
int a[53],b1[13],b2[13],b3[13],b4[13];
int b11=0,b22=0,b33=0,b44=0,t=1,m,flag,i;
while(t<=52) /*控制发52张牌*/
{
m=rand()%52; /*产生0到51之间的随机数*/
for(flag=1,i=1;i<=t&&flag;i++)/*查找新产生的随机数是否已经存在*/
if(m==a[i]) flag=0; /*flag=1:产生的是新的随机数flag=0:新产生的随机数已经存在*/
if(flag)
{
a[t++]=m; /*如果产生了新的随机数,则存入数组*/
if(t%4==0) b1[b11++]=a[t-1]; /*根据t的模值,判断当前*/
else if(t%4==1) b2[b22++]=a[t-1]; /*的牌应存入哪个数组中*/
else if(t%4==2) b3[b33++]=a[t-1];
else if(t%4==3) b4[b44++]=a[t-1];
}
}
qsort(b1,13,sizeof(int),comp); /*将每个人的牌进行排序*/
qsort(b2,13,sizeof(int),comp);
qsort(b3,13,sizeof(int),comp);
qsort(b4,13,sizeof(int),comp);
p(b1,n); p(b2,n); p(b3,n); p(b4,n); /*分别打印每个人的牌*/
return 0;
}
void p(int b[],char n[])
{
int i;
printf("\n\006 "); /*打印黑桃标记*/
for(i=0;i<13;i++) /*将数组中的值转换为相应的花色*/
if(b[i]/13==0) printf("%c ",n[b[i]%13]); /*该花色对应的牌*/ printf("\n\003 "); /*打印红桃标记*/
for(i=0;i<13;i++)
if((b[i]/13)==1) printf("%c ",n[b[i]%13]);
printf("\n\004 "); /*打印方块标记*/
for(i=0;i<13;i++)
if(b[i]/13==2) printf("%c ",n[b[i]%13]);
printf("\n\005 "); /*打印梅花标记*/
for(i=0;i<13;i++)
if(b[i]/13==3||b[i]/13==4) printf("%c ",n[b[i]%13]);
printf("\n");
}
int comp(const void *j,const void *i) /*qsort调用的排序函数*/ {
return(*(int*)i-*(int*)j);
}。

相关文档
最新文档