收藏 分销(赏)

湘潭大学C语言整理.doc

上传人:a199****6536 文档编号:1953931 上传时间:2024-05-12 格式:DOC 页数:109 大小:212.36KB 下载积分:18 金币
下载 相关 举报
湘潭大学C语言整理.doc_第1页
第1页 / 共109页
湘潭大学C语言整理.doc_第2页
第2页 / 共109页


点击查看更多>>
资源描述
1054 平方数 Description 描述 给你一个整数集合A(无重复元素),如果x,y都属于A,且y=x*x,那么<x,y>组成一个数对,请找出这个集合中满足条件的数对的个数。比如说集合A={2,3,4},则只有4=2*2,则答案为1。 输入 每个样例占2行,第一行为一个非负整数n,n<=1000,为集合中元素的个数,如果n为0则输入结束。第二行为n个整数,为集合的元素,所有的元素为非负整数,且<=100,000,000,两个整数之间有一个空格隔开。 输出 每行输出一个样例的结果。 Sample Input 3 2 3 4 5 3 36 5 9 6 0 Sample Output 1 2 #include <stdio.h> #include <math.h> #include <string.h> int main() { int n, i, i1, i2, x, y, s, str[1001]; while (scanf("%d", &n)==1&&n) { s=0; for (i=0;i<n;i++) { scanf("%d ", &str[i]); } for (i1=0;i1<n;i1++) { x=str[i1]*str[i1]; for (i2=0;i2<n;i2++) { y=str[i2]; if (x==y) { s++; } } } printf("%d\n", s); } return 0; } 1155 整数分类 Description 按照下面方法对整数x进行分类:如果x是一个个位数,则x属于x类;否则将x的各位上的数码累加,得到一个新的x,依次迭代,可以得到x的所属类。比如说24,2+4=6,则24的类别数是6;39,3+9=12,1+2=3,则39的类别数是3。 输入 每行输入一个非负整数n,n≤10500,n为0时结束。 输出 每行输出对应整数的分类数。 Sample Input 24 39 0 Sample Output 6 3 #include<stdio.h> #include<string.h> int main() { char str[501]; int i, sum, a; gets (str); while (str[0]!='0') { for (i=0,sum=0;i<strlen(str);i++) { sum+=str[i]-'0'; } while (sum>=10) { a=sum; sum=0; while (a) { sum+=a%10; a=a/10; } } printf("%d\n",sum); gets (str); } return 0; } 1157 XTU方阵 Description eXtreme Talent University(XTU)需要为他们的校名打印一些特别的图形,为了美观,他们选择了方阵。现在他们需要你的帮助,帮他把这些方阵打印出来。如果方阵一边只由一个XTU的校名组成,则方阵为: XTU XTU XTU 输入 每个样例占一行,每行是一个整数n(0<=n<=10),表示一行需要使用多少个校名,n为0是输入结束标志。 输出 对于每个样例,先输出样例序号,比如说第一个样例输出“Case 1:”,换行再输出对应样例的方阵,每个方阵后有一个空行。 Sample Input 1 2 0 Sample Output Case 1: XTU XTU XTU Case 2: XTUXTU XTUXTU XTUXTU XTUXTU XTUXTU XTUXTU #include <stdio.h> main() { char a[4]={'X','T','U'}; int i, n, k, t, h; i=1; while (scanf("%d", &n)==1&&n) { printf("Case %d:\n", i++); for (h=0;h<n;h++) { for (t=0;t<3;t++) { for (k=0;k<n;k++) { printf("%s", a); } printf("\n"); } } printf("\n"); } } 1058 青蛙王子 Description 一个王子被巫师诅咒,变成了一只青蛙。500年后的一天,青蛙王子碰到了一个仙女,仙女告诉他,如果他能通过一个简单的测试,她就能帮他解除诅咒。测试是这样子的,仙女要青蛙王子在一条直线上跳跃(青蛙王子最开始站在坐标为0的地方),但只能按照她给定的两种长度跳跃(假设这两种长度王子都能跳到),可以往前或者往后跳,如果能达到指定的地点,那么就通过测试;仙女给定的方式有多种,但有些是不可能满足达到指定地点的。请你帮帮可怜的青蛙王子,寻找出那些可以完成测试的跳跃方式。 输入 每个样例占一行,为3个整数,都可以用一个unsigned int表示。前两个表示可以跳跃的长度,最后一个表示需要达到的地点的坐标。如果三个数为0,表示输入结束。 输出 每行输出一个样例的结果,如果可以到达指定的地点,输出Yes,否则输出No。 Sample Input 2 5 9 3 7 2 4 8 3 0 0 0 Sample Output Yes Yes No #include <stdio.h> main() { unsigned int a, b, c; int e, k; for (k=1;;k++) { scanf("%u %u %u", &a, &b, &c); if(a==0&&b==0&&c==0) break; if(a==0&&b==0) printf("No\n"); else { if(a<b) { e=a;a=b;b=e; } while(b!=0) { if(a>b) { e=a;a=b;b=e; } b=b%a; } if(c%a==0) printf("Yes\n"); else printf("No\n"); } } } 1059 有多少个1? Description 计算机中存储的整数都是按补码的型式,一个32位有符号整数的补码的定义为:如果x>=0,则x的补码等于x的二进制表示;如果x<0,那么x的补码为2^32+x的二进制表示。请根据给定的整数,求出它的补码包含有多少位为1。 输入 每行一个样例,为一个整数(可以用int表示)。 输出 每行输出一个对应样例的结果。 Sample Input 1 0 -1 Sample Output 1 0 32 #include<stdio.h> #define sum 4294967296 int main() { long long int i, n; int c=0; while(scanf("%I64d",&i)!=EOF) { if(i<0) i=i+sum; while(i!=0) { n=i%2; i=i/2; if(n==1) c++; } printf("%d\n",c); c = 0; } return 0; } 1062 大小写转换 Description 接收一个字母,如果是小写,则将其转换成大写;如果是大写,就将其转换成小写。 Sample Input b Sample Output B #include <stdio.h> main() { char ch; scanf("%c", &ch); if (ch>=97&&ch<=122) { ch = ch - 32; printf("%c", ch); } else { ch = ch + 32; printf("%c", ch); } } 1063 输入输出1 Description 请输入一个非负整数,输出其10进制和16进制(使用A-F)的值,中间用逗号隔开,不要输出换行. Sample Input 15 Sample Output 15,F #include <stdio.h> main() { int a; scanf("%d", &a); printf("%d,%X", a, a); } 1064 输入输出2 Description 读取一个整数和一个字符并输出它们,中间用逗号隔开,不要输出回车 Sample Input 234 H Sample Output 234,H  #include <stdio.h> main() { int a; char b; scanf("%d %c", &a,&b); printf("%d,%c", a,b); } 1065 io3 Description 1.       读取一个单精度浮点数并输出它(保留小数点后3位) Sample Input 1.23 Sample Output 1.230 #include <stdio.h> main() { float a; scanf("%f", &a); printf("%.3f", a); } 1066 io4 Description 1.       读取一个双精度浮点数,并输出它(保留小数点后8位),无须输出换行 Sample Input 1.098765432 Sample Output 1.09876543 #include <stdio.h> main() { double a; scanf("%lf", &a); printf("%.8lf", a); } 1067 io5 Description 输入一个字符,按格式输出这个字符及它的ASCII码 Sample Input A Sample Output The ASCII of 'A' is 65. #include <stdio.h> main() { char a; scanf("%c", &a); printf("The ASCII of '%c' is %d.", a, a); } 1068 if语句1 Description 输入一个整数,如果整数在90和100之间,那么输出A;否则输出B。 Sample Input 90 Sample Output A #include <stdio.h> main() { int a; scanf("%d", &a); if((90 <= a )&( a <= 100)) { printf("A"); } else { printf("B"); } } 1069 if语句2 Description 输入整数n,如果n是偶数,则输出“n is even.”,否则输出"n is odd." Sample Input 6 Sample Output 6 is even. #include <stdio.h> main() { int n, a; scanf("%d", &n); a = n%2; if(a == 0) { printf("%d is even.", n); } else { printf("%d is odd.", n); } } 1070 if3 Description 输入一个三位的整数,如果它有且仅有两位数码相同,那么就输出Yes,否则输出No Sample Input 112 Sample Output Yes  #include <math.h> #include <stdio.h> main() { int a, b, c, d; (100 <= a) & (a <= 999); scanf("%d", &a); b = a / 100; c = ((a - (a%10))/10)%10; d = a%10; if((b == c && d!=b)||(b == d && c!=b)||(c == d && b!=c)) { printf("Yes"); } else { printf("No"); } } 1071 if4 Description 输入三角形的三条边a,b,c;如果构成三角形那么就计算三角形的面积并输出,保留2位小数,否则输出“Not a triangle.” Sample Input 3 5 4 Sample Output 6.00 #include <math.h> #include <stdio.h> main() { int a, b, c, d; (100 <= a) & (a <= 999); scanf("%d", &a); b = a / 100; c = ((a - (a%10))/10)%10; d = a%10; if((b == c && d!=b)||(b == d && c!=b)||(c == d && b!=c)) { printf("Yes"); } else { printf("No"); } } 1072 switch Description 计算下面函数的值 y=cos(x+3.0)  当0<=x<10; y=(cos(x+7.5))^2 当10<=x<20; y=(cos(x+4.0))^4 当20<=x<30; ^表示幂运算,如x^2表示x的平方 如果x不在定义域内,输出“Not define”,否则输出y,保留5位小数 Sample Input 40 Sample Output Not define  #include <stdio.h> #include <math.h> main() { float x, a, b, c; scanf("%f", &x); a = cos(x + 3.0); b = pow(cos(x +7.5),2); c = pow(cos(x + 4.0),4); if (0 <= x && x < 10) { printf("%.5f", a); } else if (10 <= x && x < 20) { printf("%.5f", b); } else if (20 <= x && x < 30) { printf("%.5f", c); } else { printf("Not define"); } } 1073 最大最小数 Description 输入3个互不相等的整数a,b,c,请输出最大的和最小的数,中间用一个空格隔开。 Sample Input 1 2 3 Sample Output 3 1  #include <stdio.h> main() { int a, b, c, max, min; scanf("%d %d %d", &a, &b, &c); if (a > b) { max = a, min = b; } else { max = b, min = a; } if (c > max) { max = c; } if (c < min) { min = c; } printf("%d %d", max, min); } 1074 求和 Description 第一行是一个整数n(1<=n<=1000),表示有多少个数求和; 第二行是n个整数,每个整数都在-10^5到10^5之间,每个整数之间用空格隔开。 输出和的值(不要输出回车) Sample Input 5 1 2 3 4 5 Sample Output 15  #include<stdio.h> #include<stdlib.h> main() { int n,x,c,sum; sum=0,c=0; scanf("%d",&n); for(x=1;x<=n;x++) { scanf("%d",&c); sum=sum+c; } printf("%d",sum); } 1075 求最小公倍数 Description 有多个测试用例,每行两个正整数x,y,保证x*y不超过2^31-1。如果x与y都为0,则输入结束。 每行输出一个测试用例的结果,即x与y的最小公倍数。(最后一行有回车) Sample Input 4 5 3 6 0 0 Sample Output 20 6  #include<stdio.h> main() { int i,a,b,q,w; for(i=1;;i++) { scanf("%d %d",&a,&b); if(a==0||b==0) break; w=a*b; if(b>a) { q=a,a=b,a=q; } q=a%b; while(q!=0) { a=b,b=q; q=a%b; } printf("%d\n",w/b); } } 1076 素数 Description 对于大于1的自然数,如果n为素数,那么所有大于1且不大于n的平方根的自然数都不能整除n,反之亦然。所以我们可以通过测试来确定n是否为素数。现在给出n,要你求是否为素数,是输出Yes,否则输出No 每行一个正整数n,n<=2^32-1,如果n为0,则输入结束。判断n是否为素数 每行输出一个用例的结果,如果是输出"Yes",否则输出“No” Sample Input 2 3 4 5 6 0 Sample Output Yes Yes No Yes No  #include<stdio.h> #include <math.h> main() { __int64 x, i, j, k; i=2; while (scanf("%I64d",&x), x!=0) { j=sqrt((double)x)+1; k=1; for(i=2;i<=j&&k!=0;i++) { k=x%i; } if (i<=j || x==1) printf("No\n"); else printf("Yes\n"); } } 1077 数字塔 Description 有多个输入测试用例,每个用例一行,是一个1-9的整数,输入为0则结束。 请输出一个数字塔,若输入是4,则输出的数字塔为:    1   222  33333 4444444 因为有多个样例,那么样例需要先输出一行"case 样例号:" 比如第一个样例是3,则输出 case 1:   1  222 33333   Sample Input 2 3 0 Sample Output case 1: 1 222 case 2: 1 222 33333  #include <stdio.h> main() { int i, n, k, t, q, a, m; a=0; while (scanf("%d", &n)==1&&n) { a++; q=n; printf("case %d:\n", a); for (i=1;i<=n;i++) { m=q-1; for (t=0;t<m;t++) { printf("%c", 32); } for (k=1;k<=(2*i-1);k++) { printf("%d", i); } printf("\n"); q--; } } } 1078 字母三角形 Description 输出形如 ABCDEDCBA  ABCDCBA   ABCBA     ABA      A 的字母三角形。 输入有多个样例,每个样例是一行,每行是一个大写字母。当输入字符是‘#’时结束。样例前需要输出“case 样例号:”。如示例所示。 Sample Input C D # Sample Output case 1: ABCBA ABA A case 2: ABCDCBA ABCBA ABA A  #include<stdio.h> main() { char c,n,p; int i ,j,k; i=1; while (scanf("%c",&c)&&c!='#') { printf("case %d:",i++); putchar('\n'); for (j=0;j<=c-'A';j++) { for (k=0;k<j;k++) printf(" "); for (n='A';n<=c-j;n++) printf("%c",n); for (p=c-1-j;p>='A';p--) printf("%c",p); putchar('\n'); } getchar(); } } 1079 数学计算1 Description 请计算 答案使用浮点输出一行,不要输出多余的零,行尾有回车。C语言使用%g输出 #include <stdio.h> main() { int n; float a; a = 5; n = 0; while(n < 3) { a = 1 + 1/a; n = n + 1; } printf("%g\n", a); } 1080 数学计算2 Description 请计算    答案输出一行,不要输出多余的零,行尾有回车。 C语言使用%g输出  #include <math.h> #include <stdio.h> main() { float a; a = sqrt((3.2 * 3.2) + (4.7 * 4.7)); printf("%g\n", a); } 1081 数学计算3 Description 请计算 PI=3.14159265 请输出一行,不要输出多余的零,行尾有回车。 C语言使用%g输出   #include <math.h> #include <stdio.h> main() { float a, PI; PI=3.14159265; a = sqrt((1 - cos(PI/3)) / 2); printf("%g\n", a); } 1082 数学计算4 Description 计算 PI=3.14159265 答案输出一行,不要输出多余的零,行尾有回车。 C语言使用%g输出   #include <math.h> #include <stdio.h> main() { float a, PI; PI=3.14159265; a = pow(sin(PI/4),2) + (sin(PI/4) * cos(PI/4)) - pow(cos(PI/4),2); printf("%g\n", a); } 1083 数学计算5 Description 请计算   答案输出一行,不要输出多余的零,行尾有回车。 C语言使用%g输出   #include <math.h> #include <stdio.h> main() { float a; a = ((2 * sqrt(5)) * (sqrt(6) + sqrt(3))) / (6 + 3); printf("%g\n", a); } 1084 三角形的另一边 Description 已知三角形的两边长a,b,及它们的夹角p(单位度),求三角形的另外一边长。 输入 一行,a(a>0),b(b>0),p(180>p>0) 输出 一行,另外一边的边长,不要输出多余的零(C语言使用%g输出)。 Sample Input 3 4 90 Sample Output 5  #include <stdio.h> #include <math.h> main() { float a,d,e,p,b,PI,c,f,g,h; PI=3.14159265; scanf("%f %f %f",&a,&b,&p); c=p*PI/180; d=pow(a,2); e=pow(b,2); f=cos(c); g=d+e-2*a*b*f; h=pow(g,0.5); printf("%g\n",h); } 1085 求两点间的距离 Description 已知两点A(xa,ya),B(xb,yb),求其间的距离 输入 一行四个浮点数,xa,ya,xb,yb 输出 一行,距离,不要输出多余的零。 Sample Input 0 0 3 4 Sample Output 5  #include <math.h> #include <stdio.h> main() { float xa, ya, xb, yb, h; scanf("%f %f %f %f", &xa, &ya, &xb, &yb); h = sqrt(pow(yb - ya,2) + pow(xb - xa,2)); printf("%g\n", h); } 1086 分段函数 Description 已知函数为 给定x,请求其函数值 输入 一行,x 输出 一行,f(x),不要输出多余的零。 Sample Input 0.5 Sample Output 0.25  #include <stdio.h> #include <math.h> main() { float x, a, b, c; scanf("%f", &x); a = 0; b = pow(x,2); c = pow(x,0.5); if (x < 0) { printf("%g\n", a); } else if (0<=x&&x<=1) { printf("%g\n", b); } else { printf("%g\n", c); } } 1088 N! Description 请求N!(N<=10000),输出结果对10007取余 输入 每行一个整数n,遇到-1结束。 输出 每行一个整数,为对应n的运算结果。 Sample Input 1 2 -1 Sample Output 1 2  #include <stdio.h> int main() { int n, i, p; while(1) { scanf("%d", &n); if (n==-1) break; p=1; for (i=1; i<=n; i++) { p=p*i%10007; } printf("%d\n", p); } } 1089 质因数分解 Description 任意一个正整数可以分解成唯一的质因数的乘积,给出正整数,请计算出它的质因数分解式。 输入 每行一个正整数2<=n<=10^8。 输出 每行输出一个对应结果。使用”^”表示幂,”*”表示乘,质因子应该按从小到大的顺序输出,如果某一个质因子只有一次,那么就不要输出它的幂。   Sample Input 2 6 36   Sample Output 2 2*3 2^2*3^2  #include <stdio.h> #include <math.h> int main() { int n; while(scanf("%d",&n)==1) { int t=floor((sqrt(n)+0.5)); int i,s,p=0; for(i=2;i<=t;i++) { if (n%i==0) { if(!p) p=1; else printf("*"); printf("%d",i); n/=i; s=1; while(n%i==0) { n/=i; s++; } if(s!=1) printf("^%d",s); } } if (n>1&&p==1) printf("*%d",n); else if (n>1&&p==0) printf("%d",n); printf("\n"); } } 1090 组合数 Description 2^n=C(n,0)+C(n,1)+…+C(n,n)。其中^表示幂,C(n,x)表示组合数,即C(n,x)=n!/((n-x)!x!)。现在给你n(0<=n<=33),要你输出2^n的组合数之和的表达式 输入 每行一个整数n,如果n为负数则输入结束。 输出 每行输出一个表达式,表达
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服