50道C编程练习题及解答
《C语言程序设计》练习题及答案
《C语言程序设计》练习题及答案1. 单选题1. 设有定义:int n=0,*p=&n,**q=&p,则下列选项中正确的赋值语句是A. p=1;B. *q=2;C. q=p;D. *p=5;正确答案:D2. 设有int x=11;则表达式(x++*1/3)的值是A. 3B. 4C. 11D. 12正确答案:A3. 下面程序的输出结果是main(){ int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; printf("%d\n",*(p+2));}A. 3B. 4C. 1D. 2正确答案:A4. sizeof(float)是A. 一个双精度型表达式B. 一个整型表达式C. 一种函数调用D. 一个不合法的表达式正确答案:B5. 在16位C编译系统上,若定义long a;,则能给a赋40000的正确语句是A. a=20000+20000;B. a=4000*10;C. a=30000+10000;D. a=4000L*10L正确答案:D6. 请选出以下语句的输出结果printf("%d\n",strlen("\t\"\065\xff\n"));A. 5B. 14C. 8D. 输出项不合法,无正常输出正确答案:A7. 若x,i,j和k都是int型变量,则计算表达式x=(i=4,j=16,k=32)后,x的值为A. 4B. 16C. 32D. 52正确答案:C8. 下面能正确进行字符串赋值操作的是A. char s[5]={"ABCDE"};B. char s[5]={ ′A′, ′B′, ′C′, ′D′, ′E′};C. char *s;s="ABCDE";D. char *s;char a; scanf("%s",&s);正确答案:C9.以下程序的输出结果是#include "stdio.h"void reverse(int a[],int n){int i,t;for(i=0;i<n/2;i++){t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}}main(){int b[10]={1,2,3,4,5,6,7,8,9,10};int i,s=0;reverse(b,8);for(i=6;i<10;i++) s+=b[i];printf("%d\n",s);}A. 22B. 10C. 34D. 30正确答案:A10. 以下不正确的叙述是A. 在C程序中,逗号运算符的优先级最低B. 在C程序中,APH和aph是两个不同的变量C. 若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变D. 当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值正确答案:D2. 多选题11. 以下______是正确的转义字符。
50道C++编程练习题及解答-c编程例题
50道C++编程练习题及解答-c编程例题在学习 C++编程的过程中,通过大量的练习题来巩固知识和提升技能是非常重要的。
下面为您带来 50 道具有代表性的 C++编程练习题及详细解答。
练习题 1:求两个数的和```cppinclude <iostream>using namespace std;int main(){int num1, num2, sum;cout <<"请输入第一个数: ";cin >> num1;cout <<"请输入第二个数: ";cin >> num2;sum = num1 + num2;cout <<"这两个数的和为: "<< sum << endl;return 0;}```解答:这段代码首先使用`iostream` 库中的`cout` 输出提示信息,让用户输入两个整数。
然后通过`cin` 接收用户输入的值,并将它们相加存储在`sum` 变量中。
最后使用`cout` 输出两数之和。
练习题 2:判断一个数是否为偶数```cppinclude <iostream>using namespace std;int main(){int num;cout <<"请输入一个整数: ";cin >> num;if (num % 2 == 0) {cout << num <<"是偶数" << endl;} else {cout << num <<"不是偶数" << endl;}return 0;}```解答:在这个练习中,通过取余运算`num % 2` 来判断一个数是否能被 2 整除。
如果余数为 0,则是偶数,否则不是偶数。
练习题 3:打印 1 到 10 的整数```cppinclude <iostream>using namespace std;int main(){for (int i = 1; i <= 10; i++){cout << i <<"";}cout << endl;return 0;}```解答:这里使用了`for` 循环,从 1 开始,每次递增 1,直到达到10 为止。
计算机程序设计基础(C语言)编程习题
计算机程序设计基础(C语言)编程练习题及参考答案1.输入2个整数,求两数的平方和并输出。
#include <stdio.h>main(){ intt a ,b,s;printf("please input a,b:\n");scanf("%d%d”,&a,&b);s=a*a+b*b;printf("the result is %d\n",s);}2. 输入一个圆半径(r)当r>=0时,计算并输出圆的面积和周长,否则,输出提示信息。
#include <stdio.h>#define PI 3.14 <stdio.h>main(){ float r ,s , l;printf("please input r:\n");scanf("%f”,&r);if (r>=0){s=pi*r*r;l=2*i*r ;printf("the area is %f\n",s);printf("the circumference is %f\n",l);}elseprintf("input error!\n");}3、函数y=f(x)可表示为:2x+1 (x<0)y= 0 (x=0)2x-1 (x>0)编程实现输入一个x值,输出y值。
main(){int x,y;scanf(“%d”,&x);If(x<0)y=2*x+1;If(x>0)y=2*x-1;If(x==0) y=0;prin tf(“%d”,y);}4、编写一个程序,从4个整数中找出最小的数,并显示此数。
main( ){int a,b,c,d,t;scanf (“%d,%d,%d,%d ”,&a,&b,&c,&d);if (a>b){t=a; a=b; b=t;}if (a>c){t=a; a=c; c=t;}if (a>d){t=a; a=d; d=t;}pri ntf (“m in = %d \n”,a);}5.有一函数当x<0时y=1,当x>0时,y=3,当x=0时y=5,编程,从键盘输入一个x值,输出y值。
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语言编程题及答案(精心整理)
)(*)(*)(*c s b s a s s ---C 语言编程题1.(*)求分数序列:1/2,2/3,3/5,5/8,8/13,13/21...... 前20项的和。
main(){float i=1,j=2,t=0,s,n,m;for(n=1;n<=20;n++)s=i/j,m=i,i=j,j=m+j,t=t+s;printf("t=%f",t);}2.(*)从键盘输入一个字符串,再将其逆序输出。
(如:输入abcde ,输出edcba ) main(){int i;char c[10];scanf("%s",c);for(i=9;i>=0;i--)printf("%c",c[i]);}3.(*)已知abc+cba=1333,其中a 、b 、c 均为一位数,例如:617+716=1333, 518+815=1333, 试编程求出符合这一规律的a 、b 、c ,并输出结果。
main(){int a,b,c,x,y;for(a=1;a<=9;a++)for(b=0;b<=9;b++)for(c=1;c<=9;c++){ x=100*a+10*b+c;y=100*c+10*b+a;if(x+y==1333)printf("x=%d,y=%d",x,y);}}4.(*)利用海伦公式求三角形面积,三边长a,b,c 由键盘输入。
若输入的三边长不能构成 三角形,输出相应提示信息。
海伦公式如下:其中s=(a+b+c)/2三角形面积= #include"math.h"main(){ float a,b,c,s,area;scanf("%f,%f,%f",&a,&b,&c);s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c));if(a+b>c&&a+c>b&&b+c>a)printf("area=%f",area);else.1 .printf("no");}5.(*)编程求出1!+2!+3!+…+8!+9!+10!的值并输出。
50道C++编程练习题及解答
50道C/C++编程练习题1、输入3个数,求最大值int main(){ int a,b,c,m;cin>>a>>b>>c;m=a;if(b>m) m=b;if(c>m) m=c;cout<<m;}2、编程序,求方程ax2+bx+c=0的根#include<iostream>#include<cmath>using namespace std;int main(){double a,b,c,d,x1,x2;cin>>a>>b>>c;if(a==0)if(b==0) cout<<"error\n";else cout<< "x="<<-c/b<<endl;else{ d=b*b-4*a*c;if(fabs(d)<=1e-6)cout<<"x1=x2="<<-b/(2*a)<<endl;else if(d>1e-6){ x1=(-b+sqrt(d))/(2*a);x2=(-b-sqrt(d))/(2*a);cout<<"x1="<<x1<<",x2="<<x2<<endl; }else cout<<"方程无实根\n";}}3、输入一个成绩,打印相应的等级int main(){ int a;cin >> a;if(a>=90) cout<<"A";else if(a>=80) cout<<"B";else if(a>=70) cout<<"C";else if(a>=60) cout<<"D";else cout<<"E";} 4、输入3个double类型的值,判断这3个值是否可以表示一个三角形的三条边。
C语言经典编程100题(答案版)
C语言经典程序100题(答案版)【程序1】题目:企业发放的奖金根据利润提成。
利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?1.程序分析:请利用数轴来分界,定位。
注意定义时需把奖金定义成长整型。
2.程序源代码:1.#include"stdio.h"2.#include"conio.h"3.main()4.{5.long int i;6.int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;7.scanf("%ld",&i);8.bonus1100000*0.1;9.bonus2bonus1+100000*0.75;10.bonus4bonus2+200000*0.5;11.bonus6bonus4+200000*0.3;12.bonus10bonus6+400000*0.15;13.if(i<100000)14.bonus i*0.1;15.else if(i<200000)16.bonus bonus1+(i-100000)*0.075;17.else if(i<400000)18.bonus bonus2+(i-200000)*0.05;19.else if(i<600000)20.bonus bonus4+(i-400000)*0.03;21.else if(i<1000000)22.bonus bonus6+(i-600000)*0.015;23.else24.bonus bonus10+(i-1000000)*0.01;25.printf("bonus%d",bonus);26.getch();27.}【程序2】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。
50道C++编程练习题及解答-c编程例题
50道C++编程练习题及解答-c编程例题C++作为一种广泛应用的编程语言,通过不断的练习可以帮助我们更好地掌握其语法和编程思维。
以下是为您精心准备的 50 道 C++编程练习题及详细解答,希望能对您的学习有所帮助。
练习题 1:计算两个整数之和题目描述:编写一个 C++程序,输入两个整数,计算并输出它们的和。
```cppinclude <iostream>using namespace std;int main(){int num1, num2, sum;cout <<"请输入第一个整数:";cin >> num1;cout <<"请输入第二个整数:";cin >> num2;sum = num1 + num2;cout <<"两个整数之和为:"<< sum << endl;return 0;}```练习题 2:判断一个数是否为偶数题目描述:编写一个 C++程序,输入一个整数,判断它是否为偶数。
```cppinclude <iostream>using namespace std;int main(){int num;cout <<"请输入一个整数:";cin >> num;if (num % 2 == 0) {cout << num <<"是偶数" << endl;} else {cout << num <<"不是偶数" << endl;}return 0;}```练习题 3:找出三个数中的最大值题目描述:编写一个 C++程序,输入三个整数,找出并输出其中的最大值。
```cppinclude <iostream>using namespace std;int main(){int num1, num2, num3, max;cout <<"请输入第一个整数:";cin >> num1;cout <<"请输入第二个整数:";cin >> num2;cout <<"请输入第三个整数:";cin >> num3;max = num1;if (num2 > max) {max = num2;}if (num3 > max) {max = num3;}cout <<"三个数中的最大值为:"<< max << endl;return 0;}```练习题 4:计算阶乘题目描述:编写一个 C++程序,输入一个正整数,计算并输出它的阶乘。
50道C 编程练习题及解答
50道C/C++编程练习题1、输入3个数,求最大值int main(){ int a,b,c,m;cin>>a>>b>>c;m=a;if(b>m) m=b;if(c>m) m=c;cout<<m;}2、编程序,求方程ax2+bx+c=0的根#include<iostream>#include<cmath>using namespace std;int main(){double a,b,c,d,x1,x2;cin>>a>>b>>c;if(a==0)if(b==0) cout<<"error\n";else cout<< "x="<<-c/b<<endl;else{ d=b*b-4*a*c;if(fabs(d)<=1e-6)cout<<"x1=x2="<<-b/(2*a)<<endl;else if(d>1e-6){ x1=(-b+sqrt(d))/(2*a);x2=(-b-sqrt(d))/(2*a);cout<<"x1="<<x1<<",x2="<<x2<<endl;}else cout<<"方程无实根\n";}}3、输入一个成绩,打印相应的等级int main(){ int a;cin >> a;if(a>=90) cout<<"A";else if(a>=80) cout<<"B";else if(a>=70) cout<<"C";else if(a>=60) cout<<"D";else cout<<"E";}4、输入3个double类型的值,判断这3个值是否可以表示一个三角形的三条边。
50道C和和编程练习题及解
50道C和和编程练习题及解50道C语言编程练习题及解在学习和掌握C语言编程过程中,通过练习题可以提高自己对语法规则和编程思维的理解。
下面是50道C语言编程练习题及解,希望能对大家的学习有所帮助。
1. 编写一个程序,输出"Hello, World!"。
```c#include <stdio.h>int main() {printf("Hello, World!");return 0;}```2. 编写一个程序,计算并输出1到100之间所有数字的和。
```c#include <stdio.h>int main() {int sum = 0;for(int i = 1; i <= 100; i++) {sum += i;}printf("Sum: %d", sum);return 0;}```3. 编写一个程序,判断一个数字是否为奇数。
```c#include <stdio.h>int main() {int num;printf("Enter a number: ");scanf("%d", &num);if(num % 2 == 0) {printf("Even number");} else {printf("Odd number");}return 0;}```4. 编写一个程序,找出数组中的最大值。
```c#include <stdio.h>int 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;}int main() {int arr[] = {23, 45, 12, 67, 89};int size = sizeof(arr) / sizeof(arr[0]);int maxValue = findMax(arr, size);printf("Max value: %d", maxValue);return 0;}```5. 编写一个程序,判断一个字符串是否为回文串。
C语言200道练习题及答案
一维数组
题目1
题目2
题目3
题目4
求一维数组中的最大值 和最小值。
将一维数组中的元素逆 序存放。
查找一维数组中指定的 元素,并返回其下标。
求一维数组中所有元素 的和。
二维数组
题目5
题目6
求二维数组中所有元素的最大值和最小值 。
将二维数组转置,即行列互换。
题目7
题目8
查找二维数组中指定的元素,并返回其位 置。
C语言200道练习题 及答案
汇报人:XX
目录
• 基础知识练习题 • 数组与字符串练习题 • 函数与模块化练习题 • 指针与内存管理练习题 • 数据结构与算法练习题 • 综合应用练习题
01
基础知识练习题
变量与数据类型
声明整型变量并赋值
int a = 10;
声明字符型变量并赋值
char c = 'A';
代码优化
通过减少不必要的计算、消 除冗余代码等方式对代码进 行优化。
并行计算与多线程
了解并行计算和多线程的基 本概念,探索在程序中应用 并行计算和多线程技术提高 性能的可能性。
THANKS
感谢观看
掌握如何使用malloc()、calloc() 等函数在堆区动态分配内存空间
。
动态内存释放函数
了解如何使用free()函数释放之前 分配的内存空间,以避免内存泄漏 。
内存分配失败处理
熟悉在动态内存分配过程中,如何 处理分配失败的情况,如检查返回 值是否为NULL等。
05
数据结构与算法练习题
结构体与联合体
01
掌握如何定义指向函数的指针变量,以及如何通过函数指针调
用函数。
C语言经典练习题50道(附答案)
1.**打印Hello World**练习:编写一个C程序,打印"Hello,World!"到屏幕上。
#include<stdio.h>int main(){printf("Hello,World!\n");return0;}2.**计算两个整数的和**练习:编写一个程序,接受两个整数,然后计算它们的和并打印结果。
#include<stdio.h>int main(){int a=5,b=7;int sum=a+b;printf("Sum:%d\n",sum);return0;}3.**判断奇数或偶数**练习:编写一个程序,接受一个整数,然后判断它是否为奇数或偶数。
#include<stdio.h>int main(){int num=10;if(num%2==0){printf("%d is even.\n",num);}else{printf("%d is odd.\n",num);}return0;}4.**计算阶乘**练习:编写一个程序,计算给定整数的阶乘。
#include<stdio.h>int main(){int n=5;int factorial=1;for(int i=1;i<=n;i++){factorial*=i;}printf("Factorial of%d is%d\n",n,factorial);return0;}5.**反转字符串**练习:编写一个程序,接受一个字符串,然后反转它并打印出来。
#include<stdio.h>#include<string.h>int main(){char str[]="Hello,World!";int len=strlen(str);for(int i=len-1;i>=0;i--){printf("%c",str[i]);}printf("\n");return0;}6.**检查素数**练习:编写一个程序,判断一个整数是否为素数。
(完整版)C语言程序设计练习题(含程序及参考答案)
C 语言练习题(所提供的源程序均采用自定义函数方式解决,如不采用函数方式,也可直接在main 函数中借鉴该思想编程,因时间有限,所有程序未能一一验证,仅供参考使用) 1、定义一个函数 int fun(int a,int b,int c),它的功能是:若 a,b,c 能构成等边三角形函数返回 3,若能构成等腰三角形函数返回 2,若能构成一般三角形函数返回 1,若不能构成三角形函数返回 0。
#include <stdio.h>int fun(int a,int b,int c){if(a+b>c && b+c>a && a+c>b){if(a==b && b==c )return 3;else if(a==b||b==c||a==c)return 2;else return 1;}else return 0;}void main(){int a,b,c,shape;printf("\nInput a,b,c: ");scanf("%d%d%d",&a,&b,&c);printf("\na=%d, b=%d, c=%d\n",a,b,c);shape =fun(a,b,c);printf("\n\nThe shape : %d\n",shape);}2、编写一个程序,将两个变量的值交换, 例如变量a中的值原为 3,b中的值原为8,程序运行后 a 中的值为8,b中的值为3。
#include <stdio.h>void fun(int *x,int *y){int t;t=*x;*x=*y;*y=t}void main(){int a=3,b=8;printf("%d %d\n",a,b);fun(&a,b);printf("%d %d\n",a,b);}3、从键盘输入3个数,将最大值放在变量a中,最小值放在变量c中。
计算机系C语言编程50题(含答案)
1、输入1~10之间的一个数字,输出它对应的英文单词。
#include"stdio.h"main(){int x;printf("please input x(1-10):\n");scanf("%d",&x);switch(x){case 1:printf("one");break;case 2:printf("two");break;case 3:printf("three");break;case 4:printf("four");break;case 5:printf("five");break;case 6:printf("six");break;case 7:printf("server");break;case 8:printf("eight");break;case 9:printf("nine");break;case 10:printf("ten");break;}}2、用自然语言描述程序逻辑如下,试写程序。
①设置环境;②定义变量i、j、s,以及用于放置结果的变量sum,并令sum初值为0;③i=1;④如果i≤100,则转⑤,否则转⑧;⑤令s=0,求前i个自然数之和,并放于变量s之中;⑥sum=sum+s;⑦i增加1,转④;⑧输出和sum,结束。
#include"stdio.h"main(){int i,j,s;long sum=0;for(i=1;i<=100;i++){s=0;for(j=1;j<=i;j++){s=s+j;}sum=sum+s;}printf("sum=%d",sum);}3、用自然语言描述的程序逻辑为:(假设正确口令为123456)①设置环境;②定义变量i、flag和password,并令flag=0,i=0;③用户回答口令,将其赋于password变量;④口令正确?如果是,则flag=1,转⑥。
完整版C语言程序设计练习题含程序及参考答案
完整版C语言程序设计练习题含程序及参考答案1. 请编写一个C程序,要求输入一个整数n,并打印从1到n的所有整数。
```c#include <stdio.h>int main(){int n;printf("请输入一个整数n:");scanf("%d", &n);for (int i = 1; i <= n; i++){printf("%d ", i);}return 0;}```参考答案:```请输入一个整数n:51 2 3 4 5```2. 请编写一个C程序,要求输入两个整数m和n,并计算它们的和、差、积和商(m除以n的结果)。
```c#include <stdio.h>int main(){int m, n;printf("请输入两个整数m和n:");scanf("%d %d", &m, &n);int sum = m + n;int difference = m - n;int product = m * n;float quotient = (float)m / n;printf("和:%d\n", sum);printf("差:%d\n", difference);printf("积:%d\n", product);printf("商:%.2f\n", quotient);return 0;}```参考答案:```请输入两个整数m和n:10 3和:13差:7积:30商:3.33```3. 请编写一个C程序,要求输入一个整数n,并判断它是否为素数。
```c#include <stdio.h>#include <stdbool.h>bool isPrime(int n){if (n <= 1){return false;}for (int i = 2; i * i <= n; i++){if (n % i == 0){return false;}}return true;}int main(){int n;printf("请输入一个整数n:"); scanf("%d", &n);if (isPrime(n)){printf("%d是素数。
c语言程序基础练习题500道(附答案)
1.下列四组选项中,均不是C语言关健字的选项是( A )。
A) define B) gect C) include D) whileIF char scanf gotype printf case pow2.下面四个选项中,均是合法整型常量的选项是( A )。
A)160 B)-0xcdf C) -01 D)-0x48a-0xffff 01a 986,012 2e5011 0xe 0668 0x3.下面四个选项中,均是不合法的转义符的选项是( B )。
A) '\"' B) '\1011' C) '\011' D) '\abc''\\' '\' '\f' '\101''xf' '\A' '\}' 'x1f'4.下面不正确的字符串常量是( A )。
A)'abc' B)"12'12" C)"0" D)" "5.以下选项中不合法的用户标识符是( A )。
A)abc.c B)file C)Main D)PRINT6.C语言提供的合法关键字是( D )。
A) swithB) cherC) CaseD)default7.下列标识符组中,合法的用户标识符为 AA)_0123与ssipedB)del-word与signedC)list与*jerD) keep%与wind8.在C语言中,逻辑值"真"的表示是用( C )。
A) true B) 整型值0 C)非另整型值D) T9若有以下定义char s='\092';则该语句( b )A)使s的值包含一个字符B)定义不合法,s的值不确定C)使s的值包含4个字符D)使s的值包含3个字符10设C语言中,int类型数据占2个字节,则float类型数据占(D )个字节。
c语言程序设计编程题库及详解答案
c语言程序设计编程题库及详解答案1. 编写一个C语言程序,实现两个整数的加法运算。
答案:```c#include <stdio.h>int main() {int num1, num2, sum;printf("请输入两个整数:");scanf("%d %d", &num1, &num2);sum = num1 + num2;printf("两个整数的和是:%d\n", sum);return 0;}```2. 编写一个C语言程序,实现求一个数的阶乘。
答案:```c#include <stdio.h>int factorial(int n) {if (n == 0) return 1;return n * factorial(n - 1);}int main() {int num;printf("请输入一个整数:");scanf("%d", &num);printf("%d 的阶乘是:%d\n", num, factorial(num)); return 0;}```3. 编写一个C语言程序,实现判断一个数是否为素数。
答案:```c#include <stdio.h>#include <math.h>int isPrime(int n) {if (n <= 1) return 0;for (int i = 2; i <= sqrt(n); i++) {if (n % i == 0) return 0;}return 1;}int main() {int num;printf("请输入一个整数:");scanf("%d", &num);if (isPrime(num)) {printf("%d 是素数。
C语言编程题_经典40题(附解答)
9、编写函数,将两个递增有序的表,合并成一 个递增有序的表。
#define N 50
#define SeqList struct seqlist
SeqList
{ int data[N];
int length;
};
合并函数如下: SeqList *mergelist(a,b) SeqList a,b; { SeqList c; int i=0, j=0, k=0; while((i<a.length)&&(j <b.length)) if(a.data[i])<=b.data[j]) c.data[k++]= a.data[i++]); else c.data[k++]= b.data[j++]); while(i<a.length) c.data[k++]= a.data[i++]); while (j <b.length) c.data[k++]= b.data[j++]); c.length=k; return c; }
(6)一旦出现a[i]小于x,则将x插入到i+1位置。
(7)输出插入后的有序序列。
(3)完整的程序如下 #include ―stdio.h‖ #define N 10 main( ) { int i , j, x, n, a[N]; /*数字a的最大容量为N*/ printf(―请输入数组的实际元素个数n:\n‖); scanf(―%d‖, &n ); /*要求实际元素个数n小于N */ printf(―请输入%d个整数:\n‖, n ); for( i=0; i<n; i++) scanf(―%d‖, &a[i]); selectsort(a , n) ; /*排序*/ output ( a, n);/*输出插入前的序列*/ scanf(―%d‖, &x ); /*读入要插入的元素x */ i=n-1; /*从表尾往表头方向搜索插入位置*/ while (( i >=0) && ( x <a[i])) {a[i+1]=a[i]; i--;} /*元素后移*/ a[i+1]=x; /*插入元素x*/ output( a, n);/*输出插入后的序列*/ }
C语言编程练习题附答案
C语言编程练习题附答案1.从键盘输入20个整数,使用冒泡排序将它们从大到小排列并输出。
includeint main() {int a[20]。
i。
j。
t;printf("请任意输入20个整数\n");for (i = 0.i < 20.i++)scanf("%d"。
&a[i]);printf("\n");for (i = 0.i < 19.i++)for (j = 0.j < 19 - i。
j++)if (a[j] < a[j + 1]) {t = a[j];a[j] = a[j + 1];a[j + 1] = t;printf("按照从大到小的顺序排列为\n");for (i = 0.i < 20.i++)printf("%d,"。
a[i]);printf("\n");return 0;2.从键盘输入20个整数,使用选择排序将它们从大到小排列并输出。
includedefine N 20int main() {int a[N]。
i。
j。
max。
k;printf("请任意输入20个整数\n");for (i = 0.i < N。
i++)scanf("%d"。
&a[i]);printf("\n");for (i = 0.i < N - 1.i++) {k = i;for (j = i + 1.j < N。
j++)if (a[i] < a[j])k = j;max = a[k];a[k] = a[i];a[i] = max;printf("按照从大到小的顺序排列为\n");for (i = 0.i < N。
i++)printf("%d,"。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
50道C/C++编程练习题1、输入3个数,求最大值int main(){ int a,b,c,m;cin>>a>>b>>c;m=a;if(b>m) m=b;if(c>m) m=c;cout<<m;}2、编程序,求方程ax2+bx+c=0的根#include<iostream>#include<cmath>using namespace std;int main(){double a,b,c,d,x1,x2;cin>>a>>b>>c;if(a==0)if(b==0) cout<<"error\n";else cout<< "x="<<-c/b<<endl;else{ d=b*b-4*a*c;if(fabs(d)<=1e-6)cout<<"x1=x2="<<-b/(2*a)<<endl;else if(d>1e-6){ x1=(-b+sqrt(d))/(2*a);x2=(-b-sqrt(d))/(2*a);cout<<"x1="<<x1<<",x2="<<x2<<endl;}else cout<<"方程无实根\n";}}3、输入一个成绩,打印相应的等级int main(){ int a;cin >> a;if(a>=90) cout<<"A";else if(a>=80) cout<<"B";else if(a>=70) cout<<"C";else if(a>=60) cout<<"D";else cout<<"E";}4、输入3个double类型的值,判断这3个值是否可以表示一个三角形的三条边。
int main(){double a,b,c;cin>>a>>b>>c;if(a+b>c && b+c>a && c+a>b)cout<<"可以构成三角形";elsecout<<"不可以构成三角形";}5、输入20个数,求其最大、最小和平均值int main(){int i;int a,max,min,s;cin>>a;max=min=a; s=a;for(i=1;i<20;i++){ cin>>a;if(a>max) max=a;if(a<min) min=a;s=s+a;}cout<<max<<","<<min<<","<<s/20.0<<endl; }6、输入若干个数,设输入的第一个数为后面要输入的数的个数,求平均值及最大值。
int main(){int a,m,s=0;cin>>n;cin>>a;m=a; s=a;for(int i=1; i<n; i++){ cin>>a;s +=a;if(a>m) m=a;}cout<<"平均值:"<<(double)s/n<<",最大值:"<<m<<endl;}7、输入若干个数,输入-999表示结束,求平均值及最大值。
#include<iostream>#include<iomanip>#include<cstdlib>using namespace std;int main(){ int n, count, sum, max;double ave;count = 0;cin >> n;sum = 0; max = n;while( n != -999 ){ sum = sum + n;if( n > max ) max = n;count++;cin >> n;}if( count != 0 ){ ave=static_cast<double>(sum) / count; cout<<setiosflags(ios::fixed)<<setprecision(2);cout<<"平均值为:"<<ave<<" 最大值为:"<<max<<endl;}}8、求和 s=1*1 + 2*2 + 3*3 +...+ 100*100int main(){ int i,t;double s=0;for(i=1; i<=100; i++){ t=i*i;s=s+t;}}9、印度国王的奖励,求和 s=20+ 21+ 22+...+ 263 int main(){ double t=1,s=0;for(int i=0; i<=63; i++){ s=s+t;t=2*t;}cout<<s/1.4e8<<endl;}10、求和 s=1! + 2! + 3! +...+ 10!int main(){ int i;long t,s;t=1; s=0;for(i=1; i<=10; i++){ t=t*i;s=s+t;}}11、求 e=1 + 1/1! + 1/2! + 1/3! + ...int main() { int i;double t,e;i=1; t=1; e=1;while(t>=1e-7){ t=t/i;e=e+t;i=i+1;}cout<<e;}12、求PI值,PI/4 = 1 - 1/3 + 1/5 - 1/7 + ... int main(){ int i,k;double pi,t;i=1; t=1; pi=0; k=1;while(fabs(t)>1e-8){ pi=pi+t;i=i+2;k=-k;t=double(k)/i;}cout<<4*pi;}13、求PI值,PI/2 = 1 + 1/3 + 1/3*2/5 + 1/3*2/5*3/7 + ...#include<iostream>#include<cstdlib>int main(){int i,j;double pi,t;i=0; j=1; t=1; pi=0;while(t>1e-18){ pi=pi+t;i=i+1;j=j+2;t=t*i/j;}cout<<setprecision(17)<<2*pi;}14、输入20个数,统计其中正数、负数和零的个数。
int main(){int a,n=0,m=0,s=0;for(int i=1; i<=20; i++){ cin >> a;if(a>0) n++;else if(a<0) m++;else s++;}cout<<n<<" "<<m<<" "<<s;}15、输入若干个整数,计算其中的奇数之和与偶数之和,假设输入0表示结束。
int main(){ int a,n=0,m=0;cin>>a;while(a!=0){ if(a%2 == 0) n += a;;else m += a;cin >> a;}cout<<n<<" "<<m;}16、写一函数,计算x的y次方(假设x、y都为正整数)。
int pow(int x, int y){ int s=1;for(int i=1; i<=y; i++)s = s * x;return s;}17、求水仙花数(一个三位数,其各位数字立方和等于该数字本身)int main(){ int i,a,b,c;for(i=100;i<=999;i++){ a=i/100;b=i/10%10;c=i%10;if(i==a*a*a+b*b*b+c*c*c)cout<<i<<endl;}}int main(){ int i,a,b,c;for(a=1;a<=9;a++)for(b=0;b<=9;b++)for(c=0;c<=9;c++){ i=a*100+b*10+c;if(i==a*a*a+b*b*b+c*c*c)cout<<i<<endl;}}18、编写一个函数,确定一个整数是否为完全数(一个数,等于他的因子之和)。
用这个函数确定和打印1到1000之间的所有完全数。
int perfect(int n){ int i,s=1;for(i=2;i<=n/2;i++)if(n%i==0) s=s+i;if(s==n) return 1;else return 0;}int main(){ int n;for(n=2;n<=1000;n++)if perfect(n)cout<<n<<endl;}19、写一函数,求斐波那契数列的第n项。
int fib(int n){int i,f1,f2,f;if(n==1||n==2) return 1;f1=1; f2=1;for(i=3; i<=n; i++){ f=f1+f2;f1=f2;f2=f;}return f;}20、写一个函数,取一个整数值并返回将此整数的各数字反序的数值int reverse(int n){ int s=0;while(n){ s = s * 10 + n % 10;n /= 10;};return s;}21、写一个函数,将一个整数的各位数字的反序打印void show(int n){ while(n){ cout << n % 10 << " ";n /= 10;};}void show(int n){ if(n < 10) cout << n;else{ cout << n % 10 << " ";show(n / 10);}}22、写一个函数,将一个整数的各位数字的按顺序打印出来void show(int n){int k = 1, m = n;while(m > 10){ k *= 10; m /= 10; }while(n){ cout << n / k << " ";n %= k;k /= 10;};}void show(int n){ int a[10], i=0;while(n){ a[i] = n % 10;n /= 10;i++;}for(int j=i-1; j>=0; j--)cout<<a[j]<<" ";}void show(int n){ if( n < 10 ) cout << n;else{ show( n / 10 );cout << " " << n % 10;}}23、求一个整数的各位数之和的函数int sum(int n){ int s = 0;while(n){ s += n % 10;n /= 10;};return s;}24、写一函数,判断某个数是否素数,以及求1-1000之内的素数#include<iostream>#include<cmath> #include<stdlib.h>using namespace std;bool isprime(int n){ float k=sqrt(float(n));for(int i=2; i<=k; i++)if(n%i==0) return false;return true;}int main(){ for(int n=2; n<=1000; n++)if(isprime(n)) cout<<setw(5)<<n;}25、用筛法求1-1000之内的素数#include<iostream>#include<cmath>#include<stdlib.h>#include<iomanip>using namespace std;int main(){int i,k,a[1001];for(i=2; i<=1000; i++) a[i]=1;float s=sqrt(float(1000));for(i=2; i<=s; i++)if(a[i]==1){ k=2*i;while(k<=1000){ a[k]=0;k=k+i;}}for(i=2; i<=1000; i++)if(a[i]==1) cout<<setw(5)<<i;}26、判断某一年是否闰年的函数bool IsLeapYear(int y){ return (y%4 == 0 && y%100 != 0)||(y%400 == 0);}27、写一个函数,交换两个整型变量的值void swap(int *p, int *q){ int t;t=*p; *p=*q; *q=t;}void swap(int &a, int &b){ int t;t=a; a=b; b=t;}28、求两个数的最大公约数,欧几里德算法(辗转相除法)int gcd(int m, int n){ int k;while(n!=0){ k=m%n; m=n; n=k; }return m;}int gcd(int m, int n){ int k;while((k=m%n)!=0){ m=n; n=k; }return n;}int gcd(int m, int n){ while(m!=n){ if(m>n) m=m-n;else n=n-m;}return m;}29、求两个数的最小公倍数int lcm(int m, int n){ int t,s;if(m<n) { t=m; m=n; n=t; }s=m;while(s%n != 0) s=s+m;}int lcm(int m, int n){return m*n/gcd(m,n);}30、百钱买百鸡问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一,百钱买百鸡,问鸡翁、母、雏各几何?int main(){int cock,hen,chick;for(cock=0; cock<=20; cock++)for(hen=0; hen<=33; hen++){ chick=100-cock-hen;if(5*cock+3*hen+chick/3.0==100)cout<<setw(4)<<cock<<setw(4)<<hen <<setw(4)<<chick<<endl;}}31、编一程序,输入一行字符串,统计其中的小写英文字母的个数。