C语言程序设计大赛题目和答案
C语言程序设计试题及参考答案
C语言程序设计
一、选择题(共40分,每小题2分)
1、以下叙述不正确的是(D)
A、一个C源程序可由一个或多个函数组成
B、一个C源程序必须包含一个main函数
C、C程序的基本组成单位是函数
D、在C程序中,注释说明只能位于一条语句的后面
2、下列四个选项中,是不合法的用户标识符的选项是(B)
A、abc
B、12AC
C、sun
D、A
3、设有语句inta=4;则执行了语句a+=a-=a*a后,变量a的值是(A)
A、-24
B、0
C、4
D、16
4、下列运算符中优先级最高的是(B)
A、<
B、+
C、&&
D、==
5、在C语言中,运算对象必须是整型数的运算符是(A)
A、%
B、/
C、%和/
D、+
6、以下关于运算符的优先顺序的描述正确的是(C)
A、关系运算符<算术运算符<赋值运算符<逻辑与运算符
B、逻辑与运算符<关系运算符<算术运算符<赋值运算符
C、赋值运算符<逻辑与运算符<关系运算符<算术运算符
D、算术运算符<关系运算符<赋值运算符<逻辑与运算符
7、在C语言中,如果下面的变量都是int类型,则输出的结果是(C)
sum=pad=5;pAd=sum++,pAd++,++pAd;
printf(“%d\n”,pad);
A、7
B、6
C、5
D、4
8、x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是(B)
A、INPUTx、y、z;
B、scanf(“%d%d%d”,&x,&y,&z);
C、scanf(“%d%d%d”,x,y,z);
C语言程序设计竞赛题及其答案
C语言程序设计竞赛题及其答案
数学与统计学院
第三届计算机程序设计竞赛题
竞赛需知:
1、答案必须写在答题纸上。
2、程序采用C/JAVA/VB/VFP语言实现均可。
3、考虑到各种因素,程序的键盘输入和结果输出可以用伪代码或者自然语言表示。但是必
须说明输入变量和输出变量。
4、题目最好能用完整、正确的语言程序来解决问题,如确实无法编写完整语言程序的,可
以写出程序主要框架和流程,必要时可以用伪代码或者自然语言描述算法(程序)。
一、玫瑰花数(20分)
如果一个四位数等于它的每一位数的4次方之和,则称为玫瑰花数。例如:
+
+
1634+
=,
4^4
4^3
4^6
4^1
编程输出所有的玫瑰花数。
#include
void 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
#include
void 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="">
C语言程序设计
[试题分类]: C语言程序设计
[题型]:单选
1.对for(表达式1;;表达式3)可理解为
A. for(表达式1;0;表达式3)
B. for(表达式1;1;表达式3)
C. for(表达式1; 表达式1;表达式3)
D. for(表达式1; 表达式3;表达式3)
[答案]:B
2. 下面四个选项中,均是正确的数值常量或字符常量的选项是
A. 0.0 0f 8.9e ‘&’
B. “a” 3.9E-2.5 1e1 ‘\”’
C. ‘3’ 011 0xFF00 0a
D. +011 0xabcd 2e2 50.
[答案]:D
3. 在C语言中,一维数组的定义方式为:类型说明符数组名
A. [常量表达式]
B. [整型表达式]
C. [整型常量] 或[整型表达式]
D. [整型常量]
[答案]:A
4. 在C语言中,数字029是一个()。
A. 八进制数
B. 十六进制数
C. 十进制数
D. 非法数
[答案]:D
5. 以下不能对二维数组a进行正确初始化的语句是
A. int a[2][3]={0};
B. int a[][3]={{1,2},{0}};
C. int a[2][3]={{1,2},{3,4},{5,6}};
D. int a[][3]={1,2,3,4,5,6};
[答案]:C
6. 下面四个选项中,均是不合法的浮点数的选项是
A. 160.0.12 e3
B. 123 2e4.2 .e5
C. -.18 123e4 0.0
D. -e3 .234 1e3
[答案]:B
7. 下面四个选项中,均是合法浮点数的选项是
A. +1e+1 5e-9.4 03e2
《C语言程序设计》考试及答案
{
int y=10;
for(;y>0;y--)
if(y%3==0)
printf(“%d”,--y);
return 0;
}
[单选题]*
A、741
B、852(正确答案)
C、963
D、875421
17、在对n个元素进行冒泡排序的过程中,第一趟排序需要进行()对相邻元素的比较。[单选题]*
A、结构体中一个成员所需的内存容量
B、结构体中第一个成员所需的内存容量
C、结构体中占内存容量最大者所需的容量
D、结构体中各成员所需的内存容量之和(正确答案)
7、有函数调用语句:[单选题]*
func((exp1,exp2),(exp3,exp4,exp5));
该语句的实参个数是()。
A、1
B、2(正确答案)
A、1(正确答案)
B、2
C、3
D、4
3、变量的指针,其含义是指该变量的()。[单选题]*
A、值
B、地址(正确答案)
C、名
D、一个标志
4、若执行fopen函数时发生错误,则函数的返回值是()。[单选题]*
A、地址值
B、NULL(正确答案)
C、1
D、EOF
5、下列程序运行的结果是()。
#include<stdio.h>
C语言程序设计习题集及答案
基础知识
一 单项选择题(每题2分,共44分)
1 以下叙述正确的是___。
A C 程序基本组成单位是语句
B
C 程序每一行只能写一个语句
C 简单C 语句必须以分号作为结束符
D 注释语句可以嵌套
2 一个C 语言程序是从___开始执行的。
A 程序中第一个函数
B 名为main 的函数
C 包含文件(头文件)的第一个函数
D 程序中的第一个语句
3 请选出合法的C 语言赋值语句___。
A a=b=58
B i++;
C a=58,b=58
D k=int(a+b);
4 下面标识符中,合法的用户标识符是 ___。
A 1abc
B include
C a-b-c123
D char
5 以下所列的C 语言整形常量中,正确的是___。
A 0x10
B 0976
C 076L
D 01ff
6 C 语言中下列运算符的操作数必须为整型的是___。
A %
B ++
C /
D =
7 设a 和b 均为int 型变量,则执行以下语句后的输出为___。
int a=20; int b=3; printf("%d\n ",a+=(b%=2));
A 20
B 21
C 0
D 23
8 已知int i;,则执行语句 i=2.6;后,i 的值为___。
A 2
B 3
C 2.6
D 不确定
9 以下合法的字符常量为___。
A 'ab '
B '\482'
C '\'
D '\xaf '
10 若y 为int 型变量,则执行以下语句后,y 的值是___。
y=8; y+=y-=y*y;
A 64
B –56
C –112
D –48
11 以下合法的浮点型常量是___。
A e-3
B 1.5e+2.4
c语言程序设计题目及答案
组,求出二维数组每列 中最大元素,并依次放入pp所 指一维数组中。二维 数组中的数已在主函数中赋 予。
#include<conio.h> #include<stdio.h> #define M3#define N4void wwjt();
void fun(int tt[M][N],int pp[N]){int i,j;
第10题 题号:16
功能:编写函数fun求1!+2!+ 3!+
+n!的和,在main函
数中由键盘输入n值,并输出 运算结果。请编写fun
函数。
例如:若n值为5,则结果为153。
#include<stdio.h>
void wwjt();
long int fun(int n)
{
int i;
float f=1,s=0;
if(i>=5) return(int)(h*100+1)/100.0;
else return(int)(h*100)/100.0;第12题题号:410功能:编写函数fun将一个数组中的值按逆序存放,并在
main()函数中输出。 例如:原来存顺序为8,6,5,4,1。要求 改为:1,4,5,6,8。
for(j=0;j<N;j++){pp[j]=tt[0][j]; for(i=1;i<M;i++) if(tt[i][j]>pp[j])
C语言程序设计习题及答案
第一部分 C语言基础
一、单项选择
1.以下不是C语言的特点的是()。
(A) C语言简洁、紧凑(B)能够编制出功能复杂的程序
(C) C语言可以直接对硬件进行操作(D)C语言移植性好
2.下列浮点数的表示中正确的有()。
(A)223 (B).719E22 (C ) e23 (D) 12e2.0
3.字符型常量在内存中存放的是()。
(A)ASCII代码(B)BCD代码(C)内部码(D)十进制码
4.“BB\n\\\123\r”在内存中占的字节数是(),此字符串的长度为()。
(A)6 (B)7 (C)8 (D)9 (E)10 (F)11
5.对于语句scanf (“%f□%f,z=%f”,&x,&y,&z ); ,其合法的输入形式为()。
(A)□14.7□2.0□15.3 (B)14.7,2.0,15
(C)14.7□□2.0,15.3 (D)14.7□□□2.0,z=15
6.下列运算符中,结合方向为自左向右的是()。
(A)=(B),(C)+=(D)――
7.若有int x ; 则sizeof(x)和sizeof(int )两种描述( ) 。
(A)都正确(B)值不一样(C)前者正确(D)后者正确
8.整型变量x=1,y=3,经下列计算后,x的值不等于6的是( ) 。
(A)x=(x=1+2,x*2) (B)x=y>2?6:5 (C)x=9 - (- -y) - (- -y) (D)x=y*4.2/2
9.单精度变量x=3.0, y=4.0,下列表达式中y的值为9.0的是( ) 。
(A)y/=x*27/4 (B)y+=x+2.0 (C)y- =x+8.0 (D)y*=x-3.0
C语言程序设计试题及答案
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;< p="">
A.1 B.4 C.2 D.3
5.下面标识符中,合法的用户标识符为()。
A.P#Ad B.12a C.char D._int
6.‘A’ + 3 的结果是()。
A.’A’ B.’D’的ASCⅡ码 C.65 D.3
7.语句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.以下不正确的描述是()。
c语言程序设计题目及答案解析
一、程序设计共113题
第1题题号:319
#include "stdio.h"
void wwjt();
int fun(int m)
{
int i,k=1;
if(m<=1) k=0;
for(i=2;i<m;i++)
if(m%i==0) k=0;
return k;
}
第2题题号:351
-----------
功能:请编一个函数void fun(int tt[M][N],int pp[N]),
tt指向一个M行N列的二维数组,求出二维数组每列
中最大元素,并依次放入pp所指一维数组中。二维
数组中的数已在主函数中赋予。
#include<conio.h>
#include<stdio.h>
#define M 3
#define N 4
void wwjt();
void fun(int tt[M][N],int pp[N]) {
int i,j;
for(j=0;j<N;j++)
{
pp[j]=tt[0][j];
for(i=1;i<M;i++)
if(tt[i][j]>pp[j])
pp[j]=tt[i][j];
}
第3题题号:375
功能:从键盘上输入任意实数,求出其所对应的函数值。 z=e的x次幂(x>10)
z=log(x+3) (x>-3)
z=sin(x)/((cos(x)+4)
#include <math.h>
#include<stdio.h>
void wwjt();
double y(float x)
{
double z;
if(x>10) z=exp(x);
c语言程序设计试题及答案
c语言程序设计试题及答案
第一章基础知识
一、填空
1.每个C程序都必须有且仅有一个________函数。
2.C语言程序开发到执行通常要经过6个阶段即编辑、预处理、
________、链接、加载和执行。
3.软件是程序,以及______、使用和维护所需要的所有文档。
4.国标中规定:“计算机程序是按照具体要求产生的适合于计算机处
理的_________”。
5.程序设计语言按照书写形式,以及思维方式的不同一般分为低级语
言和________两大类
6.C语言是由________组成的。
7.C语言的函数可分为主函数main、标准库函数和_________。
8.一个函数是由两部分组成的,即:________和函数体。
9.编译是将C语言所编写的源程序________成机器代码,也称为建立
目标代码程序的过程。
10.程序是由某种程序设计语言编制出来,体现了编程者的控制思想
和对计算机执行操作的要求。不同的任务功能,就会需求不同的软件程序,如:控制计算机本身软硬件协调工作,并使其设备充分发挥效力,方便用
户使用的系统软件程序,称为操作系统;而为办公自动化(OA)、信息系统
(MIS)、人工智能、电子商务、网络互联等等应用而开发的软件程序,统
称为_________。
11.机器语言是以__________形式表示的机器基本指令的集合,是计
算机系统唯一不需要翻译可以直接识别和执行的程序设计语言。12.与机
器语言相比,使用汇编语言来编写程序可以用_______来表示指令的操作
码和操作对象,也可以用标号和符号来代替地址、常量和变量。
C语言程序设计试题试题及答案
C语言程序设计试题试题及答案
C 语言程序设计试卷,C++ 语言程序设计试题及答案
一、单项选择题(每题1分,共20 分)
1. C 语言规定:在一个源程序中,main 函数的位置( C ) 。
A. 必须在最开始
B. 必须在系统调用的库函数的后面
C. 可以任意
D. 必须在最后
2. 下面四个选项中,均是合法浮点数的选项是( B ) 。
A. +1e+1 5e-9.4 03e2
B. -.60 12e-4 -8e5
C. 123e 1.2e-.4 +2e-1
D. -e3 .8e-4 5.e-0
3. 若a=-14,b=3, 则条件表达式a<="" a:b+1="" p="" 的值为(a="">
A. -14
B. -13
C. 3
D. 4
4. 已知:int n,i=1,j=2; 执行语句n=i
A. 1,2
B. 1,3
C. 2,2
D. 2,3
5. 为了判断两个字符串s1 和s2 是否相等, 应当使用( D )
A. if (s1==s2)
B. if(s1=s2)
C. if (strcmp(s1,s2))
D. if (strcmp(s1,s2)==0)
6. 以下正确的描述是( B ) 。
A. 函数的定义可以嵌套,但函数的调用不可以嵌套。
B. 函数的定义不可以嵌套,但函数的调用可以嵌套。
C. 函数的定义和函数的调用均不可以嵌套。
D. 函数的定义和函数的调用均可以嵌套。
7. 在C语言中,下面对函数不正确的描述是(D)。
A. 当用数组名作形参时,形参数组值的改变可以使实参数组之值相应改变。
B. 允许函数递归调用。
C. 函数形参的作用范围只是局限于所定义的函数内。
C语言程序设计试题及答案
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;< p="">
A.1 B.4 C.2 D.3
5.下面标识符中,合法的用户标识符为()。
A.P#Ad B.12a C.char D._int
6.‘A’+ 3 的结果是()。
A.’A’B.’D’的ASCⅡ码C.65 D.3
7.语句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语言程序设计题目及答案
z=e 的 x 次幂(x>10) z=log(x+3) (x>-3) z=sin(x)/((cos(x)+4) #include <math.h> #include<stdio.h> void wwjt();
double y(float x) { double z;
if(x>10) z=exp(x); else if(x>-3) z=log(x+3); else z=sin(x)/(cos(x)+4); return(z); } 第 4 题 题号:334 功能:求给定正整数 n 以内的素数之 积。(n<28) #include <stdio.h> #include"conio.h" void wwjt();
则返回值为 1,否则为 0。调 用该函数求出 15~300 之
间能同时被 3 和 5 整除的数的 个数。 #include <stdio.h> void wwjt();
int sum(int n) { if(n%3==0&&n%5==0) return(1); return(0);} 第 10 题 题号:16 功能:编写函数 fun 求 1!+2!+3!+ …… +n!的和,在 main 函
功能:请编一个函数 void fun(int tt[M][N],int pp[N]),
C语言程序设计的试题及答案
C语言程序设计的试题及答案
大家在考程序员时,C语言程序设计大家有了解吗?下面瑞文网小编为大家分享了C 语言程序设计的试题及答案,供大家参考。
第一章基础知识
一、填空
1. 每个 C 程序都必须有且仅有一个________ 函数。
2. C 语言程序开发到执行通常要经过 6 个阶段即编辑、预处理、________、链接、加载和执行。
3. 软件是程序,以及______、使用和维护所需要的所有文档。
4. 国标中规定:“计算机程序是按照具体要求产生的适合于计算机处理的
_________”。
5. 程序设计语言按照书写形式,以及思维方式的不同一般分为低级语言和________两大类。
6. C 语言是由________组成的。
7. C 语言的函数可分为主函数main、标准库函数和_________。
8. 一个函数是由两部分组成的,即:________和函数体。
9. 编译是将C 语言所编写的源程序________成机器代码,也称为建立目标代码程序的过程。
10. 程序是由某种程序设计语言编制出来,体现了编程者的控制思想和对计算机执行操作的要求。不同的任务功能,就会需求不同的软件程序,如:控制计算机本身软硬件协调工作,并使其设备充分发挥效力,方便用户使用的系统软件程序,称为操作系统;而为办公自动化(OA) 、管理信息系统(MIS) 、人工智能、电子商务、网络互联等等应用而开发的软件程序,统称为_________。
11. 机器语言是以__________形式表示的机器基本指令的集合,是计算机系统唯一不需要翻译可以直接识别和执行的程序设计语言。12. 与机器语言相比,使用汇编语言来编写程序可以用_______来表示指令的操作码和操作对象,也可以用标号和符号来代替地址、常量和变量。
C语言程序设计大赛题目和答案
C语言程序设计大赛题目和答案
/*-------------------
第一题
某人到商店购物,身上有钱m元,商店里有商品n件,如果只能买1件或2件商品,且想一次性把钱花完,编程求是否可行?
输入数据:第一行输入两个整数n和m
(1≤n≤30000,1≤m≤10000),下面n行中每一行都是一个整数a,表示商店中商品的价格,1≤a≤10000。
输出数据:如果可以恰好用m元钱买到1件或者是2件东西,则第一行输出YES,随后的一行或两行输出所买商品的价格;否则输出NO。
输入样例:
5 20
1
3
7
13
18
输出样例:
YES
7
13
-----------------------*/
#include <stdio.h>
#include <malloc.h>
void main(){
int m, n;
int *a;
int i,j;
scanf("%d%d",&n,&m); //输入商品数及钱的多少
a=(int*)malloc(n*sizeof(int));
for(i=0;i<n;i++) scanf("%d",a+i); //输入每件商品的价格
for(i=0;i<n;i++)
if(a[i]==m) {printf("%s\n%d\n","YES",a[i]); break;}
else
for(j=i+1;j<n;j++)
if(a[i]+a[j]==m)
{printf("%s\n%d\n%d\n","YES",a[i],a[j]); return;}
if (i==n) printf("\nNO\n");
C语言程序设计竞赛试题参考答案
C语言程序设计竞赛试题参考答案
第七届“蓝桥杯”全国软件与信息技术专业人才大赛清远职业技术学院选拔赛《C语言程序设计》参考答案1.标题:年龄巧合(填空题,20分)
答案: 1988
2.标题:海盗分金币(填空题,20分)
答案: 3129
3.标题:啤酒和饮料(填空题,20分)
答案: 11
4.标题:兔子繁殖(程序填空,20分)
(1) i=1;i<=38;i++
(2) f3=f1+f2
(3) f1=f2
(1) f2=f3
5.题目:杨辉三角(编程题 20分)
代码如下:
#include
#include
int main()
{
int i,j,k,n;
static int a[50][50];
printf("Input lines\",&n);
scanf("%d",&n);
a[1][1]=a[2][1]=a[2][2]=1;
for(i=3;i<=n;i++)
for(j=1;j<=i;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];
for(i=1;i<=n;i++)
{
for (k=1;k<=n-i;k++)
printf(" ");
for(j=1;j<=i;j++)
printf("%2d ",a[i][j]);
printf("\");
}
getch();
return 1;
}
1-3题参考代码
1、代码如下:
#include
int main(void)
{
int a, b, c, d;
int age;
int year;
for(a=0; a<=2; a++)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
}
ห้องสมุดไป่ตู้
/*----------------------------------------第五题 平面上有n个点(n≤8000),每两个点之间都有一条红色或者是黑色的 线段,任意三点均不共线。 现在,已知哪些点之间连的线段是红色的,剩下的线段都是黑色的,要 求计算这些点组成的三角 形中有多少是同色的(顶点编号从1到n)? 输入数据:第一行是n, m(3≤n≤8000),n表示点的个数,m表示红色线 段的条数。下面m行,每 一行都是两个整数a和b,表示点a和点b之间的线段是红色的(a<b)。 输出数据:只有一行,表示同色三角形的个数。 提示:本题输出数据可能会超出长整数(long int)的范围。 输入样例: 65 12 13 23 25 36 输出样例: 7 -------------------------------------------*/ #include <stdio.h> #define N 8001 int colorline[N][N]={0}; //将所有的线设为黑色 void main(){ int n,m; //点的数目和红色的条数 int x,y; //点的坐标
编写程序实现将一段文章格式化打印出来。打印时每行的长度为20个字 符。 如果一行的最后一个单词超过了本行的20个字符的范围,则应把它移到 下一行。 另外在每个单词之间增加一些空格,以便使每行的末尾准确地处在第20 个位置处。 输入样例: The relationship between XML functional dependencies and XML keys are also discussed. 输出样例: The relationship between XML functional dependencies and XML keys are also discussed. ------------------------------*/ #include <stdio.h> #include <string.h> void main(){ char word[128][21]={'\0'},ch; int words=0,i; //words为文本中单词数量 int startPos,spaces; //startPos表示当前行从哪个单词开始打印 //spaces表示单词中隔几个空格符 ch=getchar(); while(ch!='\n'){ //用循环分离出每个单词,用数组a存储 while(ch==' ') ch=getchar(); i=0; while((ch!=' ')&&(ch!='\n')) { word[words][i++]=ch; ch=getchar(); } word[words][i]='\0'; words++;
} startPos=0; for(i=0;i<words;i++){ int length=0,curwords=0; 个数
//length 用于计算当前要打印的长度, //curwords 用于计算当前要打印的单词
while(length<20 && i<words){ length+=strlen(word[i]); if(length>20 || length+curwords>20) { length-=strlen(word[i]);break; } i++;curwords++; } i=i-1; //i多走了一步,要减回来 if(curwords>1) //一行中超过一个单词,要计算单词间打印的空格数, 注意这里可能不能均分 spaces=(20-length)/(curwords-1); int j=startPos; //当前行要打印的第一个单词在数据中的位置 do{ printf("%s",word[j]); //打印单词,如果只有一个单词,程序处 理为左对齐 for(int k=0;k<spaces;k++) putchar(' '); //打印单词间的空格 }while(++j<startPos+curwords-1); if(curwords>1) { //一行中有多个单词时,最后一个单词要右对齐, 因此另行处理 for(int k=0;k<(20-length)%(curwords-1);k++) putchar(' '); //先 计算打印最后一个词前的空格 printf("%s",word[startPos+curwords-1]); } putchar('\n'); //换行 startPos+=curwords; //求出下一行第一个单词是数组中的第几 个单词 }
C语言程序设计大赛题目和答案 /*------------------第一题 某人到商店购物,身上有钱m元,商店里有商品n件,如果只能买1件或 2件商品,且想一次性把钱花完,编程求是否可行? 输入数据:第一行输入两个整数n和m(1≤n≤30000,1≤m≤10000),下面 n行中每一行都是一个整数a,表示商店中商品的价格,1≤a≤10000。 输出数据:如果可以恰好用m元钱买到1件或者是2件东西,则第一行输 出YES,随后的一行或两行输出所买商品的价格;否则输出NO。 输入样例: 5 20 1 3 7 13 18 输出样例: YES 7 13 -----------------------*/ #include <stdio.h> #include <malloc.h> void main(){ int m, n; int *a; int i,j; scanf("%d%d",&n,&m); //输入商品数及钱的多少 a=(int*)malloc(n*sizeof(int)); for(i=0;i<n;i++) scanf("%d",a+i); //输入每件商品的价格 for(i=0;i<n;i++) if(a[i]==m) {printf("%s\n%d\n","YES",a[i]); break;} else for(j=i+1;j<n;j++)
if(a[i]+a[j]==m) {printf("%s\n%d\n%d\n","YES",a[i],a[j]); return;} if (i==n) printf("\nNO\n"); }
/*---------------------第二题 写出一个程序,接受一个以N/D的形式输入的分数,其中N为分子,D为 分母,输出它的小数形式。 如果它的小数形式存在循环,则要将其用括号括起来。例如: 1/3= 0.(3) 41/333= 0.(123) 22/5=4.4 1/7=0.(142857) 3/8=0.375 45/46=0.9(7826086956521739130434) 本题中,0≤N≤65535,0≤D≤65535,设运算结果小数点后最多保留100 位。 输入样例: 1, 7 输出样例: 1/7=0.(142857) -----------------------*/ #include <stdio.h> void main(){ long int digit[101]; //存放结果的数组,0号元素放整数部分,其 余放小数部分 long int remainder[101]; //存放余数 int state=0; //是否是循环小数,默认不是 long int repetendstart=0; //循环节的开始位置和结束位置
int tri=0; //计数器,同色三角形的个数 printf("input n (3<=n<=N) and m:"); scanf("%d%d",&n,&m); printf("\n"); for(int i=1;i<=m;i++){ //输入红线连接的两个点坐标 scanf("%d%d",&x,&y); colorline[x][y]=colorline[y][x]=1; // 1 表示红色线 } for(i=1;i<=n;i++) for(int j=i+1;j<=n;j++) for(int k=j+1;k<=n;k++) if(colorline[i][j]==colorline[i][k]&&colorline[i] [j]==colorline[j][k]) tri++; printf("Number of same color triangle:%d\n",tri); }
long int n,d; //输入的分子和分母 int i; printf("input N/D:"); scanf("%d/%d",&n,&d); //输入分子和分母 digit[0]=n/d; remainder[0]=n%d; //求出第一个余数 i=0; while(remainder[i] && !state && i<100){ //求小数部分 i++; //i记录了求了多少位小数 digit[i]=remainder[i-1]*10/d; //求出一位小数 remainder[i]=remainder[i-1]*10%d; //求余数即下一次的被除 数 for(int j=0;j<i;j++){ //判断是否出现循环节 if(remainder[j]==remainder[i]){//如果出现循环节则记下节开 始的位置 repetendstart=j+1; state=1; //置是循环小数状态 break; } } } //以下是打印部分 printf("%d",digit[0]); //打印整数部分 if(remainder[0]!=0) printf("."); //如有小数则打印小数点 for(int j=1;j<=i;j++){ //打印小数部分 if(j==repetendstart) printf("("); printf("%d",digit[j]); } if(state) printf(")"); printf("\n"); } /*-------------------------第三题