C程序(1)
来源:互联网 发布:java实现杨辉三角 编辑:程序博客网 时间:2024/05/19 18:17
【问题描述】普通时钟都有时针和分针,在任意时刻时针和分针都有一个夹角,并且假设时针和分针都是连续移动的。现已知当前的时刻,试求出该时刻时针和分针的夹角A(0≤A≤180)。注意:当分针处于0分和59分之间时,时针相对于该小时的起始位置也有一个偏移角度。【输入形式】从标准输入读取一个24小时制的时间。格式是以冒号(“:”)分隔的两个整数m(0≤m≤23)和n(0≤m≤59),其中m是小时,n是分钟。【输出形式】向标准输出打印结果。输出一个浮点数A,是时针和分针夹角的角度值。该浮点数保留3位小数值。【输入样例】8:10【输出样例】175.000【评分标准】输出结果与标准答案相差不超过0.005得满分,否则0分。【上传文件】上传C语言源程序,以clock.c命名。
区间
【问题描述】给定n个闭区间[ai, bi](1 £ i £ n),这些区间的并可以表示为一些不相交的闭区间的并。要求在这些表示方式中找出包含不相交区间数目最少的方案。【输入文件】输入文件为当前目录下的prz.in。该文件的第一行包含一个整数n(3 £ n £ 50000),为区间的数目。以下有n行,每行各包括两个空格分隔的整数ai 和 bi,表示一个区间[ai, bi](1 £ ai £ bi £ 1000000)。【输出文件】输出文件为当前目录下的prz.out。该文件内容为计算出来的不相交的区间。每一行都是对一个区间的描述,包括两个用空格分开的整数,分别为区间的上下界。输出时将各区间按照升序排列输出。这里说两个区间[a, b]和[c, d]是按照升序排列的的,是指a £ b < c £ d。【输入样例】55 61 410 106 98 10【输出样例】1 45 10【运行时限】5秒。【上传文件】上传c语言源程序为prz.c。
#include <stdio.h>
#define MAXNUM 5000
main(){ FILE *fp; int num, i, j, temp; int a[MAXNUM] = {0}, b[MAXNUM] = {0}; fp = fopen("prz.in", "r"); if (fp != NULL) { fscanf(fp, "%d", &num); for (i = 0; i < num; i++) { fscanf(fp, "%d%d", &a[i], &b[i]); } } else { exit(0); } fclose(fp); for (i = 0; i < num; i++) { for (j = num - 1; j > i; j--) { if (a[j] < a[j-1]) { temp = a[j]; a[j] = a[j-1]; a[j-1] = temp; temp = b[j]; b[j] = b[j-1]; b[j-1] = temp; } } }/* i = 0; j = 1; fp = fopen("prz.out","w"); while(i<num){ while(b[i]>=a[j]&&j<num){ if(b[i]<b[j]) b[i]=b[j]; j++; } fprintf(fp,"%d %d/n",a[i],b[i]); i = j; j++; } fclose(fp);
*/ fp = fopen("prz.out", "w"); for (i = 0; i < num;) { for (j = 1; j < num && a[j] <= b[i]; j++) { if (b[i] < b[j]) { b[i] = b[j]; } } fprintf(fp, "%d %d/n", a[i], b[i]); i = j; j++; } fclose(fp);
}
兑换硬币
【问题描述】写一个程序,从标准输入上读入一个正整数N(1 <= N <=1000),计算出N元人民币兑换成1分、2分和5分的硬币,有多少种可能的组合。将结果以整数的方式输出到标准输出上,占一行。时间限制:1秒。【输入样例】1【输出样例】541【上传文件】上传c语言源程序,文件名为nickle.c。
#include <stdio.h>
main(){ long int i, n; long int nNickle = 0; scanf("%d", &n); if (n >= 1 && n <= 1000) { n *= 100; } else { exit(0); } for (i = 0; i <= (n / 5); i++) { nNickle += ((n - 5*i) / 2) + 1; } printf("%d/n", nNickle);}
实数格式识别
【问题描述】合法的实数书写格式分一般格式和科学格式。分别描述如下:一般格式= [<符号>]<非负整数>[<.><数字串>]科学格式= [<符号>]<非负整数>[<.><数字串>]<E> [<符号>]<整数><符号> = +|-<数字串> = [0]*<非负整数><非负整数>表示数学定义中大于等于零的整数[0]*表示长度大于等于零的、仅由数字’0’构成的串各项之间无分隔符。描述中由<>括起的内容说明该项的属性,[ ]括起的内容为可选的属性。例如,+2、-1.56为一般格式的实数,而6.2E-2、-9E8为科学格式的实数。编程分析哪些数的书写是正确的,是用哪种方式书写的。 【样例输入1】+1.23 【样例输出1】Format1【样例输入2】-5.1.1【样例输出2】Wrong【样例输入3】-5.1E-2【样例输出3】Format2【输入文件】输入文件为当前目录下的real.in。该文件包含一个字符串,以回车符结束,表示一个数据(无多余空格)。【输出文件】输出文件为当前目录下的real.out。该文件有一行。如果输入数据的书写是非法的,输出Wrong;如果输入数据是用一般格式书写的,输出“Format1”;如果该数据是用科学格式书写的,输出“Format2”。输出的末尾均要以一个回车符作为结束。【上传文件】上传C语言源程序,以real.c命名。#include <stdio.h>
#define FALSE 0#define TRUE 1
/*parse substring Before 'E' */int parseSubstringBeforeE(char *, int n);
/*parse Decimal substring Before 'E' */int parseDecimalSubstring(char *, int n);
/*parse substring After 'E' */int parseSubstringAfterE(char *, int n);
main(){ FILE *fp; int i = 0; int length = 0; int eIsFound = FALSE; int formatMatch = FALSE; char str[32]; char *pStr;
fp = fopen("real.in", "r"); if (fp != NULL) fscanf(fp, "%s", str); else exit(0); fclose(fp); fp = fopen("real.out", "w"); for (pStr = str; *pStr; pStr++) length++; for (pStr = str; *pStr; pStr++) { if (*pStr == 'E') { eIsFound = TRUE; break; } i++; } if (eIsFound == FALSE) { formatMatch = parseSubstringBeforeE(str, length); if (formatMatch == FALSE) fprintf(fp, "Wrong/n"); else fprintf(fp, "Format1/n"); } else { formatMatch = parseSubstringBeforeE(str, i); if (formatMatch == FALSE) fprintf(fp, "Wrong/n"); else { formatMatch = FALSE; formatMatch = parseSubstringAfterE(pStr + 1, length - i - 1); if (formatMatch == FALSE) fprintf(fp, "Wrong/n"); else fprintf(fp, "Format2/n"); } }}
int parseSubstringBeforeE(char *str, int length){ int i = 0; char *pStr; int formatMatch = FALSE; pStr = str; while ((*pStr < '0' || *pStr > '9') && i < length) { pStr++; i++; } if (i >= length) return FALSE; if (i > 1) return FALSE; if (i == 1) if (str[0] != '-' && str[0] != '+') return FALSE; if (str[i] == '0' && str[i+1] != '.') return FALSE; while (*pStr >= '0' && *pStr <= '9' && i < length) { pStr++; i++; } if (i >= length) return TRUE; else return parseDecimalSubstring(pStr, length - i);}
int parseDecimalSubstring(char *str, int length){ int i = 1; char *pStr;
if (length == 1) return FALSE; if (str[0] != '.') return FALSE; pStr = str + 1; while (*pStr >= '0' && *pStr <= '9' && i < length) { pStr++; i++; } return (i >= length);}
int parseSubstringAfterE(char *str, int length){ int i = 0; char *pStr; pStr = str; if (length == 0) return FALSE; if (str[0] == '+' || str[0] == '-') { pStr++; i++; } if (str[i] == '0') return FALSE; while (*pStr >= '0' && *pStr <= '9' && i < length) { pStr++; i++; } return (i >= length);}
N!的分解
【问题描述】将N!分解成素数幂的乘积。【输入形式】从标准输入读取一个整数N(1≤N≤30000)。【输出形式】结果打印到标准输出。为N!的素数幂的乘积分解式,分解式中的素数按从小到大输出。【样例输入】5【样例输出】2^3*3*5【上传文件】上传C语言源程序,以decompose.c命名。#include <stdio.h>
void decompose(int n);int isPrime(int n);
int primeNum[30000];int numOfPrimeNum[30000];int j;
main(){ int N, i; scanf("%d", &N); for (i = 0; i < N; i++) numOfPrimeNum[i] = 0; j = 0;
for (i = 2; i <= N; i++) { if (isPrime(i)) primeNum[j++] = i; } j = 0; for (i = 1; i <= N; i++) { decompose(i); } if (numOfPrimeNum[0] != 0) { if (numOfPrimeNum[0] == 1) printf("2*"); else printf("2^%d", numOfPrimeNum[0]); } for (i = 1; i <= j; i++) { if (numOfPrimeNum[i] != 0) { if (numOfPrimeNum[i] == 1) printf("*%d",primeNum[i]); else printf("*%d^%d", primeNum[i], numOfPrimeNum[i]); } }}
int isPrime(int num) {int i,tag=1; for(i=2;tag&&i<=num/2;i++) if(num%i==0)tag=0; return tag; }
void decompose(int n){ int i; for (i = 0; primeNum[i] <= n; i++) { if (n % primeNum[i] == 0) { numOfPrimeNum[i]++; n /= primeNum[i]; if (j < i) j = i; i = -1; continue; } }}
- C程序(1)
- Nginx + FastCGI 程序(C/C++)-1
- C语言程序(第一版) 1
- 学习笔记:C程序基础(1)
- C/C++程序题(1-5)
- C面试宝典-(程序题)1
- C语言趣味程序(1)
- 单片机时钟程序(1)main.c
- 单片机时钟程序(1)main.c
- C程序小结1
- C语言程序1
- C---测试程序1
- C 程序1
- C程序题1
- 程序积累(C)
- 聊天程序(C++)
- C程序(2)
- C 程序(3)
- 你用右脑多,还是左脑多?
- debian安装nvidia显卡驱动
- 谷歌公布内部数据语言 速度比XML快100倍
- Firefox 3.0 扩展--很实用
- 一个嗅探 window 系统TCP/IP 数据包的 Raw Socket class
- C程序(1)
- apache request
- 在.NET 3.5 平台上使用LINQ to SQL创建三层/多层Web应用系统 (Part 5)
- Python的匿名函数——lambda
- 注册时控制按钮上的时间显示
- ToolTip的动态生成
- C小试牛刀
- oracle企业管理器的心得
- 我最欣赏的一句话:天道酬勤