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++程序,输入一个正整数,计算并输出它的阶乘。
- 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、编一程序,输入一行字符串,统计其中的小写英文字母的个数。