版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、29(本内容由洪文杰同学提供,在此表示感谢!) C语言上机题汇总1.输入三角形两个边长及其夹角(角度值),求第三边边长和三角型面积。#include#includefloat pi=3.141592;int main() float a,b,c,v,s; scanf(%f%f%f,&a,&b,&v); c=sqrt(a*a+b*b-2*a*b*cos(v/180*pi); s=a*b*sin(v/180*pi)/2; printf(c=%0.2f,s=%0.2fn,c,s); return 0;扩展:编写已知三角形三边求面积的函数。#include#includeint main() floa
2、t a,b,c,s,area; printf(依次输入a,b,c(空格识别一个数):); scanf(%f%f%f,&a,&b,&c); if(a+bc&a-bc)p=(a+b+c)/2;s=sqrt(p*(p-a)*(p-b)*(p-c);printf(三角形面积是:%fn,s);else printf(这不是三角形n);2输入一个字符,若是小写字母,则转换成大写字母输出;若是大写字母,则转换成小写字母输出。#include main()char ch;printf(input:);scanf(%c,&ch);if(ch=a&ch=A&ch=Z) printf(%c,ch+32);else
3、printf(input error!);3输入一个大写字母,输出字母表中它前面的字母和后面的字母。如果输入的字母为A或Z,则分别输出提示信息“没有前面的字母”或“没有后面的字母”。#includevoid main() char ch, c; bool flag= 1;while(flag) printf(请输入一个大写字母:n); scanf(%c%c, &ch, &c);if(ch A & ch Z) printf(%c, %cn, ch-1, ch+1); else if(ch = A) printf(%cn 没有前面的字母n, ch+1); else if(ch = Z) print
4、f(%cn 没有后面的字母n, ch-1); else if(ch = q) flag= 0; else printf(-输入的为非法字符!n); printf(n); 4编写程序,输入一个整数,判断它能否被3、5、7整除,并根据情况输出下列信息:能同时被3、5、7整除。能同时被3、5、7中的两个数整除,并输出这两个数。只能被3、5、7中的一个数整除,输出该数。不能被3、5、7中的任何一个数整除。范例1#include int main() int m; scanf(%d,&m); if (m/3=0)&(m/5=0)&(m/7=0) printf(能同时被3,5,7整除); else if(
5、 (m/3=0)&(m/5=0)&(m/7!=0) printf(能被3和5整除,); else if (m/3=0)&(m/7=0)&(m/5!=0) printf(能被3和7整除,); else if (m/7=0)&(m/5=0)&(m/3!=0) printf(能被7和5整除,); else if (m/7=0)&(m/5!=0)&(m/3!=0) printf(能被7整除,); else if (m/7!=0)&(m/5=0)&(m/3!=0) printf(能被5整除,); else if (m/7!=0)&(m/5!=0)&(m/3=0) printf(能被3整除,); else
6、 printf(不能被3,5,7任一个整除); return 0; 范例2#include stdio.hmain()int x,y,z;scanf(d%,x);if (x%3=0 &x%5=0&x%7=0)printf(能同时被3个数整除);else if( (x%3=0&x%5=0&x%7!=0)printf(3,5);else if(x%7=0&x%5=0&x%3!=0) printf(5,7);else if(x%7=0&x%5=0&x%5!=0)printf(3,7);else if(x%3=0&x%5!=0&x%7!=0)printf(3);else if(x%3!=0&x%5=0
7、&x%7!=0)printf(5)else if(x%3!=0&x%5!=0&x%7=0)printf(7);else if (x%3!=0&x%5!=0&x%7!=0)printf(都不能被整除)5已知正整数ABC且A+B+C100,求满足共有多少组,并输出满足条件的组合。#include stdio.hmain()int a,b,c,cout=0; for(c=1;c100;c+) for(b=c+1;b PRECISION | -lastValue PRECISION); printf(s is: %f,totalValue );getch();扩展2:输入一个数X,计算并输出下式S=X
8、+X2/2!+X3/3!+X4/4!.的值,直到最后一项的绝对值小于10的-5次方(保留两位小数)#include#include/fabs()int main() double x,s,a; int i; scanf(%lf,&x); a=x; s=a; for(i=1;i+=2) a*=x*x*(-1)/(i+1)*(i+2); if(fabs(a)1e-7) break; s+=a; printf(%.8fn,s); return 0; 7用迭代法求某数的平方根,已知求平方根的迭代公式为:。取为迭代初值,迭代的结束条件取。#includestdio.h#includemath.hmain
9、()float a,x0,x1; printf(nInput a:);scanf(%f,&a); if(a1e-6); printf(sqrt(%f)=%fn,a,x1); 8分别输出100以内(不包括100)所有偶数的和与所有奇数的和。#includemain() int x=1,sj=0,so=0; while(x=100) if(x%2=1) sj+=x; if(x%2!=1) so+=x; x+; printf(sj=%dn,sj); printf(so=%d,so);9利用嵌套循环输出以下图形(行与行之间无空行,列与列之间无空列): # # #includeint main()int
10、 i,j,k;for(j=1;j=1;k-) printf(“#”);printf(“n”);Return 0;10使用循环找到并输出100以内的所有素数。int i, j, n=100, m=1, temp=1;for(i=2;in;i+) temp = 1; for(j=2;j=5) printf(n); m = 1; m+; 11利用循环找出并输出所有的“水仙花数”。“水仙花数”是一个三位数,其各位数字的立方和等于该数本身。如,所以153是“水仙花数”。C语言的水仙花数代码main() int i,j,k; for(i=1;i10;i+) for(j=0;j10;j+) for(k=0;
11、k10;k+) if( (i*100+j*10+k)=(i*i*i)+(j*j*j)+(k*k*k) printf(%d%d%d ,i,j,k);getch();C语言的水仙花数代码main() int ge,shi,bai,number; for(number=100;number1000;number+) bai=number/100; shi=(number%100)/10; ge=number%10; if(number=bai*bai*bai+shi*shi*shi+ge*ge*ge)printf(nnumber=%dn,number); getch(); 范例三main()int
12、i,x,y,z;for(i=100;i=999;i+)x=i%10;/*个位*/y=(i/10)%10;/*十位*/z=(i/100)%10;/*百位*/if (x*x*x + y*y*y + z*z*z = i) printf(%dn,i);12输出斐波那契数列的前40项。斐波那契数列是个整数数列,其定义为:范例一:#includeint fun(int n) if(n = 1 | n = 2) return 1; else return fun(n-1) + fun(n-2);void main() int i; for(i = 1; i = 40; i+) printf(%dn, fun
13、(i); 范例二:main() long fib40 = 1,1; int i; for(i=2;i40;i+) fibi = fibi-1+fibi-2; for(i=0;i40;i+) printf(F%d=%dn, i, fibi); return 0;13输出100以内所有的“同构数”。所谓“同构数”一个正整数,它出现在其平方数的右边。例如:5是25右边的数,25是625右边的数,5和25都是同构数。#includemain()int i;for(i=1;i=100;i+)if(i*i%10=i)printf(%d,i);14指定一个正整数n,并输入n个整数,用冒泡法将它们由小到大顺序
14、排列并输出。#includeint mainInt I,j,n,temp,a10;Scanf(“%d”,&n);Printf(“ the original numbers:n”);For(i=0;in;i+) Scanf(“%d”,&ai);For(i=0;in-1;i+) For(j=0;jaj) Temp=aj-1aj;aj-1=aj;aj=tempPrintf(“n the sorted number is :n” );For(i=0;jn;i+)Printf(“%d”,ai);Return 0;15利用循环打印下列九九乘法表:1*1= 12*1= 2 2*2= 43*1= 3 3*2=
15、 6 3*3= 94*1= 4 4*2= 8 4*3=12 4*4=165*1= 5 5*2=10 5*3=15 5*4=20 5*5=256*1= 6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=367*1= 7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=498*1= 8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=649*1= 9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81#includeint main()int i;
16、int j;for(i=1;i=9;i+)for(j=1;j=i;j+)printf(%d*%d=%dn,j,i,i*j);return 0;16利用循环打印以下杨辉三角(要求打印7行): 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 11 6 15 20 15 6 1C语言双重循环输出杨辉三角前10行: 直角三角形杨辉三角: #include #define M 10 void main() int aMM, i , j ; for(i=0;iM;i+) for(j=0;j=i;j+) if(i=j|j=0) aij=1; else aij=ai-1j+
17、ai-1j-1; printf(%5d,aij); if(i=j)printf(n); 金字塔型杨辉三角: #include void main() int a1010,i,j; for(i=0;i=i;j-) printf(%2c, );/*两个空格*/ for(j=0;j=i;j+) if(i=j|j=0) aij=1; else aij=ai-1j+ai-1j-1; printf(%3d ,aij); /*%3d后一个空格*/ if(i=j) printf(n); 17利用循环输出下列图形(无空行和空列):*#includeInt main()Int I,j,k;For(i=1;i=1;
18、k-)Printf(“ “#”);Printf(“n”)Return 0;18不使用strcat函数,将两个字符串连接起来。#includeint a20,b20,i=0,j=0;while(ai!=0) i+;while(bi!=0) ai+=bi+;ai=0;printf(%s,a);范例二:#include #include #include int main() char str1 = 123asd456; char str2 = abcdef; int len;len = strlen(str1) + strlen(str2); char *str3 = (char *)malloc
19、(len+1) * sizeof(char); int i, j = 0, k = 0; for(i = 0; i = len; i+) if (str1j) str3i = str1j+; else if (str2k) str3i = str2k+; else str3i = 0; printf(%sn, str3); return 0;范例二:#includemain()char a100,b100,*p,*q;scanf(%s%s,a,b);p=a;q=b;while(*p)+p;while(*q)*p+=*q+;*p=0;printf(%sn,a);19编写函数,求的值。n的值由键盘
20、获得。#includemain()int i=1,n;double sum=0;scanf(%ld,&n);while(i=n) i;sum=sum+1/i;i+;printf(%fn,sum);20编写函数int fun(char str)并在主函数中调用它。此函数的功能是判别字符串str是否为“回文”,若是,返回1,否则返回0(回文是指正反序相同的字符串,如“13531”、“madam”是回文,“1353”、“mrs”不是回文)。#include #include main()int s(char a20);char a20;int t; gets(a); t=s(a); if(t=1)
21、printf(yes); if(t=0) printf(no); int s(char a20) int m,n,i; n=strlen(a); for (i=0;in/2;i+) if(ai!=an-i-1) return 0; return 1; 21用递归方法计算。扩展:用递归方式计算a!+b!+c!,并要求输出结果#include int fac(int n)/如果n大于十二,改用double或者long long,输出也相应改变 if(n=0) return 1; else return fac(n-1)*n;void main() int a,b,c; int sum; print
22、f(请分别输入a,b,c,并用逗号隔开:n); scanf(%d%d%d,&a,&b,&c); sum=fac(a)+fac(b)+fac(c); printf(%dn,sum);22用静态局部变量法计算。扩展:编写求n的阶乘的函数(用到静态局部变量),调用此函数求多项式之和:1/1!+1/2!+1/3!+1/n!,直到最后两项之差小于10的负5次方。#include double jiecheng(int n) static double num=1; num*=n; return num;void main() int n; double sum=0,temp,item=1; for (n
23、=2;n+) sum+=item; temp=1.0/jiecheng(n); if (item-temp1e-5)break; item=temp; printf(sum=%lfn,sum);23编写函数,求,其中:#include double fun (int n)int i;double sum=0.0;for(i=1;i =n;i+)sum+=1.0/i;return sum;main()int n; double s;printf(n Input n1n2n3n4: ); scanf(%d%d %d %d ,&n1&n2&n 3&n4);s=fun(n1)+fun(n2)+fun(
24、n3)+ fun(n4);printf(%d,s); 扩展范例:请编写函数fun,其功能是:计算并输出下列多项式值:S=1+注意:n的值要求大于1但不大于100。#include double fun (int n)int i, j,k;double sum=0.0, t;for(i=1;i =n;i+) t=0.0; for(j=1;j=i;j+) t+=j;sum+=1.0/t;return sum;main()int n; double s;FILE *out;printf(nInput n: ); scanf(%d,&n);s=fun(n);printf(nns=%fnn,s);out
25、=fopen(out.dat,w);for (n = 0; n 10; n+)fprintf(out, %fn, fun(n+50);fclose(out); 24编写程序,计算组合数。m和n由键盘获得。#includedouble fact(double s) double i,a=1; for (i=1;i=s;i+) a=a*i;return a;int main()double x,y,m,n;printf(Enter m: );scanf(%lf,&m);printf(Enter n: );scanf(%lf,&n);y=fact(n-m);m=fact(m);n=fact(n);x
26、=n/(y*m);printf(result=%.0f,x);return 0;25编写函数,求出n个a之积。调用该函数,输入两个正整数n和a,求之和。#includemath.hmain()int n,sum=0,i=1,s=2;scanf(%d,&n);while(i=n)sum=sum+s;s=s+2*pow(10,i);i+;printf(sum=%dn,sum);26编写程序,使用字符指针将字符数组s1中的字符串拷贝到字符数组s2中去。扩展:将字符串a复制为字符串b#includeVoid main() char a=”I am a boy.”,b20; Int i;for(i=0;
27、*(a+i)!=0;i+) *(b+i)= *(a+i);*(b+i)=0; Printf(“string a is :%sn”,a); Printf(“string b is:”); For(i=0;bi!=0;i+) Printf(“%c”,bi);Printf(“n”);27使用“指向函数的指针”编写函数,求多项式当时的值。答案详见P149.例题9-16!28编写函数,将直角坐标转换为极坐标。转换公式为:#include #include void f(float &x,float &y);int main() float x,y; printf(input x:n); scanf(%f
28、,&x); printf(input y:n); scanf(%f,&y); f(x,y); printf(x=%fn,x); printf(y=%fn,y); return 0;void f(float &x,float &y) float c=sqrt(x*x+y*y); float q=atan(y/x); x=c; y=q;29编写函数,使用指针参数将字符串ch2复制到字符串ch1的末尾,实现ch1与ch2的连接。扩展!:不含指针参数的#include #include main()char str180,str280;int i=0,j=0;puts(puts two string:
29、);gets(str1);gets(str2);while(str1i!=0)i+;while(str2j!=0)str1i+=str2j+;printf (result is:%sn,str1);#include#includevoidstring_cat (char*source,char*target)char*point=source;while(*point)point+;while(*target!=0)*point=*target;point+;target+;*point=0;intmain()chars110000,s210000;for(;s1!=0;)gets(s1);g
30、ets(s2);string_cat(s1,s2);puts(s1);printf(n);return0;30利用指针编写程序,将一个一维数组a10中的最大元素和首元素换位,最小元素和末元素换位。数组元素由键盘获得。#includestdio.hvoid main()int max,min,*p,a10,i;for(i=0;i10;i+)scanf(%d,&ai); p=a; max=a0;for(i=1;i10;i+,p+) if(max*p) max=*p; for(i=1;i10;i+) /*从第二元素开始检查是否是最大元素*/ while(ai=max) ai=a0; /*将第一个元素
31、赋给最大元素单元*/ a0=max; /*将最大值送入第一元素中*/ p=a; min=a9;for(i=1;i*p) min=*p;for(i=1;i10;i+) while(ai=min) ai=a9; a9=min;for(i=0;i10;i+)printf(%d,ai);31试编程序,输入整数a和b,若大于100,则输出百位以上(包括百位)的数字,否则输出两数之和。#include void f1() /*第一题的函数*/int a,b; int i,j; printf(shu ru liang ge zheng shu a,b:); scanf(%d,%d,&a,&b); getch
32、ar(); i=a*a; j=b*b; if(i100&j100) i=i/100; j=j/100; printf(%d %dn,i,j); else printf(%dn,a+b);void f2(char *s1,int m,char *s2) /*第二题的函数*/char *p; p=s1+m; strcpy(s2,p);void main()char s1100,s2100; int m; f1(); printf(shu ru zhi fu chuan:); gets(s1); printf(shu ru m:); scanf(%d,&m); f2(s1,m,s2); printf
33、(fu zhi jie guo ru xia:n); puts(s2); getch();32试编程序,求一个整数任意次方的最后三位数。即求的最后三位数,要求x,y从键盘输入,使用循环实现,不能使用数学库函数。#include#includevoid main() int i,j, x,y; long int z=0; printf(Please input x,y:); scanf(%d,%d,&x,&y); z=pow(x,y); printf(%d,z); printf(n); for(i=2;i=0;i-) j=(int)(z/pow(10,i)%10; printf(%d,j); g
34、etch();33求的个、十、百位上数字之和。扩展1:求的个、十、百位上数字之和。#include int main() int i,m=1,sum=0; for(i=1;i15;i+) m=m*15%1000; while(m) sum+=m%10; m/=10; printf(%dn,sum); return 0;扩展二:如何将十位百位数字对换,如135变成315#include #include using namespace std; int exchange(int a) int i = a / 100, j = (a % 100) / 10; return 100 * j + 10
35、 * i + a % 10; int main() int i = 376; printf(%dn, exchange(i); return 0; 扩展三:求一c语言编程题,a.b.c分别代表百位,十位,个位.共1000个数字,位置不能变,例如若输入a,b.则排除ab0-ab9这十个数,若输入b,c,则排除0bc-9bc这十个数,依次类推,输完之后最后剩余的三位数都有哪些,#includevoid main() int input2; int flag; int i; printf(input two number separated by ,n); scanf(%d,%d,&input0,&
36、input1); flag=input0*10+input1; for(i=100;i1000;i+) int a,b,c; a=i/100; b=i%100/10; c=i%10; if(flag!=a*10+b)&(flag!=b*10+c) printf(%4d,i); if(i%10=0)printf(n); 34输出100以内每位数的积大于每位数的和的所有正整数。#include stdafx.h#include stdio.hvoid main ( ) int n,k=1,s=0,m ; for (n=1 ; n=1) k*=m%10; s+=m%10; m=m/10 ; if(k
37、s) printf(%dn,n); 35通过循环按行优先顺序为一个55的二维数组a赋1到25的自然数,然后输出该数组的左下半三角。#include int main(void) int a55,k=1; for(int i=0;i5;i+) for(int j=0;j5;j+) aij=k; k+; for(i=0;i5;i+) for(int j=0;j=i;j+) printf(%d ,aij); printf(n); return 0;36从键盘输入若干整数(个数小于50),其值在0至4的范围内,用-1作为输入结束的标志。统计每个整数的个数。#include stdio.h#define
38、 N 1000int main()i=0,j=2,h=1,k,l=0,bN,n,cN; while(ai!=-1) scanf(%d,&a+i); i-; b1=a1; while(1) for(k=1;k=h;k+) if(aj=bk) l+; if(l=0) b+h=aj; j+; l=0; if(j=i+1) break; for(j=1;j=h;j+) printf(%d ,bj);k=1,l=0,n=0;while(1) for(j=1;j=i;j+) if(aj=bk) l+; c+n=l; l=0; if(k=h) break; k+;k=0;putchar(n);for(i=1
39、;i=n;i+)printf(第%d个数出现%d次n,b+k,ci);37定义一个含有30个整型元素的数组,按顺序分别赋予从2开始的偶数,然后按顺序每6个数求出一个平均值,放在另一个数组中并输出。#include stdio.hvoid main() int a30,b5,i=0,j; while(i30) ai+ =2*(i+1); i=0; while(i5) j=i*6; bi=aj+aj+1+aj+2+aj+3+aj+4+aj+5;bi/=6; i+; i=0; while(i5) printf(%dt,bi+);38数组a包括10个整数,把a中所有的后项除以前项之商取整后存入数组b,
40、并按每行3个元素的格式输出数组b。# include void main() int a10,b5,i,j; printf (请输入10个数); for (i=0;i0;i-2) for (j=0;j5;j+) bj=ai%ai-1; for(j=0;j5;j+)for (i=1;i3;i+)printf(%d,bi;printf(n);39编写函数sstrcmp,实现两个字符串的比较(即实现与strcmp函数功能相同的函数)。若两个字符串相等,返回值为0;若不等,则返回两个对应字符串的ASCII码值差值。若前者大,应返回正值,若后者大,应返回负值。int _cdecl strcmp ( co
41、nst char * src, const char * dst ) int ret = 0 ; while( ! (ret = *(unsigned char *)src - *(unsigned char *)dst) & *dst) +src, +dst; if ( ret 0 ) ret = 1 ; return( ret );判断题81.feof(fp)函数用来判断fp所指向的文件是否结束,若遇到文件结束符,函数feof()的返回值是真(非0),否则为假(0) T80. C语言中,文件的存取方式可以是随机存取,也可以是顺序存取 T79. C语言可以处理的文件类型只有文本文件 F78. 文件一般指存储在外部介质上的数据集合 T77. 在定义一个共用体变量时,系统分配给它的存储空间是该共用体变量中占用最大存储空间的成员所需的存储空间 T76. 在C语言中,一个包含若干不同类型的数据项的数据结构称为结构体 T75. 已知共用体union uint a;char c;float f;其各个成员地址&u.a、&u. c、&u.f是不相同的 F74. 使几个不同类型的变量共占同一段内存的结构称共用体 T73. 若已定义指向结构体变量stu的指针p,在引用结构体成员时,有三种等价的形式,即stu.成员名、*p.成员名和p-成员名 F72. 只可以通过求地址运算&获得地址值
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《立秋健康养生》课件
- 2021学年天津市杨村一中、宝坻一中等四校高一下学期期末联考地理试题
- 小学一年级20以内数学口算练习题大全
- 国际贸易试卷答案解读
- 幼儿园传染病预防工作领导小组
- 年度第一学期历史科期末考试试卷
- 高考语文分钟专题突破(2):字形
- 北京市大兴区2022-2023学年高三上学期期末试卷英语试题
- 餐饮娱乐场所保安工作经验
- 能源行业话务员工作心得
- 港区船坞工程施工组织设计
- 2024年北京平谷区初三九年级上学期期末数学试题
- 2024年新人教版道德与法治七年级上册全册教案(新版教材)
- 初中物理期末复习+专题5+综合能力题+课件++人教版物理九年级全一册
- 2024年国开电大 统计学原理 形成性考核册答案
- 幼儿园大班语言课件:不怕冷的大衣
- 2024年1月国开电大法律事务专科《企业法务》期末考试试题及答案
- 2024全国能源行业火力发电集控值班员理论知识技能竞赛题库(多选题)
- 因式分解(分组分解法)专项练习100题及答案
- 冶炼烟气制酸工艺设计规范
- 《上帝掷骰子吗:量子物理史话》超星尔雅学习通章节测试答案
评论
0/150
提交评论