C++编程题目解答
13真题与答案 202403青少年软件编程(C语言)等级考试试卷(三级)

202403青少年软件编程(C语言)等级考试试卷(三级)分数:100分题数:51. 我家的门牌号我家住在一条短胡同里,这条胡同的门牌号从 1 开始顺序编号。
若所有的门牌号之和减去我家门牌号的两倍,恰好等于 n,求我家的门牌号及总共有多少家。
数据保证有唯一解。
时间限制:1000内存限制:65536输入一个正整数 n。
n < 100000。
输出一行,包含两个正整数,分别是我家的门牌号及总共有多少家,中间用单个空格隔开。
样例输入100样例输出10 15参考代码:#include <stdio.h>int main() {int n;scanf("%d", &n);int x, y;for (x = 1; x < n; x++) {for (y = x + 1; y < n; y++) {int sum = y * (y + 1) / 2 - x * 2;if (sum == n) {printf("%d %d\n", x, y);return 0;}}}return 0;}2. 最接近的分数分母不超过 N 且小于 A/B 的最大最简分数是多少?时间限制:10000内存限制:65536输入三个正整数 N,A,B,相邻两个数之间用单个空格隔开。
1 <= A < B <N <= 1000。
输出两个正整数,分别是所求分数的分子和分母,中间用单个空格隔开。
样例输入100 7 13样例输出50 93参考代码:#include <stdio.h>int gcd(int a, int b) {return b == 0? a : gcd(b, a % b);}int main() {int N, A, B;scanf("%d %d %d", &N, &A, &B);int numerator = 0, denominator = 1;for (int i = 2; i <= N; i++) {for (int j = 1; j < i; j++) {if ((double)j / i < (double)A / B && ((double)numerator / denominator < (double)j / i || (double)A / B - (double)j / i < (double)A / B - (double)numerator / denominator)) {numerator = j;denominator = i;}}}printf("%d %d\n", numerator, denominator);return 0;}3.菲波那契数列菲波那契数列是指这样的数列: 数列的第一个和第二个数都为 1,接下来每个数都等于前面 2 个数之和。
C语言编程题经典40题(附解答)

字符串在C语言中通常表示为字符数组。可以通过字符数组来存储和操作字符串。字符串的常用函数 包括strcpy()、strcat()、strlen()等。
03
进阶题目
函数与递归
总结词
理解函数定义、参数传递、递归调用等概念,掌握函数的使用方法。
题目1
编写一个函数,判断一个整数是否为素数。
题目2
编写一个函数,计算斐波那契数列的第n项。
培养逻辑思维
C语言强调结构化和严谨 的编程风格,学习C语言 有助于培养逻辑思维和问 题解决能力。
为什么选择这40道题目
经典题目
精选的40道题目均来自经典的C语言题目库,具有较高的代表性和难 度。
覆盖面广
题目涵盖了C语言的主要知识点,包括数据类型、控制结构、函数、 指针等,有助于全面提升编程能力。
难度适中
实现二叉树的基本操作(创建、插 入、删除、遍历)
题目12
实现堆排序算法
04
THANKS
感谢观看
01
02
文件打开
使用fopen()函数打开文件,并返回一 个FILE类型的指针。
03
文件读取
使用fscanf()、fgets()等函数从文件中 读取数据。
文件关闭
使用fclose()函数关闭文件。
05
04
文件写入
使用fprintf()、fputs()等函数将数据写 入文件。
动态内存分配
总结词
动态内存分配允许程序员在运行时根 据需要分配或释放内存,提高了程序 的灵活性和可扩展性。
数组与字符串
01
理解数组的概念和使用方法
02
掌握字符串的存储和操作
03
熟悉数组和字符串的常用函数
C函数编程20道习题汇总含其详细程序解答

第1题:编写两个函数,函数功能分别是:求两个整数的最大合约数和最小公倍数,要求输入输出均在主函数中完成。
样例输入: 15 25样例输出: 5 75#include<iostream.h>int gbs(int a,int b){int a,b,c,d;int gys(int a,int b){int i;cin>>a>>b;{int i;for(i=a;;i++)c=gys(a,b);for(i=a;i>0;i--)if(i%a==0&&i%b==0)d=gbs(a,b);if (a%i==0&&b%i==0){ return i;cout<<c<<' '<<d;{ return i;break;}return 0;}break;}}}int main()第2题:编写函数 factors(num,k) ,函数功能是:求整数 num中包括因子 k 的个数,如果没有该因子那么返回0,比方: 32=2×2×2×2×2,那么 factors(32,2)=5 。
要求输入输出均在主函数中完成。
样例输入: 4 2 样例输出: 2样例输入: 8 3样例输出: 0#include<iostream.h>num=num/k;cin>>num>>k;int factors(int num,int k)a=num%k;b=factors(num,k);{int n=0,a;}cout<<b<<endl;a=num%k;return n;}return 0;while(a==0)int main()}{n++;{int num,k,b;第3题:编写函数,函数功能是:计算n 的阶乘,要求输入输出均在主函数中完成。
c语言编程题考试题库及答案

c语言编程题考试题库及答案一、单项选择题1. 在C语言中,以下哪个选项是正确的整型常量?A. 0x12LB. 0x12.5C. 0x12.0D. 0x12F答案:A2. C语言中,以下哪个选项是正确的字符串字面量?A. "Hello, World"B. 'Hello, World'C. "Hello, World\n"D. "Hello, World\"答案:C3. 在C语言中,以下哪个选项是正确的函数声明?A. int add(int a, int b);B. int add(int, int);C. int add();D. int add(a, b);答案:A4. C语言中,以下哪个选项是正确的数组声明?A. int a[5] = {1, 2, 3, 4, 5};B. int a[] = {1, 2, 3, 4, 5};C. int a[5] = {1, 2, 3};D. int a = {1, 2, 3, 4, 5};答案:B5. 在C语言中,以下哪个选项是正确的指针声明?A. int *p = 0;B. int *p = "Hello";C. int *p = 5;D. int p = 0;答案:A二、填空题1. 在C语言中,表示逻辑“与”操作的运算符是 ________ 。
答案:&&2. C语言中,表示逻辑“或”操作的运算符是 ________ 。
答案:||3. 在C语言中,表示逻辑“非”操作的运算符是 ________ 。
答案:!4. C语言中,表示赋值操作的运算符是 ________ 。
答案:=5. 在C语言中,表示取地址操作的运算符是 ________ 。
答案:&三、程序阅读题阅读以下C语言程序段,并回答问题。
```c#include <stdio.h>int main() {int a = 10, b = 20, c;c = a + b;printf("%d", c);return 0;}```1. 程序的输出结果是什么?答案:302. 如果将`c = a + b;`改为`c = a * b;`,程序的输出结果是什么?答案:200四、编程题1. 编写一个C语言程序,实现两个整数的加法运算,并输出结果。
c语言编程题及答案

c语言编程题及答案1. 输入输出题题目:编写一个程序,要求从键盘输入两个整数,然后输出它们的和。
答案:```c#include <stdio.h>int main() {int num1, num2, sum;printf("请输入两个整数:\n");scanf("%d %d", &num1, &num2);sum = num1 + num2;printf("它们的和为:%d\n", sum);return 0;}```2. 条件语句题题目:编写一个程序,要求从键盘输入一个整数,判断它是否为正数、负数还是零,并输出相应的提示信息。
答案:```c#include <stdio.h>int main() {int num;printf("请输入一个整数:\n"); scanf("%d", &num);if (num > 0) {printf("这是一个正数。
\n"); } else if (num < 0) {printf("这是一个负数。
\n"); } else {printf("这是零。
\n");}return 0;}```3. 循环语句题题目:编写一个程序,要求计算并输出1到100之间所有偶数的和。
答案:```c#include <stdio.h>int main() {int i, sum;sum = 0;for (i = 1; i <= 100; i++) {if (i % 2 == 0) {sum += i;}}printf("1到100之间所有偶数的和为:%d\n", sum);return 0;}```4. 数组题题目:编写一个程序,要求定义一个包含10个整数的数组,并逐个从键盘输入数组元素的值,然后对数组进行逆序输出。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1 1、十以内的奇偶数之和分别是? #include"stdio.h" main() { int i=1,sum1=0,sum2=0; for(;i<=10;i++) { if(i%2==0) sum1+=i; else sum2+=i; } printf("奇数之和为%d \n",sum2); printf("偶数之和为%d \n",sum1); } 2、1-3+5····-99+101=? #include"stdio.h" main() { int i=1,j=1,sum=0; for(;i<=101;i+=2) { sum+=i*j; j=-j; } printf("\n1-3+5...-99+101=%d \n",sum); } 3、1-100中是3的倍数的所有整数之和为? #include"stdio.h" main() { int i=1,sum=0; for(;i<=100;i++) { if(i%3==0) sum+=i; } printf("1~100中是3的倍数的所有整数之和为%d \n",sum); 2
} 4、输入一个整数,整数之和为? #include "stdio.h" main() { int i,sum1=0,sum2=0; printf("请输入整数:\n"); for(;;) { scanf("%d",&i); if(i>0) sum1+=i; else if(i<0) sum2+=i; else if(i==0)break; } printf("正整数之和为%d\n",sum1); printf("负整数之和为%d\n",sum2); } 5、 #include "stdio.h" main() { int a[3][4]; int i,j,max,z,flag=0,p=0,x=0; for(i=0;i<3;i++) for(j=0;j<4;j++) scanf("%d",&a[i][j]); for(i=0;i<3;i++) { max=a[i][0]; for(j=0;j<4;j++) if(a[i][j]>max) { max=a[i][j];p=j;x=max; } for(z=0;z<3;z++) 3
if(a[z][p]if(x==max) flag=1; } if(flag) printf("%d为该数组的鞍点",x); else printf("该数组没有鞍点"); } 6、 #include "stdio.h" main() { int i,j,a[10][10]; for(i=0;i<10;i++) { a[i][0]=1; a[i][i]=1; } for(i=2;i<10;i++) for(j=1;j a[i][j]=a[i-1][j-1]+a[i-1][j]; for(i=0;i<10;i++) { for(j=0;j<=i;j++) printf("%5d",a[i][j]); printf("\n"); } } 7、输入一组整数,升序排列。 #include"stdio.h" #define N 10 main() { int a[N],i,j,t; printf("请输入%d个任意的整数:\n",N); for(i=0;i for(i=0;i for(j=0;j if(a[j+1]4
t=a[j]; a[j]=a[j+1]; a[j+1]=t; } printf("这些数按升序排列后为:\n"); for(i=0;i printf("%6d",a[i]); printf("\n"); } 8、输入一组数组,查找其中的某个数。 #include "stdio.h" #define N 15 main() { int i,m,flag=1; int a[N]; for(i=0;i scanf("%d",&a[i]); printf("请输入一个数:\n" ); scanf("%d",&m); for(i=0;i if(m==a[i]) { printf("该数为数组的第%d个数\n",i); flag=0; } if(flag) printf("无此数"); } 9、输入几组字符串,将字符串连接起来。 #include "stdio.h" main() { char a[80],b[80],c[80]; int i=0,j; printf("请输入3个字符串:\n"); gets(a); 5
gets(b); gets(c); { while(b[i]!='\0')i++; j=0; while(c[i]!='\0') { b[i]=c[j]; i++; j++; } b[i]='\0'; } { while(a[i]!='\0')i++; j=0; while(b[i]!='\0') { a[i]=b[j]; i++; j++; } a[i]='\0'; } printf("3个字符串连接起来为:%s\n",a); } 10、输入几个字符串,将字符串由大到小排列。 #include "stdio.h" main() { char str1,str2,str3,t; printf("请输入3个字符串:\n"); scanf("%f","%f","%f",&str1,&str2,&str3); if(str1>str2) { t=str1; str1=str2; 6
str2=t; } if(str2>str3) { t=str2; str2=str3; str3=t; } if(str1>str2) { t=str1; str1=str2; str2=t; } printf("这3个字符串由大到小排序为%c\t%c\t%c\t",str1,str2,str3); } 11、降序 #include"stdio.h" #define N 10 main() { int i,j; float a[N],t; printf("请输入%d个任意的实数:\n",N); for(i=0;i for(i=0;i for(j=0;j if(a[j+1]>a[j]){ t=a[j]; a[j]=a[j+1]; a[j+1]=t; } printf("这些数按降序排列后为:\n"); for(i=0;i printf("%f\t",a[i]); printf("\n"); } 7
12、升序 #include"stdio.h" #define N 10 main() { int a[N],i,j,t; printf("请输入%d个任意的整数:\n",N); for(i=0;i for(i=0;i for(j=0;j if(a[j+1] t=a[j]; a[j]=a[j+1]; a[j+1]=t; } printf("这些数按升序排列后为:\n"); for(i=0;i printf("%6d",a[i]); printf("\n"); } float a[N],t; int i,j; a[i] a[j] {12.3,30.6,35.9,} 1、百马百担问题:有100匹马,驮100担货,大马驮3担,中马驮2担,两匹小马驮1担,问大、中、小马各多少匹? #include"stdio.h" main( ) { int hb,hm,hl,n=0; for(hb=0;hb<=100;hb+= 3 ) for(hm=0;hm<=100-hb;hm+= 2 ) { hl=100-hb- hm ; if(hb/3+hm/2+2* hl ==100) { n++; printf("hb=%d,hm=%d,hl=%d\n",hb/3,hm/2,2*hl); }