急!!求C语言大牛解答两道题~~~!!!
winXP+VC6.0下测试通过:
#include
#include
void first()
{
//第一题:
int time1,time2;
int time1H,time1M; //记录时间1的小时,分钟
int time2H,time2M;//记录时间2的小时,分钟
int timeDiff;
//输入二个时间
printf("Enter time1:
");
scanf("%d",&time1);
printf("Enter time2:
");
scanf("%d",&time2);
//将小时和分钟拆出
time1H=time1/100;
time1M=time1%100;
time2H=time2/100;
time2M=time2%100;
printf("time1 is :%d:%d
",time1H,time1M);
printf("time2 is :%d:%d
",time2H,time2M);
//转成分钟,然後计算出相差多少分钟
timeDiff=(time2H*60+time2M)-(time1H*60+time1M) ;
//显示结果
printf("timeDiff %d minute ,%d:%d
",timeDiff,timeDiff/60,timeDiff%60);
}
void second()
{
int num;
int a[4];
int temp;
printf("input num:
");
scanf("%d",&num);
//把四位数字拆开放好
a[3]=num/1000;
num=num%1000;
a[2]=num/100;
num=num%100;
a[1]=num/10;
a[0]=num%10;
//数字加9,然后除以10 取余
a[3]=(a[3]+9)%10;
a[2]=(a[2]+9)%10;
a[1]=(a[1]+9)%10;
a[0]=(a[0]+9)%10;
//互换:千和十
temp=a[3];
a[3]=a[1];
a[1]=temp;
//互换:百和个
temp=a[2];
a[2]=a[0];
a[0]=temp;
//组合新的数字
num=a[3]*1000+a[2]*100+a[1]*10+a[0];
//显示结果
printf("new num is :%d
",num);
}
int main()
{
printf("----------------first----------------
");
first();
printf("----------------second----------------
");
second();
return 0;
}
这些英文理解起来真费劲呢,不过我知道了:
#includelong factorial(int n)/*计算阶乘*/{if(n<0) return -1;/*小于0,返回-1说明无效*/if(n=0) return 1;return n*factorial(n-1);}double xx(double x,int i)/*计算x的整数次方*/{if(i==0) return 1;return xx(x,i-1)*x;}double power(int x)/*计算上述级数*/{double result=0;/*存放结果*/double t=0;/*存放每节的结果,目的是为了获取高精度*/for(int i=0;t<1e-6;i++){t=xx(x,i)/factorial(i);result+=t;}return result;}main(){int x;printf("Input an integer number:");/*提示语什么的,你自己看着办好了*/scanf("%d",&x);if(x<0){printf("The factorial of %d is not valid.",x);/*负数的阶乘无效*/printf("The e is %lf.",power(1));printf("The Power x of e is %lf.",1/power(-x));/*负a次方等于正a次方的倒数*/}else{printf("The factorial of %d is &ld.",x,factorial(x));printf("The e is %lf.",power(1));printf("The Power x of e is %lf.",power(x));}}
从键盘任意输入一个整数m,若m不是素数,则对m进行质因数分解,
并将m表示为质因数从小到大顺序排列的乘积形式输出,否则输出
"It is a prime number\n"。例如,用户输入90时,程序输出90 = 2 * 3 * 3 * 5;
用户输入91时,程序输出"It is a prime number\n"。
素数(Prime Number),又称为质数,它是不能被1和它本身以外的其他整数整除的正整数。
按照这个定义,负数、0和1都不是素数,而17之所以是素数,是因为除了1和17以外,
它不能被2~16之间的任何整数整除。
要用函数哦。
*******************************************************************************/
#include<stdio.h>
#include<math.h>
/**
*递归函数,输出因子的乘积
*/
void printProduct(long number)
{
long i;
for(i = 2; i <= sqrt(number); i++) {
if(number % i == 0)
{
long biggestFactor = number / i; //最大因子
printf("%ld * ", i);
printProduct(biggestFactor);
break;
}
}
if(i > sqrt(number)) //如果不能因式分解,就输出本身
{
printf("%ld\n", number);
}
}
/**
*判断是否为素数的函数,是返回1,否返回0
*/
int isPrime(long number)
{
long i;
for(i = 2; i <= sqrt(number); i++) {
if(number % i == 0) {
return 0;
}
}
return 1;
}
int main()
{
long number;
int i;
printf("请输入一个数:");
scanf("%ld", &number);
if(isPrime(number) == 1)
{
printf("It is a prime number\n");
}
else
{
printf("%ld = ", number);
printProduct(number);
}
}
/*
如果一个正整数m的所有小于m的不同因子(包括1)加起来正好等于m本身,
那么它就被称为完全数(Perfect Number)。例如,6就是一个完全数,
是因为6 = 1 + 2 + 3。请编写一个判断完全数的函数IsPerfect(),
函数功能:判断完全数,若函数返回0,则代表不是完全数,若返回1,则代表是完全数。
在主调函数中,输入一个数,调用子函数IsPerfect(),根据函数的返回值,判断从键盘
输入的整数是否是完全数。
*/
#include<stdio.h>
#include<math.h>
int isPerfect(long number)
{
long i;
long sum = 1;
long factorPool[1000]; //因子池数组
int j = 0; //因子池数组下标
for(i = 2; i <= sqrt(number); i++)
{
if(number % i == 0)
{
factorPool[j++] = i;
factorPool[j++] = number / i;
sum += i;
sum += number / i;
}
}
if(sum == number)
{
int k;
printf("%ld = 1 + ", number);
for(k = 0; k < j - 1; k++)
{
printf("%ld + ", factorPool[k]);
}
printf("%ld", factorPool[k]);
return 1;
}
else
{
return 0;
}
}
int main()
{
long number;
printf("请输入一个数:");
scanf("%ld", &number);
if(isPerfect(number))
{
printf(",所以是完全数。\n");
}
else
{
printf("%d 不是完全数。\n", number);
}
}
顺便提一下楼上在第二题有误,33550336是一个完全数,用楼上程序去判断程序直接崩溃
拜托,,9是合数,不是素数。。
/*
Enter a integer : 567
567 = 3×3×3×3×7
567 is not perfect number.
Press any key to continue
*/
#include <stdio.h>
#include <math.h>
int isPrime(int n) {
int flag = 1,i;
for(i = 2;i <= sqrt(n)&&flag == 1;i++)
if(n%i == 0) flag = 0;
return(flag);
}
void dissociation(unsigned num) {
unsigned long i;
int b = 0;
if(isPrime(num)) {
printf("%u is a prime number.\n",num);
return;
}
printf("%u = ", num);
for(i = 2;num > 1;i++) {
if(num % i == 0) {
num /= i;
if(b == 1) printf("×%lu",i);
else {
printf("%lu",i);
b = 1;
}
i--;
}
}
printf("\n");
}
void isPerfect(unsigned num) {
unsigned i,n = 0,sum = 1,a[20] = {0};
for(i = 2; i <= num/2; ++i) {
if(num % i == 0) {
sum += i;
a[n++] = i;
}
}
if(sum == num) {
printf("%d = 1",num);
for(i = 0; i < n; ++i)
printf(" + %d",a[i]);
printf("\n");
}
else printf("%d is not perfect number.\n",num);
}
int main() {
unsigned num;
printf("Enter a integer : ");
scanf("%u",&num);
dissociation(num);
isPerfect(num);
return 0;
}
求C语言大牛!!!expected ';' before 'for'用Code::Blocks编译的_百度...
printf("I am a ")这句后面没有“;”。。。
c语言 openmp 程序编译不了 求大牛解答
include "stdafx.h"include <stdio.h> include <stdlib.h> include include <omp.h> define DIM1 2000 define DIM2 2000 define DIM3 2000 int main(){ int ii, jj, kk,mm;int nthreads = 1000;double *A;double *B;double *C;long dim1 = DIM1;long dim2 = DIM2;long dim3 = ...
C语言,连接一个字符串和字符’,使用strcat函数后最后一个字符变成字符...
这个可能有两方面的原因:1、你串接的是Unicode,因为只串接了一半,所以显示为‘?’2、调试环境造成的。对于第二种情况,想提醒你的是,有时候调试环境显示的东西并不是百分之百可信的。你可以把串接后的内容打印出来看看。
@C语言大牛 指针代码跪求修改!!!在线等!!
include<stdio.h>int main(){ char s[100],*ps=&s[0],*p; \/*ps应该定义成指针*\/ int i,num=0,lenth,a[100],*pa=&a[0]; \/*pa应该定义成指针*\/ scanf("%s",s); lenth=strlen(s); for(p=ps; p<ps+lenth; p++) { \/*循环体要用{}括起来*\/ ...
请大牛帮我一下C语言作业题
include<stdio.h> int main( void ){ double f;\/\/\/总运费 double s;\/\/\/路程 double p;\/\/\/基本运费 double w;\/\/\/货物重 double d;\/\/\/折扣 scanf("%lf %lf %lf", &p, &w, &s);if ( s < 250) d = 0;else if ( 250 <= s && s < 1000 ) d = 0.02;else if ( ...
c语言自学初学者,有大牛帮我看看,我这个helloword程序,运行正确了么...
第一幅图对了是对了,但是不支持,把main(void)的void给我删了,你这样写代码被大牛看到你容易被打死 第二幅。。。看不清
C语言的编程菜鸟,求大牛帮忙找找错
而且,你的sqrt里面用了float的乘法。所以如果数比较大的时候会出错的。建议将乘积的平方根拆成平方根的乘积,因为这两种方式结果一样。比如:4*9的平方根等于4的平方根乘以9的平方根。include <stdio.h> include<math.h> int main(){ double a,b,c,s,area;printf("Input a,b,c:");scanf(...
求c语言大神指点编程
i#include <stdio.h>int main(){ int a,b=0; scanf("%d",&a);\/\/输入一个数 while(a)\/\/对于这个while循环你可以举个实例就更好理解 { b=b*10+a%10; a=a\/10; } printf("%d\\n",b);}
C语言 求大牛们帮忙写一个小程序
\/ Filename: test.c Description:Version: 1.0 Created: 2014年10月22日 09时31分13秒 Revision: none Compiler: gcc Author: YOUR NAME (),Company:\/ include <stdio.h> include <string.h> include <stdlib.h> int getRes( const char *str,int strlen, \/\/strlen没用...
求C++大牛,帮忙解释下这段代码?
if(strcmp(a,b)==0) \/* strcmp()是C语言标准库函数,包含在 “string.h” 中,作用是从a[0],b[0]开始,逐个比较 a[i] 和 b[i] 的 ascii 值的大小;若 a[i] 和 b[i] 相等则返回0值,若 a[i] 小于 b[i],则返回一负值,若 a[i] 大于 b[i],则返回一正值; *\/ { ...
象祁鸡血:[答案] #include //1. 将一个数组中的值按逆序重新存放.例如,原来顺序为8,6,5,4,1.要求改为1,4,5,6,8. void Asc(int arr[],int len) { int i,j,tmp; for(i=0;i
静海县18886797993: C语言题目2个,求高手帮忙解答,谢谢了! - ?
象祁鸡血: 本人也是初学C语言,写得不够简练,见谅1.#include<stdio.h>#include<string.h> main() { char a[200],*p=a,*q; int n,i; gets(a); n=strlen(a); q=&a[n-1]; for(;p<q;p++,q--) if(*p!=*q) {i=0; break;} else i=1; switch(i) { case 0:printf("该数不是一个回文数"...
静海县18886797993: 急求,c语言编程题,求大神解题,高分悬赏!!!?
象祁鸡血: #include <stdio.h> #define NUM 5 #define N 3 typedef struct _stu { unsigned num; char name[16]; float score[N]; float avg; }stu; int main() { stu st[NUM]; float avg[N]={0}; int i,j; FILE* f=fopen("stu.txt","w"); fprintf(f,"学号\t\t姓名\t\t平均成绩\n"); ...
静海县18886797993: 求C语言大神解一道题,在线等,谢谢啦~ - ?
象祁鸡血: #include int main(){ int i,j; for(i=0;i<5;i++){ //输出空格 for(j=0;j<5;j+...
静海县18886797993: 求C语言高手帮忙解答两道题,万分感谢!!!!!!!?
象祁鸡血: #include <stdio.h> #define N 10 int main() { int i; float fun(float a[] ,int n); float a[N],sum; for(i = 0;i < N;i++) { printf("第%d/%d个分数 = ",i + 1,N); scanf("%f",&a[i]); } sum = fun(a,N); printf("s平均分是%.2f\n",sum); return 0; } float fun(float x[],...
静海县18886797993: 两道c语言的问题 求高手解答 - ?
象祁鸡血: 题目是错的 第一题打出 =\n 注意\和\是不一样的 第二题语法有问题,无法运行,修正后是个死循环
静海县18886797993: 高分急求!C语言编程问题,求高手解答 - ?
象祁鸡血: 1、首先第四行是定义的一个子函数,在主函数内部定义的所以后面要加分号2、设定abc三个变量是题目所需,因为比较大小两个数来比较第三个变量来保存比较结果,你也可以设定两个变量,把比较结果保存到输入值中不过就会覆盖原来的值3、Z是一个子函数变量,设定在主函数中在子函数不能使用,z的生存期只有在那个max函数中才会分配内存空间4、第18行没有出来,第16行倒是可以给你解释哈,在16行他是返回比较值保存在z当中的然后在第7行那个c就会接收到max的比较结果
静海县18886797993: c语言题求大神解答 - ?
象祁鸡血: #include<stdio.h>int main(){ int arr[3][3],brr[3][5],i,j,m,n; printf("请输入值:\n");for(i=0;i<3;i++) for(j=0;j<3;j++) scanf("%d",&arr[i][j]); printf("输入的数组为:\n");for(i=0;i<3;i++) { for(j=0;j<3;j++) printf("%d ",arr[i][j]); printf("\n"); }...
静海县18886797993: 求c语言高手帮我解两道题,泪求,急急急!!!?
象祁鸡血: 源代码: #include "stdio.h" #include "stdlib.h" #include "time.h" void main() { unsigned int num1=0; unsigned int num2=0; unsigned int correct=0; //正确答案 unsigned int answer=0; //回答答案 unsigned int times=1; //回答次数 ...
静海县18886797993: 急求C语言高手解答三个题目!!!详细说明最好!!! - ?
象祁鸡血: 1. malloc在没有足够空间申请的时候会返回NULL,也就是0 2. 因为&是取址运算符,注意,是运算.最后的q-p实际上等于q地址-p地址的偏移量,系统很智能的给出了偏移5个int 3. realloc才可以在运行时改变空间的大小(数组的大小)